Пример #1
0
        /// <summary>
        /// 通知游戏开始
        /// </summary>
        /// <param name="args"></param>
        /// <param name="targetAddress"></param>
        private void _RPC_NotifyGameStart(byte[] buff, IPEndPoint targetAddress)
        {
            var info = PBSerializer.NDeserialize<FSPGameStartParam>(buff);

            PVPStartParam startParam = new PVPStartParam();

            for (int i = 0; i < info.players.Count; i++)
            {
                byte[] customPlayerData = info.players[i].customPlayerData;
                PlayerData pd = PBSerializer.NDeserialize<PlayerData>(customPlayerData);
				pd.id = info.players [i].id;
				pd.userId = info.players [i].userId;
				pd.name = info.players [i].name;
				pd.teamId = (int)info.players [i].id;
                startParam.players.Add(pd);
            }
            
            startParam.fspParam = info.fspParam;
            startParam.gameParam = PBSerializer.NDeserialize<GameParam>(info.customGameParam);

            this.Log("RPC_NotifyGameStart() param: \n{0}", startParam.ToString());

            if (onNotifyGameStart != null)
            {
                onNotifyGameStart(startParam);
            }
        }
Пример #2
0
        /// <summary>
        /// 用于本地测试
        /// </summary>
        public void StartLocalTest()
        {
            //战斗参数
            GameParam gameParam = new GameParam();

            gameParam.mapData.id = 0;
            gameParam.mode       = GameMode.EndlessPVP;

            //帧同步参数
            FSPParam fspParam = new FSPParam();

            fspParam.useLocal = true;
            fspParam.sid      = 1;


            //玩家参数
            PlayerData playerData = new PlayerData();

            playerData.userId = UserManager.Instance.MainUserData.id;
            playerData.id     = 1;

            PVPStartParam param = new PVPStartParam();

            param.fspParam  = fspParam;
            param.gameParam = gameParam;
            param.players.Add(playerData);

            StartGame(param);
        }
Пример #3
0
        /// <summary>
        /// for local test
        /// </summary>
        public void StartLocalTest()
        {
            //game params
            GameParam gameParam = new GameParam();

            gameParam.mapData.id = 0;
            gameParam.mode       = GameMode.UnlimitedPVP;

            //FSP params
            FSPParam fspParam = new FSPParam();

            fspParam.useLocal = true;
            fspParam.sid      = 1;


            //player params
            PlayerData playerData = new PlayerData();

            playerData.userId = UserManager.Instance.MainUserData.id;
            playerData.id     = 1;

            PVPStartParam param = new PVPStartParam();

            param.fspParam  = fspParam;
            param.gameParam = gameParam;
            param.players.Add(playerData);

            StartGame(param);
        }
Пример #4
0
    //==============================================
    void OnGameStart(PVPStartParam startParam)
    {
        pvpGame = new PVPGame();
        pvpGame.Start(startParam);

        EventManager.Instance.SendEvent(EventDef.OnEnterBattle);

        CreateBattleView();
    }
Пример #5
0
        private void NotifyGameStart(PVPStartParam param)
        {
            Debuger.LogWarning(param.ToString());

            PVPStartParam startParam = param;

            //onNotifyGameStart.Invoke(startParam);

            ModuleManager.Instance.ShowModule(ModuleDef.GameModule, startParam);
        }
Пример #6
0
        protected override void Show(object arg)
        {
            base.Show(arg);
            Debuger.Log();

            PVPStartParam param = arg as PVPStartParam;

            m_mgrGame.Start(param);

            //显示主UI
            UIManager.Instance.OpenPage(UIDef.UIGamePage, m_mgrGame);
        }
Пример #7
0
        //----------------------------------------------------------------------
        /// <summary>
        /// 开始游戏
        /// </summary>
        /// <param name="param"></param>
        private void StartGame(PVPStartParam param)
        {
            //创建游戏逻辑
            m_game = new PVPGame();
            m_game.Start(param);

            //当游戏结束时
            m_game.onGameEnd += () =>
            {
                StopGame();
            };

            //显示战斗UI
            UIManager.Instance.OpenPage(UIDef.UIPVPGamePage);
        }
Пример #8
0
        //----------------------------------------------------------------------
        /// <summary>
        /// start the game
        /// </summary>
        /// <param name="param"></param>
        private void StartGame(PVPStartParam param)
        {
            //create PVP game
            m_game = new PVPGame();
            m_game.Start(param);

            //when game ends
            m_game.onGameEnd += () =>
            {
                StopGame();
            };

            //show PVP game UI
            UIManager.Instance.OpenPage(UIConst.UIPVPGamePage);
        }
Пример #9
0
        private void NotifyGameStart(PVPStartParam param)
        {
            Debuger.LogWarning(param.ToString());

            for (int i = 0; i < param.players.Count; i++)
            {
                if (param.players[i].userId == m_mainUserId)
                {
                    //param.fspParam.sid = param.players[i].sid;
                    break;
                }
            }

            PVPStartParam startParam = param;
            //onNotifyGameStart.Invoke(startParam);
        }
