using UnityEngine; using Mapbox.Unity.Map; using UnityEngine.UI; using Assets.Scripts.Apis; using System; using Assets.Scripts; namespace Assets.Scenes.Ride.Scripts { //[ExecuteInEditMode] public class LoadingController : MonoBehaviour { Text mapName; AbstractMap _map; Text level; Text distance; Text elevaction; Text slope; Text rideNum; Text uploadByUserName; RawImage head; RawImage country; MapApi mapApi; GameObject panel; CanvasGroup canvasGroup; GameObject loadingPanel; private void Start() { int routeId = App.RouteIdParam >0? App.RouteIdParam : 5492; mapApi = new MapApi(); panel = transform.Find("Panel").gameObject; mapName = transform.Find("Panel/MapName").GetComponent(); loadingPanel = transform.Find("Panel/LoadingAnimation").gameObject; 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(); head = transform.Find("Panel/UploadByHead").GetComponent(); var root = transform.parent; _map = root.Find("Map").GetComponent(); canvasGroup = transform.GetComponent(); if (routeId > 0) { var map = mapApi.GetById(routeId); var route = map.data; mapName.text = route.Name; level.text = route.Hard; elevaction.text = Math.Round(route.EleDifference,0).ToString()+"FT"; slope.text = Math.Round(route.AverageGrade,2).ToString() + "%"; rideNum.text = route.TheHeat.ToString(); distance.text = route.Distance.ToString("f1")+"KM"; var userList = 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(StartCoroutine, head, userList[0].HeadImage); Utils.DisplayImage(StartCoroutine, country, countryUrl); } _map.OnInitialized += _map_OnInitialized; _map.OnEditorPreviewEnabled += OnEditorPreviewEnabled; _map.OnEditorPreviewDisabled += OnEditorPreviewDisabled; } } void _map_OnInitialized() { var visualizer = _map.MapVisualizer; visualizer.OnMapVisualizerStateChanged += (s) => { if (s == ModuleState.Finished) { canvasGroup.blocksRaycasts = false; depressFlag = true; } }; } void OnEditorPreviewEnabled() { transform.gameObject.SetActive(false); } void OnEditorPreviewDisabled() { transform.gameObject.SetActive(true); } public float targetAlpha = 0f; public float alphaSpeed = 2.0f; private bool depressFlag = false; void Update() { if (canvasGroup == null) { return; } if (targetAlpha != canvasGroup.alpha && depressFlag) { canvasGroup.alpha = Mathf.Lerp(canvasGroup.alpha, targetAlpha, alphaSpeed * Time.deltaTime); if (Mathf.Abs(targetAlpha - canvasGroup.alpha) <= 0.01f) { canvasGroup.alpha = targetAlpha; } if (canvasGroup.alpha == 0) { transform.gameObject.SetActive(false); loadingPanel.SetActive(false); } } } } }