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); }
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); }
public ArrivedToHandler(RoomSubject subject) { _jdp = new JsonDiffPatch(); _subject = subject; }
public JsonMessageHandler(RoomSubject subject) { _jdp = new JsonDiffPatch(); _subject = subject; }