Пример #1
0
    public PlayerObject(string name, string id, Sprite avatar)
    {
        this.name   = name;
        this.id     = id;
        this.avatar = avatar;
        this.timer  = timer;
        if (!id.Contains("_BOT"))
        {
            this.isBot = false;
            getPlayerDataRequest(this.id);
        }
        else
        {
            this.isBot     = true;
            this.data      = new MyPlayerData();
            this.data.data = new Dictionary <string, UserDataRecord>();


            UserDataRecord record3 = new UserDataRecord();
            record3.Value = Random.Range(500, 1000).ToString();
            this.data.data.Add(MyPlayerData.GamesPlayedKey, record3);
            UserDataRecord record4 = new UserDataRecord();
            record4.Value = Random.Range(1, 250).ToString();
            this.data.data.Add(MyPlayerData.TwoPlayerWinsKey, record4);
            UserDataRecord record5 = new UserDataRecord();
            record5.Value = Random.Range(1, 250).ToString();
            this.data.data.Add(MyPlayerData.FourPlayerWinsKey, record5);
            UserDataRecord record = new UserDataRecord();
            record.Value = (Random.Range(10000, 50000) * 100).ToString();
            this.data.data.Add(MyPlayerData.TotalEarningsKey, record);
            UserDataRecord record2 = new UserDataRecord();
            record2.Value = (Random.Range(1, 10000) * 100).ToString();
            this.data.data.Add(MyPlayerData.CoinsKey, record2);
        }
    }
Пример #2
0
    void Update()
    {
        // スコア情報が取得できている時
        if (statistics.isGet && !isSet && playerData.isGet)
        {
            string         rankingName = default;
            UserDataRecord record      = default;
            if (playerData.data.TryGetValue(PlayerDataName.SELECTED_DIFFICULT, out record))
            {
                switch (record.Value)
                {
                case DifficultName.EASY: rankingName = RankingName.EASY; break;

                case DifficultName.NORMAL: rankingName = RankingName.NORMAL; break;

                case DifficultName.HARD: rankingName = RankingName.HARD; break;

                case DifficultName.VERYHARD: rankingName = RankingName.VERYHARD; break;
                }
                hiScore   = statistics.GetStatisticValue(rankingName);
                text.text = string.Format("{0:0000}", hiScore);
            }
            isSet = true;
        }
    }
Пример #3
0
    /// <summary>
    /// 服の所持数の送信
    /// </summary>
    private void SendHaveClothesCount()
    {
        // アイテムを数える
        if (inventory.isGet && playerData.isGet && !isHaveClothesCount)
        {
            int            count  = inventory.CountItemsCategory("clothes");
            UserDataRecord record = default;
            isHaveClothesCount = true;

            if (playerData.data.TryGetValue(PlayerDataName.COUNT_HAVECLOTHES, out record))
            {
                // 現在の数と同数だったら送信しない
                if (int.Parse(record.Value) == count)
                {
                    return;
                }
            }

            // 服の所持数を送信する
            playerData.SetPlayerData(PlayerDataName.COUNT_HAVECLOTHES, count.ToString());

            // 実績通知をリクエストする
            noticeAchievement.RequestNotice();
        }
    }
