using Cysharp.Threading.Tasks; using System.Collections; using System.Collections.Generic; using UnityEngine; public class DataController : MonoSingleton { public string distCode; private AreaStationData areaStationData = new AreaStationData(); private CityInfo[] cityInfos; [HideInInspector] public List> loadingAreaDataTasks = new List>(); [HideInInspector] public List> loadingScreenTopStatisticsTasks = new List>(); private AreaData[] areaDatas; private ScreenTopStatistics[] screenTopStatistics; private async void Start() { await UniTask.Delay(1); areaStationData = await GetProvincialLevelStationData("37"); cityInfos = transform.GetComponentsInChildren(); for (int i = 0; i < cityInfos.Length; i++) { cityInfos[i].Init(); } areaDatas = await UniTask.WhenAll(loadingAreaDataTasks); for (int i = 0; i < cityInfos.Length; i++) { string distCodeTemp = cityInfos[i].distCode; cityInfos[i].SetAreaData(GetAreaDateByDistCode(distCodeTemp)); } screenTopStatistics = await UniTask.WhenAll(loadingScreenTopStatisticsTasks); for (int i = 0; i < cityInfos.Length; i++) { string distCodeTemp = cityInfos[i].distCode; cityInfos[i].SetStationData(GetAreLevelStationDataByDistCode(distCodeTemp)); } } /// /// 针对市级 /// /// /// /// public async UniTask GetProvincialLevelStationInfo(string _distCode, string _disName) { if (_distCode.Length == 6) distCode = _distCode.Substring(0, 4); string url = Bootstrap.Instance.urlDic["地图信息汇总"]; AreaStationData areaStationData = await AsyncWebReq.Get(url + distCode, Bootstrap.Instance.webAdapter.head, Bootstrap.Instance.webAdapter.token); DataItem sts = areaStationData.data.Find(s => s.disName == _disName); if (sts == null) return null; return sts.screenTopStatistics; } /// /// 通过市级视角去获取数据 针对区县 /// /// /// public ScreenTopStatistics GetAreLevelStationDataByDistCode(string _distCode) { for (int i = 0; i < screenTopStatistics.Length; i++) { if (screenTopStatistics[i] != null && screenTopStatistics[i].distCode == _distCode) { return screenTopStatistics[i]; } } return null; } /// /// 针对市级区域 /// /// /// public ScreenTopStatistics GetProvincialLevelStationDataByDistCode(string _distCode) { for (int i = 0; i < areaStationData.data.Count; i++) { if (areaStationData.data[i].distCode == _distCode) { return areaStationData.data[i].screenTopStatistics; } } return null; } /// /// 获取每个区域的聚合信息 /// /// /// public async UniTask GetAreaDataByDistCode(string _distCode) { await UniTask.Delay(2); string url = Bootstrap.Instance.urlDic["地图弹出框"]; AreaData areaData = await AsyncWebReq.Get($"{url}{_distCode}", Bootstrap.Instance.webAdapter.head, Bootstrap.Instance.webAdapter.token); if ( !bool.Parse(areaData.success)) return null; return areaData; } public AreaData GetAreaDateByDistCode(string _distCode) { for (int i = 0; i < areaDatas.Length; i++) { if (areaDatas[i].data.distCode == _distCode) { return areaDatas[i]; } } return null; } /// /// 获取地图汇总 /// /// /// private async UniTask GetProvincialLevelStationData(string _distCode) { string url = Bootstrap.Instance.urlDic["地图信息汇总"]; AreaStationData areaStationData = await AsyncWebReq.Get(url + _distCode, Bootstrap.Instance.webAdapter.head, Bootstrap.Instance.webAdapter.token); return areaStationData; } }