248 lines
10 KiB
C#
248 lines
10 KiB
C#
using Assets.Scenes.Ride.Scripts.Model;
|
||
using Assets.Scripts;
|
||
using Assets.Scripts.Apis;
|
||
using Assets.Scripts.Apis.Models;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using UnityEngine;
|
||
using UnityEngine.EventSystems;
|
||
using UnityEngine.UI;
|
||
|
||
namespace Assets.Scenes.Ride.Scripts
|
||
{
|
||
public class SelectPlayerFactory : MonoBehaviour
|
||
{
|
||
GameObject prefab;
|
||
GameObject scroll;
|
||
GameObject selectPanel;
|
||
GameObject nearPanel;
|
||
Transform content;
|
||
Button rideButton;
|
||
Button cancelButton;
|
||
Button closeButton;
|
||
Button searchButton;
|
||
Button sortButton;
|
||
Image sortImage;
|
||
GameObject reviewPanel;
|
||
GameObject noRecord;
|
||
InputField inputField;
|
||
InputField startValue;
|
||
InputField endValue;
|
||
private int pageIndex = 0;
|
||
private int pageSize = 8;
|
||
private int totalPages = 0;
|
||
private string seachName = string.Empty;
|
||
|
||
private double _startValue;
|
||
private double _endValue;
|
||
|
||
CyclingController cyclingController;
|
||
public List<GameObject> gameObjects = new List<GameObject>();
|
||
List<SelectPlayerItemScript> selectPlayerItemScripts = new List<SelectPlayerItemScript>();
|
||
MapApi mapApi;
|
||
Sprite down;
|
||
Sprite up;
|
||
private void Awake()
|
||
{
|
||
mapApi = new MapApi();
|
||
cyclingController = FindObjectOfType<CyclingController>();
|
||
//分页查询当前路数排行榜选手成绩列表
|
||
prefab = Resources.Load<GameObject>("UI/Prefab/Ride/SelectPlayerItem");
|
||
down = Resources.Load<Sprite>("Images/DOWN");
|
||
up = Resources.Load<Sprite>("Images/UP");
|
||
scroll = transform.Find("Panel/PlayerList/Scroll View").gameObject;
|
||
content = transform.Find("Panel/PlayerList/Scroll View/Viewport/Content");
|
||
rideButton = transform.Find("Panel/RideButton").GetComponent<Button>();
|
||
cancelButton = transform.Find("Panel/CancelButton").GetComponent<Button>();
|
||
closeButton = transform.Find("Panel/Close").GetComponent<Button>();
|
||
searchButton = transform.Find("Panel/SearchButton").GetComponent<Button>();
|
||
inputField = transform.Find("Panel/InputField").GetComponent<InputField>();
|
||
startValue = transform.Find("Panel/StartValue").GetComponent<InputField>();
|
||
endValue = transform.Find("Panel/EndValue").GetComponent<InputField>();
|
||
reviewPanel = transform.parent.Find("ReviewPanel").gameObject;
|
||
selectPanel = transform.parent.Find("SelectPanel").gameObject;
|
||
nearPanel = transform.parent.Find("NearPanel").gameObject;
|
||
noRecord = transform.Find("Panel/PlayerList/Scroll View/Viewport/NoRecord").gameObject;
|
||
sortButton = transform.Find("Panel/SortButton").GetComponent<Button>();
|
||
sortImage = transform.Find("Panel/SortButton/Image").GetComponent<Image>();
|
||
|
||
inputField.onValueChanged.AddListener(InputTextChanged);
|
||
startValue.onValueChanged.AddListener(StartvalueChanged);
|
||
endValue.onValueChanged.AddListener(StartvalueChanged);
|
||
|
||
UIManager.AddEvent(rideButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, PreStart);
|
||
UIManager.AddEvent(cancelButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Cancel);
|
||
UIManager.AddEvent(closeButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Cancel);
|
||
UIManager.AddEvent(searchButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Search);
|
||
UIManager.AddEvent(sortButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, SortWKG);
|
||
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
|
||
|
||
gameObjects.Add(transform.Find("Panel/Player1").gameObject);
|
||
gameObjects.Add(transform.Find("Panel/Player2").gameObject);
|
||
gameObjects.Add(transform.Find("Panel/Player3").gameObject);
|
||
gameObjects.Add(transform.Find("Panel/Player4").gameObject);
|
||
gameObjects.Add(transform.Find("Panel/Player5").gameObject);
|
||
}
|
||
private void StartvalueChanged(string input)
|
||
{
|
||
_startValue = Convert.ToDouble(input);
|
||
}
|
||
private void EndvalueChanged(string input)
|
||
{
|
||
_endValue = Convert.ToDouble(input);
|
||
}
|
||
private void InputTextChanged(string input)
|
||
{
|
||
seachName = input;
|
||
}
|
||
private int sort = 0;//0:正序 1:降序
|
||
private void SortWKG(BaseEventData baseEventData)
|
||
{
|
||
if (sort == 0)
|
||
{
|
||
sortImage.sprite = up;
|
||
sort = 1;
|
||
}
|
||
else
|
||
{
|
||
sort = 0;
|
||
sortImage.sprite = down;
|
||
}
|
||
Utils.DestroyChildren(content);
|
||
Refresh();
|
||
}
|
||
private void Search(BaseEventData baseEventData)
|
||
{
|
||
Utils.DestroyChildren(content);
|
||
Refresh();
|
||
}
|
||
//开始伴侣骑行的面板
|
||
private void PreStart(BaseEventData baseEventData)
|
||
{
|
||
transform.gameObject.SetActive(false);
|
||
foreach (var item in gameObjects)
|
||
{
|
||
var seletedPlayerScript = item.GetComponent<SeletedPlayerScript>();
|
||
if (seletedPlayerScript.isUsed)
|
||
{
|
||
cyclingController.selectParamModel.RankingsId.Add(seletedPlayerScript.GetRankingId());
|
||
}
|
||
}
|
||
cyclingController.cyclingModel = CyclingModel.Review;
|
||
if (!reviewPanel.activeSelf)
|
||
{
|
||
reviewPanel.SetActive(true);
|
||
}
|
||
else
|
||
{
|
||
reviewPanel.GetComponent<ReviewFactory>().Refresh();
|
||
}
|
||
reviewPanel.transform.Find("ReviewArea").gameObject.SetActive(true);
|
||
reviewPanel.transform.Find("SingleArea").gameObject.SetActive(false);
|
||
nearPanel.SetActive(true);
|
||
}
|
||
//取消和关闭都进入单人骑行界面
|
||
private void Cancel(BaseEventData baseEventData)
|
||
{
|
||
//cyclingController.cyclingModel = CyclingModel.Single;
|
||
transform.gameObject.SetActive(false);
|
||
reviewPanel.SetActive(false);
|
||
selectPanel.SetActive(true);
|
||
nearPanel.SetActive(false);
|
||
}
|
||
private void Start()
|
||
{
|
||
CreateGameObject(cyclingController.mapRouteRankingList);
|
||
}
|
||
|
||
private void Refresh()
|
||
{
|
||
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", pageIndex, pageSize, seachName);
|
||
totalPages = list.data.TotalPages;
|
||
var data = list.data.list.Where(c => c.WeightKg >= _startValue && c.WeightKg <= _endValue).ToList();
|
||
if (sort == 0)
|
||
{
|
||
data = data.OrderBy(c => c.WeightKg).ToList();
|
||
}
|
||
else
|
||
{
|
||
data = data.OrderByDescending(c => c.WeightKg).ToList();
|
||
}
|
||
CreateGameObject(data);
|
||
}
|
||
private void CreateGameObject(List<MapRouteRanking> list)
|
||
{
|
||
if (list.Count == 0)
|
||
{
|
||
noRecord.SetActive(true);
|
||
}
|
||
else
|
||
{
|
||
noRecord.SetActive(false);
|
||
}
|
||
var parent = transform.Find("Panel/PlayerList/Scroll View/Viewport/Content");
|
||
foreach (var item in list)
|
||
{
|
||
GameObject newObj = (GameObject)Instantiate(prefab, parent);
|
||
var selectPlayerItemScript = newObj.GetComponent<SelectPlayerItemScript>();
|
||
selectPlayerItemScript.SetRankingId(item.Id.ToString());
|
||
selectPlayerItemScript.SetName(item.NickName);
|
||
selectPlayerItemScript.SetTimer(item.TotalTime);
|
||
selectPlayerItemScript.SetHeadImage(item.WxHeadImg);
|
||
selectPlayerItemScripts.Add(selectPlayerItemScript);
|
||
UIManager.AddEvent(selectPlayerItemScript.GetButton().gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, OnSelectClick);
|
||
}
|
||
}
|
||
private void OnSelectClick(BaseEventData baseEventData)
|
||
{
|
||
var selectPlayerItemScript = baseEventData.selectedObject.GetComponent<SelectPlayerItemScript>();
|
||
foreach (var item in gameObjects)
|
||
{
|
||
var seletedPlayerScript = item.GetComponent<SeletedPlayerScript>();
|
||
if (!seletedPlayerScript.isUsed && !selectPlayerItemScript.isSelected)
|
||
{
|
||
seletedPlayerScript.SetHead(selectPlayerItemScript.GetImageTexture(), true);
|
||
seletedPlayerScript.SetName(selectPlayerItemScript.GetName());
|
||
seletedPlayerScript.SetRankingId(selectPlayerItemScript.GetRankingId());
|
||
UIManager.AddEvent(seletedPlayerScript.GetButton().gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, OnCloseClick);
|
||
selectPlayerItemScript.isSelected = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
private void OnCloseClick(BaseEventData baseEventData)
|
||
{
|
||
var seletedPlayerScript = baseEventData.selectedObject.transform.parent.GetComponent<SeletedPlayerScript>();
|
||
var seletPlayerItemScript = selectPlayerItemScripts.Where(c => c.GetRankingId() == seletedPlayerScript.GetRankingId()).FirstOrDefault();
|
||
if (seletPlayerItemScript != null)
|
||
{
|
||
seletPlayerItemScript.isSelected = false;
|
||
}
|
||
seletedPlayerScript.Reset();
|
||
}
|
||
private void OnEndDrag(BaseEventData arg0)
|
||
{
|
||
var scrollrect = scroll.GetComponent<ScrollRect>();
|
||
if (scrollrect.verticalNormalizedPosition <= 0)
|
||
{
|
||
if (pageIndex < totalPages )
|
||
{
|
||
pageIndex++;
|
||
Refresh();
|
||
}
|
||
}
|
||
if (scrollrect.verticalNormalizedPosition >= 1)
|
||
{
|
||
if (pageIndex >0)
|
||
{
|
||
pageIndex--;
|
||
Refresh();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|