using UnityEngine; using Mapbox.Unity.Map; using DG.Tweening; using UnityEngine.UI; using Assets.Scripts.Apis; using System; using Assets.Scripts; using Assets.Scripts.Apis.Models; using System.Collections.Generic; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; using System.Collections; using System.Threading.Tasks; namespace Assets.Scenes.Ride.Scripts { //[ExecuteInEditMode] public class LoadingController : MonoBehaviour { #region GameObject Text mapName; AbstractMap _map; Text level; Text distance; Text elevaction; Text slope; Text rideNum; Text uploadByUserName; Text processText; Text mapDescText; RawImage head; RawImage country; RawImage mapCountry; RawImage mapRouteImage; RawImage altitudeGraph; Button rideNow; Button cancel; MapApi mapApi; GameObject panel; CanvasGroup canvasGroup; Transform mapRanking; Slider slider; #endregion GameObject loadingPanel; #region 属性 float process = 0;//0-100 % #endregion CyclingController cyclingController; private void Start() { loadingPanel = transform.Find("Panel/LoadingPanel").gameObject; loadingPanel.showLoadingExtension(); //InitGameObject(); } public void InjectController(CyclingController controller) { cyclingController = controller; PFUIPanel mainPanel = transform.Find("Panel").GetComponent(); PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent(); cyclingController.SetUIManager(mainPanel, modelPanel); } //提供给主控制器初始化用 public void Init(MapRoute route) { InitGameObject(); InitGameObjectData(route); } //展示当前路书图片 public void SetMapRouteImage(string url) { Utils.DisplayImage(StartCoroutine, mapRouteImage, url); } public void DrawMapRoute(MapDataModel mapData) { var url = Helper.GetMapboxApiUrl(mapData.List); if (App.TextureCache.ContainsKey(url)) { mapRouteImage.texture = App.TextureCache[url]; var canvasGroup = mapRouteImage.GetComponent(); canvasGroup.DOFade(1, 1); this.AddProcess(10); } else { Utils.DisplayImageAysnc(StartCoroutine, mapRouteImage, url, dowloadCallBack); this.AddProcess(10); } } private void dowloadCallBack(string url) { if (!App.TextureCache.ContainsKey(url)) { App.TextureCache.Add(url, mapRouteImage.texture); } else { App.TextureCache[url] = mapRouteImage.texture; } var canvasGroup = mapRouteImage.GetComponent(); canvasGroup.DOFade(1, 1); } //设定当前loading进度 public void AddProcess(float v) { process += v; slider.value = process; slider.onValueChanged.AddListener((f) => { processText.text = $"{(f ).ToString("#0")}%"; }); if (process == 100) { rideNow.interactable = true; rideNow.enabled = true; } } //创建排行榜 public void CreateRankingList(List list) { var prefab = Resources.Load("UI/Prefab/Ride/RankingItem"); var parent = transform.Find("Panel/MapRanking"); var title = transform.Find("Panel/RankingTitle").gameObject; if (list.Count == 0) { title.SetActive(false); } foreach (var item in list) { GameObject newObj = (GameObject)Instantiate(prefab, parent); var selectPlayerItemScript = newObj.GetComponent(); selectPlayerItemScript.SetRanking(item.RowNumber.ToString()); selectPlayerItemScript.SetName(item.NickName); selectPlayerItemScript.SetTimer(item.IsDNF?"DNF":item.TotalTime); selectPlayerItemScript.SetHead(item.WxHeadImg); var texture = cyclingController.GetCountryImageByCode(item.CountryCode); selectPlayerItemScript.SetCountry(texture); } } private void InitGameObject() { panel = transform.Find("Panel").gameObject; mapName = transform.Find("Panel/MapName").GetComponent(); distance = transform.Find("Panel/Distance").GetComponent(); level = transform.Find("Panel/level/Text").GetComponent(); elevaction = transform.Find("Panel/Elevaction").GetComponent(); slope = transform.Find("Panel/Slope").GetComponent(); rideNum = transform.Find("Panel/RideNum").GetComponent(); uploadByUserName = transform.Find("Panel/UploadByUserName").GetComponent(); country = transform.Find("Panel/UploadByCountry").GetComponent(); mapCountry = transform.Find("Panel/Country").GetComponent(); head = transform.Find("Panel/UploadByHead").GetComponent(); mapRouteImage = transform.Find("Panel/MapRouteImage").GetComponent(); altitudeGraph = transform.Find("Panel/AltitudeGraph").GetComponent(); mapRanking = transform.Find("Panel/MapRanking"); slider = transform.Find("Panel/Process").GetComponent(); processText = transform.Find("Panel/ProcessText").GetComponent(); mapDescText = transform.Find("Panel/MapDesc").GetComponent(); rideNow = transform.Find("Panel/RideNow").GetComponent