Пример #1
0
    void addSortPlayerRanking()
    {
        m_dicRankingInfo = DataManager.instance.loadRankingInfo();      // 랭킹 정보를 로드함


        // 플레이어의 랭크 정보를 로드함
        string      userName   = CharacterInfoManager.instance.m_playerInfo.m_strUserName;
        RankingInfo playerInfo = new RankingInfo(userName, (int)CharacterInfoManager.instance.m_playerInfo.m_eCharacterType, GameManager.instance.m_iScore, GameManager.instance.m_iClearTime);

        if (m_dicRankingInfo.ContainsKey(userName) == true)                 // 이미 유저네임이 있으면
        {
            if (m_dicRankingInfo[userName].m_iScore <= playerInfo.m_iScore) // 스코어가 지금것이 더 높으면 추가하고 그렇지 않으면 추가하지않음
            {
                m_dicRankingInfo.Remove(userName);                          // 해당 유저 삭제 후
                m_dicRankingInfo.Add(userName, playerInfo);                 // 딕셔너리에 추가
            }
        }
        else                                                                                                                                   // 중복된 유저네임이 없으면
        {
            m_dicRankingInfo.Add(userName, playerInfo);                                                                                        // 딕셔너리에 추가
        }
        m_dicRankingInfo = m_dicRankingInfo.OrderByDescending(node => node.Value.m_iScore).ToDictionary(pair => pair.Key, pair => pair.Value); // 스코어 기준으로 정렬

        m_arrLstRankingInfo.Capacity = m_dicRankingInfo.Count;                                                                                 // 배열리스트 딕셔너리 저장소만큼 용량확보

        foreach (KeyValuePair <string, RankingInfo> iterator in m_dicRankingInfo)                                                              // 정렬된 딕셔너리를 순회하면서
        {
            m_arrLstRankingInfo.Add(iterator.Value);                                                                                           // 배열리스트에 순서대로 삽입
        }
        setPlayerRankInfo(playerInfo);                                                                                                         // UI에 플레이어 정보 표시
    }
Пример #2
0
    // Use this for initialization
    void Start()
    {
        _board = RankingLoader.Instance.CurrentRanking;

        StartCoroutine(TweetWithScreenShot.TweetManager.TweetWithScreenShot
                           ("ネホネホ" + "%0a" + "記録は [" + dokuro_weight.ToString() + "]!!! %0a" + "https://unityroom.com/games/nehoneho %0a"));
    }
Пример #3
0
        public static List <SnookerPlayer> ImportPlayersInEvent()
        {
            Log.Information("");
            Log.Information("------------- Loading Snooker Players -------------");

            List <SnookerPlayer> players = new List <SnookerPlayer>();

            if (!XMLHelper.XMLExist(Program.PlayersInEventXml))
            {
                players = HttpHelper.GetPlayersInEvent();
                List <RankingInfo> playerRanks = HttpHelper.GetPlayerRank();

                foreach (SnookerPlayer pl in players)
                {
                    RankingInfo r = playerRanks.Find(p => p.PlayerID == pl.IdPlayer);
                    if (r != null)
                    {
                        pl.RankPosition = r.Position;
                    }
                }
                XMLHelper.SaveListToXML(players, Program.PlayersInEventXml);
            }
            else
            {
                players = XMLHelper.LoadXMLToList <SnookerPlayer>(Program.PlayersInEventXml);
            }

            return(players);
        }