Пример #4
0
    private void SelectFirst()
    {
        if (playerData.isGet && !isInit)
        {
            UserDataRecord record = default;
            // 最初に選ばれている難易度選択チェックを入れる
            if (playerData.data.TryGetValue(PlayerDataName.SELECTED_DIFFICULT, out record))
            {
                switch (record.Value)
                {
                case DifficultName.NORMAL:
                    normalToggle.isOn = true;
                    break;

                case DifficultName.HARD:
                    hardToggle.isOn = true;
                    break;

                case DifficultName.VERYHARD:
                    veryhardToggle.isOn = true;
                    break;

                default:
                    // 選択はイージーのまま(初期値)
                    break;
                }
            }
            isInit = true;
        }
    }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        if (!isPlayfabConnectEnd)
        {
            if (statistics.isGet && scoreManager && playerData.isGet)
            {
                string selectDifficult      = default;
                string rankingName          = default;
                string updatePlayerDataName = default;

                UserDataRecord record = default;
                // 現在遊んでいる難易度の取得
                if (playerData.data.TryGetValue(PlayerDataName.SELECTED_DIFFICULT, out record))
                {
                    selectDifficult = record.Value;
                }

                // 難易度に合わせたランキング名と更新用のプレイヤーデータ名を設定する
                switch (selectDifficult)
                {
                case DifficultName.EASY: rankingName = RankingName.EASY; updatePlayerDataName = PlayerDataName.HISCORE_EASY; break;

                case DifficultName.NORMAL: rankingName = RankingName.NORMAL; updatePlayerDataName = PlayerDataName.HISCORE_NORMAL; break;

                case DifficultName.HARD: rankingName = RankingName.HARD; updatePlayerDataName = PlayerDataName.HISCORE_HARD; break;

                case DifficultName.VERYHARD: rankingName = RankingName.VERYHARD; updatePlayerDataName = PlayerDataName.HISCORE_VERYHARD; break;

                default: break;
                }

                // 難易度選択が正しかった場合
                if (selectDifficult != default)
                {
                    // 統計情報のスコアを取得
                    int staValue = statistics.GetStatisticValue(rankingName);

                    // ハイスコア更新で、統計情報が見つからなかった場合は既定値が返るので多分OK
                    if (staValue < scoreManager.GameScore)
                    {
                        Debug.Log("UpdateStatistics");

                        // ハイスコアを更新する
                        statistics.UpdatePlayerStatistics(rankingName, scoreManager.GameScore);

                        // 実績参照用のスコアをプレイヤーデータへ保存しておく
                        playerData.SetPlayerData(updatePlayerDataName, scoreManager.GameScore.ToString());

                        // 実績通知を要求する
                        noticeAchievement.RequestNotice();

                        // ハイスコア更新済みフラグ
                        isUpdate = true;
                    }
                }
                isPlayfabConnectEnd = true;
            }
        }
    }
        private void GetUserDataCallback(GetUserDataResult result)
        {
            lastReceivedMessage = "User Data Received";

            if (!result.Data.TryGetValue(TEST_DATA_KEY, out testCounterReturn))
            {
                testCounterReturn       = new UserDataRecord();
                testCounterReturn.Value = "0";
            }
        }
Пример #7
0
        /**
         * Logs the user's data.
         */
        private void PrintData()
        {
            UserData userData = BackendManager.Instance.GetUserData();

            Dictionary<string, UserDataRecord> playFabData = userData.GetData();

            foreach (string key in playFabData.Keys)
            {
                UserDataRecord record = playFabData[key];

                Debug.Log(key + ": " + record.Value);
            }
        }
        private void OnSucces(GetUserDataResult result)
        {
            UserDataRecord record = null;

            if (result.Data != null)
            {
                if (result.Data.TryGetValue(key.Value, out record))
                {
                    data.Value = record.Value;
                }
            }

            Fsm.Event(successEvent);
        }
Пример #9
0
    // 準備
    private void Preparation()
    {
        if (!waitConnect.IsWait())
        {
            state     = STATE.FADEIN;
            fadeState = FADE_STATE.FADEIN;

            // シーン開始時に現在つけている称号を選択済みにする
            UserDataRecord item = default;
            if (playFabPlayerData.data.TryGetValue(PlayerDataName.ACHIEVEMENT_SELECT, out item))
            {
                achivementParent.SelectedAchievement(item.Value);
            }
        }
    }
Пример #10
0
 //プレイヤーがどの服を着ているか
 private void PlayerWearing()
 {
     if (!connect.IsWait())
     {
         if (playerdata.isGet)
         {
             UserDataRecord playerclothingdata = null;
             if (playerdata.data.TryGetValue(PlayerDataName.ECLOTHES, out playerclothingdata))
             {
                 SelectNumber = SpriteNumber[playerclothingdata.Value];
                 State        = SHELFSTATE.CHANGE;
             }
         }
     }
 }
Пример #11
0
    /// <summary>
    /// 実績カウントを足す
    /// </summary>
    private void AddAchievementCount(string achievementName, int count)
    {
        UserDataRecord record = default;
        int            result = 0;

        if (playerData.data.TryGetValue(achievementName, out record))
        {
            result += int.Parse(record.Value);
        }

        result += count;

        // 足した結果をPlayFabへ送信する
        playerData.SetPlayerData(achievementName, result.ToString());
    }
