private void ApplyMoveEffects() { //PlayerWaiting is the player who made the last move //Check or mate if (GamePosition.Check) { bool MovedIsHuman = PlayerWaiting is HumanPlayer; bool LostIsHuman = PlayerToMove is HumanPlayer; int ColorWin = (PlayerWaiting == PlayerWhite) ? Color.White : Color.Black; if (GamePosition.Checkmate) { BoardView.Checkmate(MovedIsHuman, LostIsHuman, ColorWin); } else { BoardView.Check(true); } } //Stalemate else if (GamePosition.Stalemate) { BoardView.Stalemate(); } //Draw by fifty-move rule else { if (GamePosition.MovesFiftyRuleCount >= 50) { BoardView.FiftyMoveRule(); } } if (Global.USE_TEST) { if (PlayerWaiting is EnginePlayer) { EnginePlayer EP = (EnginePlayer)(PlayerWaiting); Test.ShowStats("Time: " + EP.TEST_ThinkTime + "\n"); Test.ShowStats("Total nodes considered: " + EP.TEST_Nodes + " (" + Math.Round(EP.TEST_Nodes / EP.TEST_ThinkTime.TotalSeconds) + " n/s)\n"); Test.ShowStats("Total positions evaluated: " + EP.TEST_Evaluated.ToString() + " (" + Math.Round(EP.TEST_Evaluated / EP.TEST_ThinkTime.TotalSeconds) + " n/s)\n"); Test.ShowStats("LegalMoves calculated " + EP.TEST_LegalMovesCallCount.ToString() + " times\n"); //Test.ShowStats("Attacks called " + EP.TEST_AttacksCallCount.ToString() + " times\n"); //Test.ShowStats("\n"); } Test.ShowStats("Moves fifty-rule: " + GamePosition.MovesFiftyRuleCount.ToString() + "\n\n"); } int WhiteMaterialAdvantage = CountMaterial(); BoardView.SetMaterial(WhiteMaterialAdvantage, -WhiteMaterialAdvantage); }