223 lines
8.8 KiB
C#
223 lines
8.8 KiB
C#
using UnityEngine;
|
|
using Mapbox.Unity.Map;
|
|
using UnityEngine.UI;
|
|
using System;
|
|
using Assets.Scripts;
|
|
using Assets.Scripts.Apis.Models;
|
|
using System.Collections.Generic;
|
|
using DG.Tweening;
|
|
using System.Linq;
|
|
|
|
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<GameObject>("UI/Prefab/Ride/Mobile/LoadingPanel"), transform);
|
|
#else
|
|
panel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/LoadingPanel"), transform);
|
|
#endif
|
|
cyclingController = controller;
|
|
PFUIPanel mainPanel = panel.GetComponent<PFUIPanel>();
|
|
PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent<PFUIPanel>();
|
|
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();
|
|
Debug.Log(55);
|
|
level = panel.transform.Find("level/Text").GetComponent<Text>();
|
|
rideNum = panel.transform.Find("RideNum").GetComponent<Text>();
|
|
uploadByUserName = panel.transform.Find("UploadByUserName").GetComponent<Text>();
|
|
country = panel.transform.Find("UploadByCountry").GetComponent<RawImage>();
|
|
mapCountry = panel.transform.Find("Country").GetComponent<RawImage>();
|
|
head = panel.transform.Find("UploadByHead").GetComponent<RawImage>();
|
|
altitudeGraph = panel.transform.Find("AltitudeGraph").GetComponent<RawImage>();
|
|
mapRanking = panel.transform.Find("MapRanking");
|
|
mapId = panel.transform.Find("MapId").GetComponent<Text>();
|
|
|
|
#if UNITY_STANDALONE_WIN
|
|
UIManager.RemoveEvent(distance.gameObject);
|
|
UIManager.RemoveEvent(slope.gameObject);
|
|
UIManager.RemoveEvent(elevaction.gameObject);
|
|
UIManager.RemoveEvent(rideNum.gameObject);
|
|
UIManager.AddEvent(distance.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, b =>
|
|
{
|
|
panel.transform.Find("DistanceTip").GetComponent<CanvasGroup>().DOFade(1, 0.5f);
|
|
});
|
|
UIManager.AddEvent(distance.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerExit, b =>
|
|
{
|
|
panel.transform.Find("DistanceTip").GetComponent<CanvasGroup>().DOFade(0, 0.5f);
|
|
});
|
|
|
|
UIManager.AddEvent(slope.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, b =>
|
|
{
|
|
panel.transform.Find("SlopeTip").GetComponent<CanvasGroup>().DOFade(1, 0.5f);
|
|
});
|
|
UIManager.AddEvent(slope.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerExit, b =>
|
|
{
|
|
panel.transform.Find("SlopeTip").GetComponent<CanvasGroup>().DOFade(0, 0.5f);
|
|
});
|
|
UIManager.AddEvent(elevaction.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, b =>
|
|
{
|
|
panel.transform.Find("ElevactionTip").GetComponent<CanvasGroup>().DOFade(1, 0.5f);
|
|
});
|
|
UIManager.AddEvent(elevaction.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerExit, b =>
|
|
{
|
|
panel.transform.Find("ElevactionTip").GetComponent<CanvasGroup>().DOFade(0, 0.5f);
|
|
});
|
|
UIManager.AddEvent(rideNum.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, b =>
|
|
{
|
|
panel.transform.Find("RideTip").GetComponent<CanvasGroup>().DOFade(1, 0.5f);
|
|
});
|
|
UIManager.AddEvent(rideNum.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerExit, b =>
|
|
{
|
|
panel.transform.Find("RideTip").GetComponent<CanvasGroup>().DOFade(0, 0.5f);
|
|
});
|
|
#endif
|
|
}
|
|
int RankingPageSize = 8;
|
|
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.GetCountryImageByName(userList[0].Country);//上传者国家
|
|
mapCountry.texture = cyclingController.GetCountryImageByCode(route.CountryCode);//路书国家
|
|
//Utils.DisplayImage(altitudeGraph, route.AltitudeGraph);//海拔图
|
|
Utils.DisplayImageAysnc(StartCoroutine, altitudeGraph, route.AltitudeGraph, DowloadCallBack);
|
|
}
|
|
#endregion
|
|
//异步请求mapbox画出当前路书路线图
|
|
DrawMapRouteAsync(route.Id);
|
|
AddProcess(10);
|
|
//查询排行榜
|
|
var list = mapApi.GetRouteRanking(route.Id, "1", 0, 10000, "");
|
|
if (list.result)
|
|
{
|
|
//if (list.data.list.Count > RankingPageSize)
|
|
//{
|
|
// var ViewAll = panel.transform.Find("ViewAll").gameObject;
|
|
// ViewAll.SetActive(true);
|
|
// UIManager.AddEvent(ViewAll, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
// {
|
|
// Application.OpenURL($"{App.CurrentUser.WebHost}Routes/{cyclingController.mapRoute.Id}?Token={App.CurrentUser.cookie}");
|
|
// });
|
|
//}
|
|
CreateRankingList(list.data.list);
|
|
AddProcess(10);
|
|
}
|
|
//StartCoroutine(HiddenLoading());
|
|
}
|
|
|
|
//创建排行榜
|
|
public void CreateRankingList(List<MapRouteRanking> list)
|
|
{
|
|
#if UNITY_IOS || UNITY_ANDROID
|
|
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/RankingItem");
|
|
var myprefab = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/MySelfRankingItem");
|
|
var viewAllbtn = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/ViewAll");
|
|
#else
|
|
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/RankingItem");
|
|
var myprefab = Resources.Load<GameObject>("UI/Prefab/Ride/MySelfRankingItem");
|
|
var viewAllbtn = Resources.Load<GameObject>("UI/Prefab/Ride/ViewAll");
|
|
#endif
|
|
var parent = panel.transform.Find("MapRanking");
|
|
var title = panel.transform.Find("RankingTitle").gameObject;
|
|
title.SetActive(list.Count != 0);
|
|
int index = 0;
|
|
foreach (var item in list)
|
|
{
|
|
index++;
|
|
if (index > RankingPageSize)
|
|
break;
|
|
GameObject newObj = (GameObject)Instantiate(prefab, parent);
|
|
var selectPlayerItemScript = newObj.GetComponent<RankingItemScript>();
|
|
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);
|
|
}
|
|
//如果有自己的记录显示自己的排名
|
|
var myself = list.Where(c => c.MySelf).FirstOrDefault();
|
|
GameObject myselfObj = (GameObject)Instantiate(myprefab, parent);
|
|
var myselfItemScript = myselfObj.GetComponent<RankingItemScript>();
|
|
if (myself == null)
|
|
{
|
|
myselfItemScript.SetRanking("--");
|
|
myselfItemScript.SetName(App.CurrentUser.Nickname);
|
|
myselfItemScript.SetTimer("--:--:--");
|
|
myselfItemScript.SetHead(App.CurrentUser.WxHeadImg);
|
|
var texture = cyclingController.GetCountryImageByName(App.CurrentUser.Country);
|
|
myselfItemScript.SetCountry(texture);
|
|
}
|
|
else
|
|
{
|
|
myselfItemScript.SetRanking(myself.RowNumber.ToString());
|
|
myselfItemScript.SetName(myself.NickName);
|
|
myselfItemScript.SetTimer(myself.IsDNF ? "DNF" : myself.TotalTime);
|
|
myselfItemScript.SetHead(myself.WxHeadImg);
|
|
var texture = cyclingController.GetCountryImageByCode(myself.CountryCode);
|
|
myselfItemScript.SetCountry(texture);
|
|
}
|
|
//显示查询全部按钮
|
|
if (list.Count > 0)
|
|
{
|
|
GameObject ViewAll = (GameObject)Instantiate(viewAllbtn, parent);
|
|
UIManager.AddEvent(ViewAll, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
{
|
|
Application.OpenURL($"{App.CurrentUser.WebHost}Routes/{cyclingController.mapRoute.Id}?Token={App.CurrentUser.cookie}");
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|