92 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using Assets.Scripts;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Assets.Scenes.Ride.Scripts
{
public class TopRankingFactory : BaseListFactory
{
private List<CompetitionTopModel> rankingList {get;set;}
private AbstractPlayer currentPlayer { get; set; }
private int topSize = 6;//取前6名
protected override void Awake()
{
//base.Awake();
scroll = transform.Find("List").gameObject;
if (scroll != null)
{
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
}
parent = scroll.transform.Find("Viewport/Content");
cyclingController = FindObjectOfType<CyclingController>();
playerController = FindObjectOfType<PlayerController>();
currentPlayer = cyclingController.currentPlayer;
nearByItem = Resources.Load<GameObject>("UI/Prefab/Match/TopRankingItem");
nearByMajorItem = Resources.Load<GameObject>("UI/Prefab/Match/CompetitionRankingMajorItem");
}
protected override void CreateList()
{
CompetitionModel s = cyclingController.cyclingController as CompetitionModel;
var ss = s?.competitionRankingModel;
rankingList = ss?.TopList;
if (rankingList == null) return;
////删除
//var currentTopRankingList = FindObjectsOfType<TopRankingItem>();
//foreach (var o in currentTopRankingList)
//{
// var e = rankingList.Where(c => c.UserId == o.UserId).FirstOrDefault();
// if (e == null)
// {
// o.transform.gameObject.SetActive(false);//TODO这里暂时不删除删除对应的图片和脚本依赖这个对象脚本提供一个dispose
// bufferSize--;
// }
//}
Utils.DestroyChildren(parent);
for (int i = 0; i < rankingList.Count(); i++)
{
Create(rankingList[i]);
}
}
private void Create(CompetitionTopModel item)
{
//var rankingList = FindObjectsOfType<TopRankingItem>();
//var competitionRankingItem = rankingList.Where(c => c.rank == item.Index).FirstOrDefault();
////如果当前有这个用户则更新没有则创建并setslibingindex
//if (competitionRankingItem == null)
//{
// //创建
// if (bufferSize < pageSize)
// {
// //情况一还有足够的buffer,直接创建
// GameObject prefabItem = nearByItem;
// GameObject newObj = (GameObject)Instantiate(prefabItem, parent);
// competitionRankingItem = newObj.GetComponent<TopRankingItem>();
// bufferSize++;
// }
// else
// {
// //情况二没有足够的buffer找到要被淘汰的buffer()最后一名
// competitionRankingItem = rankingList.OrderByDescending(c => c.rank).FirstOrDefault();
// }
//}
GameObject newObj = (GameObject)Instantiate(nearByItem, parent);
var competitionRankingItem = newObj.GetComponent<TopRankingItem>();
competitionRankingItem.setHead(item.Head);
competitionRankingItem.setTimer(item.TripTime);
competitionRankingItem.SetRank(item.Index);
competitionRankingItem.setName(item.Name);
competitionRankingItem.setUserId(item.UserId);
var countryTexture = cyclingController.GetCountryImageByName(item.Country);
competitionRankingItem.setCountry(countryTexture);
competitionRankingItem.transform.SetSiblingIndex(item.Index);
}
}
}