コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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( );
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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( );
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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(() =>
                {
                });
            });
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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( );
        }
コード例 #12
0
        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( );
        }