powerfun-unity/Assets/Scenes/Ride/Scripts/SelectPlayerFactory.cs
2021-04-23 19:28:35 +08:00

248 lines
10 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.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();
}
}
}
}
}