private void handleRequestJoinPreGame(IIncommingMessage rawMsg) { PreGameJoinRequest msg = rawMsg.Deserialize <PreGameJoinRequest>(); PreGameRoomMsg returnMsg = new PreGameRoomMsg(); PreGame targetGame; if (!findGame(msg.roomID, out targetGame, rawMsg) || !targetGame.peerJoined(rawMsg, msg.joiningPlayer, ref returnMsg)) { return; } rawMsg.Respond(returnMsg, ResponseStatus.Success); }
public bool peerJoined(IIncommingMessage rawMsg, PlayerInfo info, ref PreGameRoomMsg returnMsg) { if (getAmountCurrentPlayers() >= specs.maxPlayers) { rawMsg.Respond("Game is already full", ResponseStatus.Failed); return(false); } if (state != PreGameState.Lobby) { rawMsg.Respond("Game has already started", ResponseStatus.Failed); return(false); } addPeerToGame(rawMsg.Peer, info); returnMsg = newUpdate(); return(true); }
private void broadcastUpdate(int skipPeerID = -1) { if (state != PreGameState.Lobby) { return; } PreGameRoomMsg msg = newUpdate(); foreach (IPeer p in connectedPeers.Select(p => p.peer)) { if (p.Id != skipPeerID) { p.SendMessage((short)ServerCommProtocl.UpdatePreGame, msg); } } if (specs.isInTournament) { AlbotRunningTournamentModule.handleUpdateRound(specs.tournamentID, specs.tournamentRoundID); } }