Exemplo n.º 1
0
    private IEnumerator GetChatLogIterator()
    {
        while (true)
        {
            var query = new SpreadSheetQuery("Chat");
            query.OrderByDescending("createTime").Where("createTime", ">", lastGetTime).Limit(20);
            yield return(query.FindAsync());

            if (query.Count > 0)
            {
                foreach (var so in query.Result.Reverse())
                {
                    chatLogList.Insert(0, so["name"] + ">" + so["message"]);
                    if (chatLogList.Count > 17)
                    {
                        chatLogList.Remove(chatLogList.Last());
                    }
                }
                logText.text = string.Join("\n", chatLogList.ToArray());
                lastGetTime  = (long)query.Result.First()["createTime"];
            }

            yield return(new WaitForSeconds(5.0f));
        }
    }
Exemplo n.º 2
0
    private IEnumerator _LoadLeaderBoardIterator(int hiscore)
    {
        top5rankText.text  = "now loading";
        rivalRankText.text = "now loading";

        fader.Show(true);

        //まずTop5の取得
        var topRankQuery = new SpreadSheetQuery("ScoreRanking");

        //ハイスコアを降順(大きい順)にして、Limit5にすることで、TOP5を取得
        yield return(topRankQuery.OrderByDescending("hiscore").Limit(5).FindAsync());

        //取得できたデータをうまく整形しつつ表示
        top5rankText.text = "Top5\n";
        var dispRank = 0;

        foreach (var so in topRankQuery.Result)
        {
            var text = ++dispRank + "位\t" + so["hiscore"];
            //自分のスコアを赤くするために、idでチェック
            if (so["id"] as string == SpreadSheetSetting.Instance.UniqueID)
            {
                text = "<color=red>" + text + "</color>";
            }
            top5rankText.text += text + "\n";
        }

        //近傍スコア(ライバル)の表示処理
        //まずプレイヤーの順位を取得
        var playerRankingQuery = new SpreadSheetQuery("ScoreRanking");

        yield return(playerRankingQuery.Where("hiscore", ">", hiscore).CountAsync()); //自分よりスコアが高いプレイヤーが何人いるか

        var rank = playerRankingQuery.Count;                                          //自分のスコアのランク(-1)取得

        //自分の順位を取得できたので、そこからライバルのスコア取得
        var neigborRankingQuery = new SpreadSheetQuery("ScoreRanking");

        //TOP5同様、降順+Limit5 に加え、自分のRank-2をSkipすることで、自分のスコアの2つ上のユーザーから取得
        dispRank = Mathf.Max(0, rank - 2);
        yield return(neigborRankingQuery.OrderByDescending("hiscore").Skip(dispRank).Limit(5).FindAsync());

        //取得できたデータをうまく整形しつつ表示
        rivalRankText.text = "your rival\n";
        foreach (var so in neigborRankingQuery.Result)
        {
            var text = ++dispRank + "位\t" + so["hiscore"];
            if (so["id"] as string == SpreadSheetSetting.Instance.UniqueID)
            {
                text = "<color=red>" + text + "</color>";
            }
            rivalRankText.text += text + "\n";
        }
    }
Exemplo n.º 3
0
        /// <summary>
        /// ランキング取得&表示
        /// </summary>
        /// <returns>The ranking board.</returns>
        private IEnumerator LoadRankingBoard()
        {
            int nodeCount = scrollViewContent.childCount;

            Debug.Log(nodeCount);
            for (int i = nodeCount - 1; i >= 0; i--)
            {
                Destroy(scrollViewContent.GetChild(i).gameObject);
            }

            var msg = Instantiate(readingNodePrefab, scrollViewContent);

            var so = new SpreadSheetQuery();

            if (RankingLoader.Instance.setting.Order == ScoreOrder.OrderByAscending)
            {
                yield return(so.OrderByAscending("hiscore").Limit(30).FindAsync());
            }
            else
            {
                yield return(so.OrderByDescending("hiscore").Limit(30).FindAsync());
            }

            Debug.Log("count : " + so.Count.ToString());
            Destroy(msg);

            if (so.Count > 0)
            {
                int rank = 0;
                foreach (var r in so.Result)
                {
                    var n        = Instantiate(this.rankingNodePrefab, scrollViewContent);
                    var rankNode = n.GetComponent <RankingNode> ();
                    rankNode.NoText.text   = (++rank).ToString();
                    rankNode.NameText.text = r ["name"].ToString();

                    var s = RankingLoader.Instance.BuildScore(r ["hiscore"].ToString());
                    rankNode.ScoreText.text = s != null ? s.TextForDisplay : "エラー";

                    Debug.Log(r ["hiscore"].ToString());
                }
            }
            else
            {
                Instantiate(this.notFoundNodePrefab, scrollViewContent);
            }
        }