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

243 lines
6.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
using Gameplay;
using System.Linq;
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.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<GameObject>(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>("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);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>νṹԤ<E1B9B9><D4A4><EFBFBD><EFBFBD>
/// </summary>
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();
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<CEBD>ڵ<EFBFBD><DAB5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
/// </summary>
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<TMP_Text>(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;
var treeNode = CommonUtils.GetGameObject(uiPrefab, "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();
}
});
bool unlock = false;
if (node is VehicleTreeNode vehicleNode)
{
unlock = Actor.Instance.Character.GetVehicleDevelopment(vehicleNode.ID) != null;
#region vehicle_level
var Text_level = CommonUtils.GetComponent<TMP_Text>(treeNode.transform.GetChild(0).gameObject, "Text_Level");
if (Text_level != null)
{
var vehicleLevel = 1;
if (TableManager.Instance.Tables.VehicleConfig.DataMap.ContainsKey((int)vehicleNode.ID))
vehicleLevel = TableManager.Instance.Tables.VehicleConfig.DataMap[(int)vehicleNode.ID].VehicleLevel;
Text_level.text = CommonUtils.GetRomanCode(vehicleLevel);
}
#endregion
}
else if (node is VehicleComponentTreeNode componentNode)
{
if (data != null)
unlock = data.UpgradedComponents.Contains((uint)componentNode.ID);
#region component_level
var Text_level = CommonUtils.GetComponent<TMP_Text>(treeNode.transform.GetChild(0).gameObject, "Text_Level");
if (Text_level != null)
{
int compLevel = (int)(componentNode.ID % 100);
Text_level.text = CommonUtils.GetRomanCode(compLevel);
}
#endregion
}
var tag = treeNode.transform.GetChild(0).Find("Image_Unlock");
if (tag == null)
{
DebugUtil.LogWarning("tag is null");
}
if (!unlock)
{
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);
//}
}