| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- using LitJson;
- using Newtonsoft.Json;
- using ProjectBase.UI;
- using ShotSimulator.Tool;
- using ShotSimulator.User;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Localization.Components;
- using UnityEngine.UI;
- namespace ShotSimulator.UI
- {
- [System.Serializable]
- public struct RankingData
- {
- public string userName;
- public int avatarId;
- public string avatarUrl;
- public int rank;
- public int score;
- public bool isSelf;
- }
- public class RankingUIView : BaseUIView
- {
- public Button backButton;
- public Transform rankViewContent;
- public RankingItem selfRankingItem;
- public LocalizeStringEvent TimeLocalize;
- public LocalizeStringEvent TrainTaskLocalize;
- public LocalizeStringEvent DifficultyLocalize;
- public LocalizeStringEvent modeLocalize;
- public LocalizeStringEvent deviceLocalize;
- protected override void InitUIObjects()
- {
- base.InitUIObjects();
- backButton.onClick.AddListener(OnBackButtonClick);
- InitTimeFilterPanel();
- InitTrainTaskFilterPanel();
- InitDifficultyTypeFilterPanel();
- InitModeTypeFilterPanel();
- InitDeviceTypeFilterPanel();
- }
- protected override void OnShowCallBack()
- {
- base.OnShowCallBack();
- GetRankingByCurrentFilter();
- }
- private void OnBackButtonClick()
- {
- UIManager.GetInstance().HideUIView(this);
- UIManager.GetInstance().ShowUIView("TrainTaskInfoUIView");
- }
- #region Time
- private TimeFilterType current_TimeFilterType = TimeFilterType.Week;
- private TimeFilterType Current_TimeFilterType
- {
- get { return current_TimeFilterType; }
- set
- {
- current_TimeFilterType = value;
- GetRankingByCurrentFilter();
- }
- }
- public List<Toggle> m_TimeFilterToggles = new List<Toggle>();
- public Text timeFilterTypeText;
- private void InitTimeFilterPanel()
- {
- for (int i = 0; i < m_TimeFilterToggles.Count; i++)
- {
- int index = i;
- TimeFilterType type = m_TimeFilterToggles[index].GetComponent<TimeTypeEnumTag>().m_TimeFilterType;
- m_TimeFilterToggles[index].onValueChanged.AddListener((isOn) =>
- {
- if (isOn)
- {
- Current_TimeFilterType = type;
- TimeLocalize.StringReference = m_TimeFilterToggles[index].GetComponentInChildren<LocalizeStringEvent>().StringReference;
- }
- });
- }
- }
- #endregion
- #region TrainTask
- private TrainTaskType current_TrainTaskType = TrainTaskType.JudgeShot;
-
- private TrainTaskType Current_TrainTaskType
- {
- get { return current_TrainTaskType; }
- set
- {
- current_TrainTaskType = value;
- GetRankingByCurrentFilter();
- }
- }
- public List<Toggle> m_TrainTaskToggles = new List<Toggle>();
- public Text trainTaskTypeText;
- private void InitTrainTaskFilterPanel()
- {
- for(int i = 0; i < m_TrainTaskToggles.Count; i++)
- {
- int index = i;
- TrainTaskType type = m_TrainTaskToggles[index].GetComponent<TrainTaskTypeEnumTag>().m_TrainTaskType;
- m_TrainTaskToggles[index].onValueChanged.AddListener((isOn) =>
- {
- if (isOn)
- {
- Current_TrainTaskType = type;
- TrainTaskLocalize.StringReference = m_TrainTaskToggles[index].GetComponentInChildren<LocalizeStringEvent>().StringReference;
- }
- });
- }
- }
- #endregion
- #region DifficultyType
- private DifficultyType current_DifficultyType = DifficultyType.Standard;
- private DifficultyType Current_DifficultyType
- {
- get { return current_DifficultyType; }
- set
- {
- current_DifficultyType = value;
- GetRankingByCurrentFilter();
- }
- }
- public List<Toggle> m_DifficultyTypeToggles = new List<Toggle>();
- public Text difficultyTypeText;
- private void InitDifficultyTypeFilterPanel()
- {
- for (int i = 0; i < m_DifficultyTypeToggles.Count; i++)
- {
- int index = i;
- DifficultyType type = m_DifficultyTypeToggles[index].GetComponent<DifficultyTypeEnumTag>().m_DifficultyType;
- m_DifficultyTypeToggles[index].onValueChanged.AddListener((isOn) =>
- {
- if (isOn)
- {
- Current_DifficultyType = type;
- DifficultyLocalize.StringReference = m_DifficultyTypeToggles[index].GetComponentInChildren<LocalizeStringEvent>().StringReference;
- }
- });
- }
- }
- #endregion
- #region Mode
- private ModeType current_ModeType = ModeType.NonTactical;
- private ModeType Current_ModeType
- {
- get { return current_ModeType; }
- set
- {
- current_ModeType = value;
- GetRankingByCurrentFilter();
- }
- }
- public List<Toggle> m_ModeTypeToggles = new List<Toggle>();
- public Text modeTypeText;
- private void InitModeTypeFilterPanel()
- {
- for (int i = 0; i < m_ModeTypeToggles.Count; i++)
- {
- int index = i;
- ModeType type = m_ModeTypeToggles[index].GetComponent<ModeTypeEnumTag>().m_ModeType;
- m_ModeTypeToggles[index].onValueChanged.AddListener((isOn) =>
- {
- if (isOn)
- {
- Current_ModeType = type;
- modeLocalize.StringReference = m_ModeTypeToggles[index].GetComponentInChildren<LocalizeStringEvent>().StringReference;
- }
- });
- }
- }
- #endregion
- #region Device
- private FirearmDeviceType current_FirearmDeviceType = FirearmDeviceType.M9;
- private FirearmDeviceType Current_FirearmDeviceType
- {
- get { return current_FirearmDeviceType; }
- set
- {
- current_FirearmDeviceType = value;
- GetRankingByCurrentFilter();
- }
- }
- public List<Toggle> m_DeviceTypeToggles = new List<Toggle>();
- public Text deviceTypeTypeText;
- private void InitDeviceTypeFilterPanel()
- {
- for (int i = 0; i < m_DeviceTypeToggles.Count; i++)
- {
- int index = i;
- FirearmDeviceType type = m_DeviceTypeToggles[index].GetComponent<DeviceTypeEnumTag>().m_DeviceType;
- m_DeviceTypeToggles[index].onValueChanged.AddListener((isOn) =>
- {
- if (isOn)
- {
- Current_FirearmDeviceType = type;
- deviceLocalize.StringReference = m_DeviceTypeToggles[index].GetComponentInChildren<LocalizeStringEvent>().StringReference;
- }
- });
- }
- }
- #endregion
- private void GetRankingByCurrentFilter()
- {
- RankingFilter filter = new RankingFilter()
- {
- trainTaskType = Current_TrainTaskType,
- difficultyType = Current_DifficultyType,
- modeType = Current_ModeType,
- firearmDeviceType = Current_FirearmDeviceType,
- timeFilterType = Current_TimeFilterType
- };
- UserManager.GetInstance().GetCustomLeaderboard(filter, (result) =>
- {
- List<RankingData> datas = JsonConvert.DeserializeObject<List<RankingData>>(JsonConvert.SerializeObject(result.data, Formatting.Indented));
- UpdateRankingView(datas);
- });
- }
- private void UpdateRankingView(List<RankingData> datas)
- {
- foreach(Transform child in rankViewContent)
- {
- Destroy(child.gameObject);
- }
- selfRankingItem.Reset();
- if (datas != null)
- {
- for (int i = 0; i < datas.Count; i++)
- {
- GameObject obj = Instantiate<GameObject>(Resources.Load<GameObject>("Prefabs/UI/Ranking/RankingItem"));
- RankingItem item = obj.GetComponent<RankingItem>();
- item.transform.SetParent(rankViewContent, false);
- item.SetRankData(datas[i]);
- if (datas[i].isSelf)
- {
- selfRankingItem.SetRankData(datas[i]);
- }
- }
- }
- }
- }
- }
|