Exemple #1
0
        public async Task InitializeGameStart(string currentConnectionId, string enemyConnectionId)
        {
            _manager.RemoveSocketsFromLobbyPool(currentConnectionId, enemyConnectionId);

            await SendConnectionIdToClient(currentConnectionId);
            await SendConnectionIdToClient(enemyConnectionId);

            var         gameState        = GenerateGameState(currentConnectionId, enemyConnectionId);
            WebSocket   currentWebsocket = _manager.GetSocketFromSocketPool(currentConnectionId);
            WebSocket   enemySocket      = _manager.GetSocketFromSocketPool(enemyConnectionId);
            RoomSubject roomSubject      = new RoomSubject
                                           (
                gameState,
                new UserSocketObserver(currentWebsocket),
                new UserSocketObserver(enemySocket)
                                           );

            var roomId = Room.GenerateRoomUUID();

            socketToRoomDict.TryAdd(currentWebsocket, new Room(currentConnectionId, enemyConnectionId, roomId, enemySocket));
            socketToRoomDict.TryAdd(enemySocket, new Room(enemyConnectionId, currentConnectionId, roomId, currentWebsocket));
            roomIdToRoomsubjectDict.TryAdd(roomId, roomSubject);

            ConfigureEventHandler(roomSubject);

            await BroadcastInitialGameStateToRoom(gameState, roomId);
        }
Exemple #2
0
        private void ConfigureEventHandler(RoomSubject roomSubject)
        {
            moveToHandler = new MoveToHandler();
            var arrivedToHandler    = new ArrivedToHandler(roomSubject);
            var upgradeTowerHandler = new UpgradeTowerHandler();
            var powerUpHandler      = new PowerUpHandler();

            moveToHandler.OnMoveToEvent           += HandleOnMoveToEvent;
            arrivedToHandler.OnArrivedToEvent     += HandleOnArrivedToEvent;
            upgradeTowerHandler.UpgradeTowerEvent += HandleUpgradeEvent;
            powerUpHandler.OnPowerUpEvent         += HandleOnPowerUpEvent;

            moveToHandler.SetNext(arrivedToHandler).SetNext(upgradeTowerHandler).SetNext(powerUpHandler);
        }
Exemple #3
0
 public ArrivedToHandler(RoomSubject subject)
 {
     _jdp     = new JsonDiffPatch();
     _subject = subject;
 }
Exemple #4
0
 public JsonMessageHandler(RoomSubject subject)
 {
     _jdp     = new JsonDiffPatch();
     _subject = subject;
 }