/// <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); } }
/// <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); }
/// <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); }
//============================================== void OnGameStart(PVPStartParam startParam) { pvpGame = new PVPGame(); pvpGame.Start(startParam); EventManager.Instance.SendEvent(EventDef.OnEnterBattle); CreateBattleView(); }
private void NotifyGameStart(PVPStartParam param) { Debuger.LogWarning(param.ToString()); PVPStartParam startParam = param; //onNotifyGameStart.Invoke(startParam); ModuleManager.Instance.ShowModule(ModuleDef.GameModule, startParam); }
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); }
//---------------------------------------------------------------------- /// <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); }
//---------------------------------------------------------------------- /// <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); }
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); }
//========================================================= 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); } }
//-------------------------------------------------- /// <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(); }
//-------------------------------------------------- /// <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(); }
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); }
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); } }