Пример #10
0
        //=========================================================

        private void StartGame(ISession session, uint roomId)
        {
            var  userId = session.uid;
            Room room   = GetRoom(roomId);

            if (room != null)
            {
                if (room.data.owner == userId)
                {
                    if (room.CanStartGame())
                    {
                        PVPStartParam param = new PVPStartParam();

                        /*
                         * FSPGame fspGame = FSPServer.Instance.CreateGame(room.data.id);
                         * var list = room.data.players;
                         * for (int i = 0; i < list.Count; i++)
                         * {
                         *  FSPPlayer fspPlayer = fspGame.AddPlayer(list[i].id);
                         *  list[i].sid = fspPlayer.sid;
                         * }
                         *
                         * param.fspParam = FSPServer.Instance.GetParam();
                         */

                        param.gameParam = room.GetGameParam();
                        param.players   = room.data.players;

                        ISession[] listSession = room.GetSessionList();
                        m_context.net.Invoke(listSession, "NotifyGameStart", param);
                    }
                    else
                    {
                        m_context.net.ReturnError("还有玩家未准备", roomId);
                    }
                }
                else
                {
                    m_context.net.ReturnError("你不是房主,只有房主可以启动游戏", roomId);
                }
            }
            else
            {
                m_context.net.ReturnError("房间不存在", roomId);
            }
        }
Пример #11
0
        //--------------------------------------------------

        /// <summary>
        /// 开始游戏
        /// </summary>
        /// <param name="param"></param>
        public void Start(PVPStartParam param)
        {
            Debuger.Log(LOG_TAG, "StartGame() param:{0}", param);


            UserData mainUserData = UserManager.Instance.MainUserData;

            m_listPlayerData = param.players;
            for (int i = 0; i < m_listPlayerData.Count; i++)
            {
                if (m_listPlayerData[i].userId == mainUserData.id)
                {
                    m_mainPlayerId           = m_listPlayerData[i].id;
                    GameCamera.FocusPlayerId = m_mainPlayerId;
                }

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

            //启动游戏逻辑
            GameManager.Instance.CreateGame(param.gameParam);
            GameManager.Instance.onPlayerDie += OnPlayerDie;            //有玩家死亡
            m_context = GameManager.Instance.Context;

            //启动帧同步逻辑
            m_mgrFSP = new FSPManager();
            m_mgrFSP.Start(param.fspParam, m_mainPlayerId);
            m_mgrFSP.SetFrameListener(OnEnterFrame);
            m_mgrFSP.onGameBegin += OnGameBegin; //游戏开始
            m_mgrFSP.onGameExit  += OnGameExit;  //有玩家退出
            m_mgrFSP.onRoundEnd  += OnRoundEnd;  //有玩家退出
            m_mgrFSP.onGameEnd   += OnGameEnd;   //游戏结束


            //初始化输入
            GameInput.Create();
            GameInput.OnVkey += OnVKey;

            //监听EnterFrame
            MonoHelper.AddFixedUpdateListener(FixedUpdate);

            GameBegin();
        }
Пример #12
0
        //--------------------------------------------------

        /// <summary>
        /// Start Game
        /// </summary>
        /// <param name="param"></param>
        public void Start(PVPStartParam param)
        {
            MyLogger.Log(LOG_TAG, "StartGame() param:{0}", param.ToString());


            UserBean mainUserData = UserManager.Instance.MainUserData;

            playerDataList = param.players;
            for (int i = 0; i < playerDataList.Count; i++)
            {
                if (playerDataList[i].userId == mainUserData.id)
                {
                    mainPlayerId             = playerDataList[i].id;
                    GameCamera.FocusPlayerId = mainPlayerId;
                }

                //register player data, this can provide player data for FSP
                //coz FSP is too easy to have player data
                GameManager.Instance.RegPlayerData(playerDataList[i]);
            }

            //start game
            GameManager.Instance.CreateGame(param.gameParam);
            GameManager.Instance.onPlayerDie += OnPlayerDie;//player died
            m_context = GameManager.Instance.Context;

            //start FSP
            mgrFSP = new FSPManager();
            mgrFSP.Start(param.fspParam, mainPlayerId);
            mgrFSP.SetFrameListener(OnEnterFrame);
            mgrFSP.onGameBegin += OnGameBegin; //game start
            mgrFSP.onGameExit  += OnGameExit;  //player exit
            mgrFSP.onRoundEnd  += OnRoundEnd;  //player exit
            mgrFSP.onGameEnd   += OnGameEnd;   //game over


            //initial game input
            GameInput.Create();
            GameInput.OnVkey += OnVKey;

            //listen on EnterFrame
            MonoHelper.AddFixedUpdateListener(FixedUpdate);

            GameBegin();
        }
Пример #13
0
        public void Start(PVPStartParam param)
        {
            m_waitGameEnd = false;
            uint mainPlayerId = 0;
            uint mainUserId   = OnlineManager.Instance.MainUserData.id;

            for (int i = 0; i < param.players.Count; i++)
            {
                if (param.players[i].userId == mainUserId)
                {
                    mainPlayerId = param.players[i].id;
                }
            }

            m_fsp = new FSPManager();
            m_fsp.Start(param.fspParam, mainPlayerId);
            m_fsp.onGameEnd  += OnGameEnd;
            m_fsp.onGameExit += OnGameExit;

            m_fsp.SetFrameListener(OnEnterFrame);
        }
Пример #14
0
        private void OnStartGame(int src, FSPParam fspParam, GamesServerStartParam gameStartParam)
        {
            PVPStartParam param = new PVPStartParam();

            param.fspParam = fspParam;

            Room room = GetRoom(gameStartParam.roomId);

            param.gameParam = room.GetGameParam();
            param.players   = room.data.players;


            for (int i = 0; i < gameStartParam.listPlayerId.Count; i++)
            {
                var player = param.players[i];
                //因为每一个玩家的FSPParam中,Sid都不一样,所以这里分别赋值
                param.fspParam.sid = gameStartParam.listPlayerFSPSessionId[i];
                var session = room.GetSession(player.userId);
                m_context.net.Invoke(session, "NotifyGameStart", param);
            }
        }