using Assets.Scenes.Ride.Scripts; using Assets.Scripts; using Assets.Scripts.Apis.Models; using Assets.Scripts.Scenes.VideoRide; using DG.Tweening; using PolyAndCode.UI; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class GameRoomLoadingController : PFUIPanel { public Text roomName; public Text routeName; public Text idtext; public Text distanceText; public Text gradeText; public Text totalClimbText; public RawImage mapRouteImage; public Transform content; private GameObject prefab; public GameRoomModel GameRoom { get; set; } protected override void Awake() { base.Awake(); GameRoom = App.gameRoomDetail; roomName.text = GameRoom.Name; routeName.text = GameRoom.MapRouteName; idtext.text = GameRoom.Id.ToString().PadLeft(7, '0'); distanceText.text = GameRoom.Distance.ToString("f1") + "KM"; gradeText.text = GameRoom.AverageGrade.ToString("f1") + "%"; totalClimbText.text = GameRoom.TotalClimb.ToString("f0")+"M"; DrawMapRouteAsync(GameRoom.MapRouteId); prefab = Resources.Load("UI/Prefab/GameRoom/LoadingItem"); } float timer = 1f; private void Update() { timer -= Time.deltaTime; while (timer < 0) { //发送当前进度 MapUDPService.SendGameRoomLoadingProcess(GameRoom.Id, App.CurrentUser.Id, 56); //新增 var list = MapUDPService.GetGameRoomList(GameRoom.Id); var items = FindObjectsOfType(); foreach (var item in list) { var roomDetail = items.Where(c => c.UserId == item.RoomDetail.UserId).FirstOrDefault(); if (roomDetail == null) { var detail = Instantiate(prefab, content); roomDetail = detail.GetComponent(); roomDetail.Init(item.Id,item.Name,item.Room.Id,0); } } //判断是否进入骑行场景 var startTime = MapUDPService.GetRoomStartTime(GameRoom.Id); if (startTime.HasValue) { var v = FindObjectOfType(); v.StartRide(null); //TODO:倒计时 transform.parent.gameObject.SetActive(false); } timer += 1f; } } private async void DrawMapRouteAsync(int routeId, int type = 0) { var result = await ConfigHelper.mapApi.GetMapLoadingCoverageUrl(routeId, type); if (!result.result) return; var url = result.data; if (App.TextureCache.ContainsKey(url)) { mapRouteImage.texture = App.TextureCache[url]; var canvasGroup = mapRouteImage.GetComponent(); canvasGroup.DOFade(1, 1); } else { Utils.DisplayImageAysnc(StartCoroutine, mapRouteImage, url, DowloadCallBack); } } private void DowloadCallBack(string url, RawImage rawImage) { if (!App.TextureCache.ContainsKey(url)) { App.TextureCache.Add(url, rawImage?.texture); } else { App.TextureCache[url] = rawImage?.texture; } var canvasGroup = rawImage.GetComponent(); canvasGroup?.DOFade(1, 1); } }