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

392 lines
12 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 cfg.SkillCfg;
using cfg.VihecleCultivateCfg;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay;
using PhxhSDK;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using static UI_VehicleChooseController;
using Button = UnityEngine.UI.Button;
using Constants = Framework.Constants;
using Image = UnityEngine.UI.Image;
public class UI_VehicleCultivateNewController : UIWindow
{
#region UI_Obj
//UI GameObj
///Auto Gen Start///
public Button Button_back;
public TMP_Text Text_Back;
public Button Button_Home;
public Image Image_PhoneState;
public Image Image_Property;
public TMP_Text Text_Property;
public Image Image_Hp;
public TMP_Text Text_Vehicle_Hp;
public TMP_Text Text_Hp_Value;
public Image Image_Defance;
public TMP_Text Text_Vehicle_Defance;
public TMP_Text Text_Defance_Value;
public Image Image_Capacity;
public TMP_Text Text_Vehicle_Capacity;
public TMP_Text Text_Capacity_Value;
public Image Image_PersonNum;
public TMP_Text Text_Vehicle_PersonNum;
public TMP_Text Text_PersonNum_Value;
public Image Image_Attack;
public TMP_Text Text_Vehicle_Attack;
public TMP_Text Text_Attack_Value;
public Image Image_Speed;
public TMP_Text Text_Vehicle_Speed;
public TMP_Text Text_Speed_Value;
public Image Image_Terrian;
public TMP_Text Text_Terrian;
public Image Image_Road;
public TMP_Text Text_RoadName;
public TMP_Text Text_Road_Value;
public Image Image_Snow;
public TMP_Text Text_SnowName;
public TMP_Text Text_Snow_Value;
public Image Image_Mountain;
public TMP_Text Text_MountainName;
public TMP_Text Text_Mountain_Value;
public Image Image_Forest;
public TMP_Text Text_ForestName;
public TMP_Text Text_Forest_Value;
public Image Image_LevelBarBG;
public Button Button_LevelStrengthen;
public TMP_Text Text_Level_Max;
public TMP_Text Text_LevelName;
public TMP_Text Text_Level_Now;
public Image Image_LastAndNextLevel;
public TMP_Text Text_Last;
public TMP_Text Text_Next;
public Image Image_ActiveSkill;
public TMP_Text Text_ActiveSkill;
public TMP_Text Text_ActiveSkillName;
public TMP_Text Text_SkillLevel;
public TMP_Text Text_Class;
public TMP_Text Text_Class_Value;
public Image Image_SkillLogo;
public Image Image_UI_SkillCd;
public TMP_Text Text_CDSecond;
public TMP_Text Text_CDTme;
public TMP_Text Text_SkillInfo;
public Image Image_VehicelIconBg;
public Image Image_Icon;
public TMP_Text Text_VehicleName;
public Button Button_VehicleList;
public Image Image_HeadPic;
public Image Image_Lv;
public TMP_Text Text_Max;
public TMP_Text Text_Current;
public Image Image_LastAndNext;
public Image Image_BottomDark;
public Image Image_JobBg;
public Image Image_Job;
public TMP_Text Text_Name;
public Image Image_HealthIcon;
public TMP_Text Text_PropertyValue;
public Image Image_Mask;
public Image Image_Back;
public Image Image_LeftDark;
public Image Image_TopBlackBar;
public Image Image_BottomBlackBar;
///Auto Gen End///
#endregion
// deal with input data
//List<VehicleCultivateData> mShowList;
PhxhScrollViewEx BottomVehicleScrollView;
List<VehicleCultivateData> mCurVehicles;
VehicleCultivateData curShownVehicleData;
#region API
/// <summary>
/// 打开载具界面
/// </summary>
/// <returns></returns>
public static async UniTask<UIWindow> Open()
{
// 切换场景会有瞬间卡顿先打开UI
UIWindow uiWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_VehicleCultivateNew);
CommonUtils.ChangeUIScene(Constants.UI_LEVEL_SELECTED_SCENE_PATH); // 切换到关卡选择场景
CameraManager.Instance.SetMainCameraActive(true);
return uiWindow;
}
#endregion
#region UIWindow_Function
public override void PreLoad(object data = null)
{
GetStorageData();
#region 载具图片
foreach (var cfg in mCurVehicles)
{
string imgPath = VehicleDataHelper.GetVehiclePicPath(cfg.Cfg.ID);
AssetManager.Instance.PostPreload<Sprite>(imgPath).Forget();
}
#endregion
#region 技能图片
foreach (var cfg in mCurVehicles)
{
DataSkill nowSkillCfg = TableManager.Instance.Tables.SkillConfig.Get(VehicleDataHelper.GetVehicleSkillId(cfg.Cfg.ID));
if (nowSkillCfg == null)
{
DebugUtil.LogError("载具技能配置未能找到载具ID为{0}技能ID为{1}\n>>请检查相关配置表VehicleSkllUpgrade/SkillConfig_Vehicle", cfg.Cfg.ID, VehicleDataHelper.GetVehicleSkillId(cfg.Cfg.ID));
continue;
}
AssetManager.Instance.PostPreload<Sprite>(Framework.Constants.UI_Cultivata_skillIconFolder + nowSkillCfg.IconPath).Forget();
}
#endregion
if (mCurVehicles.Count > 0)
curShownVehicleData = mCurVehicles[0];
else
{
curShownVehicleData = null;
DebugUtil.LogError("mCurVehicles.Count is 0");
}
}
// Use this for initialization
public override void OnInit()
{
//bind UI GameObj
UI_VehicleCultivateNewBinder.GetComponents(this);
BottomVehicleScrollView = GetComponent<PhxhScrollViewEx>("UI_VehicleList/UI_VehicleList");
BindButton(Button_back, OnBackClick);
BindButton(Button_Home, OnHomeClick);
BindButton(Button_VehicleList, OnVehicleListClick);
BindButton(Button_LevelStrengthen, OnCultivateClick);
BottomVehicleScrollView.SetItemCountFunc(() => mCurVehicles.Count);
BottomVehicleScrollView.SetUpdateFunc(_RefreshSkinItem);
BottomVehicleScrollView.UpdateData();
VehicleInfoRefresh();
EventManager.Instance.Register(EventManager.EventName.VehecleUpgrade, VehicleInfoRefresh);
EventManager.Instance.Register<uint>(EventManager.EventName.VehicleInfoChoose, OnVehicleChange);
}
//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();
EventManager.Instance.Unregister(EventManager.EventName.VehecleUpgrade, VehicleInfoRefresh);
EventManager.Instance.Unregister<uint>(EventManager.EventName.VehicleInfoChoose, OnVehicleChange);
#region 卸载预载载具图片
foreach (var cfg in mCurVehicles)
{
string imgPath = VehicleDataHelper.GetVehiclePicPath(cfg.Cfg.ID);
AssetManager.Instance.Unload(imgPath);
}
#endregion
}
#endregion
void VehicleInfoRefresh()
{
Text_VehicleName.text = curShownVehicleData.Name;
Text_Name.text = curShownVehicleData.Name;
string imgPath = VehicleDataHelper.GetVehiclePicPath(curShownVehicleData.Cfg.ID);
Image_HeadPic.sprite = AssetManager.Instance.GetPreLoadResult<Sprite>(imgPath);
#region 等级
Text_Level_Max.text = curShownVehicleData.SumPowerMaxLevel().ToString();
Text_Max.text = curShownVehicleData.SumPowerMaxLevel().ToString();
Text_Level_Now.text = curShownVehicleData.SumPowerLevel().ToString();
Text_Current.text = curShownVehicleData.SumPowerLevel().ToString();
#endregion
#region 属性
Text_Hp_Value.text = curShownVehicleData.Hp().ToString();
Text_PersonNum_Value.text = curShownVehicleData.SeatCount().ToString();
Text_Defance_Value.text = curShownVehicleData.Defense().ToString();
Text_Speed_Value.text = curShownVehicleData.MoveSpeed().ToString();
Text_Attack_Value.text = curShownVehicleData.Attack().ToString();
Text_Capacity_Value.text = curShownVehicleData.BulletCapacity().ToString();
#endregion
#region 适应性
Text_Road_Value.text = curShownVehicleData.GetTerrainAdapt(BonusType.TerrainPlain);
Text_Snow_Value.text = curShownVehicleData.GetTerrainAdapt(BonusType.TerrainSnow);
Text_Mountain_Value.text = curShownVehicleData.GetTerrainAdapt(BonusType.TerrainMountain);
Text_Forest_Value.text = curShownVehicleData.GetTerrainAdapt(BonusType.TerrainForest);
#endregion
#region 技能
DataSkill nowSkillCfg =
TableManager.Instance.Tables.SkillConfig.Get(VehicleDataHelper.GetVehicleSkillId(curShownVehicleData.Cfg.ID));
if (nowSkillCfg == null)
{
nowSkillCfg = TableManager.Instance.Tables.SkillConfig.DataList[0];
DebugUtil.LogError("载具技能配置未能找到载具ID为{0}技能ID为{1}\n>>请检查相关配置表VehicleSkllUpgrade/SkillConfig_Vehicle", curShownVehicleData.Cfg.ID, VehicleDataHelper.GetVehicleSkillId(curShownVehicleData.Cfg.ID));
}
Text_CDTme.text = nowSkillCfg.CDTime.ToString();
Text_ActiveSkillName.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill, nowSkillCfg.ID);
var skillIcon = AssetManager.Instance.GetPreLoadResult<Sprite>(Framework.Constants.UI_Cultivata_skillIconFolder + nowSkillCfg.IconPath);
Image_SkillLogo.sprite = skillIcon;
Text_Class_Value.text = CommonUtils.GetRomanCode((int)curShownVehicleData.SumBonus(BonusType.SkillLv) + 1);//未强化时等级为1
Text_SkillInfo.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill_desc, nowSkillCfg.ID);
#endregion
}
void GetStorageData()
{
if (mCurVehicles == null)
mCurVehicles = new List<VehicleCultivateData>();
mCurVehicles.Clear();
mCurVehicles.AddRange(VehicleCultivateDataManager.Instance.DataList);
}
private void OnVehicleChange(uint id)
{
if (ValueValidator.IsIdValid(id))
{
if (id == 0)
{
DebugUtil.LogError("选中载具ID为0无效");
}
else
{
foreach (var vehicle in mCurVehicles)
{
if (vehicle.Cfg.ID == id)
{
curShownVehicleData = vehicle;
break;
}
}
}
}
else
{
curShownVehicleData = mCurVehicles[0];
}
VehicleInfoRefresh();
}
#region scrollview
private void _RefreshSkinItem(int index, RectTransform item)
{
var cfg = mCurVehicles[index];
if(cfg == null)
{
DebugUtil.LogError($"Index:{index} VehicleCultivateData cfg is null");
return;
}
var image = CommonUtils.GetComponent<Image>(item.gameObject, "UI_CultivateVehicle/Vehicle/Image_HeadPic");
TMP_Text nameText = CommonUtils.GetComponent<TMP_Text>(item.gameObject, "UI_CultivateVehicle/Text_Name");
TMP_Text levelText = CommonUtils.GetComponent<TMP_Text>(item.gameObject, "UI_CultivateVehicle/Image_Lv/Text_Current");
TMP_Text maxLevelText = CommonUtils.GetComponent<TMP_Text>(item.gameObject, "UI_CultivateVehicle/Image_Lv/Text_Max");
Button btn = CommonUtils.GetComponent<Button>(item.gameObject, "UI_CultivateVehicle");
if (image != null)
{
var path = VehicleDataHelper.GetVehiclePicPath(cfg.Cfg.ID);
image.sprite = AssetManager.Instance.GetPreLoadResult<Sprite>(path);
}
if (nameText != null)
{
string vehicleName = cfg.Name;
nameText.text = vehicleName;
}
if (levelText != null && maxLevelText != null)
{
levelText.text = cfg.SumPowerLevel().ToString();
maxLevelText.text = cfg.SumPowerMaxLevel().ToString();
}
if (btn != null)
{
ClearBind(btn);
BindButton(btn, OnSelectVehicleClick, index);
}
}
#endregion
#region Button_Listener
async void OnVehicleListClick()
{
await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_VehicleChoose);
}
void OnSelectVehicleClick(int index)
{
VehicleCultivateData info = mCurVehicles[index];
VehicleCultivateParam cultivateStruct = new VehicleCultivateParam();
cultivateStruct.showList = mCurVehicles;//mShowList;
cultivateStruct.info = info;
if (curShownVehicleData != info)
{
curShownVehicleData = info;
VehicleInfoRefresh();
}
}
void OnBackClick()
{
CommonUtils.ChangeUIScene(Constants.MAIN_SCENE_PATH);
CloseWindow();
UIManager.Instance.ShowAllUI();
}
void OnHomeClick()
{
//
CommonUtils.ChangeUIScene(Constants.MAIN_SCENE_PATH);
//CloseWindow();
//UIManager.Instance.ShowAllUI();
UIManager.Instance.CloseAllNormalExcept(UINameConst.UI_MainPanel);
}
async void OnCultivateClick()
{
await UI_VehicleLevelUpController.Open(curShownVehicleData);
}
#endregion
}