Пример #4
0
        //public IEnumerator GetWholeRecord()
        //{
        //    //비동기 형식으로 진행한다
        //    if (isGettingRanking)
        //    {
        //        Debug.LogError("is on Getting Ranking?");
        //        yield return null;
        //    }
        //    else
        //    {
        //        isGettingRanking = true;

        //        if (rankingList == null)
        //        {
        //            Backend.Rank.RankList((callback) => {
        //                SetWholeRankings(callback);
        //            });
        //        }

        //        yield return new WaitUntil(() => rankingList != null);

        //        if (TRecord == null)
        //        {
        //            TRecord = new Dictionary<string, List<PlayerRankData>>();
        //        }

        //        foreach (var info in rankingList)
        //        {
        //            GetRanking(info.Value);
        //        }

        //        //isGettingRanking = false;
        //    }
        //}

        public void GetWholeRecord()
        {
            BackendReturnObject bro = Backend.Rank.RankList();

            Dictionary <string, RankingInfo> rankingList = new Dictionary <string, RankingInfo>();

            var j = bro.GetReturnValuetoJSON()["rows"];

            LitJson.JsonData[] rows = new LitJson.JsonData[j.Count];

            for (int i = 0; i < rows.Length; i++)
            {
                rows[i] = j[i];
            }

            foreach (var row in rows)
            {
                RankingInfo rInfo = new RankingInfo();

                foreach (var k in row.Keys)
                {
                    switch (k)
                    {
                    case "date":
                        rInfo.dateType = (RankingInfo.Date)Enum.Parse(typeof(RankingInfo.Date), row[k][0].ToString());
                        break;

                    case "range":
                        rInfo.range = row[k][0].ToString();
                        break;

                    case "inDate":
                        rInfo.inDate = row[k][0].ToString();
                        break;

                    case "uuid":
                        rInfo.UUID = row[k][0].ToString();
                        break;

                    case "title":
                        rInfo.rankingName = row[k][0].ToString();
                        break;
                    }

                    //Debug.LogError(string.Format("{0} {1} {2}",e[0], e[1], e[2]));
                }

                rankingList.Add(rInfo.rankingName, rInfo);
            }

            if (TRecord == null)
            {
                TRecord = new Dictionary <string, List <PlayerRankData> >();
            }

            foreach (var info in rankingList)
            {
                GetRanking(info.Value);
            }
        }
Пример #5
0
        internal static void PrintRankingInfo(RankingInfo ranking, MainWindowViewModel viewModel)
        {
            string history = viewModel.History;

            history          += String.Format("Point:{0} Ranking:{1}", ranking.point, ranking.ranking) + Environment.NewLine;
            viewModel.History = history;
        }
Пример #6
0
        public async void SaveRankingInfo(String userName, int stage, int score, String time, int Qnum, String date)
        {
            RankingInfo info = new RankingInfo();

            if (Qnum >= 10)
            {
                info.Usr   = userName;
                info.Stage = stage.ToString();
                info.Score = score;
                info.Time  = time;
                info.Date  = date;

                switch (stage)
                {
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    await App.RkInfoDatabase.SaveRankingResultAsync(info);

                    break;

                default:
                    break;
                }
            }
        }
Пример #7
0
        private void UpdateDisplay()
        {
            foreach (RankingChild rank in ranks)
            {
                rank.Text = "";
                rank.Rank = -1;
            }
            yourRankText.Text = "";
            int iter  = 0;
            var infos = currentRanking.GetInfo(currentDifficulty);

            if (infos == null)
            {
                ranks[0].Text = Utility.Language["InvalidRankingDifficulty"];
                return;
            }
            RankingInfo myRank = null;

            foreach (RankingInfo info in infos)
            {
                if (info.ID.ToLower() == WebManager.Instance.CurrentAccountId.ToLower())
                {
                    myRank = info;
                }
                if (iter < ranks.Length)
                {
                    ranks[iter].Text = String.Format("{0} {1}", info.Score, info.Nickname);
                    ranks[iter].Rank = info.Rank;
                }
                iter++;
            }
            yourRankText.Text = myRank == null ? Utility.Language["NotRankin"] : myRank.Rank + Utility.Language["Rank"];
        }
Пример #8
0
        public static RankingInfo RankOrg(this IFBADataContext context,
                                          int orgId,
                                          string nace5,
                                          int adminLevel,
                                          int?beforeCount = 10,
                                          int?afterCount  = 5)
        {
            IEnumerable <IRanking> topRankings;
            OrgInfo orgInfo;
            var     result = context.GetRankingForOrg(orgId, nace5, adminLevel, beforeCount, afterCount, out orgInfo, out topRankings);

            var obj = new RankingInfo {
                Info        = orgInfo,
                OrgRankings = result.Select(forOrgResult => new OrgRankingInfo(orgId, (long)forOrgResult.OtherOrgNr, forOrgResult.Subset)
                {
                    CompanyName    = forOrgResult.companyName,
                    OverallRanking = forOrgResult.OtherOrgRank,
                    MetricValue    = Convert.ToDecimal(forOrgResult.OtherOrgValue)
                }).ToList().AsReadOnly(),
                TopTankings = topRankings.Select(ranking => new OrgRankingInfo(orgId, (long)ranking.CurrentOrgNr, ranking.Subset)
                {
                    CompanyName    = ranking.companyName,
                    OverallRanking = ranking.CurrentOrgRank,
                    MetricValue    = Convert.ToDecimal(ranking.Value)
                }).ToList().AsReadOnly()
            };

            return(obj);
        }
