コード例 #1
0
ファイル: Game.cs プロジェクト: devowl/networkchess
        private void NotifyAboutCheckMate(Player initiator, Player opponent, ChessPoint from, ChessPoint to)
        {
            var field = _virtualField.CloneMatrix();

            _turnColor = _turnColor.Invert();
            var winner = initiator.PlayerColor;

            var winnerGameInfo = new WcfGameInfo(
                initiator.PlayerColor,
                opponent.PlayerName,
                field.ToJaggedArray(),
                _turnColor,
                winner);

            var loserGameInfo = new WcfGameInfo(
                initiator.PlayerColor,
                opponent.PlayerName,
                field.ToJaggedArray(),
                _turnColor,
                winner);

            initiator.Callback.GameHasEnded(winnerGameInfo, from.FromBusiness(), to.FromBusiness());
            opponent.Callback.GameHasEnded(loserGameInfo, from.FromBusiness(), to.FromBusiness());

            GameEnded?.Invoke(this, EventArgs.Empty);
        }
コード例 #2
0
        /// <inheritdoc/>
        public void GameHasEnded(WcfGameInfo gameInfo, WcfChessPoint from, WcfChessPoint to)
        {
            var args = new FieldInfoArgs(
                gameInfo.GameField,
                gameInfo.TurnColor,
                @from.ToBusiness(),
                to.ToBusiness(),
                gameInfo.PlayerColor,
                null);

            FieldUpdated?.Invoke(this, args);
            GameEnded?.Invoke(this, new GameEndedArgs(gameInfo.WinnerColor));
        }
コード例 #3
0
ファイル: Game.cs プロジェクト: devowl/networkchess
        public void Initialize()
        {
            if (_isInitialized)
            {
                return;
            }

            var randomColor  = DateTime.Now.Millisecond % 2 == 0 ? PlayerColor.White : PlayerColor.Black;
            var player1Color = randomColor;
            var player2Color = player1Color.Invert();

            Player.SetColor(Player1, player1Color);
            Player.SetColor(Player2, player2Color);

            var chessGameField = VirtualFieldUtils.CreateDefaultField();

            _turnColor    = PlayerColor.White;
            _virtualField = new VirtualField(chessGameField);

            var p1GameInfo = new WcfGameInfo(
                player1Color,
                Player2.PlayerName,
                chessGameField.ToJaggedArray(),
                _turnColor);

            var p2GameInfo = new WcfGameInfo(
                player2Color,
                Player1.PlayerName,
                chessGameField.ToJaggedArray(),
                _turnColor);

            // TODO Если теряется связь то надо отдавать победу
            Player1.Callback.GameHasStarted(p1GameInfo);
            Player2.Callback.GameHasStarted(p2GameInfo);

            _isInitialized = true;
        }
コード例 #4
0
 /// <inheritdoc/>
 public void GameHasStarted(WcfGameInfo gameInfo)
 {
     GameInfo = gameInfo;
     GameStarted?.Invoke(this, EventArgs.Empty);
 }