Exemplo n.º 1
0
        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]++;
            }
        }
Exemplo n.º 2
0
 public void AddPossibleAction(PossibleCraftingAction action)
 {
     PossibleIds.Add(action);
 }