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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }