193 lines
5.4 KiB
C#
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;
|
|
}
|
|
} |