void OnJoinGameRequest(ClientToServerMessage message) { JoinGameRequest request = message.JoinGameRequest; if (request == null) { throw new ServerClientException("Invalid join game request"); } // Defaults to false so lazy/afk players lose the first turn privilege _RequestedFirstTurn = false; InitialiseArmy(request.Army); Faction faction = Server.GetFaction(request.Army.FactionId); bool success = Server.OnJoinGameRequest(this, request, out _Game); if (success) { _PlayerState = new PanzerKontrol.PlayerState(Game, faction, PlayerIdentifier.Player2); InGameState(PlayerStateType.DeployingUnits, ClientToServerMessageType.InitialDeployment); } else { ServerToClientMessage reply = new ServerToClientMessage(ServerToClientMessageType.NoSuchGame); QueueMessage(reply); } Game.OnOpponentFound(this); }
public bool OnJoinGameRequest(ServerClient client, JoinGameRequest request, out ServerGame game) { if (request.IsPrivate) { string key = request.PrivateKey; if (!PrivateGames.TryGetValue(key, out game)) { return(false); } PrivateGames.Remove(key); } else { string key = request.Owner; if (!PublicGames.TryGetValue(key, out game)) { return(false); } PublicGames.Remove(key); } ActiveGames.Add(game); game.StartDeploymentTimer(); return(true); }
public ClientToServerMessage(JoinGameRequest request) { Type = ClientToServerMessageType.JoinGameRequest; JoinGameRequest = request; }