diff --git a/.editorconfig b/.editorconfig
index 1e47248..4868ece 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -63,7 +63,7 @@ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:sug
dotnet_style_predefined_type_for_member_access = true:suggestion
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
dotnet_style_parentheses_in_other_operators=always_for_clarity:silent
-dotnet_style_object_initializer = false
+dotnet_style_object_initializer = false:suggestion
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
@@ -130,9 +130,51 @@ resharper_suggest_var_or_type_elsewhere_highlighting = hint
resharper_suggest_var_or_type_simple_types_highlighting = hint
resharper_unused_auto_property_accessor_global_highlighting = none
csharp_style_deconstructed_variable_declaration=true:silent
+csharp_using_directive_placement = outside_namespace:suggestion
+csharp_prefer_simple_using_statement = true:suggestion
+csharp_prefer_braces = true:silent
+csharp_style_namespace_declarations = file_scoped:silent
+csharp_style_prefer_method_group_conversion = true:silent
+csharp_style_prefer_top_level_statements = true:silent
+csharp_style_expression_bodied_methods = false:silent
+csharp_style_expression_bodied_constructors = false:silent
+csharp_style_expression_bodied_operators = false:silent
+csharp_style_expression_bodied_properties = true:silent
+csharp_style_expression_bodied_indexers = true:silent
+csharp_style_expression_bodied_accessors = true:silent
+csharp_style_expression_bodied_lambdas = true:suggestion
+csharp_style_expression_bodied_local_functions = true:suggestion
+csharp_indent_labels = flush_left
+dotnet_diagnostic.MA0049.severity = silent
+dotnet_diagnostic.MA0007.severity = silent
+dotnet_diagnostic.MA0048.severity = silent
+dotnet_diagnostic.MA0006.severity = suggestion
+dotnet_diagnostic.MA0016.severity = suggestion
+dotnet_diagnostic.MA0008.severity = suggestion
+dotnet_diagnostic.CA1805.severity = warning
+dotnet_diagnostic.CA1825.severity = warning
+dotnet_diagnostic.CA1841.severity = suggestion
+dotnet_diagnostic.CA1845.severity = suggestion
+dotnet_diagnostic.MA0011.severity = silent
+dotnet_diagnostic.MA0076.severity = silent
+dotnet_diagnostic.MA0002.severity = silent
+csharp_style_prefer_switch_expression = true:suggestion
+csharp_style_prefer_pattern_matching = true:silent
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_prefer_not_pattern = true:suggestion
+csharp_style_prefer_extended_property_pattern = true:suggestion
[*.{appxmanifest,asax,ascx,aspx,axaml,axml,build,c,c++,cc,cginc,compute,config,cp,cpp,cs,cshtml,csproj,css,cu,cuh,cxx,dbml,discomap,dtd,h,hh,hlsl,hlsli,hlslinc,hpp,htm,html,hxx,inc,inl,ino,ipp,js,json,jsproj,jsx,lsproj,master,mpp,mq4,mq5,mqh,njsproj,nuspec,paml,proj,props,proto,razor,resjson,resw,resx,skin,StyleCop,targets,tasks,tpp,ts,tsx,usf,ush,vb,vbproj,xaml,xamlx,xml,xoml,xsd}]
indent_style = space
indent_size = 4
tab_width = 4
dotnet_style_parentheses_in_other_operators=always_for_clarity:silent
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_auto_properties = true:suggestion
+dotnet_style_operator_placement_when_wrapping = beginning_of_line
+dotnet_style_collection_initializer = true:suggestion
+dotnet_diagnostic.CA1852.severity = warning
+dotnet_style_namespace_match_folder = true:suggestion
diff --git a/Benchmark/Craftimizer.Benchmark.csproj b/Benchmark/Craftimizer.Benchmark.csproj
index 79298c0..e7b4a1c 100644
--- a/Benchmark/Craftimizer.Benchmark.csproj
+++ b/Benchmark/Craftimizer.Benchmark.csproj
@@ -7,6 +7,14 @@
enable
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
diff --git a/Benchmark/Program.cs b/Benchmark/Program.cs
index d91a17c..32eb7cc 100644
--- a/Benchmark/Program.cs
+++ b/Benchmark/Program.cs
@@ -1,12 +1,17 @@
using Craftimizer.Simulator;
using Craftimizer.Simulator.Actions;
+using Craftimizer.Solver.Crafty;
+using ObjectLayoutInspector;
namespace Craftimizer.Benchmark;
-internal class Program
+internal static class Program
{
- private static void Main(string[] args)
+ private static void Main()
{
+ //TypeLayout.PrintLayout(true);
+ //return;
+
var input = new SimulationInput()
{
Stats = new CharacterStats { Craftsmanship = 4041, Control = 3905, CP = 609, Level = 90 },
diff --git a/Craftimizer/Configuration.cs b/Craftimizer/Configuration.cs
index 30d93b7..d3c59d3 100644
--- a/Craftimizer/Configuration.cs
+++ b/Craftimizer/Configuration.cs
@@ -6,7 +6,7 @@ namespace Craftimizer.Plugin;
[Serializable]
public class Configuration : IPluginConfiguration
{
- public int Version { get; set; } = 0;
+ public int Version { get; set; } = 1;
public void Save()
{
diff --git a/Craftimizer/Craftimizer.Plugin.csproj b/Craftimizer/Craftimizer.Plugin.csproj
index 99d8a00..14c5f77 100644
--- a/Craftimizer/Craftimizer.Plugin.csproj
+++ b/Craftimizer/Craftimizer.Plugin.csproj
@@ -30,7 +30,11 @@
-
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
$(DalamudLibPath)FFXIVClientStructs.dll
diff --git a/Craftimizer/ImGuiUtils.cs b/Craftimizer/ImGuiUtils.cs
index 7cb176e..7b2bf03 100644
--- a/Craftimizer/ImGuiUtils.cs
+++ b/Craftimizer/ImGuiUtils.cs
@@ -5,7 +5,7 @@ using System.Numerics;
namespace Craftimizer.Plugin;
-internal class ImGuiUtils
+internal static class ImGuiUtils
{
private static readonly Stack<(Vector2 Min, Vector2 Max)> GroupPanelLabelStack = new();
diff --git a/Craftimizer/SimulatorUtils.cs b/Craftimizer/SimulatorUtils.cs
index 2d474d3..1f31a35 100644
--- a/Craftimizer/SimulatorUtils.cs
+++ b/Craftimizer/SimulatorUtils.cs
@@ -52,7 +52,7 @@ internal static class ActionUtils
var (craftAction, action) = GetActionRow(me, classJob);
if (craftAction != null)
return craftAction.Name.ToDalamudString().TextValue;
- else if (action != null)
+ if (action != null)
return action.Name.ToDalamudString().TextValue;
return "Unknown";
}
@@ -62,7 +62,7 @@ internal static class ActionUtils
var (craftAction, action) = GetActionRow(me, classJob);
if (craftAction != null)
return Icons.GetIconFromId(craftAction.Icon);
- else if (action != null)
+ if (action != null)
return Icons.GetIconFromId(action.Icon);
// Old "Steady Hand" action icon
return Icons.GetIconFromId(1953);
diff --git a/Craftimizer/packages.lock.json b/Craftimizer/packages.lock.json
index 3544bdf..c1aa84e 100644
--- a/Craftimizer/packages.lock.json
+++ b/Craftimizer/packages.lock.json
@@ -4,9 +4,15 @@
"net7.0-windows7.0": {
"DalamudPackager": {
"type": "Direct",
- "requested": "[2.1.10, )",
- "resolved": "2.1.10",
- "contentHash": "S6NrvvOnLgT4GDdgwuKVJjbFo+8ZEj+JsEYk9ojjOR/MMfv1dIFpT8aRJQfI24rtDcw1uF+GnSSMN4WW1yt7fw=="
+ "requested": "[2.1.11, )",
+ "resolved": "2.1.11",
+ "contentHash": "9qlAWoRRTiL/geAvuwR/g6Bcbrd/bJJgVnB/RurBiyKs6srsP0bvpoo8IK+Eg8EA6jWeM6/YJWs66w4FIAzqPw=="
+ },
+ "Meziantou.Analyzer": {
+ "type": "Direct",
+ "requested": "[2.0.61, )",
+ "resolved": "2.0.61",
+ "contentHash": "DhiEScqTxQb8R7s9EWMjs5F5EA7AD+JO5upb88QqPwPQUsAOm2gN5AjeQon3XLrquw1G5r+C9Yxct+rFxwuMZg=="
},
"craftimizer.simulator": {
"type": "Project"
diff --git a/Simulator/Actions/AdvancedTouch.cs b/Simulator/Actions/AdvancedTouch.cs
index 3dad79a..d234b77 100644
--- a/Simulator/Actions/AdvancedTouch.cs
+++ b/Simulator/Actions/AdvancedTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class AdvancedTouch : BaseAction
+internal sealed class AdvancedTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 84;
diff --git a/Simulator/Actions/BaseAction.cs b/Simulator/Actions/BaseAction.cs
index 0105320..aaf5fa1 100644
--- a/Simulator/Actions/BaseAction.cs
+++ b/Simulator/Actions/BaseAction.cs
@@ -6,9 +6,7 @@ public abstract class BaseAction
{
[ThreadStatic]
internal static Simulator? TLSSimulation;
- protected static Simulator Simulation => TLSSimulation ?? throw new NullReferenceException();
-
- public BaseAction() { }
+ protected static Simulator Simulation => TLSSimulation!;
// Non-instanced properties
public abstract ActionCategory Category { get; }
diff --git a/Simulator/Actions/BasicSynthesis.cs b/Simulator/Actions/BasicSynthesis.cs
index c8440e9..888f08b 100644
--- a/Simulator/Actions/BasicSynthesis.cs
+++ b/Simulator/Actions/BasicSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class BasicSynthesis : BaseAction
+internal sealed class BasicSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 1;
diff --git a/Simulator/Actions/BasicTouch.cs b/Simulator/Actions/BasicTouch.cs
index c37c2fb..bd2a765 100644
--- a/Simulator/Actions/BasicTouch.cs
+++ b/Simulator/Actions/BasicTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class BasicTouch : BaseAction
+internal sealed class BasicTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 5;
diff --git a/Simulator/Actions/ByregotsBlessing.cs b/Simulator/Actions/ByregotsBlessing.cs
index 86f40dc..3317099 100644
--- a/Simulator/Actions/ByregotsBlessing.cs
+++ b/Simulator/Actions/ByregotsBlessing.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class ByregotsBlessing : BaseAction
+internal sealed class ByregotsBlessing : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 50;
diff --git a/Simulator/Actions/CarefulObservation.cs b/Simulator/Actions/CarefulObservation.cs
index 224a634..cdd12f3 100644
--- a/Simulator/Actions/CarefulObservation.cs
+++ b/Simulator/Actions/CarefulObservation.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class CarefulObservation : BaseAction
+internal sealed class CarefulObservation : BaseAction
{
public override ActionCategory Category => ActionCategory.Other;
public override int Level => 55;
diff --git a/Simulator/Actions/CarefulSynthesis.cs b/Simulator/Actions/CarefulSynthesis.cs
index 693520f..59413d5 100644
--- a/Simulator/Actions/CarefulSynthesis.cs
+++ b/Simulator/Actions/CarefulSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class CarefulSynthesis : BaseAction
+internal sealed class CarefulSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 62;
diff --git a/Simulator/Actions/DelicateSynthesis.cs b/Simulator/Actions/DelicateSynthesis.cs
index 724b86d..82e6c7c 100644
--- a/Simulator/Actions/DelicateSynthesis.cs
+++ b/Simulator/Actions/DelicateSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class DelicateSynthesis : BaseAction
+internal sealed class DelicateSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 76;
diff --git a/Simulator/Actions/FinalAppraisal.cs b/Simulator/Actions/FinalAppraisal.cs
index e792d97..132ddfe 100644
--- a/Simulator/Actions/FinalAppraisal.cs
+++ b/Simulator/Actions/FinalAppraisal.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class FinalAppraisal : BaseBuffAction
+internal sealed class FinalAppraisal : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 42;
diff --git a/Simulator/Actions/FocusedSynthesis.cs b/Simulator/Actions/FocusedSynthesis.cs
index 6c8d95b..075c3f2 100644
--- a/Simulator/Actions/FocusedSynthesis.cs
+++ b/Simulator/Actions/FocusedSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class FocusedSynthesis : BaseAction
+internal sealed class FocusedSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 67;
diff --git a/Simulator/Actions/FocusedTouch.cs b/Simulator/Actions/FocusedTouch.cs
index dc83848..667305b 100644
--- a/Simulator/Actions/FocusedTouch.cs
+++ b/Simulator/Actions/FocusedTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class FocusedTouch : BaseAction
+internal sealed class FocusedTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 68;
diff --git a/Simulator/Actions/GreatStrides.cs b/Simulator/Actions/GreatStrides.cs
index 202d949..afe47cf 100644
--- a/Simulator/Actions/GreatStrides.cs
+++ b/Simulator/Actions/GreatStrides.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class GreatStrides : BaseBuffAction
+internal sealed class GreatStrides : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Buffs;
public override int Level => 21;
diff --git a/Simulator/Actions/Groundwork.cs b/Simulator/Actions/Groundwork.cs
index baed064..eb8bf7b 100644
--- a/Simulator/Actions/Groundwork.cs
+++ b/Simulator/Actions/Groundwork.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class Groundwork : BaseAction
+internal sealed class Groundwork : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 72;
diff --git a/Simulator/Actions/HastyTouch.cs b/Simulator/Actions/HastyTouch.cs
index 745e0ee..e655ba2 100644
--- a/Simulator/Actions/HastyTouch.cs
+++ b/Simulator/Actions/HastyTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class HastyTouch : BaseAction
+internal sealed class HastyTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 9;
diff --git a/Simulator/Actions/HeartAndSoul.cs b/Simulator/Actions/HeartAndSoul.cs
index ed13336..8311779 100644
--- a/Simulator/Actions/HeartAndSoul.cs
+++ b/Simulator/Actions/HeartAndSoul.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class HeartAndSoul : BaseBuffAction
+internal sealed class HeartAndSoul : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Other;
public override int Level => 86;
diff --git a/Simulator/Actions/Innovation.cs b/Simulator/Actions/Innovation.cs
index f8c5737..28ad3be 100644
--- a/Simulator/Actions/Innovation.cs
+++ b/Simulator/Actions/Innovation.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class Innovation : BaseBuffAction
+internal sealed class Innovation : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Buffs;
public override int Level => 26;
diff --git a/Simulator/Actions/IntensiveSynthesis.cs b/Simulator/Actions/IntensiveSynthesis.cs
index 270ed37..7f1022c 100644
--- a/Simulator/Actions/IntensiveSynthesis.cs
+++ b/Simulator/Actions/IntensiveSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class IntensiveSynthesis : BaseAction
+internal sealed class IntensiveSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 78;
diff --git a/Simulator/Actions/Manipulation.cs b/Simulator/Actions/Manipulation.cs
index 2e9f44a..e0a27ef 100644
--- a/Simulator/Actions/Manipulation.cs
+++ b/Simulator/Actions/Manipulation.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class Manipulation : BaseBuffAction
+internal sealed class Manipulation : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Durability;
public override int Level => 65;
diff --git a/Simulator/Actions/MastersMend.cs b/Simulator/Actions/MastersMend.cs
index e54443e..feb30db 100644
--- a/Simulator/Actions/MastersMend.cs
+++ b/Simulator/Actions/MastersMend.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class MastersMend : BaseAction
+internal sealed class MastersMend : BaseAction
{
public override ActionCategory Category => ActionCategory.Durability;
public override int Level => 7;
diff --git a/Simulator/Actions/MuscleMemory.cs b/Simulator/Actions/MuscleMemory.cs
index 0b71c16..f35f839 100644
--- a/Simulator/Actions/MuscleMemory.cs
+++ b/Simulator/Actions/MuscleMemory.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class MuscleMemory : BaseAction
+internal sealed class MuscleMemory : BaseAction
{
public override ActionCategory Category => ActionCategory.FirstTurn;
public override int Level => 54;
diff --git a/Simulator/Actions/Observe.cs b/Simulator/Actions/Observe.cs
index 7068826..3ed19b5 100644
--- a/Simulator/Actions/Observe.cs
+++ b/Simulator/Actions/Observe.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class Observe : BaseAction
+internal sealed class Observe : BaseAction
{
public override ActionCategory Category => ActionCategory.Other;
public override int Level => 13;
diff --git a/Simulator/Actions/PreciseTouch.cs b/Simulator/Actions/PreciseTouch.cs
index d076971..a4c2382 100644
--- a/Simulator/Actions/PreciseTouch.cs
+++ b/Simulator/Actions/PreciseTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class PreciseTouch : BaseAction
+internal sealed class PreciseTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 53;
diff --git a/Simulator/Actions/PreparatoryTouch.cs b/Simulator/Actions/PreparatoryTouch.cs
index d246ed3..fba6bc9 100644
--- a/Simulator/Actions/PreparatoryTouch.cs
+++ b/Simulator/Actions/PreparatoryTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class PreparatoryTouch : BaseAction
+internal sealed class PreparatoryTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 71;
diff --git a/Simulator/Actions/PrudentSynthesis.cs b/Simulator/Actions/PrudentSynthesis.cs
index 5c20439..3397c64 100644
--- a/Simulator/Actions/PrudentSynthesis.cs
+++ b/Simulator/Actions/PrudentSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class PrudentSynthesis : BaseAction
+internal sealed class PrudentSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 88;
diff --git a/Simulator/Actions/PrudentTouch.cs b/Simulator/Actions/PrudentTouch.cs
index 7bd06dc..2446a8e 100644
--- a/Simulator/Actions/PrudentTouch.cs
+++ b/Simulator/Actions/PrudentTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class PrudentTouch : BaseAction
+internal sealed class PrudentTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 66;
diff --git a/Simulator/Actions/RapidSynthesis.cs b/Simulator/Actions/RapidSynthesis.cs
index d82cf79..0868136 100644
--- a/Simulator/Actions/RapidSynthesis.cs
+++ b/Simulator/Actions/RapidSynthesis.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class RapidSynthesis : BaseAction
+internal sealed class RapidSynthesis : BaseAction
{
public override ActionCategory Category => ActionCategory.Synthesis;
public override int Level => 9;
diff --git a/Simulator/Actions/Reflect.cs b/Simulator/Actions/Reflect.cs
index c09d75d..e2bfebe 100644
--- a/Simulator/Actions/Reflect.cs
+++ b/Simulator/Actions/Reflect.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class Reflect : BaseAction
+internal sealed class Reflect : BaseAction
{
public override ActionCategory Category => ActionCategory.FirstTurn;
public override int Level => 69;
diff --git a/Simulator/Actions/StandardTouch.cs b/Simulator/Actions/StandardTouch.cs
index f3525ce..087ff41 100644
--- a/Simulator/Actions/StandardTouch.cs
+++ b/Simulator/Actions/StandardTouch.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class StandardTouch : BaseAction
+internal sealed class StandardTouch : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 18;
diff --git a/Simulator/Actions/TrainedEye.cs b/Simulator/Actions/TrainedEye.cs
index 25a1df0..c5834b4 100644
--- a/Simulator/Actions/TrainedEye.cs
+++ b/Simulator/Actions/TrainedEye.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class TrainedEye : BaseAction
+internal sealed class TrainedEye : BaseAction
{
public override ActionCategory Category => ActionCategory.FirstTurn;
public override int Level => 80;
diff --git a/Simulator/Actions/TrainedFinesse.cs b/Simulator/Actions/TrainedFinesse.cs
index e65e7be..d7a26ac 100644
--- a/Simulator/Actions/TrainedFinesse.cs
+++ b/Simulator/Actions/TrainedFinesse.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class TrainedFinesse : BaseAction
+internal sealed class TrainedFinesse : BaseAction
{
public override ActionCategory Category => ActionCategory.Quality;
public override int Level => 90;
diff --git a/Simulator/Actions/TricksOfTheTrade.cs b/Simulator/Actions/TricksOfTheTrade.cs
index 80b2dcc..28a8002 100644
--- a/Simulator/Actions/TricksOfTheTrade.cs
+++ b/Simulator/Actions/TricksOfTheTrade.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class TricksOfTheTrade : BaseAction
+internal sealed class TricksOfTheTrade : BaseAction
{
public override ActionCategory Category => ActionCategory.Other;
public override int Level => 13;
diff --git a/Simulator/Actions/Veneration.cs b/Simulator/Actions/Veneration.cs
index 5bfb491..f609396 100644
--- a/Simulator/Actions/Veneration.cs
+++ b/Simulator/Actions/Veneration.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class Veneration : BaseBuffAction
+internal sealed class Veneration : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Buffs;
public override int Level => 15;
diff --git a/Simulator/Actions/WasteNot.cs b/Simulator/Actions/WasteNot.cs
index d25be2c..f337b09 100644
--- a/Simulator/Actions/WasteNot.cs
+++ b/Simulator/Actions/WasteNot.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class WasteNot : BaseBuffAction
+internal sealed class WasteNot : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Durability;
public override int Level => 15;
diff --git a/Simulator/Actions/WasteNot2.cs b/Simulator/Actions/WasteNot2.cs
index ef1a3b0..935de53 100644
--- a/Simulator/Actions/WasteNot2.cs
+++ b/Simulator/Actions/WasteNot2.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions;
-internal class WasteNot2 : BaseBuffAction
+internal sealed class WasteNot2 : BaseBuffAction
{
public override ActionCategory Category => ActionCategory.Durability;
public override int Level => 47;
diff --git a/Simulator/CharacterStats.cs b/Simulator/CharacterStats.cs
index f216497..f114dbf 100644
--- a/Simulator/CharacterStats.cs
+++ b/Simulator/CharacterStats.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator;
-public record CharacterStats
+public sealed record CharacterStats
{
public int Craftsmanship { get; init; }
public int Control { get; init; }
diff --git a/Simulator/Craftimizer.Simulator.csproj b/Simulator/Craftimizer.Simulator.csproj
index cfadb03..b1f8f15 100644
--- a/Simulator/Craftimizer.Simulator.csproj
+++ b/Simulator/Craftimizer.Simulator.csproj
@@ -6,4 +6,11 @@
enable
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/Simulator/Recipe.cs b/Simulator/Recipe.cs
index c1562a2..5cdb32b 100644
--- a/Simulator/Recipe.cs
+++ b/Simulator/Recipe.cs
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator;
-public record RecipeInfo
+public sealed record RecipeInfo
{
public bool IsExpert { get; init; }
public int ClassJobLevel { get; init; }
diff --git a/Simulator/SimulationInput.cs b/Simulator/SimulationInput.cs
index 5d8b47f..824352e 100644
--- a/Simulator/SimulationInput.cs
+++ b/Simulator/SimulationInput.cs
@@ -1,5 +1,3 @@
-using System;
-
namespace Craftimizer.Simulator;
public readonly record struct SimulationInput
diff --git a/Solver/Craftimizer.Solver.csproj b/Solver/Craftimizer.Solver.csproj
index 77caee8..985ce10 100644
--- a/Solver/Craftimizer.Solver.csproj
+++ b/Solver/Craftimizer.Solver.csproj
@@ -6,6 +6,13 @@
enable
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/Solver/Crafty/ActionSet.cs b/Solver/Crafty/ActionSet.cs
index 5e11f54..1910bcb 100644
--- a/Solver/Crafty/ActionSet.cs
+++ b/Solver/Crafty/ActionSet.cs
@@ -7,7 +7,7 @@ namespace Craftimizer.Solver.Crafty;
public sealed class ActionSet
{
- private uint Bits { get; set; } = 0;
+ private uint Bits { get; set; }
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int NthBitSet(uint value, int n)
diff --git a/Solver/Crafty/NodeScores.cs b/Solver/Crafty/NodeScores.cs
index bee1631..1fed933 100644
--- a/Solver/Crafty/NodeScores.cs
+++ b/Solver/Crafty/NodeScores.cs
@@ -1,8 +1,8 @@
namespace Craftimizer.Solver.Crafty;
-public class NodeScores
+public sealed class NodeScores
{
- public float ScoreSum { get; set; } = 0;
- public float MaxScore { get; set; } = 0;
- public float Visits { get; set; } = 0;
+ public float ScoreSum { get; set; }
+ public float MaxScore { get; set; }
+ public float Visits { get; set; }
}
diff --git a/Solver/Crafty/Solver.cs b/Solver/Crafty/Solver.cs
index fb98b25..f05738b 100644
--- a/Solver/Crafty/Solver.cs
+++ b/Solver/Crafty/Solver.cs
@@ -1,5 +1,6 @@
using Craftimizer.Simulator;
using Craftimizer.Simulator.Actions;
+using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace Craftimizer.Solver.Crafty;
@@ -213,6 +214,7 @@ public class Solver
return (actions, state);
}
+ Debugger.Break();
var solver = new Solver(state, true);
while (!solver.Simulator.IsComplete)
{
@@ -232,6 +234,7 @@ public class Solver
solver = new Solver(state, true);
}
+ Debugger.Break();
return (actions, state);
}