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

195 lines
4.6 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 PhxhSDK;
using Framework;
using Cysharp.Threading.Tasks;
using static UINoticeOneController;
using cfg.VihecleCultivateCfg;
using Gameplay.Net;
using Gameplay.Common;
public class UI_VehiclePartTreeController : UIWindow
{
//UI GameObj
///Auto Gen Start///
public Image Image_Bg;
public Image Image_TreeBg1;
//public Button Button_Return;
public Button Button_back;
public TMP_Text Text_Back;
public Button Button_Home;
public Image Image_TreeBg0;
public Toggle Toggle_Dev;
public Toggle Toggle_Reinforce;
public Toggle Toggle_BlueMap;
public Toggle Toggle_Repair;
public PhxhScrollView ScrollView_PartsTree;
public Button Button_Back;
///Auto Gen End///
private long curVehicleID = -1;
private GameObject uiPrefab;
public async static UniTask<UIWindow> Open(object data = null)
{
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_VehiclePartTree, data);
}
// deal with input data
public override void PreLoad(object data = null)
{
curVehicleID = (long)data;
var path = string.Format(UIManager.UI_PREFAB_PATH, "Interface_Vehicle/TechTree/TechTree_" + curVehicleID);
PostPreload<GameObject>(path).Forget();
}
// Use this for initialization
public override void OnInit()
{
//bind UI GameObj
UI_VehiclePartTreeBinder.GetComponents(this);
var currencyList = GetComponent<UI_CurrencyList>("UI_CurrencyList");
currencyList.SetData(GLConfig.Inst.data.DiamondItemId, GLConfig.Inst.data.GoldItemId);
BindButton(Button_back, OnClickBack);
BindButton(Button_Back, () =>
{
var parentID = VehicleCultivateManager.Instance.GetVehicleParent(curVehicleID).ID;
curVehicleID = parentID;
UpdateTreePrefab();
});
var path = string.Format(UIManager.UI_PREFAB_PATH, "Interface_Vehicle/TechTree/TechTree_" + curVehicleID);
uiPrefab = GameObject.Instantiate(GetPreLoadResult<GameObject>(path), ScrollView_PartsTree.content, false);
}
//invoke when open window
protected override void OnShowWindow(object data = null)
{
UpdateTreeNode();
var currencyList = GetComponent<UI_CurrencyList>("UI_CurrencyList");
currencyList.Refresh();
}
//invoke when reload window
protected override void OnReloadWindow(object data = null)
{
}
//invoke when close window
protected override void OnHideWindow()
{
}
//invoke when destroy
public override void OnRelease()
{
base.OnRelease();
}
async void UpdateTreePrefab()
{
var path = string.Format(UIManager.UI_PREFAB_PATH, "Interface_Vehicle/TechTree/TechTree_" + curVehicleID);
var go = await AssetManager.Instance.LoadAssetAsync<GameObject>(path);
if (go == null)
{
DebugUtil.LogError("go is null");
return;
}
if (uiPrefab != null)
{
Destroy(uiPrefab);
}
uiPrefab = GameObject.Instantiate(go, ScrollView_PartsTree.content, false);
UpdateTreeNode();
}
void UpdateTreeNode()
{
var partTree = VehicleCultivateManager.Instance.GetPartialTree(curVehicleID);
if (VehicleCultivateManager.Instance.GetVehicleParent(curVehicleID) == null)
{
Button_Back.gameObject.SetActive(false);
}
else
{
Button_Back.gameObject.SetActive(true);
}
if (partTree == null)
{
DebugUtil.LogError("partTree is null");
return;
}
DebugUtil.Log("partTree count: " + partTree.Count);
foreach (var node in partTree)
{
var id = node.ID;
var treeNode = uiPrefab.transform.Find("v_" + id);
if (treeNode == null)
{
DebugUtil.LogError("treeNode is null");
continue;
}
var button = treeNode.GetComponent<Button>();
if (button == null)
{
DebugUtil.LogError("button is null");
}
BindButton(button, () =>
{
DebugUtil.Log("click node: " + id);
if (node is VehicleTreeNode Vehicle)
{
curVehicleID = Vehicle.ID;
UpdateTreePrefab();
}
});
var data = Actor.Instance.Character.GetVehicleDevelopment(id);
var tag = treeNode.transform.GetChild(0).Find("Image_Unlock");
if (tag == null)
{
DebugUtil.LogWarning("tag is null");
}
if (data == null)
{
if (tag != null)
tag.gameObject.SetActive(false);
}
else
{
if (tag != null)
tag.gameObject.SetActive(true);
}
}
}
void OnClickBack()
{
CloseWindow();
}
//void OnClickHome()
//{
// UIManager.Instance.CloseAllWindow();
// UIManager.Instance.OpenWindow(UINameConst.UI_VehicleMain);
//}
}