110 lines
3.5 KiB
C#
110 lines
3.5 KiB
C#
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<GameObject>("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<GameRoomLoadingItem>();
|
|
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<GameRoomLoadingItem>();
|
|
roomDetail.Init(item.Id,item.Name,item.Room.Id,0);
|
|
}
|
|
}
|
|
//判断是否进入骑行场景
|
|
var startTime = MapUDPService.GetRoomStartTime(GameRoom.Id);
|
|
if (startTime.HasValue)
|
|
{
|
|
var v = FindObjectOfType<VideoLoading>();
|
|
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>();
|
|
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>();
|
|
canvasGroup?.DOFade(1, 1);
|
|
}
|
|
}
|
|
|