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

165 lines
4.7 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 Button btn_back;
// private Button btn_home;
public override void OnAwake()
{
//bind UI GameObj
UI_PVPDefendPrepareBinder.GetComponents(this);
BindProperty();
RegisterEvent();
_prepareTeamManager = PrepareTeamManager.Instance;
}
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);
}
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, () =>
{
var prefabPath = GetPrefabPathByIndex(itemIndex);
_prepareTeamManager.CurrPrefabPath = prefabPath;
DebugUtil.LogError($"CurrPrefabPath : {prefabPath}");
_prepareTeamManager.ShowPrepareRegion();
});
}
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;
}
}
private void CloseSelf()
{
PVPManager.Instance.ExitDefendPrepare();
}
private void OnClickBack()
{
CloseSelf();
}
private void OnClickHome()
{
CloseSelf();
}
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()
{
}
}