90 lines
3.6 KiB
C#
90 lines
3.6 KiB
C#
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
|
|
using Assets.Scripts;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
namespace Assets.Scenes.Ride.Scripts
|
|
{
|
|
public class CompetitionResultFactory: MonoBehaviour
|
|
{
|
|
CyclingController cyclingController;
|
|
RawImage Head;
|
|
Text Ranking;
|
|
Text Timer;
|
|
private void Awake()
|
|
{
|
|
cyclingController = FindObjectOfType<CyclingController>();
|
|
var closeBtn = transform.Find("Close").gameObject;
|
|
Head = transform.Find("Mine/Head").GetComponent<RawImage>();
|
|
Ranking = transform.Find("Mine/Ranking").GetComponent<Text>();
|
|
Timer = transform.Find("Mine/Timer").GetComponent<Text>();
|
|
|
|
UIManager.AddEvent(closeBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, Close);
|
|
}
|
|
|
|
float time = 1;
|
|
private void Update()
|
|
{
|
|
time -= Time.deltaTime;
|
|
while (time < 0)
|
|
{
|
|
Refresh();
|
|
time = 1;
|
|
}
|
|
}
|
|
|
|
public void Refresh()
|
|
{
|
|
if (cyclingController.cyclingController is CompetitionModel model)
|
|
{
|
|
var list = model?.competitionRankingModel?.Results;
|
|
if (list == null) return;
|
|
|
|
var parent = transform.Find("ScrollView/Viewport/Content");
|
|
//当前用户排名
|
|
var currentRanking = list.Where(c => c.UserId == cyclingController.currentPlayer.UserId).FirstOrDefault();
|
|
if (currentRanking != null)
|
|
{
|
|
Utils.DisplayImage(Head, App.CurrentUser.WxHeadImg, true);//TODO:改造数据结构结果增加头像字段
|
|
Ranking.text = currentRanking.Index.ToString().PadLeft(3,'0');
|
|
Timer.text = currentRanking.TripTime;
|
|
}
|
|
//排名列表
|
|
var rankingList = FindObjectsOfType<FinalRankingItemScript>();
|
|
foreach (var item in list)
|
|
{
|
|
var finalRankingItemScript = rankingList.Where(c => c.UserId == item.UserId).FirstOrDefault();
|
|
//没有就创建
|
|
if (finalRankingItemScript == null)
|
|
{
|
|
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/FinalRankingItem"), parent);
|
|
finalRankingItemScript = finalRankingItem.GetComponent<FinalRankingItemScript>();
|
|
}
|
|
|
|
//有就更新
|
|
finalRankingItemScript.setGap(item.Gap);
|
|
finalRankingItemScript.setSource(item.DeviceType);
|
|
finalRankingItemScript.setUserId(item.UserId);
|
|
finalRankingItemScript.setRanking(item.Index);
|
|
finalRankingItemScript.setHeartRate(item.HeartRate.ToString("f0"));
|
|
finalRankingItemScript.setName(item.Name);
|
|
finalRankingItemScript.setPower(item.Power.ToString());
|
|
finalRankingItemScript.setRatio(item.WeightKg.ToString("f2"));
|
|
finalRankingItemScript.setTimer(item.TripTime);
|
|
finalRankingItemScript.transform.SetSiblingIndex(item.Index);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Close(BaseEventData baseEventData)
|
|
{
|
|
this.gameObject.SetActive(false);
|
|
this.Destroy();
|
|
//SceneManager.LoadScene("MainScene");
|
|
}
|
|
}
|
|
}
|