Пример #9
0
 public void Set(int ranking, RankingInfo info)
 {
     address          = info.Address;
     rankingText.text = ranking.ToString();
     addressText.text = info.Address.ToHex().Substring(0, 4).ToString();
     countText.text   = info.Count.ToString();
 }
Пример #10
0
    public void SetRankingInfo(RankingInfo info, int top, bool self = false)
    {
        mInfo = info;
        if (top < 3)
        {
            UIAtlasHelper.SetSpriteImage(mIcon, "common:top" + (top + 1).ToString());
            mIcon.gameObject.SetActive(true);
            mIconLabel.gameObject.SetActive(false);
            mName.color = NGUIMath.HexToColor(0xfcff00ff);
        }
        else
        {
            mIconLabel.text = (top + 1).ToString();
            mIcon.gameObject.SetActive(false);
            mIconLabel.gameObject.SetActive(true);
            mName.color = NGUIMath.HexToColor(0xffffffff);
        }

        mName.text = "Lv." + mInfo.level.ToString() + "  " + mInfo.name;

        mGrade.text      = info.grade.ToString();
        mArenaPoint.text = info.score.ToString();

        if (self)
        {
            mSelectBK.gameObject.SetActive(true);
            mSelfSprite.gameObject.SetActive(true);
        }
        else
        {
            mSelectBK.gameObject.SetActive(false);
            mSelfSprite.gameObject.SetActive(false);
        }
    }
Пример #11
0
        /// <summary>
        /// 从排行榜获取随机视频
        /// </summary>
        /// <returns></returns>
        public RankingInfo GetRandomVideoOfRanking()
        {
            var apiResponse = _videoWithoutCookieApi.GetRegionRankingVideosV2().GetAwaiter().GetResult();

            _logger.LogDebug("获取排行榜成功");
            RankingInfo data = apiResponse.Data.List[new Random().Next(apiResponse.Data.List.Count)];

            return(data);
        }
        public async Task Query(RankingInfo rankingInfo, object expected)
        {
            const string query       = @"
            {
                avatarAddress
                agentAddress
            }";
            var          queryResult = await ExecuteQueryAsync <RankingInfoType>(query, source : rankingInfo);

            Assert.Equal(expected, queryResult.Data);
        }
Пример #13
0
        /// <summary>
        /// 获取随机视频
        /// </summary>
        /// <returns></returns>
        public Tuple <string, string> GetRandomVideoOfRegion()
        {
            int[] arr = { 1, 3, 4, 5, 160, 22, 119 };
            int   rid = arr[new Random().Next(arr.Length - 1)];

            BiliApiResponse <List <RankingInfo> > apiResponse = _dailyTaskApi.GetRegionRankingVideos(rid, 3).GetAwaiter().GetResult();

            _logger.LogDebug("获取分区:{rid}的{day}日top10榜单成功", rid, 3);
            RankingInfo data = apiResponse.Data[new Random().Next(apiResponse.Data.Count)];

            return(Tuple.Create(data.Aid, data.Title));
        }
Пример #14
0
        public void Update(string title, Address playerAddress, long score)
        {
            if (!_map.ContainsKey(title))
            {
                _map[title] = new Dictionary <Address, RankingInfo>();
            }
            if (!_map[title].ContainsKey(playerAddress))
            {
                _map[title][playerAddress] = new RankingInfo(address, 0);
            }

            _map[title][playerAddress] = RankingInfo.Max(_map[title][playerAddress], new RankingInfo(playerAddress, score));
        }
Пример #15
0
 void setPlayerRankInfo(RankingInfo playerInfo)
 {
     for (int i = 0; i < m_arrLstRankingInfo.Count; i++)
     {
         if (m_arrLstRankingInfo[i].m_strUserName == playerInfo.m_strUserName)
         {
             m_rankNumberText.text = (i + 1).ToString() + "위";
             break;
         }
     }
     m_userNameText.text  = playerInfo.m_strUserName;
     m_scoreText.text     = playerInfo.m_iScore.ToString() + "점";
     m_clearTimeText.text = playerInfo.m_fClearTime.ToString("N2") + "초";
 }
