public void Solve(CraftingSim sim) { Sim = sim.Clone(); MaxProgress = Sim.CurrentRecipe.MaxProgress; MaxQuality = Sim.CurrentRecipe.MaxQuality; var a = C.CraftingActions.Values.Where(x => x.IncreasesQuality).ToList(); a.Add(C.InnerQuiet); a.Add(C.WasteNot); a.Add(C.WasteNotII); a.Add(C.GreatStrides); a.Add(C.Manipulation); a.Add(C.MastersMend); a.Add(C.Observe); Sim.RemoveActions(); //Sim.AddActions(C.Reflect); ushort[] actions = new ushort[4]; for (int i = 0; i < 4; i++) { actions[i] = 0; } Dictionary <ExtendedArray <ushort>, int> QValues = new Dictionary <ExtendedArray <ushort>, int>(); PossibleCraftingAction pAction = new PossibleCraftingAction(a.Select(x => x.Id)); while (true) { Sim.RemoveActions(); Sim.AddActions(true, actions.Select(x => C.CraftingActions[x])); QValues[Sim.GetCraftingActions().Select(x => x.Id).ToArray()] = Sim.CurrentQuality; int index = 0; while (a[index] == a.Last()) { actions[index] = a[0].Id; index++; } actions[index]++; } }
public void AddPossibleAction(PossibleCraftingAction action) { PossibleIds.Add(action); }