392 lines
12 KiB
C#
392 lines
12 KiB
C#
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
|
||
}
|