Пример #12
0
    void Update()
    {
        if (playerData.isGet && !isInit)
        {
            UserDataRecord record = default;
            // 該当難易度が開放済みかどうかをチェックしてボタンの有効性を決める
            if (playerData.data.TryGetValue(ReleaseKey, out record))
            {
                if (record.Value == "RELEASED")
                {
                    toggle.interactable = true;
                }
            }

            isInit = true;
        }
    }
Пример #13
0
        public void UserDataApi()
        {
            var TEST_KEY = "testCounter";

            UserDataRecord testCounter;
            int            testCounterValueExpected, testCounterValueActual;

            var getRequest   = new GetUserDataRequest();
            var getDataTask1 = PlayFabClientAPI.GetUserDataAsync(getRequest);

            WaitForResultSuccess(getDataTask1, "UserData should have been retrieved from Api call");
            if (!getDataTask1.Result.Result.Data.TryGetValue(TEST_KEY, out testCounter))
            {
                testCounter = new UserDataRecord {
                    Value = "0"
                }
            }
            ;
            int.TryParse(testCounter.Value, out testCounterValueExpected);
            testCounterValueExpected = (testCounterValueExpected + 1) % 100; // This test is about the expected value changing - but not testing more complicated issues like bounds

            var updateRequest = new UpdateUserDataRequest {
                Data = new Dictionary <string, string> {
                    { TEST_KEY, testCounterValueExpected.ToString() }
                }
            };
            var updateTask = PlayFabClientAPI.UpdateUserDataAsync(updateRequest);

            WaitForResultSuccess(updateTask, "UpdateUserData call failed"); // The update doesn't return anything interesting except versionID.  It's better to just re-call GetUserData again below to verify the update

            getRequest = new GetUserDataRequest();
            var getDataTask2 = PlayFabClientAPI.GetUserDataAsync(getRequest);

            WaitForResultSuccess(getDataTask2, "UserData should have been retrieved from Api call");
            getDataTask2.Result.Result.Data.TryGetValue(TEST_KEY, out testCounter);
            UUnitAssert.NotNull(testCounter, "The updated UserData was not found in the Api results");
            int.TryParse(testCounter.Value, out testCounterValueActual);
            UUnitAssert.IntEquals(testCounterValueExpected, testCounterValueActual);

            var timeUpdated = testCounter.LastUpdated;
            var testMin     = DateTime.UtcNow - TimeSpan.FromMinutes(5);
            var testMax     = testMin + TimeSpan.FromMinutes(10);

            UUnitAssert.True(testMin <= timeUpdated && timeUpdated <= testMax);
        }
Пример #14
0
    /// <summary>
    /// プレイヤーデータの更新
    /// </summary>
    /// <param name="dataname">データ名</param>
    /// <param name="data">データ内容</param>
    public void SetPlayerData(string dataname, string data)
    {
        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name + dataname))
        {
            // 自分のID以外でユーザーデータを更新しようとしていたら止める
            if (nominationID != playFabLogin._PlayfabID && nominationID != default)
            {
                return;
            }

            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name + dataname);

            var change = new Dictionary <string, string>
            {
                { dataname, data }
            };
            PlayFabClientAPI.UpdateUserData(new UpdateUserDataRequest
            {
                Data = change, Permission = UserDataPermission.Public
            }, result =>
            {
                Debug.Log("ユーザーデータの更新に成功");

                // キーがまだない場合には作成
                if (!this.data.ContainsKey(dataname))
                {
                    UserDataRecord record = new UserDataRecord();
                    this.data.Add(dataname, record);
                }
                this.data[dataname].Value = data;

                // 通信終了
                waitConnect.RemoveWait(gameObject.name + dataname);
            }, error =>
            {
                Debug.Log(error.GenerateErrorReport());

                // 通信終了
                waitConnect.RemoveWait(gameObject.name + dataname);
            });
        }
    }
