void OnUpdateRaidBoss(EventData eventData) { var data = BinSerializer.ConvertData <ProtoData.RaidBossData> (eventData.Parameters); switch (GameManager.Instance.GameMode) { case MainLobbyGameMode mainLobby: { MainLobbyPage page = mainLobby.CurrentPage as MainLobbyPage; if (page == null) { return; } page.rankingPopup.SetHP(data.hp, data.index); } break; case RaidGameMode raid: { RaidBattlePage page = raid.CurrentPage as RaidBattlePage; if (page == null) { return; } } break; } }
void OnUpdateRaidRanking(EventData eventData) { var data = BinSerializer.ConvertData <ProtoData.RaidRankingData> (eventData.Parameters); TransitionManager.Instance.OnWaitSigh(false); MainLobbyGameMode gameMode = GameManager.Instance.GameMode as MainLobbyGameMode; if (gameMode == null) { return; } MainLobbyPage page = gameMode.CurrentPage as MainLobbyPage; if (page == null) { return; } RankingPopup popup = page.rankingPopup; popup.SetRemainTime(data.tick); popup.SetInfoForMyRanking(data.myRankingData); popup.SetInfoForLastHitRnaking(data.lastHitRankingData); popup.SetInfo(data.rankingDataList); page.OnUpdate( ); }
void OnBuildingClickReceived(ClientPeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var buildingClickData = BinSerializer.ConvertData <ProtoData.BuildingClickData> (operationRequest.Parameters); if (peer.userAgent == null) { Failed(peer, sendParameters); } switch ((ClickAction)buildingClickData.clickAction) { case ClickAction.MainBuildingTakeGold: ClickAction_MainBuildingTakeGold(peer, buildingClickData, sendParameters); break; case ClickAction.BuildingBuild: ClickAction_BuildingBuild(peer, buildingClickData, operationRequest.OperationCode, sendParameters); break; case ClickAction.BuildingLevelUp: ClickAction_BuildingLevelUp(peer, buildingClickData, operationRequest.OperationCode, sendParameters); break; case ClickAction.CharacterHire: CkickAction_CharacterHire(peer, buildingClickData, operationRequest.OperationCode, sendParameters); break; default: Failed(peer, sendParameters); return; } }
void OnBuildingClickReceived(OperationResponse response) { var buildingClickData = BinSerializer.ConvertData <ProtoData.BuildingClickData> (response.Parameters); switch ((ClickAction)buildingClickData.clickAction) { case ClickAction.MainBuildingTakeGold: break; case ClickAction.BuildingBuild: ClickAction_BuildingBuild((ReturnCode)response.ReturnCode, buildingClickData); break; case ClickAction.BuildingLevelUp: ClickAction_BuildingLevelUp((ReturnCode)response.ReturnCode, buildingClickData); break; case ClickAction.CharacterHire: ClickAction_CharacterHire((ReturnCode)response.ReturnCode, buildingClickData); break; default: return; } Debug.LogFormat("[OnBuildingClickReceived] [{0}] Received", (ClickAction)buildingClickData.clickAction); }
void OnUpdateChat(EventData eventData) { var data = BinSerializer.ConvertData <ProtoData.ChatData> (eventData.Parameters); MainLobbyPage page = GameManager.Instance.GameMode.CurrentPage as MainLobbyPage; if (page == null) { return; } page.chatPopup.AddChat(data.index, data.nickname, data.msg); GameManager.Instance.GameMode.CurrentPage.OnUpdate( ); }
void OnEnterRaidReceived(OperationResponse response) { ReturnCode rc = (ReturnCode)response.ReturnCode; if (rc == ReturnCode.Failed) { string sceneName = SceneName.GetMainLobby(GameManager.Instance.LocalPlayer.playerInfo.Race); TransitionManager.Instance.OnSceneTransition(sceneName, TransitionType.Loading01_Blank, null); Debug.LogError("로비 데이터를 받는데 실패했습니다."); return; } GameManager.Instance.GameMode.OnSynchronize(BinSerializer.ConvertData <ProtoData.RaidEnterData> (response.Parameters)); }
void OnChatReceived(ClientPeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var chatData = BinSerializer.ConvertData <ProtoData.ChatData>(operationRequest.Parameters); if (chatData.msg.IndexOf("/gold ") == 0) { BigInteger gold = int.Parse(chatData.msg.Replace("/gold ", "")); peer.userAgent.UserAssetData.AddGold(gold); UserAssetEvent.OnUpdateResource(peer); return; } ChatEvent.OnUpdateChat(peer, chatData); }
void OnBuildingConfirmReceived(OperationResponse response) { var buildingConfirmData = BinSerializer.ConvertData <ProtoData.BuildingConfirmData> (response.Parameters); switch ((ConfirmAction)buildingConfirmData.confirmAction) { case ConfirmAction.Build: ConfirmAction_Build((ReturnCode)response.ReturnCode, buildingConfirmData); break; case ConfirmAction.LevelUp: ConfirmAction_LevelUp((ReturnCode)response.ReturnCode, buildingConfirmData); break; default: return; } Debug.LogFormat("[OnBuildingConfirmReceived] [{0}] Received", (ConfirmAction)buildingConfirmData.confirmAction); }
void OnResultRaidRankingReceived(ClientPeer peer, OperationRequest operationRequest, SendParameters sendParameters) { if (TheLordServer.Instance.bossDataList.Count == 0) { return; } var data = BinSerializer.ConvertData <ProtoData.RaidRankingScoreData> (operationRequest.Parameters); TheLordServer.Log.InfoFormat("{0}의 플레이어가 {1}의 피해를 입혔습니다.", peer.userAgent.UserData.Info.Nickname, data.score); var workRankingScore = MongoHelper.RaidRankingCollection.Get(peer.Id).GetAwaiter( ); workRankingScore.OnCompleted(() => { var rankingScore = workRankingScore.GetResult( ); TheLordServer.Instance.bossDataList[0].HP -= data.score; if (TheLordServer.Instance.bossDataList[0].HP <= 0F) { rankingScore.LastHit = true; BossEvent.OnExitRaidBoss( ); } else { foreach (var building in peer.userAgent.BuildingDataList) { int amount = building.CharactertData.Amount; int subract = (int)Math.Ceiling(amount * 0.66F); building.CharactertData.Amount = Math.Max(0, amount - subract); } } rankingScore.Score += data.score; var workUpdateRankingScore = MongoHelper.RaidRankingCollection.Update(rankingScore).GetAwaiter(); workUpdateRankingScore.OnCompleted(() => { }); }); }
void OnLobbyEnterRecevied(OperationResponse response) { Debug.Log("[OnLobbyEnterRecevied]"); ReturnCode rc = (ReturnCode)response.ReturnCode; if (rc == ReturnCode.Failed) { new LobbyEnterRequest( ).SendPacket(); Debug.LogError("로비 데이터를 받는데 실패했습니다."); return; } var data = BinSerializer.ConvertData <ProtoData.DBLoadData> (response.Parameters); if (data.buildingDataList == null || data.buildingDataList.Count == 0) { new LobbyEnterRequest( ).SendPacket( ); Debug.LogError("건물 데이터를 받는데 실패했습니다."); return; } else if (data.resourceData == null) { new LobbyEnterRequest( ).SendPacket( ); Debug.LogError("유저 자원 데이터를 받는데 실패했습니다."); return; } MainLobbyGameMode gamemode = GameManager.Instance.GameMode as MainLobbyGameMode; if (gamemode == null) { string sceneName = SceneName.GetMainLobby(GameManager.Instance.LocalPlayer.playerInfo.Race); TransitionManager.Instance.OnSceneTransition(sceneName, TransitionType.Loading01_Blank, null); return; } gamemode.OnSynchronize(data); }
void OnUpdateResource(EventData eventData) { MainLobbyGameMode gameMode = GameManager.Instance.GameMode as MainLobbyGameMode; if (gameMode == null) { return; } var data = BinSerializer.ConvertData <ProtoData.ResourceData> (eventData.Parameters); GamePlayer localPlayer = GameManager.Instance.LocalPlayer; localPlayer.SetGold(ResourceType.Gold, data.gold); localPlayer.SetGold(ResourceType.Cash, data.cash); localPlayer.playerInfo.Tier = (TierType)data.tier; MainLobbyPage page = gameMode.CurrentPage as MainLobbyPage; if (page == null) { return; } GameManager.Instance.GameMode.CurrentPage.OnUpdate( ); }
void OnUpdateBuilding(EventData eventData) { var data = BinSerializer.ConvertData <ProtoData.BuildingData> (eventData.Parameters); MainLobbyGameMode gameMode = GameManager.Instance.GameMode as MainLobbyGameMode; if (gameMode == null) { // 다른 씬임 return; } int index = data.index; var building = gameMode.Buildings.Find(x => (int)x.info.index == index); if (building == null) { // 건물이 없음 return; } building.info.LV = data.LV; building.info.workTime = data.tick; building.info.amount = data.amount; if (building.info.workTime >= 0) { building.BuildUp(building.info.workTime); } else if (building.info.LV > 0) { building.OnBuild( ); } GameManager.Instance.GameMode.CurrentPage.OnUpdate( ); }