示例#1
0
        void _RPC_NotifyGameStart(IPEndPoint remote, byte[] bytes)
        {
            // Debuger.Log(LOG_TAG, "_RPC_NotifyGameStart()");
            FSPGameStartParam data = PBSerializer.Deserialize <FSPGameStartParam>(bytes);

            PVPStartParam startParam = new PVPStartParam();

            startParam.fspParam  = data.fspParam;
            startParam.gameParam = PBSerializer.Deserialize <GameParam>(data.customGameParam);

            for (int i = 0; i < data.players.Count; i++)
            {
                FSPPlayerData player = data.players[i];
                byte[]        buff   = player.customPlayerData;

                PlayerData pb = PBSerializer.Deserialize <PlayerData>(buff);
                pb.playerID = (int)player.id;
                pb.userID   = (uint)player.userId;
                pb.userName = player.name;
                pb.teamID   = (int)player.id;
                startParam.players.Add(pb);

                Debuger.Log(LOG_TAG, "_RPC_NotifyGameStart: {0}", pb.ToString());
            }

            // EventManager.Instance.SendEvent<PVPStartParam>("OnGameStart", startParam);
        }
示例#2
0
        public void Start(object param)
        {
            _isStoped = false;

            PVPStartParam startParam = param as PVPStartParam;

            _gameMode = startParam.gameParam.mode;

            // 注册玩家
            uint mainUserId = UserManager.Instance.UserData.id;

            var players = startParam.players;

            for (int i = 0; i < players.Count; i++)
            {
                if (players[i].userID == mainUserId)
                {
                    _mainPlayerId = players[i].playerID;
                }

                //注册玩家数据,为在帧同步过程中创建玩家提供数据
                //因为帧同步协议非常精简,不包含具体的玩家数据
                BattleEngine.Instance.RegPlayerData(players[i]);
            }

            // 创建游戏
            BattleEngine.Instance.EnterBattle(startParam.gameParam, this);
            m_context = BattleEngine.Instance.Context;

            // 帧同步
            StartFSP();

            // 接收输入
            GameInput.onVKey = OnVKey;
            GameInput.DisableInput();

            Scheduler.AddFixedUpdateListener(FixedUpdate);
        }