Пример #16
0
    private static void WriteNewScore(int score, string nickname, string timestamp)
    {
        // 엔트리 하나 추가
        var key = ScoresReference.Push().Key;

        // 추가한 엔트리의 데이터를 수정할 것을 조립
        var entry        = new RankingInfo(score, nickname, timestamp);
        var entryValues  = entry.ToDictionary();
        var childUpdates = new Dictionary <string, object>();

        childUpdates["/Scores/" + key] = entryValues;

        // 실제 디비에 데이터 업데이트 요청
        ScoresReference.UpdateChildrenAsync(childUpdates);
    }
Пример #17
0
        public void UpdateData(int index, RankingInfo info)
        {
            if (info == null)
            {
                _rankNum.UpdateData(0);
                var tempLevel = Mathf.FloorToInt(Save.Player.Level / 5f);
                if (tempLevel < 1)
                {
                    tempLevel = 1;
                }
                _icon.sprite   = Config.PlayerSettings.Get(tempLevel).Icon;
                _nameTxt.text  = Save.Player.NickName;
                _skillTxt.text = "0";
                _deadTxt.text  = "0";

                if (info == null || info.DisplayName == Save.Player.NickName)
                {
                    GetComponent <Image>().sprite = MyBg;
                }
                else
                {
                    GetComponent <Image>().sprite = NormalBg;
                }
            }
            else
            {
                _rankNum.UpdateData(index);
                var tempLevel = Mathf.FloorToInt(info.Level / 5f);
                if (tempLevel < 1)
                {
                    tempLevel = 1;
                }
                _icon.sprite   = Config.PlayerSettings.Get(tempLevel).Icon;
                _nameTxt.text  = info.DisplayName;
                _skillTxt.text = info.Kill.ToString();
                _deadTxt.text  = info.Dead.ToString();

                if (info.DisplayName == Save.Player.NickName)
                {
                    GetComponent <Image>().sprite = MyBg;
                }
                else
                {
                    GetComponent <Image>().sprite = NormalBg;
                }
            }
        }
Пример #18
0
    /// <summary>
    /// ハイスコア取得コルーチン
    /// </summary>
    /// <param name="rankingBoard"></param>
    /// <returns></returns>
    private IEnumerator DoGetHighScore(RankingInfo rankingBoard, string userObjectId, UnityAction <NCMBObject> onCompleted)
    {
        var highScoreCheck = new YieldableNcmbQuery <NCMBObject>(rankingBoard.ClassName);

        highScoreCheck.WhereEqualTo(ObjectId, userObjectId);
        yield return(highScoreCheck.FindAsync());

        var ncmbRecord = highScoreCheck.Result.FirstOrDefault();

        // キャッシュ更新
        if (ncmbRecord != null)
        {
            (var name, var highScore) = GetInformation(ncmbRecord);
            _highScore = highScore;
        }

        onCompleted?.Invoke(ncmbRecord);
    }
Пример #19
0
    private void UpdateSelfInfo()
    {
        Dictionary <int, RankingInfo> dic = null;
        RankingInfo rankInfo = null;

        if (mSelect == RankSelect.Rank_Grade)
        {
            rankInfo = mRankingModule.GetSelfGrade();
        }
        if (mSelect == RankSelect.Rank_Level)
        {
            rankInfo = mRankingModule.GetSelfLevel();
        }
        if (mSelect == RankSelect.Rank_Rank)
        {
            rankInfo = mRankingModule.GetSelfRank();
        }
        if (mSelect == RankSelect.Rank_Arena)
        {
            rankInfo = mRankingModule.GetSelfArena();
        }

        if (rankInfo == null)
        {
            //NGUITools.SetActive(mSelfLabel.gameObject, false);
            NGUITools.SetActive(mSelfZhanli.gameObject, false);
            NGUITools.SetActive(mSelfPt.gameObject, false);
            NGUITools.SetActive(mSelfSprite1.gameObject, false);
            NGUITools.SetActive(mSelfSprite2.gameObject, false);
            mSelfLabel.text = "您未上榜";
        }
        else
        {//
            NGUITools.SetActive(mSelfLabel.gameObject, true);
            NGUITools.SetActive(mSelfZhanli.gameObject, true);
            NGUITools.SetActive(mSelfPt.gameObject, true);
            NGUITools.SetActive(mSelfSprite1.gameObject, true);
            NGUITools.SetActive(mSelfSprite2.gameObject, true);

            mSelfLabel.text  = "您的排名:" + (rankInfo.rank + 1).ToString() + "    Lv." + rankInfo.level.ToString() + " " + rankInfo.name;
            mSelfZhanli.text = rankInfo.grade.ToString();
            mSelfPt.text     = rankInfo.score.ToString();
        }
    }