Пример #15
0
    /// <summary>
    /// 難易度での配置変更
    /// </summary>
    public void ChangeDifficultPattern()
    {
        if (playerData.isGet)
        {
            UserDataRecord record = default;
            if (playerData.data.TryGetValue(PlayerDataName.SELECTED_DIFFICULT, out record))
            {
                switch (record.Value)
                {
                case DifficultName.EASY: patternList = new List <ArrangePattern>(easyTable.ArrangeTableItemList); break;

                case DifficultName.NORMAL: patternList = new List <ArrangePattern>(normalTable.ArrangeTableItemList); break;

                case DifficultName.HARD: patternList = new List <ArrangePattern>(hardTable.ArrangeTableItemList); break;

                case DifficultName.VERYHARD: patternList = new List <ArrangePattern>(veryhardTable.ArrangeTableItemList); break;
                }
            }
        }
    }
Пример #16
0
    // サウンド開始処理
    private void StartSound()
    {
        UserDataRecord record = default;

        // キーがない場合の事を考慮する
        if (m_PlayFabPlayerData.data.TryGetValue(PlayerDataName.BGMVOLUME, out record))
        {
            SoundManager.Instance.SetBGMVolume(float.Parse(record.Value));
        }
        if (m_PlayFabPlayerData.data.TryGetValue(PlayerDataName.SEVOLUME, out record))
        {
            SoundManager.Instance.SetSEVolume(float.Parse(record.Value));
        }
        // スライダーオブジェクトの初期化
        bgmSlider.InitializeSlider();
        seSlider.InitializeSlider();

        // BGM再生開始
        SoundManager.Instance.PlayBGM("MainGame");
    }
Пример #17
0
    // Update is called once per frame
    void Update()
    {
        // 選択されていたらアニメーションをさせる
        if (parent.difficultName == difficultName)
        {
            buttonAnime.enabled    = true;
            thumbnailAnime.enabled = true;
            textAnime.enabled      = true;
        }
        else
        {
            buttonAnime.enabled = false;
            buttonAnime.ResetAlpha();
            thumbnailAnime.enabled = false;
            thumbnailAnime.ResetAlpha();
            textAnime.enabled = false;
            textAnime.ResetAlpha();
        }

        // 解放されているかを確認してボタンの有効無効を決める
        if (playerData.isGet)
        {
            UserDataRecord record = default;
            switch (difficultName)
            {
            case DifficultName.EASY: return;            // イージーは無条件解放

            case DifficultName.NORMAL: playerData.data.TryGetValue(PlayerDataName.RELEASE_NORMAL, out record); break;

            case DifficultName.HARD: playerData.data.TryGetValue(PlayerDataName.RELEASE_HARD, out record); break;

            case DifficultName.VERYHARD: playerData.data.TryGetValue(PlayerDataName.RELEASE_VERYHARD, out record); break;
            }

            // 未開放の場合はボタンを無効化する
            if (record == default || record.Value != "RELEASED")
            {
                button.enabled = false;
            }
        }
    }
Пример #18
0
    /// <summary>
    /// メッセージの出現開始
    /// </summary>
    public void StartAppearMessage()
    {
        state = MESSAGE_STATE.APPEAR;

        UserDataRecord record = default;

        // 現在の難易度を見てどのオブジェクトを有効化するかを変える
        if (playerData.data.TryGetValue(PlayerDataName.SELECTED_DIFFICULT, out record))
        {
            switch (record.Value)
            {
            case DifficultName.EASY: normalReleaseText.SetActive(true); break;

            case DifficultName.NORMAL: hardReleaseText.SetActive(true); break;

            case DifficultName.HARD: veryhardReleaseText.SetActive(true); break;

            default: break;
            }
        }
    }
Пример #19
0
 void Update()
 {
     if (playerData.isGet && reachAchievement.isSet && store.isStoreGet && !isSend)
     {
         foreach (var item in store.StoreItems)
         {
             UserDataRecord record = default;
             string         key    = "NOTICE_" + item.ItemId;
             // 通知キーが未生成なら通知をONにする
             if (!playerData.data.TryGetValue(key, out record))
             {
                 // 実績達成済みなら送信
                 if (reachAchievement.isSet && reachAchievement.IsReachAchievement(item.ItemId))
                 {
                     playerData.SetPlayerData(key, "TRUE");
                 }
             }
         }
         isSend = true;
     }
 }
