private Game(GameData data, GameField field, Player playerWhite, Player playerBlack) { this.data = data; this.field = field; this.playerWhite = playerWhite; this.playerBlack = playerBlack; gameHistory = new List <Command>(); this.playerWhite.setMoveFunc(WhitePlayerMoved); //привязываем функции к событиям this.playerBlack.setMoveFunc(BlackPlayerMoved); emitWhiteMove = this.playerWhite.getMoveComand; emitBlackMove = this.playerBlack.getMoveComand; if (this.playerWhite is FormControl) //если БЕЛЫЙ это formControl { playerWhiteFormControl = (FormControl)this.playerWhite; //приводя их к такому виду, мы избавляемся от множества проверок } if (this.playerBlack is FormControl) //если ЧЕРНЫЙ это formControl { playerBlackFormControl = (FormControl)this.playerBlack; } isWhitTurn = true; emitWhiteMove(); }
private void PlayerMoved(MoveComand emitActiv, MoveComand emitPassiv, Command command) { if (command.comandIsCorrect) // ход корректен { gameHistory.Add(command); field.DisActivate(); // убираем подсветку command.Execute(); isWhitTurn = !isWhitTurn; // меняем порядок шагов if (data.IsKingChecked(isWhitTurn)) { if (isWhitTurn) { playerWhite.setKingChecked(); } else { playerBlack.setKingChecked(); } } emitPassiv();//посылаем сигнал, что ходит тот, кто ждал } else // ход не удался { emitActiv(); // посылаем сигнал, что опять ходит тот, кто ходил } }