コード例 #1
0
        void OnRequestRaidRankingReceived(ClientPeer peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            var workRankingList = MongoHelper.RaidRankingCollection.GetAllSorting( ).GetAwaiter( );

            workRankingList.OnCompleted(() =>
            {
                var rankingDataList = workRankingList.GetResult( );
                if (rankingDataList == null || rankingDataList.Count == 0)
                {
                    RaidRankingData data = CreateRaidRankingData(peer);
                    var workRankingAdd   = MongoHelper.RaidRankingCollection.Add(data).GetAwaiter( );
                    workRankingAdd.OnCompleted(() =>
                    {
                        RankingEvent.OnUpdateRaidRanking(peer, data, null, new List <RaidRankingData> {
                            data
                        });
                        BossEvent.OnUpdateRaidBoss(peer, 16);
                    });
                    return;
                }

                // TODO : 보스 디졌는지 안디졌는지 확인

                var myRankingData = rankingDataList.Find(x => x.Key.Equals(peer.Id));
                var lastHitData   = rankingDataList.Find(x => x.LastHit == true);
                if (myRankingData == null)
                {
                    myRankingData      = CreateRaidRankingData(peer);
                    var workRankingAdd = MongoHelper.RaidRankingCollection.Add(myRankingData).GetAwaiter( );
                    workRankingAdd.OnCompleted(() =>
                    {
                        rankingDataList.Add(myRankingData);
                        RankingEvent.OnUpdateRaidRanking(peer, myRankingData, lastHitData, rankingDataList);
                        BossEvent.OnUpdateRaidBoss(peer, 16);
                    });
                }
                else
                {
                    RankingEvent.OnUpdateRaidRanking(peer, myRankingData, lastHitData, rankingDataList);
                    BossEvent.OnUpdateRaidBoss(peer, 16);
                }
            });
        }
コード例 #2
0
    public void SyncRankingList(respond_ranking_list msg)
    {
        if (mVersion == msg.version)
        {
            return;
        }
        mVersion = msg.version;

        PlayerDataModule dataModule = ModuleManager.Instance.FindModule <PlayerDataModule>();

        mSelfGrade = mSelfArena = mSelfLevel = mSelfRank = -1;

        mGrades = null;
        mLevels = null;
        mRanks  = null;
        mArenas = null;

        if (msg.grade_ranking != null && msg.grade_ranking.Count > 0)
        {
            mGrades = new RankingInfo[msg.grade_ranking.Count];
            //mGrades. = msg.grade_ranking.Count;
            for (int i = 0; i < msg.grade_ranking.Count; ++i)
            {
                RankingInfo info = new RankingInfo();
                info.rank  = msg.grade_ranking[i].rank;
                info.name  = msg.grade_ranking[i].name;
                info.guid  = (GUID)(msg.grade_ranking[i].guid);
                info.level = msg.grade_ranking[i].level;
                info.grade = (uint)msg.grade_ranking[i].grade;

                mGrades[info.rank] = info;

                //mGrades.Add(rank, info);

                if (info.name == dataModule.GetName())
                {
                    mSelfGrade = info.rank;
                }
            }
        }
        if (msg.level_ranking != null && msg.level_ranking.Count > 0)
        {
            mLevels = new RankingInfo[msg.level_ranking.Count];

            for (int i = 0; i < msg.level_ranking.Count; ++i)
            {
                RankingInfo info = new RankingInfo();
                info.rank  = msg.level_ranking[i].rank;
                info.guid  = (GUID)(msg.level_ranking[i].guid);
                info.name  = msg.level_ranking[i].name;
                info.level = msg.level_ranking[i].level;
                info.grade = (uint)msg.level_ranking[i].grade;

                mLevels[info.rank] = info;

                if (info.name == dataModule.GetName())
                {
                    mSelfLevel = info.rank;
                }
            }
        }

        if (msg.arena_ranking != null && msg.arena_ranking.Count > 0)
        {
            mArenas = new RankingInfo[msg.arena_ranking.Count];

            for (int i = 0; i < msg.arena_ranking.Count; ++i)
            {
                RankingInfo info = new RankingInfo();
                info.rank = msg.arena_ranking[i].rank;
                info.name = msg.arena_ranking[i].name;
                info.guid = (GUID)(msg.arena_ranking[i].guid);

                info.level = msg.arena_ranking[i].level;
                info.grade = (uint)msg.arena_ranking[i].grade;
                info.score = msg.arena_ranking[i].arena_score;

                mArenas[info.rank] = info;
                if (info.name == dataModule.GetName())
                {
                    mSelfArena = info.rank;
                }
            }
        }

        if (msg.qualifying_ranking != null && msg.qualifying_ranking.Count > 0)
        {
            mRanks = new RankingInfo[msg.qualifying_ranking.Count];

            for (int i = 0; i < msg.qualifying_ranking.Count; ++i)
            {
                RankingInfo info = new RankingInfo();
                info.rank = msg.qualifying_ranking[i].rank;
                info.name = msg.qualifying_ranking[i].name;
                info.guid = (GUID)(msg.qualifying_ranking[i].guid);

                info.level = msg.qualifying_ranking[i].level;
                info.grade = (uint)msg.qualifying_ranking[i].grade;

                mRanks[info.rank] = info;
                if (info.name == dataModule.GetName())
                {
                    mSelfRank = info.rank;
                }
            }
        }

        RankingEvent evt = new RankingEvent(RankingEvent.RANKING_UPDATE);

        EventSystem.Instance.PushEvent(evt);
    }
