powerfun-unity/Assets/Scenes/Ride/Scripts/SelectPlayerFactory.cs

193 lines
8.3 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;
GameObject reviewPanel;
InputField inputField;
private int pageIndex = 0;
private int pageSize = 10;
private int totalPages = 0;
private string seachName = string.Empty;
CyclingController cyclingController;
public List<GameObject> gameObjects = new List<GameObject>();
List<SelectPlayerItemScript> selectPlayerItemScripts = new List<SelectPlayerItemScript>();
MapApi mapApi;
private void Awake()
{
mapApi = new MapApi();
cyclingController = FindObjectOfType<CyclingController>();
//分页查询当前路数排行榜选手成绩列表
prefab = Resources.Load<GameObject>("UI/Prefab/Ride/SelectPlayerItem");
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>();
reviewPanel = transform.parent.Find("ReviewPanel").gameObject;
selectPanel = transform.parent.Find("SelectPanel").gameObject;
nearPanel = transform.parent.Find("NearPanel").gameObject;
inputField.onValueChanged.AddListener(InputTextChanged);
//rideButton.onClick.AddListener(PreStart);
//cancelButton.onClick.AddListener(Cancel);
//closeButton.onClick.AddListener(Cancel);
//searchButton.onClick.AddListener(Search);
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(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 InputTextChanged(string input)
{
seachName = input;
}
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;
CreateGameObject(list.data.list);
}
private void CreateGameObject(List<MapRouteRanking> list)
{
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();
}
}
}
}
}