From 1e5cc968379d50d557987b46a6e371ab5f1c847d Mon Sep 17 00:00:00 2001 From: Asriel Camora Date: Fri, 21 Jul 2023 16:01:01 +0400 Subject: [PATCH] Invoke algorithm directly from enum --- Craftimizer/Configuration.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Craftimizer/Configuration.cs b/Craftimizer/Configuration.cs index bc0c4b4..73aa8cc 100644 --- a/Craftimizer/Configuration.cs +++ b/Craftimizer/Configuration.cs @@ -4,6 +4,7 @@ using Craftimizer.Solver.Crafty; using Dalamud.Configuration; using System; using System.Collections.Generic; +using System.Threading; namespace Craftimizer.Plugin; @@ -23,6 +24,33 @@ public enum SolverAlgorithm StepwiseFurcated, } +public static class AlgorithmUtils +{ + public static void Invoke(this SolverAlgorithm me, SolverConfig config, SimulationState state, Action? actionCallback = null, CancellationToken token = default) + { + Func?, CancellationToken, SolverSolution> func = me switch + { + SolverAlgorithm.Oneshot => Solver.Crafty.Solver.SearchOneshot, + SolverAlgorithm.OneshotForked => Solver.Crafty.Solver.SearchOneshotForked, + SolverAlgorithm.Stepwise => Solver.Crafty.Solver.SearchStepwise, + SolverAlgorithm.StepwiseForked => Solver.Crafty.Solver.SearchStepwiseForked, + SolverAlgorithm.StepwiseFurcated or _ => Solver.Crafty.Solver.SearchStepwiseFurcated, + }; + try + { + func(config, state, actionCallback, token); + } + catch (AggregateException e) + { + e.Handle(ex => ex is OperationCanceledException); + } + catch (OperationCanceledException) + { + + } + } +} + [Serializable] public class Configuration : IPluginConfiguration {