コード例 #3
0
        void ResetRaid()
        {
            TheLordServer.Log.Info("레이드 보스 리셋 시작");
            var bossData = TheLordServer.Instance.bossDataList[0];

            var sheet  = TheLordTable.Instance.CharacterTable.CharacterInfoSheet;
            var record = BaseTable.Get(sheet, "index", RaidBossIndex);

            bossData.HP          = (int)(float)record["hp"];
            bossData.CreateTime += bossRemainTime;

            var workRankingList = MongoHelper.RaidRankingCollection.GetAllSorting( ).GetAwaiter( );

            workRankingList.OnCompleted(() =>
            {
                var result = workRankingList.GetResult( );

                var lastHitPlayer = result.Find(x => x.LastHit == true);
                if (lastHitPlayer != null)
                {
                    lastHitPlayer.Tier = (int)TierType.God;
                }

                const int legend   = 1;
                const int Master   = 3;
                const int Diamond  = 5;
                const int Platinum = 10;
                const int Gold     = 20;
                const int Silver   = 40;
                const int Bronze   = 80;
                const int Iron     = 200;

                for (int i = 0; i < result.Count; ++i)
                {
                    if (result[i].Score <= 0)
                    {
                    }
                    else if (i < legend)
                    {
                        result[i].Tier = (int)TierType.Lengend > result[i].Tier ? (int)TierType.Lengend : result[i].Tier;
                    }
                    else if (i < Master)
                    {
                        result[i].Tier = (int)TierType.Master > result[i].Tier ? (int)TierType.Master : result[i].Tier;
                    }
                    else if (i < Diamond)
                    {
                        result[i].Tier = (int)TierType.Diamond > result[i].Tier ? (int)TierType.Diamond : result[i].Tier;
                    }
                    else if (i < Platinum)
                    {
                        result[i].Tier = (int)TierType.Platinum > result[i].Tier ? (int)TierType.Platinum : result[i].Tier;
                    }
                    else if (i < Gold)
                    {
                        result[i].Tier = (int)TierType.Gold > result[i].Tier ? (int)TierType.Gold : result[i].Tier;
                    }
                    else if (i < Silver)
                    {
                        result[i].Tier = (int)TierType.Silver > result[i].Tier ? (int)TierType.Silver : result[i].Tier;
                    }
                    else if (i < Bronze)
                    {
                        result[i].Tier = (int)TierType.Bronze > result[i].Tier ? (int)TierType.Bronze : result[i].Tier;
                    }
                    else if (i < Iron)
                    {
                        result[i].Tier = (int)TierType.Iron > result[i].Tier ? (int)TierType.Iron : result[i].Tier;
                    }
                    else
                    {
                        if (result[i].Score > 0)
                        {
                            result[i].Tier = (int)TierType.Challanger > result[i].Tier ? (int)TierType.Challanger : result[i].Tier;
                        }
                    }

                    result[i].Score            = 0;
                    result[i].LastHit          = false;
                    var workUpdateRankingScore = MongoHelper.RaidRankingCollection.Update(result[i]).GetAwaiter( );
                    workUpdateRankingScore.OnCompleted(() =>
                    {
                    });
                }

                foreach (var client in TheLordServer.Instance.PeerList)
                {
                    if (client.userAgent.UserData == null)
                    {
                        continue;
                    }
                    var myRanking = result.Find(x => x.Key == client.Id);

                    if (client.userAgent.UserAssetData != null)
                    {
                        client.userAgent.UserAssetData.Tier = myRanking.Tier;
                    }
                    RankingEvent.OnUpdateRaidRanking(client, myRanking, null, result);
                    BossEvent.OnUpdateRaidBoss(client, 16);
                }
            });

            UpdateBoss( );
        }