195 lines
4.6 KiB
C#
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);
|
|
//}
|
|
|
|
}
|