using UnityEngine; using Mapbox.Unity.Map; using UnityEngine.UI; using System; using Assets.Scripts; using Assets.Scripts.Apis.Models; using System.Collections.Generic; namespace Assets.Scenes.Ride.Scripts { public class LoadingController : AbstratctLoadingController { #region GameObject protected Text level; protected Text rideNum; protected Text uploadByUserName; protected RawImage head; protected RawImage country; protected RawImage mapCountry; protected RawImage altitudeGraph; protected Transform mapRanking; protected Text mapId; #endregion public override void InjectController(CyclingController controller) { #if UNITY_IOS || UNITY_ANDROID panel = Instantiate(Resources.Load("UI/Prefab/Ride/Mobile/LoadingPanel"), transform); #else panel = Instantiate(Resources.Load("UI/Prefab/Ride/LoadingPanel"), transform); #endif cyclingController = controller; PFUIPanel mainPanel = panel.GetComponent(); PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent(); cyclingController.SetUIManager(mainPanel, modelPanel); } protected override void ShowLoading() { loadingPanel = panel.transform.Find("LoadingPanel").gameObject; loadingPanel.showLoadingExtension(); } //初始化 public override void Init() { InitGameObject(); InitGameObjectData(); } GameObject enable3D { get; set; } protected override void InitGameObject() { base.InitGameObject(); level = panel.transform.Find("level/Text").GetComponent(); rideNum = panel.transform.Find("RideNum").GetComponent(); uploadByUserName = panel.transform.Find("UploadByUserName").GetComponent(); country = panel.transform.Find("UploadByCountry").GetComponent(); mapCountry = panel.transform.Find("Country").GetComponent(); head = panel.transform.Find("UploadByHead").GetComponent(); altitudeGraph = panel.transform.Find("AltitudeGraph").GetComponent(); mapRanking = panel.transform.Find("MapRanking"); mapId = panel.transform.Find("MapId").GetComponent(); } protected override void InitGameObjectData() { var route = cyclingController.mapRoute; #region 绑定路书基本信息 //mapName.text = route.Name; #if UNITY_IOS || UNITY_ANDROID enable3D = panel.transform.Find("Enable3D").gameObject; enable3D.SetActive(route.Enable3D); #endif mapName.text = GetMaxString(route.Name, 40); level.text = route.Hard; elevaction.text = Math.Round(route.TotalClimb.GetValueOrDefault(0), 2).ToString() + "M"; slope.text = Math.Round(route.AverageGrade, 2).ToString() + "%"; rideNum.text = route.TheHeat.ToString(); distance.text = route.Distance.ToString("f1") + "KM"; mapDescText.text = GetMaxString(route.Dec, 255); mapId.text = route.Id.ToString(); var userList = ConfigHelper.mapApi.GetOnlineUserInfo(new int[] { route.UserId }).data; if (userList.Count > 0) { uploadByUserName.text = userList[0].Name; var countryUrl = App.Host + $"User/GetCountryImg?userid={userList[0].Id}"; Utils.DisplayImage(head, userList[0].HeadImage);//头像 country.texture = cyclingController.GetCountryImageByCode(route.CountryCode);//上传者国家 mapCountry.texture = cyclingController.GetCountryImageByName(userList[0].Country);//路书国家 Utils.DisplayImage(altitudeGraph, route.AltitudeGraph);//海拔图 } #endregion //异步请求mapbox画出当前路书路线图 DrawMapRouteAsync(route.Id); AddProcess(10); //查询排行榜 var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, ""); if (list.result) { CreateRankingList(list.data.list); AddProcess(10); } StartCoroutine(HiddenLoading()); } //创建排行榜 public void CreateRankingList(List list) { #if UNITY_IOS || UNITY_ANDROID var prefab = Resources.Load("UI/Prefab/Ride/Mobile/RankingItem"); #else var prefab = Resources.Load("UI/Prefab/Ride/RankingItem"); #endif var parent = panel.transform.Find("MapRanking"); var title = panel.transform.Find("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); } } } }