powerfun-unity/Assets/Scripts/UI/Prefab/Panel/ChangePlayerController.cs

182 lines
6.0 KiB
C#
Raw Normal View History

using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using Assets.Scripts.UI.Prefab.Player;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using DG.Tweening;
namespace Assets.Scenes.Ride.Scripts
{
public class ChangePlayerController : PFUIPanel
{
public Transform Panel;
public Transform InfoPanel;
public GameObject BikeBtn;
public GameObject HelmetBtn;
public GameObject UniformBtn;
public GameObject SkinBtn;
public GameObject SuitBtn;
public GameObject SaveBtn;
public GameObject ViewBtn;
public GameObject CaputureBtn;
public GameObject BackBtn;
public Transform Content;
public GameObject BikePrefab;
public GameObject HelmetPrefab;
public GameObject UniformPrefab;
public GameObject SkinPrefab;
public GameObject SuitPrefab;
List<EquitmentModel> data { get; set; }
protected override void Awake()
{
UIManager.AddEvent(BikeBtn, EventTriggerType.PointerClick, BikeBtn_Click);
UIManager.AddEvent(HelmetBtn, EventTriggerType.PointerClick, HelmetBtn_Click);
UIManager.AddEvent(UniformBtn, EventTriggerType.PointerClick, UniformBtn_Click);
UIManager.AddEvent(SkinBtn, EventTriggerType.PointerClick, SkinBtn_Click);
UIManager.AddEvent(SuitBtn, EventTriggerType.PointerClick, SuitBtn_Click);
UIManager.AddEvent(SaveBtn, EventTriggerType.PointerClick, SuitBtn_Click);
UIManager.AddEvent(ViewBtn, EventTriggerType.PointerClick, ViewBtn_Click);
UIManager.AddEvent(CaputureBtn, EventTriggerType.PointerClick, SuitBtn_Click);
UIManager.AddEvent(BackBtn, EventTriggerType.PointerClick, BackBtn_Click);
}
protected override void Start()
{
transform.Find("MainNav").GetComponent<MainNav>().ShowBack();
GetData();
}
private void GetData()
{
//获取装备信息列表初始化
var res = ConfigHelper.userApi.GetEquitmentList();
if (res.Result.result)
{
data = res.Result.data;
Refresh();
}
}
private void Refresh(int type = 1)
{
if (data == null)
return;
BikeBtn.transform.Find("bg").gameObject.SetActive(type == 0);
HelmetBtn.transform.Find("bg").gameObject.SetActive(type == 1);
UniformBtn.transform.Find("bg").gameObject.SetActive(type == 2);
SkinBtn.transform.Find("bg").gameObject.SetActive(type == 3);
SuitBtn.transform.Find("bg").gameObject.SetActive(type == 4);
var list = data.Where(c => c.Type == type).ToList();
//清空内容
Utils.DestroyChildren(Content);
GameObject prefab = null;
switch (type)
{
case 0:
prefab = BikePrefab;
break;
case 1:
prefab = HelmetPrefab;
break;
case 2:
prefab = UniformPrefab;
break;
case 3:
prefab = SkinPrefab;
break;
case 4:
prefab = SuitPrefab;
break;
}
if (type == 3)
{
GameObject colorPicker = null;
for (int i = 0; i < list.Count; i++)
{
var item = list[i];
if (i % 2 == 0)
{
colorPicker = Instantiate(prefab, Content);
colorPicker.SetActive(true);
var left = colorPicker.transform.Find("Left");
left.GetComponent<AbstractEquipmentScript>().Init(item.Id, item.Name, item.Remark, item.Url, item.IsLock);
}
else
{
var right = colorPicker.transform.Find("Right");
right.GetComponent<AbstractEquipmentScript>().Init(item.Id, item.Name, item.Remark, item.Url, item.IsLock);
}
}
}
else
{
foreach (var item in list)
{
var o = Instantiate(prefab, Content);
o.GetComponent<AbstractEquipmentScript>().Init(item.Id, item.Name, item.Remark, item.Url, item.IsLock);
o.SetActive(true);
LayoutRebuilder.ForceRebuildLayoutImmediate((RectTransform)Content);
}
}
LayoutRebuilder.ForceRebuildLayoutImmediate((RectTransform)Content);
}
private void ViewBtn_Click(BaseEventData baseEventData)
{
Panel.DOLocalMoveX(-1007, 1f);
InfoPanel.DOLocalMoveX(931, 1f);
ViewBtn.SetActive(false);
SaveBtn.SetActive(false);
}
private void BackBtn_Click(BaseEventData baseEventData)
{
Panel.DOLocalMoveX(-538.5f, 1f);
InfoPanel.DOLocalMoveX(541, 1f);
ViewBtn.SetActive(true);
SaveBtn.SetActive(true);
}
private void BikeBtn_Click(BaseEventData baseEventData)
{
Refresh(0);
}
private void HelmetBtn_Click(BaseEventData baseEventData)
{
Refresh(1);
}
private void UniformBtn_Click(BaseEventData baseEventData)
{
Refresh(2);
}
private void SkinBtn_Click(BaseEventData baseEventData)
{
Refresh(3);
}
private void SuitBtn_Click(BaseEventData baseEventData)
{
Refresh(4);
}
private void Update()
{
}
}
}