public CraftingState FindBetterState(CraftingSim sim, IEnumerable <int> actions, CraftingState betterThan) { int l = sim.CraftingActionsLength; foreach (var i in actions) { CraftingSim s = new CraftingSim(); sim.CopyTo(s, true); s.AddActions(true, C.CraftingActions[i]); CraftingState state = GetState(s); if (s.CurrentQuality >= s.CurrentRecipe.MaxQuality) { if (state.ActionIds.Length < betterThan.ActionIds.Length) { return(state); } } if (s.CraftingActionsLength == l) { state.CanAddActions = false; } else { NextStates.Add(state); if (state.CanAddActions) { return(state.FindBetterState(s, actions, betterThan)); } } } return(null); }
public bool IsCorrectAnswer(string answer) { if (NextStates.Count == 1 && NextStates[0].Item1.Options.Count == 1 && NextStates[0].Item1.Options.Contains("")) { return(true); } return(NextStates.Any(a => a.Item1.Equals(new Answer(answer)))); }
public void GenerateNextStates(string order) { foreach (char direction in order) { if (_mediator.IsMoveAllowed(this, direction)) { NextStates.Add(_mediator.Move(this, direction)); } } }
public State GetNextState(string answer) { if (!IsCorrectAnswer(answer)) { return(this); } if (NextStates.Count == 1 && NextStates[0].Item1.Options.Count == 1 && NextStates[0].Item1.Options.Contains("")) { return(NextStates[0].Item2); } return(NextStates.First(a => a.Item1.Equals(new Answer(answer))).Item2); }
private void UpdateCommands() { NextStates.Clear(); foreach (var state in _adapter.AvailableForwardActions) { NextStates.Add(state); } foreach (var state in _adapter.AvailableBackwardActions) { NextStates.Add(state); } executeActionCommand?.RaiseCanExecuteChanged(); }