public static void UpdateBoardBasedOnMove(UvsChess.Framework.ChessState selectedItem, ChessMove move, bool isWhiteChecked) { lock (_updateGuiDataLockObject) { _guiEvents.Add(new GuiEvent(Actually_UpdateBoardBasedOnMove, selectedItem, move, isWhiteChecked)); } }
private static void Actually_UpdateBoardBasedOnMove(params object[] eventArgs) { UvsChess.Framework.ChessState selectedItem = (UvsChess.Framework.ChessState)eventArgs[0]; ChessMove move = (ChessMove)eventArgs[1]; bool isWhiteChecked = (bool)eventArgs[2]; //ChessState tmpState = new ChessState(item.fenboard); selectedItem.MakeMove(move); selectedItem.PreviousMove = null; selectedItem.PreviousBoard = null; if (isWhiteChecked) { selectedItem.CurrentPlayerColor = ChessColor.White; } else { selectedItem.CurrentPlayerColor = ChessColor.Black; } //item.fenboard = tmpState.ToFenBoard(); // This causes the "selected index changed event" //lstHistory.Items[lstHistory.SelectedIndex] = tmpState; MainForm.lstHistory.SelectedItem = selectedItem; // Force update the lstHistory and the GuiChessBoard Actually_UpdateBoardBasedOnLstHistory(selectedItem); }
public static void UpdateBoardBasedOnLstHistory(UvsChess.Framework.ChessState selectedItem) { lock (_updateGuiDataLockObject) { _guiEvents.Add(new GuiEvent(Actually_UpdateBoardBasedOnLstHistory, selectedItem)); } }
private static void Actually_AddToHistory(params object[] eventArgs) { UvsChess.Framework.ChessState state = (UvsChess.Framework.ChessState)eventArgs[0]; MainForm.lstHistory.Items.Add(state); MainForm.lstHistory.SelectedIndex = MainForm.lstHistory.Items.Count - 1; }
private static void Actually_ResetHistory(params object[] eventArgs) { UvsChess.Framework.ChessState newState = (UvsChess.Framework.ChessState)eventArgs[0]; MainForm.lstHistory.Items.Clear(); Actually_AddToHistory(new object[] { newState }); }
public static void ResetHistory(UvsChess.Framework.ChessState newState) { lock (_updateGuiDataLockObject) { _guiEvents.Add(new GuiEvent(Actually_ResetHistory, newState.Clone())); } }
public static void AddToHistory(UvsChess.Framework.ChessState state) { lock (_updateGuiDataLockObject) { _guiEvents.Add(new GuiEvent(Actually_AddToHistory, state.Clone())); _wasHistoryUpdated = true; } }
private static UvsChess.Framework.ChessState Actually_GetUpdated_LstHistory_SelectedItem() { UvsChess.Framework.ChessState selectedState = (UvsChess.Framework.ChessState)MainForm.lstHistory.SelectedItem; if (MainForm.radWhite.Checked) { selectedState.CurrentPlayerColor = ChessColor.White; } else { selectedState.CurrentPlayerColor = ChessColor.Black; } selectedState.HalfMoves = Convert.ToInt32(MainForm.numHalfMoves.Value); selectedState.FullMoves = Convert.ToInt32(MainForm.numFullMoves.Value); return(selectedState); }
private static void Actually_UpdateBoardBasedOnLstHistory(params object[] eventArgs) { UvsChess.Framework.ChessState selectedItem = (UvsChess.Framework.ChessState)eventArgs[0]; if (selectedItem.CurrentPlayerColor == ChessColor.White) { MainForm.radWhite.Checked = true; } else { MainForm.radBlack.Checked = true; } MainForm.numFullMoves.Value = selectedItem.FullMoves; MainForm.numHalfMoves.Value = selectedItem.HalfMoves; MainForm.chessBoardControl.ResetBoard(selectedItem.CurrentBoard, selectedItem.PreviousMove); }
private static void Actually_SaveSelectedStateToDisk(params object[] eventArgs) { MainForm.saveFileDialog1.Filter = "FEN files (*.fen) | *.fen"; System.Windows.Forms.DialogResult result = MainForm.saveFileDialog1.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { StreamWriter writer = new StreamWriter(MainForm.saveFileDialog1.FileName); AddToMainLog("Saving board to: " + MainForm.saveFileDialog1.FileName); UvsChess.Framework.ChessState item = Actually_GetUpdated_LstHistory_SelectedItem(); string fenboard = item.ToFenBoard(); writer.WriteLine(fenboard); writer.Close(); } }
private static void Actually_StartGame(params object[] eventArgs) { if (!_isInGameMode) { _isInGameMode = true; UvsChess.Framework.ChessState item = Actually_GetUpdated_LstHistory_SelectedItem(); _mainGame = new UvsChess.Framework.ChessGame(item, GuiEventLoop.WhitePlayerName, GuiEventLoop.BlackPlayerName); // Remove WinGui from the GuiChessBoard updates MainForm.chessBoardControl.PieceMovedByHuman -= MainForm.PieceMovedByHuman_Changed; // Add the ChessGame to the GuiChessBoard updates MainForm.chessBoardControl.PieceMovedByHuman += _mainGame.WhitePlayer_HumanMovedPieceEvent; MainForm.chessBoardControl.PieceMovedByHuman += _mainGame.BlackPlayer_HumanMovedPieceEvent; // Add WinGui to the ChessGame updates event _mainGame.UpdatedState += GuiEventLoop.AddToHistory; _mainGame.SetGuiChessBoard_IsLocked += GuiEventLoop.SetGuiChessBoard_IsLocked; // Add WinGui to the DeclareResults event _mainGame.DeclareResults += GuiEventLoop.DeclareResults; _mainGame.SetDecisionTree += GuiEventLoop.SetDecisionTree; Actually_RemoveHistoryAfterSelected(); Actually_DisableMenuItemsDuringPlay(); Actually_DisableRadioBtnsAndComboBoxes(); Actually_DisableHistoryWindowClicking(); GuiEventLoop.Actually_SetGuiChessBoard_IsLocked(new object[] { true }); _mainGame.StartGame(); } }