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); } }
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; } }
/// <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(); } }
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; } }
// 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"; } }
/** * 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); }
// 準備 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); } } }
//プレイヤーがどの服を着ているか 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; } } } }
/// <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()); }
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; } }
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); }
/// <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); }); } }
/// <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; } } } }
// サウンド開始処理 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"); }
// 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; } } }
/// <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; } } }
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; } }
//////////////////////////////////////////////////////////////// /// 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; } }
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; } }
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 }
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; } } }
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); } }
/// <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); }