Пример #20
0
    ////////////////////////////////////////////////////////////////
    /// Write the user's data up to the server
    ///
    public static void StoreUserData(int shipStyle, int shipColor)
    {
        if (!UserData.ContainsKey("ShipStyle"))
        {
            UserData["ShipStyle"] = new UserDataRecord {
                Value = shipStyle.ToString()
            };
            UserData["ShipColor"] = new UserDataRecord {
                Value = shipColor.ToString()
            };
        }
        else
        {
            UserData["ShipStyle"].Value = shipStyle.ToString();
            UserData["ShipColor"].Value = shipColor.ToString();
        }

        PlayFabClientAPI.UpdateUserData(
            // Request
            new UpdateUserDataRequest
        {
            Data = new Dictionary <string, string>
            {
                { "ShipStyle", UserData["ShipStyle"].Value },
                { "ShipColor", UserData["ShipColor"].Value }
            }
        },
            // Success
            (UpdateUserDataResult response) =>
        {
            Debug.Log("UpdateUserData completed.");
        },
            // Failure
            (PlayFabError error) =>
        {
            Debug.LogError("UpdateUserData failed.");
            Debug.LogError(error.GenerateErrorReport());
        }
            );
    }
    void Update()
    {
        // プレイヤーデータ取得済み且つ難易度が変更されていた場合読み込む
        if (playerData.isGet && oldDifficultName != parent.difficultName)
        {
            UserDataRecord record = default;
            // 各難易度を読み込む
            if (playerData.data.TryGetValue("HISCORE_" + parent.difficultName, out record))
            {
                int hiScore = int.Parse(record.Value);
                // 全角でテキストに入れる
                textmesh.text = StringWidthConverter.ConvertToFullWidth(string.Format("{0:0000}", hiScore));
            }
            else
            {
                // ハイスコアがない場所は0埋め
                textmesh.text = "0000";
            }

            oldDifficultName = parent.difficultName;
        }
    }
Пример #22
0
    void SetFirstActive()
    {
        if (playerData.isGet && achievementStore.isStoreGet && !isInit)
        {
            gameObject.SetActive(false);

            foreach (var item in achievementStore.StoreItems)
            {
                UserDataRecord record = default;
                if (playerData.data.TryGetValue("NOTICE_" + item.ItemId, out record))
                {
                    // 通知アイコンが表示状態を見て表示
                    if (record.Value == "TRUE")
                    {
                        gameObject.SetActive(true);
                        break;
                    }
                }
            }

            isInit = true;
        }
    }
Пример #23
0
        private void UserDataApiContinued1(PlayFabResult <GetUserDataResult> getDataResult1, UUnitTestContext testContext, string failMessage)
        {
            UserDataRecord testCounter;

            if (!getDataResult1.Result.Data.TryGetValue(TEST_DATA_KEY, out testCounter))
            {
                testCounter = new UserDataRecord {
                    Value = "0"
                }
            }
            ;
            int.TryParse(testCounter.Value, out _testInteger);
            _testInteger = (_testInteger + 1) % 100; // This test is about the expected value changing - but not testing more complicated issues like bounds

            var updateRequest = new UpdateUserDataRequest {
                Data = new Dictionary <string, string> {
                    { TEST_DATA_KEY, _testInteger.ToString() }
                }
            };
            var updateTask = clientApi.UpdateUserDataAsync(updateRequest, null, testTitleData.extraHeaders);

            ContinueWithContext(updateTask, testContext, UserDataApiContinued2, true, "UpdateUserData call failed", false); // The update doesn't return anything interesting except versionID.  It's better to just re-call GetUserData again below to verify the update
        }
Пример #24
0
    void Update()
    {
        if (!isSet)
        {
            // データ取得完了していたらスプライトをロードする
            if (rankingRecord.playerData != default && rankingRecord.playerData.isGet)
            {
                UserDataRecord record = default;
                // ランキングのレコードからプレイヤーの装着している服を取得する
                if (rankingRecord.playerData.data.TryGetValue(PlayerDataName.ECLOTHES, out record))
                {
                    image.sprite = Resources.Load <Sprite>("Player\\" + record.Value);

                    if (image.sprite == null)
                    {
                        image.sprite = Resources.Load <Sprite>("Player\\001_NORMAL");
                    }
                }

                isSet = true;
            }
        }
    }
