mirror of
https://github.com/simtactics/servo.git
synced 2025-07-20 04:54:52 -04:00
Servo VS solution
- Created VS solution for expanding upon the notebook code - Renamed LimitToRange() to MaxLimit() and adjusted it's algorithm
This commit is contained in:
parent
40f06695bc
commit
2993056967
9 changed files with 733 additions and 139 deletions
153
source/.editorconfig
Normal file
153
source/.editorconfig
Normal file
|
@ -0,0 +1,153 @@
|
|||
# Default settings:
|
||||
# A newline ending every file
|
||||
# Use 4 spaces as indentation
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = crlf
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# VB and C# files
|
||||
[*.{vb,cs}]
|
||||
# avoid this. unless absolutely necessary
|
||||
dotnet_style_qualification_for_field = false : suggestion
|
||||
dotnet_style_qualification_for_property = false : suggestion
|
||||
dotnet_style_qualification_for_method = false : suggestion
|
||||
dotnet_style_qualification_for_event = false : suggestion
|
||||
|
||||
# use language keywords instead of BCL types
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true : suggestion
|
||||
dotnet_style_predefined_type_for_member_access = true : suggestion
|
||||
|
||||
# Use camel_case for or internal constant fields
|
||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
|
||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
|
||||
|
||||
dotnet_naming_symbols.constant_fields.applicable_kinds = field
|
||||
dotnet_naming_symbols.constant_fields.required_modifiers = const
|
||||
|
||||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
|
||||
|
||||
# Comment this group and uncomment out the next group if you don't want _ prefixed fields.
|
||||
|
||||
# protected fields should be kPascalCase
|
||||
dotnet_naming_rule.kPascalCase_for_protected_fields.severity = suggestion
|
||||
dotnet_naming_rule.kPascalCase_for_protected_fields.symbols = protected_internal_fields
|
||||
dotnet_naming_rule.kPascalCase_for_protected_fields.style = sims3_style
|
||||
|
||||
dotnet_naming_symbols.protected_internal_fields.applicable_kinds = field
|
||||
dotnet_naming_symbols.protected_internal_fields.applicable_accessibilities = protected_internal
|
||||
|
||||
dotnet_naming_style.sims3_style.required_prefix = k
|
||||
dotnet_naming_style.sims3_style.capitalization = pascal_case
|
||||
|
||||
# private static fields should be sPascalCase
|
||||
dotnet_naming_rule.sPascalCase_for_static_fields.severity = suggestion
|
||||
dotnet_naming_rule.sPascalCase_for_static_fields.symbols = static_internal_fields
|
||||
dotnet_naming_rule.sPascalCase_for_static_fields.style = sims3_static
|
||||
|
||||
dotnet_naming_symbols.static_internal_fields.required_modifiers = static
|
||||
dotnet_naming_symbols.static_internal_fields.applicable_kinds = field
|
||||
dotnet_naming_symbols.static_internal_fields.applicable_accessibilities = private
|
||||
|
||||
dotnet_naming_style.sims3_static.required_prefix = s
|
||||
dotnet_naming_style.sims3_static.capitalization = pascal_case
|
||||
|
||||
# all other fields should be _camelCase
|
||||
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
|
||||
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
|
||||
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
|
||||
|
||||
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
|
||||
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
|
||||
|
||||
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
|
||||
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
|
||||
|
||||
# Public members must be capitalized
|
||||
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
|
||||
dotnet_naming_symbols.public_symbols.applicable_kinds = property,method,field,event,delegate
|
||||
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public
|
||||
|
||||
dotnet_naming_rule.public_members_must_be_capitalized.style = first_word_upper_case_style
|
||||
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper
|
||||
|
||||
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion
|
||||
|
||||
# Code style defaults
|
||||
dotnet_sort_system_directives_first = true
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_preserve_single_line_statements = false
|
||||
|
||||
# Expression-level preferences
|
||||
dotnet_style_object_initializer = true : suggestion
|
||||
dotnet_style_collection_initializer = true : suggestion
|
||||
dotnet_style_explicit_tuple_names = true : suggestion
|
||||
dotnet_style_coalesce_expression = true : suggestion
|
||||
dotnet_style_null_propagation = true : suggestion
|
||||
|
||||
[*.cs]
|
||||
# New line preferences
|
||||
csharp_new_line_before_open_brace = all
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_finally = true
|
||||
csharp_new_line_before_members_in_object_initializers = true
|
||||
csharp_new_line_before_members_in_anonymous_types = true
|
||||
csharp_new_line_between_query_expression_clauses = true
|
||||
|
||||
# Indentation preferences
|
||||
csharp_indent_block_contents = true
|
||||
csharp_indent_braces = false
|
||||
csharp_indent_case_contents = true
|
||||
csharp_indent_switch_labels = true
|
||||
csharp_indent_labels = one_less_than_current
|
||||
|
||||
# only use var when it's obvious what the variable type is
|
||||
csharp_style_var_for_built_in_types = true : none
|
||||
csharp_style_var_when_type_is_apparent = true : none
|
||||
csharp_style_var_elsewhere = true : suggestion
|
||||
|
||||
# Code style defaults
|
||||
dotnet_sort_system_directives_first = true
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_preserve_single_line_statements = false
|
||||
|
||||
# Pattern matching
|
||||
csharp_style_pattern_matching_over_is_with_cast_check = true : suggestion
|
||||
csharp_style_pattern_matching_over_as_with_null_check = true : suggestion
|
||||
csharp_style_inlined_variable_declaration = true : suggestion
|
||||
|
||||
# Null checking preferences
|
||||
csharp_style_throw_expression = true : warning
|
||||
csharp_style_conditional_delegate_call = true : warning
|
||||
|
||||
# Space preferences
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_after_comma = true
|
||||
csharp_space_after_dot = false
|
||||
csharp_space_after_keywords_in_control_flow_statements = true
|
||||
csharp_space_after_semicolon_in_for_statement = true
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_around_declaration_statements = do_not_ignore
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_before_comma = false
|
||||
csharp_space_before_dot = false
|
||||
csharp_space_before_open_square_brackets = false
|
||||
csharp_space_before_semicolon_in_for_statement = false
|
||||
csharp_space_between_empty_square_brackets = false
|
||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_name_and_open_parenthesis = false
|
||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||
csharp_space_between_parentheses = false
|
||||
csharp_space_between_square_brackets = false
|
||||
|
||||
# CA1815: Override equals and operator equals on value types
|
||||
dotnet_diagnostic.CA1815.severity = silent
|
18
source/Servo.MotiveEngine/ExtensionUtils.cs
Normal file
18
source/Servo.MotiveEngine/ExtensionUtils.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
|
||||
namespace Servo.MotiveEngine
|
||||
{
|
||||
public static class ExtensionUtils
|
||||
{
|
||||
public static int MaxLimit(this int val, int max)
|
||||
{
|
||||
if (max < 0)
|
||||
throw new ArgumentOutOfRangeException();
|
||||
|
||||
if (val >= max)
|
||||
return max;
|
||||
|
||||
return val;
|
||||
}
|
||||
}
|
||||
}
|
104
source/Servo.MotiveEngine/Motives.cs
Normal file
104
source/Servo.MotiveEngine/Motives.cs
Normal file
|
@ -0,0 +1,104 @@
|
|||
using System.Linq;
|
||||
|
||||
namespace Servo.MotiveEngine
|
||||
{
|
||||
public class Motives
|
||||
{
|
||||
const int NAX_MOOD = 600;
|
||||
const int MAX_MOTIVE = 100;
|
||||
|
||||
public Motives(int hunger, int bladder, int fun, int energy,
|
||||
int environment, int social)
|
||||
{
|
||||
Hunger = hunger;
|
||||
Bladder = bladder;
|
||||
Fun = fun;
|
||||
Energy = energy;
|
||||
Environment = environment;
|
||||
Social = social;
|
||||
}
|
||||
|
||||
public int Hunger { get; set; }
|
||||
public int Bladder { get; set; }
|
||||
public int Fun { get; set; }
|
||||
public int Energy { get; set; }
|
||||
public int Environment { get; set; }
|
||||
public int Social { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The mood is the sum of all the motives.
|
||||
/// It deteremines the best course of action.
|
||||
/// </summary>
|
||||
public int Mood
|
||||
{
|
||||
get
|
||||
{
|
||||
var curMood = new[] { Hunger, Bladder, Fun,
|
||||
Social, Environment, Energy };
|
||||
|
||||
return curMood.Sum();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// In the game, this would increament gradually
|
||||
/// until it reaches it's max motive.
|
||||
/// </summary>
|
||||
/// <param name="motive">Current Motive</param>
|
||||
/// <param name="input">New Motive</param>
|
||||
/// <returns>Changed Motive</returns>
|
||||
int CalcuateMotiveChange(int motive, int input)
|
||||
{
|
||||
var curMotive = motive;
|
||||
var curMood = Mood;
|
||||
|
||||
// New motive equals the current motive plus the input
|
||||
var newMotive = curMotive + input;
|
||||
|
||||
// New mood equals the new motive plus the current mood
|
||||
var newMood = newMotive + curMood;
|
||||
|
||||
// Changed motive is the new motive with the limit
|
||||
var changedMotive = newMotive.MaxLimit(MAX_MOTIVE);
|
||||
|
||||
// Does the new motive increase my current motive?
|
||||
// Does the new motive increase my overall mood?
|
||||
if (changedMotive >= curMotive && curMood <= newMood
|
||||
&& changedMotive <= MAX_MOTIVE && curMood <= NAX_MOOD)
|
||||
return changedMotive;
|
||||
|
||||
// Fall back to the current movement
|
||||
return curMotive;
|
||||
}
|
||||
|
||||
public void ChangeHunger(int input)
|
||||
{
|
||||
Hunger = CalcuateMotiveChange(Hunger, input);
|
||||
}
|
||||
|
||||
public void ChangeFun(int input)
|
||||
{
|
||||
Fun = CalcuateMotiveChange(Fun, input);
|
||||
}
|
||||
|
||||
public void ChangeBladder(int input)
|
||||
{
|
||||
Bladder = CalcuateMotiveChange(Bladder, input);
|
||||
}
|
||||
|
||||
public void ChangeSocial(int input)
|
||||
{
|
||||
Social = CalcuateMotiveChange(Social, input);
|
||||
}
|
||||
|
||||
public void ChangeEnergy(int input)
|
||||
{
|
||||
Energy = CalcuateMotiveChange(Energy, input);
|
||||
}
|
||||
|
||||
public void ChangeEnvironment(int input)
|
||||
{
|
||||
Environment = CalcuateMotiveChange(Environment, input);
|
||||
}
|
||||
}
|
||||
}
|
7
source/Servo.MotiveEngine/Servo.MotiveEngine.csproj
Normal file
7
source/Servo.MotiveEngine/Servo.MotiveEngine.csproj
Normal file
|
@ -0,0 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
43
source/Servo.sln
Normal file
43
source/Servo.sln
Normal file
|
@ -0,0 +1,43 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30621.155
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Servo.MotiveEngine", "Servo.MotiveEngine\Servo.MotiveEngine.csproj", "{162D701B-5CBA-43A4-A763-F4906B287BE3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3B512BB9-9354-49A4-AE68-97531B21EBD5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.editorconfig = .editorconfig
|
||||
..\README.md = ..\README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Release|x64.Build.0 = Release|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{162D701B-5CBA-43A4-A763-F4906B287BE3}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8D4C7030-BF58-45BB-B093-4DB4FF75E95C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
Loading…
Add table
Add a link
Reference in a new issue