Пример #20
0
        public void FuryRaidEvent()
        {
            _client.Access("furyraid");

            var eventId = _client.ViewModel.FuryRaidEventId;
            FuryRaidEventInfo eventInfo = FuryRaidEventInfo(eventId);

            _client.ViewModel.EventName     = eventInfo.name;
            _client.ViewModel.FeverProgress = eventInfo.fever.progress;
            _client.ViewModel.EventKills    = eventInfo.totalRewards.user.total;
            InfoPrinter.PrintFuryRaidInfo(eventInfo, _client.ViewModel);

            RankingInfo ranking = _client.Ranking(eventId);

            _client.ViewModel.Ranking = ranking.ranking;
            _client.ViewModel.Point   = ranking.point;
            InfoPrinter.PrintRankingInfo(ranking, _client.ViewModel);

            _client.DelayShort();
        }
Пример #21
0
    private void UpdateItemGrid(int idx, RankingInfo item, bool self = false)
    {
        if (idx >= mItemList.Count)
        {
            GameObject    obj    = WindowManager.Instance.CloneGameObject(mViewItem);
            RankingItemUI itemui = new RankingItemUI(obj);
            itemui.gameObject.transform.parent     = mGrid.transform;
            itemui.gameObject.transform.localScale = Vector3.one;
            itemui.gameObject.SetActive(false);

            mItemList.Add(itemui);
        }

        RankingItemUI grid = mItemList[idx] as RankingItemUI;

        grid.SetRankingInfo(item, idx, self);
        grid.ArenaPointSp.gameObject.SetActive((mSelect == RankSelect.Rank_Arena));
        grid.mArenaPoint.gameObject.SetActive((mSelect == RankSelect.Rank_Arena));
        grid.functionCall = OnItemClick;

        grid.gameObject.SetActive(true);
    }
Пример #22
0
        public ActionResult Index(OrgSearchModel model)
        {
            if (ModelState.IsValid)
            {
                var rankings = new RankingInfo();
                if (model.OrgId != null)
                {
                    var nace5 = model.Nace5 != null?model.Nace5.Value.ToString(CultureInfo.InvariantCulture) : null;

                    var adminLevel = model.AdministrativeLevel == null ? 2 : model.AdministrativeLevel.Value;
                    rankings = ctx.RankOrg(model.OrgId.Value, nace5, adminLevel);
                }

                model.Nace5    = model.Nace5 == null && rankings.Info != null ? rankings.Info.Nace5 : (int?)null;
                model.Rankings = rankings;
                model.Naces    = GetNaceCriteriaModel();

                return(View(model));
            }

            return(new HttpStatusCodeResult(500));
        }
Пример #23
0
    /// <summary>
    /// ランキング取得コルーチン
    /// </summary>
    private IEnumerator DoLoadRankingBoard(RankingInfo rankingBoard, string userObjectId, UnityAction <YieldableNcmbQuery <NCMBObject> > onCompleted = null)
    {
        Debug.Log("ランキング情報取得中...");

        var ncmbQuery = new YieldableNcmbQuery <NCMBObject>(rankingBoard.ClassName);

        ncmbQuery.Limit = _rankingLimit;
        if (rankingBoard.Order == ScoreOrder.OrderByAscending)
        {
            ncmbQuery.OrderByAscending(ColumnScore);
        }
        else
        {
            ncmbQuery.OrderByDescending(ColumnScore);
        }

        yield return(ncmbQuery.FindAsync());

        onCompleted?.Invoke(ncmbQuery);

        Debug.Log(string.Format("データ取得: {0}件", ncmbQuery.Count));
    }