Пример #25
0
        public PlayerObject(string name, string id, Texture avatar)
        {
            this.name   = name;
            this.id     = id;
            this.avatar = avatar;
            //this.timer = timer;
            if (!id.Contains("_BOT"))
            {
                this.isBot = false;
                id         = UserDetailsManager.userId;
                name       = UserDetailsManager.userName;
                avatar     = UserDetailsManager.userImageTexture;
            }
            else
            {
                this.isBot     = true;
                this.data      = new LudoPlayerData();
                this.data.data = new Dictionary <string, UserDataRecord>();


                UserDataRecord record3 = new UserDataRecord();
                record3.Value = Random.Range(500, 1000).ToString();
                this.data.data.Add(LudoPlayerData.GamesPlayedKey, record3);
                UserDataRecord record4 = new UserDataRecord();
                record4.Value = Random.Range(1, 250).ToString();
                this.data.data.Add(LudoPlayerData.TwoPlayerWinsKey, record4);
                UserDataRecord record5 = new UserDataRecord();
                record5.Value = Random.Range(1, 250).ToString();
                this.data.data.Add(LudoPlayerData.FourPlayerWinsKey, record5);
                UserDataRecord record = new UserDataRecord();
                record.Value = (Random.Range(10000, 50000) * 100).ToString();
                this.data.data.Add(LudoPlayerData.TotalEarningsKey, record);
                UserDataRecord record2 = new UserDataRecord();
                record2.Value = (Random.Range(1, 10000) * 100).ToString();
                this.data.data.Add(LudoPlayerData.CoinsKey, record2);
            }
        }
Пример #26
0
    /// <summary>
    /// 解放メッセージを表示するかどうか
    /// </summary>
    /// <returns></returns>
    public bool isShowUnlockMessage()
    {
        bool           ret             = false;
        UserDataRecord record          = default;
        int            Threshold       = 99999;
        string         TargetDifficult = PlayerDataName.RELEASE_NORMAL;

        // 現在の難易度を見てスコアを超えているかどうかを確認する。
        if (playerData.data.TryGetValue(PlayerDataName.SELECTED_DIFFICULT, out record))
        {
            switch (record.Value)
            {
            case DifficultName.EASY:
                // 解放対象難易度が解放済みかどうかをチェックする(キーが無ければ未開放)
                if (!playerData.data.TryGetValue(PlayerDataName.RELEASE_NORMAL, out record))
                {
                    Threshold       = int.Parse(titleData.titleData[TitleDataName.RELEASE_THRESHOLD_NORMAL]);
                    TargetDifficult = PlayerDataName.RELEASE_NORMAL;
                }
                break;

            case DifficultName.NORMAL:
                // 解放対象難易度が解放済みかどうかをチェックする(キーが無ければ未開放)
                if (!playerData.data.TryGetValue(PlayerDataName.RELEASE_HARD, out record))
                {
                    Threshold       = int.Parse(titleData.titleData[TitleDataName.RELEASE_THRESHOLD_HARD]);
                    TargetDifficult = PlayerDataName.RELEASE_HARD;
                }
                break;

            case DifficultName.HARD:
                // 解放対象難易度が解放済みかどうかをチェックする(キーが無ければ未開放)
                if (!playerData.data.TryGetValue(PlayerDataName.RELEASE_VERYHARD, out record))
                {
                    Threshold       = int.Parse(titleData.titleData[TitleDataName.RELEASE_THRESHOLD_VERYHARD]);
                    TargetDifficult = PlayerDataName.RELEASE_VERYHARD;
                }
                break;

            default: break;
            }
        }
        // 閾値を超えたので解放する
        if (Threshold <= scoreManager.GameScore)
        {
            playerData.SetPlayerData(TargetDifficult, "RELEASED");

            // 実績通知を要求する
            noticeAchievement.RequestNotice();

            ret = true;
        }
        else if (Threshold != 99999)
        {
            // 次の解放まで届かなかった場合は何点か表示する
            nextText.gameObject.SetActive(true);
            nextText.text = nextText.text + (Threshold - scoreManager.GetCoinScore()).ToString();
        }
        else
        {
            // 開放済みまたは次がないので非表示
            nextText.gameObject.SetActive(false);
        }

        return(ret);
    }