Exemplo n.º 1
0
        public bool AddPlayer(Player player)
        {
            if (mPlayers.Count >= mMaxCount)
            {
                return(true);
            }

            mPlayers.Add(player);
            mNotReady.Add(player);
            player.mRoom = this;

            NotifyRoomAddPlayer addPlayer = new NotifyRoomAddPlayer();

            addPlayer.NewPlayer          = new RoomPlayerInfo();
            addPlayer.NewPlayer.UserID   = player.mUserID;
            addPlayer.NewPlayer.Name     = player.mPlayerInfo.NickName;
            addPlayer.NewPlayer.Portrait = null;

            NotifyRoomInfo roomInfo = new NotifyRoomInfo();

            roomInfo.Players = new List <RoomPlayerInfo>();
            for (int i = 0; i < mPlayers.Count; ++i)
            {
                Player         p          = mPlayers[i];
                RoomPlayerInfo playerInfo = new RoomPlayerInfo();
                playerInfo.UserID   = p.mUserID;
                playerInfo.Name     = p.mPlayerInfo.NickName;
                playerInfo.Portrait = null;
                roomInfo.Players.Add(playerInfo);
            }
            float life = Time.ElapsedSeconds - mStartTime;

            roomInfo.RestTime = mTime - life;

            for (int i = 0; i < mPlayers.Count; ++i)
            {
                Player p = mPlayers[i];
                if (p == player)
                {
                    // 如果添加的玩家是自己,则通知自己所有角色数据;
                    NetWork.NotifyMessage <NotifyRoomInfo>(p.mUserID, STC.STC_RoomInfo, roomInfo);
                }
                else
                {
                    // 如果添加的玩家不是自己,则把添加的玩家数据通知自己;
                    NetWork.NotifyMessage <NotifyRoomAddPlayer>(p.mUserID, STC.STC_RoomAddPlayer, addPlayer);
                }
            }

            return(mPlayers.Count >= mMaxCount);
        }
Exemplo n.º 2
0
    void NotifyRoomInfo(byte[] data)
    {
        NotifyRoomInfo roomInfo = ProtoBufUtils.Deserialize <NotifyRoomInfo>(data);

        for (int i = 0; i < roomInfo.Players.Count; ++i)
        {
            RoomPlayerInfo roomPlayerInfo = roomInfo.Players[i];
            if (roomPlayerInfo == null)
            {
                continue;
            }
            texPlayerNames[i].text = roomPlayerInfo.Name;
            playerIDs[i]           = roomPlayerInfo.UserID;
            ++playerCount;
        }
        restTime = roomInfo.RestTime;
        endTime  = Time.realtimeSinceStartup + roomInfo.RestTime;

        mainMenuRoot.SetActive(false);
        matchRoot.SetActive(true);
    }