Example #1
0
    public IEnumerator GetScoreRanking()
    {
        // ランキング取得リクエスト
        yield return(PlayDataWebRequest.ScoreRankingRequest(cGameManager.Instance.UserData.Data));

        // ランキングUIオブジェクトの初期化
        _RankingFrame.transform.DetachChildren();
        RankingItemList.Clear();

        // ランキングデータをUIアイテムとして追加していく。
        if (cGameManager.Instance._RankingData.Data.Count != 0)
        {
            ScoreRankingResponseData _RankingData = cGameManager.Instance._RankingData;

            // データフレームのサイズ設定
            Vector2 frameSize  = _RankingPanel.sizeDelta;                                             // 初期サイズ
            float   ItemHeight = _ScoreRankingItemPrefab.GetComponent <RectTransform> ().sizeDelta.y; // データUIの高さ
            int     addDataLen = (_RankingData.Data.Count + 1) - (int)(frameSize.y / ItemHeight);
            if (addDataLen > 0)
            {
                frameSize.y += addDataLen * ItemHeight;
            }
            _RankingFrame.sizeDelta = frameSize;
            Vector3 newpos = _RankingFrame.localPosition;
            newpos -= new Vector3(0, (addDataLen * ItemHeight) / 2, 0);
            _RankingFrame.localPosition = newpos;
            Vector3 firstItempos = new Vector3(0, _RankingFrame.sizeDelta.y / 2 - ItemHeight / 2, 0);

            // ユーザーランク生成
            RankingData userRank = cGameManager.Instance._RankingData.UserRank;
            userRank.name = cGameManager.Instance.UserData.Data.name;
            ScoreRankingUIItem userRankItem = Instantiate(_ScoreRankingItemPrefab);
            userRankItem.name = "RankItemUser";
            userRankItem.transform.SetParent(_RankingFrame.transform, false);
            userRankItem.transform.localPosition = firstItempos;
            userRankItem.SetRanking(userRank);
            userRankItem.SetColor(Color.blue);
            RankingItemList.Add(userRankItem);
            // ランキングリスト生成
            List <RankingData> rankingData = cGameManager.Instance._RankingData.Data;
            for (int i = 0; i < rankingData.Count; i++)
            {
                ScoreRankingUIItem item = Instantiate(_ScoreRankingItemPrefab);
                item.name = "RankItem" + i;
                item.transform.SetParent(_RankingFrame.transform, false);
                item.transform.localPosition = firstItempos - new Vector3(0, item.GetComponent <RectTransform> ().sizeDelta.y *(i + 1), 0);
                item.SetRanking(rankingData [i]);
                RankingItemList.Add(item);
            }
        }
    }
Example #2
0
    /// <summary>
    /// スコアランキングの取得リクエスト
    /// </summary>
    /// <returns>The ranking request.</returns>
    public static IEnumerator ScoreRankingRequest(UserAccountData.UserData userdata)
    {
        // リクエストURLを生成
        string          url_base  = Const.WebRequest.BASE_URL + "ScoreRanking/";
        string          url_param = "?id=" + userdata.id;
        UnityWebRequest request   = UnityWebRequest.Get(url_base);       //+url_param);

        if (WebRequestHeader.HeaderEmpty())
        {
            request.SetRequestHeader(Const.WebRequest.HEADER_NAME_COOKIE, WebRequestHeader.header);
        }

        // リクエスト送信
        yield return(request.Send());

        // 通信エラーチェック
        if (request.isError)
        {
            Debug.Log(request.error);
            GenericUIManager.Instance.ShowMessageDialog("Error", request.error);
        }
        else
        {
            if (request.responseCode == 200)
            {
                WebRequestHeader.CookieHeaderSetting(request);

                string text = request.downloadHandler.text;
                // レスポンスデータの変換
                ScoreRankingResponseData res = JsonUtility.FromJson <ScoreRankingResponseData> (text);

                if (res.Data.Count != 0)
                {
                    cGameManager.Instance._RankingData = res;
                }
            }
        }
    }