Пример #24
0
 private static void AcumulaCorretoras(double valorInicial, string corretora, double valor, SortedDictionary <RankingInfo, string> dict, SortedDictionary <string, RankingInfo> dictPorCorretora)
 {
     try
     {
         RankingInfo rankingNovo = new RankingInfo(valorInicial, corretora);
         if (dictPorCorretora.ContainsKey(corretora))
         {
             RankingInfo rankingAtual = dictPorCorretora[corretora];
             dict.Remove(rankingAtual);
             rankingNovo.Valor           = rankingAtual.Valor + valor;
             dictPorCorretora[corretora] = rankingNovo;
         }
         else
         {
             dictPorCorretora.Add(corretora, rankingNovo);
         }
         dict.Add(rankingNovo, corretora);
     }
     catch (Exception ex)
     {
         logger.Fatal("AcumulaCorretoras(): " + ex.Message, ex);
     }
 }
Пример #25
0
        /// <summary>
        /// 获取一个视频用来观看并分享
        /// </summary>
        /// <returns></returns>
        private VideoInfoDto GetRandomVideoForWatchAndShare()
        {
            //先从配置的或关注的up中取
            VideoInfoDto video = GetRandomVideoOfFollowingUps();

            if (video != null)
            {
                return(video);
            }

            //然后从排行榜中取
            RankingInfo t = GetRandomVideoOfRanking();

            return(new VideoInfoDto
            {
                Aid = t.Aid.ToString(),
                Bvid = t.Bvid,
                Cid = t.Cid,
                Copyright = t.Copyright,
                Duration = t.Duration,
                Title = t.Title,
            });
        }
Пример #26
0
    /// <summary>
    /// スコア送信コルーチン
    /// </summary>
    /// <param name="rankingBoard"></param>
    /// <param name="ncmbObject"></param>
    /// <param name="onCompleted"></param>
    /// <returns></returns>
    private IEnumerator DoSendScore(RankingInfo rankingBoard, NCMBObject ncmbObject, UnityAction <NCMBObject> onCompleted)
    {
        Debug.Log("スコア送信中...");

        NCMBException errorResult = null;

        yield return(ncmbObject.YieldableSaveAsync(error => errorResult = error));

        if (errorResult != null)
        {
            // NCMBのコンソールから直接削除した場合に、該当のobjectIdが無いので発生する(らしい)
            // 新規として送信
            ncmbObject.ObjectId = null;
            yield return(ncmbObject.YieldableSaveAsync(error => errorResult = error));
        }

        // ObjectIDを保存して次に備える
        NcmbObjectId = ncmbObject.ObjectId;

        onCompleted?.Invoke(ncmbObject);

        Debug.Log("スコア送信完了");
    }
Пример #27
0
 private void AddScoreToLeaders(int score, string nickname, string timestamp)
 {
     ScoresReference.RunTransaction(mutableData =>
     {
         // 서버에 있는 점수 리스트
         var leaders = mutableData.Value as List <object>;
         // 점수 리스트가 없으면, 생성
         if (leaders == null)
         {
             leaders = new List <object>();
         }
         // 점수 리스트가 최대 개수를 넘었으면, 가장 작은 점수를 제거
         else if (mutableData.ChildrenCount >= rankingList.Count)
         {
             var minScore  = long.MaxValue;
             object minVal = null;
             foreach (var child in leaders)
             {
                 var childDic = child as Dictionary <string, object>;
                 if (childDic == null)
                 {
                     continue;
                 }
                 var rankingEntry = new RankingInfo(childDic);
                 if (rankingEntry == null)
                 {
                     continue;
                 }
                 if (rankingEntry.score < minScore)
                 {
                     minScore = rankingEntry.score;
                     minVal   = child;
                 }
             }
             // 새 점수가 순위에 들지못했으면, 실패했다고 처리
             if (minScore > score)
             {
                 return(TransactionResult.Abort());
             }
             leaders.Remove(minVal);
         }
         // 리스트에 새 점수를 추가
         var newEntry = new RankingInfo(score, nickname, timestamp);
         leaders.Add(newEntry.ToDictionary());
         // 내림차순으로 정렬
         leaders.Sort((a, b) =>
         {
             var rankingA = new RankingInfo(a as Dictionary <string, object>);
             var rankingB = new RankingInfo(b as Dictionary <string, object>);
             return(rankingB.score.CompareTo(rankingA.score));
         });
         mutableData.Value = leaders;
         // Ranking UI에 반영
         rankingInfoList.Clear();
         foreach (var v in leaders)
         {
             rankingInfoList.Add(new RankingInfo(v as Dictionary <string, object>));
         }
         // 성공했다고 처리
         return(TransactionResult.Success(mutableData));
     });
 }
