public StateChangedEventArgs(Core.State oldState, Core.Move move, Core.State newState, bool isUndo = false) { OldState = oldState; Move = move; NewState = newState; IsUndo = isUndo; }
public void ApplyMove(Core.Move move) { var oldState = CurrentState; var newState = oldState.ApplyMove(move); redoStack.Clear(); redoMoves.Clear(); if (undoStack.Count == maxUndoStackSize) { undoStack.RemoveFirst(); } undoStack.AddLast(oldState); moves.AddLast(move); CurrentState = newState; OnStateChanged(oldState, move, newState); }
private void OnStateChanged(Core.State oldState, Core.Move move, Core.State newState, bool isUndo = false) { if (StateChanged != null) { StateChanged(this, new StateChangedEventArgs( oldState, move, newState, isUndo)); } NotifyPropertyChanged("MoveCount"); if (oldState != null && newState != null && PuzzleSolved != null) { if (!oldState.IsWinning && newState.IsWinning) { PuzzleSolved(this, new EventArgs()); } } }
public bool ValidateMove(Core.Move move) { return(CurrentState.ValidateMove(move)); }