private void UpdateAIData(int score, int end) { userReference.OrderByChild("score").StartAt(score + 1).EndAt(end).LimitToFirst(10).GetValueAsync() .ContinueWith(task => { if (task.IsCompleted) { try { foreach (var data in task.Result.Children) { pvpDatas.Add(JsonUtility.FromJson <PvpData>(data.GetRawJsonValue())); } var userData = pvpDatas[(int)Random.Range(0, task.Result.ChildrenCount)]; DataController.Instance.AIData = userData; DataController.Instance.isPvpReady = true; } catch (Exception e) { var user = new PvpData { score = DataController.Instance.PlayerData.score + 10, skillIndex = DataController.Instance.skillIndex, costumeIndex = DataController.Instance.PlayerData.costumeIndex, skinIndex = DataController.Instance.PlayerData.skinIndex, Hp = DataController.Instance.PlayerData.Hp, damage = DataController.Instance.PlayerData.damage, criticalDamage = DataController.Instance.PlayerData.criticalDamage, criticalPercent = DataController.Instance.PlayerData.criticalPercent, skillClickTime = Random.Range(0.6f, 1f), skill_1_damage = DataController.Instance.PlayerData.skill_1_damage, skill_2_damage = DataController.Instance.PlayerData.skill_2_damage, skill_3_time = DataController.Instance.PlayerData.skill_3_time, skill_4_damage = DataController.Instance.PlayerData.skill_4_damage, skill_5_damage = DataController.Instance.PlayerData.skill_5_damage, skill_6_damage = DataController.Instance.PlayerData.skill_6_damage, userName = randName[Random.Range(0, randName.Length)] }; // 이름 1에서 이름 2로 수정 user.Hp += user.Hp * Random.Range(-20, 20) / 100; user.damage += user.damage * Random.Range(-20, 20) / 100; user.criticalDamage += user.criticalDamage * Random.Range(-20, 20) / 100; DataController.Instance.AIData = user; DataController.Instance.isPvpReady = true; // Loading.SetActive(false); throw; } } }); }
public void SyncButton() { if (Social.localUser.authenticated) { if (PlayerPrefs.GetFloat("FirstPvp", 0) == 0) { // PVP 처음 입장 PlayerPrefs.SetFloat("FirstPvp", 1); var criticalPer = DataController.Instance.criticalPercent + DataController.Instance.rubyCriticalPer + DataController.Instance.devilCritical + DataController.Instance.collectionCriticalPer + DataController.Instance.advancedCriticalPer + DataController.Instance.skinCriticalPer; var user = new PvpData { userName = PlayGamesPlatform.Instance.localUser.userName, score = 1000, skillIndex = DataController.Instance.skillIndex, costumeIndex = DataController.Instance.costumeIndex, skinIndex = DataController.Instance.skinIndex, damage = DataController.Instance.masterDamage, criticalPercent = criticalPer, criticalDamage = DataController.Instance.masterCriticalDamage, Hp = DataController.Instance.GetPlayerHP(), skillClickTime = Random.Range(0.5f, 1f), skill_1_damage = DataController.Instance.skill_1_damage, skill_2_damage = DataController.Instance.skill_2_damage, skill_3_time = DataController.Instance.skill_3_time, skill_4_damage = DataController.Instance.skill_4_damage, skill_5_damage = DataController.Instance.skill_5_damage, skill_6_damage = DataController.Instance.skill_6_damage }; DataController.Instance.PlayerData = user; var json = JsonUtility.ToJson(user); userReference.Child(PlayGamesPlatform.Instance.localUser.id).SetRawJsonValueAsync(json).ContinueWith(task => { if (task.IsCompleted) { SetAIData(); } }); } else { userReference.Child(PlayGamesPlatform.Instance.localUser.id).GetValueAsync().ContinueWith(task => { if (task.IsCompleted) { var userData = JsonUtility.FromJson <PvpData>(task.Result.GetRawJsonValue()); var criticalPer = DataController.Instance.criticalPercent + DataController.Instance.rubyCriticalPer + DataController.Instance.devilCritical + DataController.Instance.collectionCriticalPer + DataController.Instance.advancedCriticalPer + DataController.Instance.skinCriticalPer; var damage = DataController.Instance.masterDamage >= userData.damage ? DataController.Instance.masterDamage : userData.damage; var criticalPercent = criticalPer >= userData.criticalPercent ? criticalPer : userData.criticalPercent; var criticalDamage = DataController.Instance.masterCriticalDamage >= userData.criticalDamage ? DataController.Instance.masterCriticalDamage : userData.criticalDamage; var hp = DataController.Instance.GetPlayerHP() >= userData.Hp ? DataController.Instance.GetPlayerHP() : userData.Hp; var user = new PvpData { userName = PlayGamesPlatform.Instance.localUser.userName, score = userData.score, skillIndex = DataController.Instance.skillIndex, costumeIndex = DataController.Instance.costumeIndex, skinIndex = DataController.Instance.skinIndex, damage = damage, criticalPercent = criticalPercent, criticalDamage = criticalDamage, Hp = hp, skillClickTime = userData.skillClickTime, skill_1_damage = DataController.Instance.skill_1_damage, skill_2_damage = DataController.Instance.skill_2_damage, skill_3_time = DataController.Instance.skill_3_time, skill_4_damage = DataController.Instance.skill_4_damage, skill_5_damage = DataController.Instance.skill_5_damage, skill_6_damage = DataController.Instance.skill_6_damage }; // 플레이어 데이터 셋팅 DataController.Instance.PlayerData = user; var json = JsonUtility.ToJson(user); userReference.Child(PlayGamesPlatform.Instance.localUser.id).SetRawJsonValueAsync(json).ContinueWith( task1 => { if (task1.IsCompleted) { SetAIData(); } }); } }); } } }