114 lines
4.5 KiB
C#
114 lines
4.5 KiB
C#
using Assets.Scenes.Ride.Scripts.Model;
|
|
using Assets.Scripts.Apis;
|
|
using Assets.Scripts.Apis.Models;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace Assets.Scenes.Ride.Scripts
|
|
{
|
|
public class ReviewFactory : MonoBehaviour
|
|
{
|
|
private CyclingController cyclingController;
|
|
private GameObject singleArea;
|
|
private GameObject reviewScrollView;
|
|
private GameObject reviewItem;
|
|
private GameObject content;
|
|
private GameObject otherPlayer;
|
|
private GameObject miniMapPlayer;
|
|
|
|
private MapApi mapApi;
|
|
private PlayerController playerController;
|
|
private List<ReviewItemScript> reviewList ;
|
|
private List<OtherPlayerController> otherList;
|
|
|
|
private void Awake()
|
|
{
|
|
reviewList = new List<ReviewItemScript>();
|
|
otherList = new List<OtherPlayerController>();
|
|
cyclingController = FindObjectOfType<CyclingController>();
|
|
singleArea = transform.Find("SingleArea").gameObject;
|
|
|
|
reviewScrollView = transform.Find("ReviewArea").gameObject;
|
|
content = transform.Find("ReviewArea/ReviewScrollView/Viewport/Content").gameObject;
|
|
reviewItem = Resources.Load<GameObject>("UI/Prefab/Ride/ReviewItem");
|
|
otherPlayer = Resources.Load<GameObject>("UI/Prefab/Ride/ReviewPlayer");
|
|
miniMapPlayer = Resources.Load<GameObject>("UI/Prefab/Ride/MiniMapPlayer");
|
|
playerController = FindObjectOfType<PlayerController>();
|
|
mapApi = new MapApi();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
Refresh();
|
|
}
|
|
public void Refresh()
|
|
{
|
|
var mode = cyclingController.cyclingModel;
|
|
switch (mode)
|
|
{
|
|
case Model.CyclingModel.Single:
|
|
singleArea.SetActive(true);
|
|
reviewScrollView.SetActive(false);
|
|
break;
|
|
case Model.CyclingModel.Review:
|
|
singleArea.SetActive(false);
|
|
//InitReview();
|
|
break;
|
|
}
|
|
}
|
|
float t = 1;
|
|
private void Update()
|
|
{
|
|
t -= Time.deltaTime;
|
|
while (t < 0)
|
|
{
|
|
ReviewRanking();
|
|
t = 1;
|
|
}
|
|
}
|
|
|
|
private void ReviewRanking()
|
|
{
|
|
var sortList = reviewList.OrderByDescending(c => c.GetDistance()).ToList();
|
|
for (int i = 0; i < sortList.Count; i++)
|
|
{
|
|
var item = sortList[i].gameObject.transform;
|
|
item.SetSiblingIndex(i);
|
|
}
|
|
}
|
|
public void SetReview(List<MapRecordRanking> rankingList)
|
|
{
|
|
reviewScrollView.SetActive(true);
|
|
if (rankingList.Count > 0)
|
|
{
|
|
//var rankingList = mapApi.GetRecordFileFromServer(cyclingController.selectParamModel.RankingsId);
|
|
foreach (var item in rankingList)
|
|
{
|
|
GameObject newObj = (GameObject)Instantiate(reviewItem, content.transform);
|
|
|
|
var reviewItemScript = newObj.GetComponent<ReviewItemScript>();
|
|
reviewItemScript.SetHead(item.WxHeadImg);
|
|
reviewItemScript.SetName(item.NickName);
|
|
reviewItemScript.SetDistance(0D);
|
|
reviewList.Add(reviewItemScript);
|
|
GameObject otherPlayerObj = (GameObject)Instantiate(otherPlayer, transform.parent.parent.parent);
|
|
otherPlayerObj.transform.position = cyclingController.map.GeoToWorldPosition(cyclingController.Along(0));
|
|
var otherPlayerController = otherPlayerObj.GetComponent<OtherPlayerController>();
|
|
otherList.Add(otherPlayerController);
|
|
otherPlayerController.record = item.record;
|
|
|
|
otherPlayerController.Weight = cyclingController.selectPlayerDic[item.UserId].Weight;
|
|
otherPlayerController.BikeWeight = cyclingController.selectPlayerDic[item.UserId].BikeWeight;
|
|
|
|
otherPlayerController.SetController(reviewItemScript);
|
|
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayer, transform.parent.parent.parent);
|
|
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
|
|
miniController.SetController(otherPlayerController);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|