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 reviewList ; private List otherList; private void Awake() { reviewList = new List(); otherList = new List(); cyclingController = FindObjectOfType(); singleArea = transform.Find("SingleArea").gameObject; reviewScrollView = transform.Find("ReviewArea").gameObject; content = transform.Find("ReviewArea/ReviewScrollView/Viewport/Content").gameObject; reviewItem = Resources.Load("UI/Prefab/Ride/ReviewItem"); otherPlayer = Resources.Load("UI/Prefab/Ride/ReviewPlayer"); miniMapPlayer = Resources.Load("UI/Prefab/Ride/MiniMapPlayer"); playerController = FindObjectOfType(); 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 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.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(); 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(); miniController.SetController(otherPlayerController); } } } } }