using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; using Toggle = UnityEngine.UI.Toggle; using PhxhSDK; using Framework; using Cysharp.Threading.Tasks; using Gameplay.Net; using Gameplay.Common; using Gameplay; 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 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(path).Forget(); } // Use this for initialization public override void OnInit() { //bind UI GameObj UI_VehiclePartTreeBinder.GetComponents(this); var currencyList = GetComponent("UI_CurrencyList"); currencyList.SetData(GLConfig.Inst.data.GoldItemId);//GLConfig.Inst.data.DiamondItemId, 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(path), ScrollView_PartsTree.content, false); EventManager.Instance.Register(EventManager.EventName.VehecleUpgrade, UpdateTreeNode); } //invoke when open window protected override void OnShowWindow(object data = null) { UpdateTreeNode(); var currencyList = GetComponent("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(); EventManager.Instance.Send(EventManager.EventName.EN_UIControllCultivateMainInput, true); CommonUtils.ScreenshotReset(); EventManager.Instance.Unregister(EventManager.EventName.VehecleUpgrade, UpdateTreeNode); } /// /// 加载树形结构预制体 /// async void UpdateTreePrefab() { var path = string.Format(UIManager.UI_PREFAB_PATH, "Interface_Vehicle/TechTree/TechTree_" + curVehicleID); var go = await AssetManager.Instance.LoadAssetAsync(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; } GameObject rootVehicleNode = CommonUtils.GetGameObject(uiPrefab, "v_" + curVehicleID); CommonUtils.GetComponent(rootVehicleNode, "Image_CurrentVehicle/Text_PartName").text = VehicleDataHelper.GetVehicleLocalizeName((int)curVehicleID); VehicleDevelopmentInfo data = Actor.Instance.Character.GetVehicleDevelopment(curVehicleID); foreach (var node in partTree) { var id = node.ID; DebugUtil.Log("node id: " + id); var treeNode = CommonUtils.GetGameObject(uiPrefab, "v_" + id); if (treeNode == null) { DebugUtil.LogError("treeNode is null"); continue; } var button = treeNode.GetComponent