NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_PVPDefendPrepareControll...

193 lines
5.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
using Toggle = UnityEngine.UI.Toggle;
using ScrollView = PhxhSDK.PhxhScrollView;
using Framework;
using Gameplay;
using PhxhSDK;
public class UI_PVPDefendPrepareController : UIWindow
{
//UI GameObj
///Auto Gen Start///
///Auto Gen End///
private ScrollView _unitScrollView;
private PrepareTeamManager _prepareTeamManager;
private List<CharacterDataInfo> _allCharacterInfos;
private List<VehicleCultivateData> _allVehicleInfos;
private List<PVPUnitInfo> _pvpUnitInfos = new();
private int _currSelectedIndex = -1;
// private Button btn_back;
// private Button btn_home;
public override void OnAwake()
{
//bind UI GameObj
UI_PVPDefendPrepareBinder.GetComponents(this);
_prepareTeamManager = PrepareTeamManager.Instance;
BindProperty();
RegisterEvent();
_pvpUnitInfos.Clear();
}
private void BindProperty()
{
_unitScrollView = transform.Find("listBkg/Scroll View").GetComponent<ScrollView>();
_unitScrollView.SetItemCountFunc(GetUnitCount);
_unitScrollView.SetUpdateFunc(OnRenderUnitItem);
}
private void RegisterEvent()
{
BindButton("Button_Back/Button_back", OnClickBack);
BindButton("Button_Back/Button_Home", OnClickHome);
_prepareTeamManager.OnAddModel += OnAddModel;
_prepareTeamManager.OnRemoveModel += OnRemoveModel;
_prepareTeamManager.OnSwapModel += OnSwapModel;
}
private void RefreshData()
{
_allCharacterInfos = new List<CharacterDataInfo>(CharacterDataInfoManager.Instance.DataList);
_allVehicleInfos = new List<VehicleCultivateData>(VehicleCultivateDataManager.Instance.DataList);
_unitScrollView.UpdateData();
}
private void Refresh()
{
RefreshData();
}
private int GetUnitCount()
{
return _allCharacterInfos.Count + _allVehicleInfos.Count;
}
private async void OnRenderUnitItem(int itemIndex, RectTransform itemTrans)
{
bool isCharacter = GetIndexIsCharacter(itemIndex, out var realIndex);
var icon = itemTrans.Find("icon").GetComponent<Image>();
var nameText = itemTrans.Find("name").GetComponent<TMP_Text>();
if (isCharacter)
{
var characterData = _allCharacterInfos[realIndex];
if (characterData == null)
return;
icon.sprite = await AssetManager.Instance.LoadAssetAsync<Sprite>(characterData.GetWholeHeadPath());
nameText.text = characterData.Name;
}
else
{
var vehicleData = _allVehicleInfos[realIndex];
if (vehicleData == null)
return;
icon.sprite =
await AssetManager.Instance.LoadAssetAsync<Sprite>(
VehicleDataHelper.GetVehiclePicPath((int)vehicleData.nID));
nameText.text = vehicleData.Name;
}
var button = itemTrans.GetComponent<Button>();
button.onClick.RemoveAllListeners();
BindButton(button, () => { OnSelectUnit(itemIndex); });
}
private bool GetIndexIsCharacter(int index, out int realIndex)
{
bool isCharacter = index < _allCharacterInfos.Count;
realIndex = isCharacter ? index : index - _allCharacterInfos.Count;
return isCharacter;
}
private string GetPrefabPathByIndex(int index)
{
var isCharacter = GetIndexIsCharacter(index, out var realIndex);
if (isCharacter)
{
var characterData = _allCharacterInfos[realIndex];
var skinData =
TableManager.Instance.Tables.SkinCfg.Get(Framework.Constants.DEFULT_SKINID, characterData.Cfg.RoleID);
if (skinData == null)
return null;
return skinData.PrefabPath;
}
else
{
var vehicleData = _allVehicleInfos[realIndex];
return vehicleData.Cfg.PrefabPath;
}
}
#region Event
private void OnClickBack()
{
CloseSelf();
}
private void OnClickHome()
{
CloseSelf();
}
private void OnSelectUnit(int itemIndex)
{
var prefabPath = GetPrefabPathByIndex(itemIndex);
_prepareTeamManager.CurrPrefabPath = prefabPath;
_prepareTeamManager.ShowPrepareRegion();
_currSelectedIndex = itemIndex;
}
private void OnAddModel(int cellIndex, string prefabPath)
{
}
private void OnRemoveModel(int cellIndex)
{
}
private void OnSwapModel(int cellIndexLeft, int cellIndexRight)
{
}
#endregion
private void CloseSelf()
{
PVPManager.Instance.ExitDefendPrepare();
}
protected override void OnOpenWindow()
{
base.OnOpenWindow();
Refresh();
}
//invoke when open window
protected override void OnOpenWindow(object data = null)
{
}
//invoke when reload window
protected override void OnReloadWindow(object data = null)
{
}
//invoke when close window
protected override void OnCloseWindow()
{
_prepareTeamManager.OnAddModel -= OnAddModel;
_prepareTeamManager.OnRemoveModel -= OnRemoveModel;
_prepareTeamManager.OnSwapModel -= OnSwapModel;
}
}