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

362 lines
11 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 ScrollView = PhxhSDK.PhxhScrollView;
using Framework;
using Cysharp.Threading.Tasks;
using DG.Tweening;
using System;
using Gameplay.Net;
using cfg.VihecleCultivateCfg;
using cfg.SkillCfg;
using Gameplay;
public class UI_VehiclePartTreeDetailController : UIWindow
{
#region UI
//UI GameObj
///Auto Gen Start///
public Image Image_Bg;
public TMP_Text Text_Name;
public Button Button_Check;
public Image Image_Attributes;
public TMP_Text Text_AttributesTitle;
public Image Image_UpSign_Hp;
public Image Image_UpBg_Hp;
public TMP_Text Text_Title_Hp;
public TMP_Text Text_UpTitle_Hp;
public TMP_Text Text_Value_Hp;
public Image Image_UpSign_MemberCount;
public Image Image_UpBg_MemberCount;
public TMP_Text Text_Title_MemberCount;
public TMP_Text Text_UpTitle_MemberCount;
public TMP_Text Text_Value_MemberCount;
public Image Image_UpSign_Def;
public Image Image_UpBg_Def;
public TMP_Text Text_Title_Def;
public TMP_Text Text_UpTitle_Def;
public TMP_Text Text_Value_Def;
public Image Image_UpSign_Atk;
public Image Image_UpBg_Atk;
public TMP_Text Text_Title_Atk;
public TMP_Text Text_UpTitle_Atk;
public TMP_Text Text_Value_Atk;
public Image Image_UpSign_BulletCount;
public Image Image_UpBg_BulletCount;
public TMP_Text Text_Title_BulletCount;
public TMP_Text Text_UpTitle_BulletCount;
public TMP_Text Text_Value_BulletCount;
public Image Image_UpSign_Speed;
public Image Image_UpBg_Speed;
public TMP_Text Text_Title_Speed;
public TMP_Text Text_UpTitle_Speed;
public TMP_Text Text_Value_Speed;
public Image Image_Terrain;
public TMP_Text Text_TerrainTitle;
public TMP_Text Text_Title_Ground;
public TMP_Text Text_Value_Ground;
public TMP_Text Text_Title_Mountain;
public TMP_Text Text_Value_Mountain;
public TMP_Text Text_Title_Snow;
public TMP_Text Text_Value_Snow;
public TMP_Text Text_Title_Wood;
public TMP_Text Text_Value_Wood;
public Image Image_SkillBg;
public Image Image_VehicleSkill;
public TMP_Text Text_TitleSkill;
public TMP_Text Text_SkillName;
public TMP_Text Text_ClassTitle;
public TMP_Text Text_SkillLevel;
public Image Image_SkillIcon;
public Image Image_SkillCoolingTimeBg;
public TMP_Text Text_SkillCoolingTimeValue;
public TMP_Text Text_SkillInfo;
public Button Button_Equipment;
///Auto Gen End///
#endregion
private long ID;
private bool EnterPartTree;
class InitData
{
public long ID;
public bool EnterPartTree;
public InitData(long id, bool enterPartTree)
{
ID = id;
EnterPartTree = enterPartTree;
}
}
public async static UniTask<UIWindow> Open(long TreeNodeID, bool EnterPartTree = false)
{
var initdata = new InitData(TreeNodeID, EnterPartTree);
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_VehiclePartTreeDetail, initdata);
}
// deal with input data
public override void PreLoad(object data = null)
{
var input = data as InitData;
ID = input.ID;
EnterPartTree = input.EnterPartTree;
DebugUtil.Log("Vehicle Part Tree Detail ID: " + ID);
}
// Use this for initialization
public override void OnInit()
{
//bind UI GameObj
UI_VehiclePartTreeDetailBinder.GetComponents(this);
Button_Check.gameObject.SetActive(EnterPartTree);
BindButton(Button_Check, OnCheckButtonClick);
bool canUpgrade = false; // = Actor.Instance.Character.GetVehicleDevelopment(ID);
VehicleCultivateDataPro vehicleData;
var node = VehicleCultivateManager.Instance.Get(ID);
if (node is VehicleTreeNode vehicle)
{
Text_Name.text = VehicleDataHelper.GetVehicleLocalizeName((int)ID);
vehicleData = VehicleCultivateDataManager.Instance.GetVehicleCultivateDataPro(ID);
if(vehicleData == null)
{
vehicleData = new VehicleCultivateDataPro((int)ID);
}
SetVehicleData(vehicleData);
canUpgrade = Actor.Instance.Character.GetVehicleDevelopment(ID) == null;
if (TableManager.Instance.Tables.VehicleConfig.Get((int)ID).UnlockType == UnlockType.Buy)
{
Button_Equipment.GetComponentInChildren<TMP_Text>().text = "直购";
}
}
else if (node is VehicleComponentTreeNode comp)
{
var compCfg = TableManager.Instance.Tables.VehicleComponent.Get(ID);
DebugUtil.Log("这里需要配置本地化");
Text_Name.text = "强化:" + compCfg.ComponentName;
var vehicleID = compCfg.VehicleID;
vehicleData = VehicleCultivateDataManager.Instance.GetVehicleCultivateDataPro(vehicleID);
if (vehicleData == null)
{
vehicleData = new VehicleCultivateDataPro(vehicleID);
}
if (vehicleData.UpgradedComponents.Contains((uint)ID))//组件已经强化
{
SetVehicleData(vehicleData);
canUpgrade = false;
}
else//组件未强化,显示提升数值
{
SetVehicleData(vehicleData, compCfg);
canUpgrade = true;
}
//canUpgrade = Actor.Instance.Character.GetVehicleDevelopment(vehicleID);
}
if (!canUpgrade)
{
Button_Equipment.gameObject.SetActive(false);
}
BindButton(Button_Equipment, OnUpgradeClick);
Image_Bg.GetComponent<RectTransform>().pivot = new Vector2(0, 0.5f);
OnSwitchAnim(true);
var BgClose = FindObj("Bg_Close");
BindButton(BgClose, () =>
{
OnSwitchAnim(false, () =>
{
CloseWindow();
});
});
}
void OnCheckButtonClick()
{
CloseWindow();
UI_VehiclePartTreeController.Open(ID).Forget();
}
async void SetVehicleData(VehicleCultivateDataPro data, DataVehicleComponent config = null)
{
#region 属性值
HideAllUpSign();
Color highLight = new Color(221 / 255.0f, 223 / 255.0f, 52 / 255.0f);
if (config == null)
{
Text_Value_Hp.text = data.Hp().ToString();
Text_Value_MemberCount.text = data.SeatCount().ToString();
Text_Value_Def.text = data.Defense().ToString();
Text_Value_Atk.text = data.Attack().ToString();
Text_Value_BulletCount.text = data.BulletCapacity().ToString();
Text_Value_Speed.text = data.MoveSpeed().ToString();
}
else
{
Text_Value_Hp.text = (data.Hp() + config.HP).ToString();
if (config.HP > 0)
{
Image_UpBg_Hp.gameObject.SetActive(true);
Image_UpSign_Hp.gameObject.SetActive(true);
Text_UpTitle_Hp.color = highLight;
}
Text_Value_MemberCount.text = data.SeatCount().ToString();
Text_Value_Def.text = (data.Defense() + config.Defense).ToString();
if (config.Defense > 0)
{
Image_UpBg_Def.gameObject.SetActive(true);
Image_UpSign_Def.gameObject.SetActive(true);
Text_UpTitle_Def.color = highLight;
}
if (config.ComponentType != ComponentType.Component_2)
{
Text_Value_Atk.text = (data.Attack()).ToString();
Text_Value_BulletCount.text = (data.BulletCapacity()).ToString();
}
else
{
var batteryCfg = TableManager.Instance.Tables.BatteryConfig.Get(config.BatteryID);
var atk = batteryCfg.DamagePower;
var bulletCount = batteryCfg.MaxBulletCount;
Text_Value_Atk.text = atk.ToString();
Text_Value_BulletCount.text = bulletCount.ToString();
bool isHighLight = atk > data.Attack();
Image_UpBg_Atk.gameObject.SetActive(isHighLight);
Image_UpSign_Atk.gameObject.SetActive(isHighLight);
Text_UpTitle_Atk.color = isHighLight ? highLight : Color.white;
isHighLight = bulletCount > data.BulletCapacity();
Image_UpBg_BulletCount.gameObject.SetActive(isHighLight);
Image_UpSign_BulletCount.gameObject.SetActive(isHighLight);
Text_UpTitle_BulletCount.color = isHighLight ? highLight : Color.white;
}
Text_Value_Speed.text = (data.MoveSpeed()).ToString();
}
#endregion
#region 适应性
Text_Value_Ground.text = data.GetTerrainAdapt(BonusType.TerrainPlain).ToString();
Text_Value_Mountain.text = data.GetTerrainAdapt(BonusType.TerrainMountain).ToString();
Text_Value_Snow.text = data.GetTerrainAdapt(BonusType.TerrainSnow).ToString();
Text_Value_Wood.text = data.GetTerrainAdapt(BonusType.TerrainForest).ToString();
#endregion
#region 技能
DataSkill nowSkillCfg = TableManager.Instance.Tables.SkillConfig.Get(VehicleDataHelper.GetVehicleSkillId(data));
if (nowSkillCfg == null)
{
nowSkillCfg = TableManager.Instance.Tables.SkillConfig.DataList[0];
DebugUtil.LogError("载具技能配置未能找到载具ID为{0}技能ID为{1}\n>>请检查相关配置表VehicleSkllUpgrade/SkillConfig_Vehicle", data.Cfg.ID, VehicleDataHelper.GetVehicleSkillId(data.Cfg.ID));
}
Text_SkillCoolingTimeValue.text = nowSkillCfg.CDTime.ToString() + "s";
Text_SkillName.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill, nowSkillCfg.ID);
var skillIcon = await LoadAssetAsync<Sprite>(Framework.Constants.UI_Cultivata_skillIconFolder + nowSkillCfg.IconPath);
Image_SkillIcon.sprite = skillIcon;
Text_SkillInfo.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill_desc, nowSkillCfg.ID);
#endregion
}
void HideAllUpSign()
{
Image_UpBg_Atk.gameObject.SetActive(false);
Image_UpBg_Def.gameObject.SetActive(false);
Image_UpBg_Hp.gameObject.SetActive(false);
Image_UpBg_MemberCount.gameObject.SetActive(false);
Image_UpBg_BulletCount.gameObject.SetActive(false);
Image_UpBg_Speed.gameObject.SetActive(false);
Image_UpSign_Atk.gameObject.SetActive(false);
Image_UpSign_Def.gameObject.SetActive(false);
Image_UpSign_Hp.gameObject.SetActive(false);
Image_UpSign_MemberCount.gameObject.SetActive(false);
Image_UpSign_BulletCount.gameObject.SetActive(false);
Image_UpSign_Speed.gameObject.SetActive(false);
Text_UpTitle_Hp.color = Color.white;
Text_UpTitle_MemberCount.color = Color.white;
Text_UpTitle_Def.color = Color.white;
Text_UpTitle_Atk.color = Color.white;
Text_UpTitle_BulletCount.color = Color.white;
}
void OnSwitchAnim(bool isShow, Action callback = null)
{
if (isShow)
{
//play show anim
Image_Bg.GetComponent<RectTransform>().DOPivotX(1f, 0.5f).SetEase(Ease.OutBack).OnComplete(() => callback?.Invoke());
}
else
{
Image_Bg.GetComponent<RectTransform>().DOPivotX(0f, 0.5f).OnComplete(() => callback?.Invoke());
}
}
//invoke when open window
protected override void OnShowWindow(object data = null)
{
}
//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();
}
void OnUpgradeClick()
{
var node = VehicleCultivateManager.Instance.Get(ID);
if (node == null)
{
return;
}
TreeNodeBase parentNode = VehicleCultivateManager.Instance.Get(node.ParentID);
if(parentNode != null)
{
if (!parentNode.IsUpgraded())
{
CommonUtils.ShowMessageTips(CommonUtils.GetLocalizeText("vehicleCultivate_PreNodeLocked"));
}
return;
}
if (VehicleCultivateManager.Instance.Get(ID).Upgrade())
CloseWindow();
}
}