Пример #28
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);
    }
Пример #29
0
        private void GetRanking(RankingInfo info)
        {
            BackendReturnObject bro = Backend.Rank.GetRankByUuid(info.UUID, DesignConstStorage.defaultRankAmount);

            var rankData = bro.GetReturnValuetoJSON()["rows"];

            List <PlayerRankData> rData = new List <PlayerRankData>();

            LitJson.JsonData[] rows = new LitJson.JsonData[rankData.Count];

            for (int i = 0; i < rows.Length; i++)
            {
                rows[i] = rankData[i];
            }

            foreach (var pData in rows)
            {
                PlayerRankData prd = new PlayerRankData();
                foreach (var k in pData.Keys)
                {
                    switch (k)
                    {
                    case "nickname":
                        prd.nickName = pData[k][0].ToString();
                        break;

                    case "score":
                        prd.score = (float)Convert.ToDouble(pData[k][0].ToString());
                        break;

                    case "rank":
                        prd.rank = Convert.ToInt32(pData[k][0].ToString());
                        break;

                    case "index":
                        prd.index = Convert.ToInt32(pData[k][0].ToString());
                        break;

                    case "gamerIndate":
                        prd.playerinDate = pData[k][0].ToString();
                        break;

                    default:
                        Debug.LogError(pData[k][0].ToString());
                        break;
                    }

                    //Debug.LogError(string.Format("{0} {1} {2}",e[0], e[1], e[2]));
                }
                rData.Add(prd);
            }

            if (TRecord.ContainsKey(info.range))
            {
                TRecord.Remove(info.range);
            }

            TRecord.Add(info.range, rData);

            //ProcessRankData(bro, info);
        }
Пример #30
0
        private void ProcessRankData(BackendReturnObject bro, RankingInfo info)
        {
            JObject rankData = JObject.Parse(bro.GetReturnValue());

            List <PlayerRankData> rData = new List <PlayerRankData>();

            //다른 프로퍼티 조회해서 개수 구할 수도 있을듯
            var data = rankData["rows"];

            JArray playerDatas = JArray.Parse(data.ToString());

            foreach (var pData in playerDatas)
            {
                PlayerRankData prd = new PlayerRankData();
                foreach (var element in pData)
                {
                    string[] splitedelement = element.ToString().Split('"');

                    //string[] e = { splitedelement[1], splitedelement[3], splitedelement[5] };
                    string   t;
                    string[] temp;
                    switch (splitedelement[1])
                    {
                    case "nickname":
                        prd.nickName = splitedelement[5];
                        break;

                    case "score":
                        t    = splitedelement[4].Replace("\r", ":");
                        temp = t.Split(':');

                        prd.score = (float)Convert.ToDouble(temp[1]);
                        break;

                    case "rank":
                        t    = splitedelement[4].Replace("\r", ":");
                        temp = t.Split(':');

                        prd.rank = Convert.ToInt32(temp[1]);
                        break;

                    case "index":
                        t    = splitedelement[4].Replace("\r", ":");
                        temp = t.Split(':');

                        prd.index = Convert.ToInt32(temp[1]);
                        break;

                    case "gamerIndate":
                        prd.playerinDate = splitedelement[5];
                        break;

                    default:
                        Debug.LogError(splitedelement[1]);
                        break;
                    }

                    //Debug.LogError(string.Format("{0} {1} {2}",e[0], e[1], e[2]));
                }
                rData.Add(prd);
            }

            if (TRecord.ContainsKey(info.range))
            {
                TRecord.Remove(info.range);
            }

            TRecord.Add(info.range, rData);
            //Debug.LogError(TRecord[info.range].Count);

            //isGettingRanking = false;
        }