private void PreviousExecute() { if (This.Bot == null) { return; } if (this.OppositePlayer.CurrentMove != null) { Move move = this.OppositePlayer.CurrentMove; this.TempMoves.Add(move); Move oppositeMove = move.OppositeMove(); this.MakeMove(oppositeMove); this.OppositePlayer.SetCurrentMove(null); This.Board[oppositeMove.StartPosition.File][oppositeMove.StartPosition.Rank].Piece = oppositeMove.StartPosition.Piece; if (oppositeMove.StartPosition.Piece != null) { This.Game.CurrentPlayer.Materials.Add(This.Board[oppositeMove.StartPosition.File][oppositeMove.StartPosition.Rank].Piece); } if (this.CurrentPlayer.PreviousMove != null) { this.CurrentPlayer.SetCurrentMove(this.CurrentPlayer.PreviousMove); int index = this.CurrentPlayer.Moves.IndexOf(this.CurrentPlayer.PreviousMove); if (index > 0) { this.CurrentPlayer.PreviousMove = this.CurrentPlayer.Moves[index - 1]; } else { this.CurrentPlayer.PreviousMove = null; } } this.CurrentPlayer = this.OppositePlayer; This.Board.ResetLegalMoves(); This.Board.ResetBoardColors(); This.Board.StartSquare = null; } }