699 lines
24 KiB
C#
699 lines
24 KiB
C#
using cfg.CharacterCfg;
|
|
using cfg.SkillCfg;
|
|
using DG.Tweening;
|
|
using Framework;
|
|
using Gameplay.Net;
|
|
using NLDPB;
|
|
using System;
|
|
using System.Collections;
|
|
using Cysharp.Threading.Tasks;
|
|
using Gameplay;
|
|
using PhxhSDK;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using Button = UnityEngine.UI.Button;
|
|
using Constants = Framework.Constants;
|
|
using Image = UnityEngine.UI.Image;
|
|
using System.Collections.Generic;
|
|
|
|
public class UIRankController : UIWindow
|
|
{
|
|
|
|
//UI GameObj
|
|
///Auto Gen Start///
|
|
public Image Image_BG;
|
|
public Image Image_RankPic_Bg;
|
|
public Image Image_Poster;
|
|
public Button Button_Back;
|
|
public Button Button_Home;
|
|
public TMP_Text Text_Hp01;
|
|
public TMP_Text Text_Hp02;
|
|
public TMP_Text Text_Morale01;
|
|
public TMP_Text Text_Morale02;
|
|
public TMP_Text Text_Defense01;
|
|
public TMP_Text Text_Defense02;
|
|
public TMP_Text Text_Armor01;
|
|
public TMP_Text Text_Armor02;
|
|
public TMP_Text Text_Armor_Value02;
|
|
public TMP_Text Text_Change_Armor02;
|
|
public TMP_Text Text_Attack01;
|
|
public TMP_Text Text_Attack02;
|
|
public TMP_Text Text_Speed01;
|
|
public TMP_Text Text_Speed02;
|
|
public Image Image_Skill_01;
|
|
public TMP_Text Text_SkillName01;
|
|
public TMP_Text Text_SkillInfo01;
|
|
public Image Image_Arrow;
|
|
public Image Image_Skill_02;
|
|
public TMP_Text Text_SkillName02;
|
|
public TMP_Text Text_SkillInfo02;
|
|
public TMP_Text Text_SkillName03;
|
|
public TMP_Text Text_SkillInfo03;
|
|
public TMP_Text Text_RankLevel01;
|
|
public TMP_Text Text_Rank_Value01;
|
|
public Image Image_ArrowToRight;
|
|
public TMP_Text Text_RankLevel02;
|
|
public TMP_Text Text_Rank_Value02;
|
|
public Image Image_Materal01;
|
|
public Image Image_Red;
|
|
public TMP_Text Text_Materal_Value01;
|
|
public Image Image_Materal02;
|
|
public Image Image_Green02;
|
|
public TMP_Text Text_Materal_Value02;
|
|
public Image Image_Materal03;
|
|
public TMP_Text Text_Materal_Value03;
|
|
public Button Button_Cannot;
|
|
public TMP_Text Text_Cannot_Confirm;
|
|
public Button Button_Confirm;
|
|
public TMP_Text Text_Confirm;
|
|
public Button Button_Cancel;
|
|
|
|
///Auto Gen End///
|
|
|
|
public static async UniTask<UIWindow> Open(CharacterDataInfo characterDataInfo)
|
|
{
|
|
await CommonUtils.CaptureScreenshot();
|
|
|
|
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UIRank, characterDataInfo);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 高斯模糊遮罩
|
|
/// </summary>
|
|
private RawImage rawImageGaussianBlurMask;
|
|
|
|
/// <summary>
|
|
/// 升级材料
|
|
/// </summary>
|
|
private class Materal : UIGameObjectWrapper
|
|
{
|
|
private TMP_Text textValue;
|
|
private GameObject goRed;
|
|
private GameObject goGreen;
|
|
|
|
private GenericItem genericItem;
|
|
|
|
public Materal(GameObject root) : base(root)
|
|
{
|
|
textValue = GetComponent<TMP_Text>("value");
|
|
goRed = FindObj("Image_Red");
|
|
goGreen = FindObj("Image_Green02");
|
|
|
|
genericItem = new(FindObj("item/GenericItem"));
|
|
}
|
|
|
|
public void SetInfo(int itemId, int count)
|
|
{
|
|
textValue.text = $"{Actor.Instance.Item.GetItemCount(itemId)}/{count}";
|
|
goRed.IsScaleShow(!(Actor.Instance.Item.GetItemCount(itemId) >= count));
|
|
goGreen.IsScaleShow(Actor.Instance.Item.GetItemCount(itemId) >= count);
|
|
|
|
|
|
genericItem.SetInfo(itemId, 0);
|
|
|
|
IsScaleShow = true;
|
|
}
|
|
|
|
public override void Dispose()
|
|
{
|
|
base.Dispose();
|
|
genericItem.Dispose();
|
|
}
|
|
}
|
|
|
|
CharacterDataInfo mCharacterDataInfo;
|
|
CharacterBreak mCharacterBreakCfg;
|
|
|
|
private int mTargetLevel;
|
|
|
|
private int maxLevel;
|
|
private GameObject mLightRectObj;
|
|
private Animator mAnimator;
|
|
|
|
/// <summary>
|
|
/// 升级材料列表
|
|
/// </summary>
|
|
private readonly List<Materal> listMateral = new(3);
|
|
|
|
// Use this for initialization
|
|
public override void PreLoad(object data = null)
|
|
{
|
|
base.PreLoad(data);
|
|
mCharacterDataInfo = data as CharacterDataInfo;
|
|
}
|
|
public override void OnInit()
|
|
{
|
|
//bind UI GameObj
|
|
UIRankBinder.GetComponents(this);
|
|
|
|
rawImageGaussianBlurMask = GetComponent<RawImage>("GaussianBlurMask");
|
|
Transform tsMateralRoot = FindObj("Image_BG/UI_Materals").transform;
|
|
mLightRectObj = FindObj("Image_BG/LightRect/1");
|
|
|
|
rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D();
|
|
|
|
for (int i = 0; i < tsMateralRoot.childCount; ++i)
|
|
{
|
|
listMateral.Add(new Materal(tsMateralRoot.GetChild(i).gameObject));
|
|
}
|
|
|
|
for (int i = 0; i < Constants.BREAK_FLAG_UI; i++)
|
|
{
|
|
GameObject tempFlagObj = FindObj(string.Format("Image_BG/Image_RankPic_Bg/{0}", (i + 1)));
|
|
BindButton(CommonUtils.GetComponent<Button>(tempFlagObj, "Col"), OnClickFlag, i);
|
|
|
|
}
|
|
BindButton(Button_Back, OnButton_BackClick);
|
|
BindButton(Button_Confirm, OnButton_Confirm);
|
|
BindButton(Button_Cancel, OnButton_Cancel);
|
|
BindButton(Button_Home, OnClickHome);
|
|
|
|
mAnimator = this.GetComponent<Animator>();
|
|
Text_SkillName03 = GetComponent<TMP_Text>("Image_BG/UI_SkillInfo/Image_Skill_03/Text_SkillName03");
|
|
Text_SkillInfo03 = GetComponent<TMP_Text>("Image_BG/UI_SkillInfo/Image_Skill_03/Text_SkillInfo03");
|
|
|
|
RefreshBase();
|
|
RegisterEvent();
|
|
}
|
|
|
|
|
|
private void OnClickHome()
|
|
{
|
|
UIManager.Instance.CloseAllNormalExcept(UINameConst.UI_MainPanel);
|
|
}
|
|
private void OnButton_Cancel()
|
|
{
|
|
if (mTargetLevel == (int)mCharacterDataInfo.BreakLevel + 1)
|
|
{
|
|
return;
|
|
}
|
|
mTargetLevel = (int)mCharacterDataInfo.BreakLevel + 1;
|
|
RefreshBreakLevelLvUpAbout();
|
|
}
|
|
|
|
private void OnButton_Confirm()
|
|
{
|
|
if (IsMaxLevel())
|
|
{
|
|
return;
|
|
}
|
|
NetHelper.CharacterUpgrade(mCharacterDataInfo.ID, NLDPB.UpgradeType.UtBreak, (uint)mTargetLevel);
|
|
}
|
|
|
|
private void OnButton_BackClick()
|
|
{
|
|
CloseWindow();
|
|
}
|
|
private void RegisterEvent()
|
|
{
|
|
EventManager.Instance.Register(EventManager.EventName.EN_CharacterLevelUp, (Action<UpgradeType>)OnCharacterLevelup);
|
|
}
|
|
|
|
private void OnCharacterLevelup(UpgradeType type)
|
|
{
|
|
if (type != UpgradeType.UtBreak)
|
|
{
|
|
return;
|
|
}
|
|
//StopAllCoroutines();
|
|
mCharacterDataInfo = CharacterDataInfoManager.Instance.GetCharacterInfo(mCharacterDataInfo.ID);
|
|
mTargetLevel = (int)mCharacterDataInfo.BreakLevel + 1;
|
|
RefreshFxValue();
|
|
|
|
RefreshFlag();
|
|
PlayLightFx();
|
|
RefreshChangeAttri();
|
|
RefreshLvUpItems();
|
|
RefreshBreakLvUpBtn();
|
|
RefreshThirdSkill();
|
|
PlayChangeAnimation();
|
|
|
|
}
|
|
|
|
private void RefreshThirdSkill()
|
|
{
|
|
if (IsMaxLevel()) return;
|
|
DataCharacterBreak cbreak = TableManager.Instance.Tables.CharacterBreak.Get(mCharacterDataInfo.Cfg.RoleID, (int)mCharacterDataInfo.BreakLevel + 1);
|
|
|
|
if ((cbreak.PassiveSkillID != 0))
|
|
{
|
|
var afterSkill = TableManager.Instance.Tables.PassiveSkillConfig.Get(cbreak.PassiveSkillID);
|
|
Text_SkillName03.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, afterSkill.ID);
|
|
Text_SkillInfo03.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkillDesc, afterSkill.ID);
|
|
}
|
|
|
|
}
|
|
|
|
private IEnumerator coroutine;
|
|
|
|
private async void PlayChangeAnimation()
|
|
{
|
|
if(IsMaxLevel())
|
|
{
|
|
mAnimator.Play("Default", 0, 0);
|
|
RefreshSkill();
|
|
RefreshTitle();
|
|
|
|
}
|
|
else
|
|
{
|
|
mAnimator.speed = 1;
|
|
|
|
mAnimator.Play("RankInfo_Change",0,0f);
|
|
float waitTime = PhxhSDK.Utils.GetAnimatorLength(mAnimator, "RankInfo_Change");
|
|
await WaitTimeRefresh(waitTime);
|
|
//StartCoroutine(coroutine);
|
|
}
|
|
|
|
}
|
|
private IEnumerator coroutine1;
|
|
|
|
private async void PlayLightFx()
|
|
{
|
|
var breaklv = (int)mCharacterDataInfo.BreakLevel;
|
|
if(breaklv>Constants.ADVANCE_FLAG_UI)
|
|
{
|
|
breaklv = Constants.ADVANCE_FLAG_UI;
|
|
}
|
|
GameObject tempObj = FindObj(string.Format("Image_BG/Image_RankPic_Bg/{0}/RankLevel", (breaklv).ToString()));
|
|
tempObj.SetActive(true);
|
|
tempObj.GetComponent<ParticleSystem>().Play();
|
|
|
|
await WaitTimeRefreshRect(1,breaklv);
|
|
//4(coroutine1);
|
|
}
|
|
|
|
private async UniTask WaitTimeRefreshRect(int v,int breaklv)
|
|
{
|
|
await UniTask.Delay(v * 1000);
|
|
MoveLightRect(mTargetLevel);
|
|
RefreshFlag();
|
|
FindObj(string.Format("Image_BG/Image_RankPic_Bg/{0}/RankLevel", (breaklv).ToString())).SetActive(false);
|
|
|
|
}
|
|
|
|
private async UniTask WaitTimeRefresh(float waitTime)
|
|
{
|
|
await UniTask.Delay((int)waitTime * 1000);
|
|
mAnimator.Play("RankInfo_Change",0,0f);
|
|
mAnimator.speed=0;
|
|
RefreshSkill();
|
|
RefreshTitle();
|
|
|
|
}
|
|
|
|
private void UnRegisterEvent()
|
|
{
|
|
EventManager.Instance.Unregister(EventManager.EventName.EN_CharacterLevelUp, (Action<UpgradeType>)OnCharacterLevelup);
|
|
|
|
}
|
|
//invoke when open window
|
|
protected override void OnShowWindow(object data = null)
|
|
{
|
|
LoadCfg();
|
|
|
|
if (mCharacterDataInfo != null)
|
|
{
|
|
mTargetLevel = (int)mCharacterDataInfo.BreakLevel + 1;
|
|
maxLevel = mCharacterDataInfo.GetMaxBreakLevel();
|
|
}
|
|
|
|
RefreshBreakLevelLvUpAbout();
|
|
InitFlag();
|
|
RefreshFlag();
|
|
}
|
|
|
|
private void RefreshFxValue()
|
|
{
|
|
DataCharacterBreak oriCfg = mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, (int)mCharacterDataInfo.BreakLevel);
|
|
GetComponent<TMP_Text>("Image_BG/UI_RankLevel/Text_RankLevel01/fxValue01").text = CommonUtils.GetLocalizeText(oriCfg.Name);
|
|
|
|
if (IsMaxLevel()) return;
|
|
DataCharacterBreak targetCfg = mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, mTargetLevel);
|
|
GetComponent<TMP_Text>("Image_BG/UI_RankLevel/Text_RankLevel02/fxValue02").text = CommonUtils.GetLocalizeText(targetCfg.Name);
|
|
|
|
|
|
|
|
}
|
|
private void LoadCfg()
|
|
{
|
|
mCharacterBreakCfg = TableManager.Instance.Tables.CharacterBreak;
|
|
|
|
}
|
|
private void RefreshTitle()
|
|
{
|
|
DataCharacterBreak oriCfg = mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, (int)mCharacterDataInfo.BreakLevel);
|
|
|
|
if (IsMaxLevel())
|
|
{
|
|
Text_RankLevel01.gameObject.SetActive(false);
|
|
|
|
CommonUtils.GetComponent<TMP_Text>(Text_RankLevel02.gameObject, "value02").text = CommonUtils.GetLocalizeText(oriCfg.Name);
|
|
return;
|
|
}
|
|
|
|
DataCharacterBreak targetCfg = mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, mTargetLevel);
|
|
|
|
if (mCharacterDataInfo.BreakLevel == 0)
|
|
{
|
|
|
|
Text_RankLevel01.gameObject.SetActive(false);
|
|
CommonUtils.GetComponent<TMP_Text>(Text_RankLevel02.gameObject, "value02").text = CommonUtils.GetLocalizeText(targetCfg.Name);
|
|
return;
|
|
}
|
|
Text_RankLevel01.gameObject.SetActive(true);
|
|
Text_RankLevel02.gameObject.SetActive(true);
|
|
CommonUtils.GetComponent<TMP_Text>(Text_RankLevel01.gameObject, "value01").text = CommonUtils.GetLocalizeText(oriCfg.Name);
|
|
CommonUtils.GetComponent<TMP_Text>(Text_RankLevel02.gameObject, "value02").text = CommonUtils.GetLocalizeText(targetCfg.Name);
|
|
|
|
}
|
|
private async void InitFlag()
|
|
{
|
|
for (int i = 0; i < Constants.BREAK_FLAG_UI; i++)
|
|
{
|
|
DataCharacterBreak breakCfg = mCharacterBreakCfg.Get(mCharacterDataInfo.Cfg.RoleID, i + 1);
|
|
GameObject flag = FindObj(string.Format("Image_BG/Image_RankPic_Bg/{0}", (i + 1).ToString()));
|
|
CommonUtils.GetComponent<Image>(flag, "Icon").sprite = await LoadAssetAsync<Sprite>(Constants.UI_Cultivata_BreakIconFolder + breakCfg.IconPathLight);
|
|
|
|
CommonUtils.GetGameObject(flag, "RankLevel").SetActive(false);
|
|
|
|
}
|
|
}
|
|
|
|
private void RefreshFlag()
|
|
{
|
|
for (int i = 0; i < Constants.BREAK_FLAG_UI; i++)
|
|
{
|
|
GameObject flag = FindObj(string.Format("Image_BG/Image_RankPic_Bg/{0}", (i + 1).ToString()));
|
|
|
|
if ((i + 1) <= mCharacterDataInfo.BreakLevel+1)
|
|
{
|
|
CommonUtils.SetImageGrayByChangeColor(CommonUtils.GetComponent<Image>(flag, "Icon"), false);
|
|
}
|
|
else
|
|
{
|
|
|
|
CommonUtils.SetImageGrayByChangeColor(CommonUtils.GetComponent<Image>(flag, "Icon"), true);
|
|
|
|
}
|
|
CommonUtils.GetGameObject(flag, "RankLevel").SetActive(false);
|
|
|
|
}
|
|
}
|
|
private void RefreshBreakLevelLvUpAbout()
|
|
{
|
|
RefreshTitle();
|
|
RefreshFlag();
|
|
MoveLightRect(mTargetLevel);
|
|
RefreshChangeAttri();
|
|
RefreshSkill();
|
|
RefreshLvUpItems();
|
|
RefreshBreakLvUpBtn();
|
|
}
|
|
|
|
private void OnClickFlag(int index)
|
|
{
|
|
if ((index + 1) == mTargetLevel)
|
|
{
|
|
return;
|
|
}
|
|
if ((index + 1) <= (int)mCharacterDataInfo.BreakLevel)
|
|
{
|
|
DebugUtil.Log("已经升级过了");
|
|
return;
|
|
}
|
|
mTargetLevel = index + 1;
|
|
RefreshBreakLevelLvUpAbout();
|
|
}
|
|
|
|
private void RefreshBreakLvUpBtn()
|
|
{
|
|
|
|
FindObj("Image_BG/UI_ComfirmAndCancel").SetActive(!IsMaxLevel());
|
|
|
|
}
|
|
void RefreshSkillObjActive()
|
|
{
|
|
|
|
Image_Skill_01.gameObject.SetActive(!IsMaxLevel());
|
|
Image_Arrow.gameObject.SetActive(!IsMaxLevel());
|
|
Image_Skill_02.gameObject.SetActive(!IsMaxLevel());
|
|
FindObj("Image_BG/UI_SkillInfo/Image_Skill_03").SetActive(!IsMaxLevel());
|
|
GameObject maxSkill = FindObj("Image_BG/UI_SkillInfo/MaxSkill");
|
|
maxSkill.SetActive(IsMaxLevel());
|
|
|
|
}
|
|
void RefreshSkill()
|
|
{
|
|
RefreshSkillObjActive();
|
|
GameObject maxSkill = FindObj("Image_BG/UI_SkillInfo/MaxSkill");
|
|
if (IsMaxLevel())//满级
|
|
{
|
|
|
|
if (TableManager.Instance.Tables.PassiveSkillConfig.Get(mCharacterDataInfo.GetBreakPassiveId()) == null)
|
|
{
|
|
maxSkill.SetActive(false);
|
|
|
|
}
|
|
else
|
|
{
|
|
maxSkill.SetActive(true);
|
|
var skill = TableManager.Instance.Tables.PassiveSkillConfig.Get(mCharacterDataInfo.GetBreakPassiveId());
|
|
GetComponent<TMP_Text>("Image_BG/UI_SkillInfo/MaxSkill/Text_SkillName01").text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, skill.ID);
|
|
GetComponent<TMP_Text>("Image_BG/UI_SkillInfo/MaxSkill/Text_SkillInfo01").text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkillDesc, skill.ID);
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
bool isArrowExist1 = true;
|
|
bool isArrowExist2 = true;
|
|
if ((mCharacterDataInfo.GetBreakPassiveId()) == 0)
|
|
{
|
|
Image_Skill_01.gameObject.SetActive(false);
|
|
isArrowExist1 = false;
|
|
|
|
}
|
|
else
|
|
{
|
|
var skill = TableManager.Instance.Tables.PassiveSkillConfig.Get(mCharacterDataInfo.GetBreakPassiveId());
|
|
Image_Skill_01.gameObject.SetActive(true);
|
|
Image_Arrow.gameObject.SetActive(true);
|
|
Text_SkillName01.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, skill.ID);
|
|
Text_SkillInfo01.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkillDesc, skill.ID);
|
|
}
|
|
|
|
Image_Skill_02.gameObject.SetActive(true);
|
|
|
|
|
|
DataCharacterBreak cbreak = TableManager.Instance.Tables.CharacterBreak.Get(mCharacterDataInfo.Cfg.RoleID, mTargetLevel);//(int)mCharacterDataInfo.BreakLevel + 1
|
|
|
|
if (cbreak.PassiveSkillID == 0)
|
|
{
|
|
isArrowExist2 = false;
|
|
}
|
|
else
|
|
{
|
|
var afterSkill = TableManager.Instance.Tables.PassiveSkillConfig.Get(cbreak.PassiveSkillID);
|
|
Text_SkillName02.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, afterSkill.ID);
|
|
Text_SkillInfo02.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkillDesc, afterSkill.ID);
|
|
}
|
|
Image_Arrow.gameObject.SetActive(isArrowExist1 && isArrowExist2);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
void ForEach(int targetLevel, Action<DataCharacterBreak> action)
|
|
{
|
|
for (int i = (int)mCharacterDataInfo.BreakLevel + 1; i <= targetLevel; i++)
|
|
{
|
|
action(mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, i));
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 当前是否达到最大等级
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
bool IsMaxLevel()
|
|
{
|
|
return mCharacterDataInfo.BreakLevel >= maxLevel;
|
|
}
|
|
private void MoveLightRect(int index)
|
|
{
|
|
if(index>Constants.BREAK_FLAG_UI)
|
|
{
|
|
index = Constants.BREAK_FLAG_UI;
|
|
}
|
|
mLightRectObj.transform.DOLocalMoveX((-235 + (index - 1) * 156),1);
|
|
}
|
|
private void RefreshLvUpItems()
|
|
{
|
|
if (IsMaxLevel())
|
|
FindObj("Image_BG/UI_Materals").SetActive(false);
|
|
else
|
|
{
|
|
FindObj("Image_BG/UI_Materals").SetActive(true);
|
|
|
|
ItemCounts itemCounts = new();
|
|
for (int i = (int)mCharacterDataInfo.BreakLevel + 1; i <= mTargetLevel; i++)
|
|
{
|
|
DataCharacterBreak cfg = mCharacterBreakCfg.Get(mCharacterDataInfo.Cfg.RoleID, i);
|
|
foreach (var item in cfg.CostItems)
|
|
{
|
|
if (itemCounts.Ids.Contains((uint)item.Id))
|
|
{
|
|
itemCounts.Counts[itemCounts.Ids.IndexOf((uint)item.Id)] += (uint)item.Count;
|
|
}
|
|
else
|
|
{
|
|
itemCounts.Ids.Add((uint)item.Id);
|
|
itemCounts.Counts.Add((uint)item.Count);
|
|
}
|
|
}
|
|
}
|
|
//DataCharacterBreak breakCfg = mCharacterBreakCfg.Get(mCharacterDataInfo.Cfg.RoleID, mTargetLevel);
|
|
for (int i = 0; i < listMateral.Count; i++)
|
|
{
|
|
Materal materal = listMateral[i];
|
|
|
|
if ((i + 1) <= itemCounts.Ids.Count)
|
|
{
|
|
materal.SetInfo((int)itemCounts.Ids[i], (int)itemCounts.Counts[i]);
|
|
materal.IsActive = true;
|
|
}
|
|
else
|
|
materal.IsActive = false;
|
|
}
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate((FindObj("Image_BG/UI_Materals").transform as RectTransform));
|
|
}
|
|
}
|
|
|
|
private async void RefreshBase()
|
|
{
|
|
Image_Poster.gameObject.SetActive(false);
|
|
var imgPath =
|
|
CommonUtils.GetCharacterPicPath(mCharacterDataInfo.Cfg.RoleID, CommonUtils.ECharacterPicPathType.LevelUp);
|
|
var sprite = await LoadAssetAsync<Sprite>(imgPath);
|
|
CommonUtils.RefreshCharacter2DPic(Image_Poster, sprite);
|
|
Image_Poster.gameObject.SetActive(true);
|
|
Image_Poster.SetNativeSize();
|
|
}
|
|
private void RefreshChangeAttri()
|
|
{
|
|
int sumAddHp = 0;
|
|
int sumAddArmor = 0;
|
|
float sumAddMorale = 0;
|
|
int sumAddAttack = 0;
|
|
int sumAddDenfense = 0;
|
|
float sumAddMoveSpeed = 0;
|
|
float sumAddShootSpped = 0;
|
|
float sumAddShootRange = 0;
|
|
float sumYaZhi = 0;
|
|
int sumBulletCapacity = 0;
|
|
float sumReload = 0;
|
|
float sumDRPerson = 0;
|
|
float sumCritRate = 0;
|
|
float sumDRVehicle = 0;
|
|
float sumCritDamageRate = 0;
|
|
|
|
if(mTargetLevel>maxLevel)
|
|
{
|
|
mTargetLevel = maxLevel;
|
|
}
|
|
ForEach(mTargetLevel, delegate (DataCharacterBreak cfg)
|
|
{
|
|
sumAddHp += cfg.Hp;
|
|
sumAddArmor += cfg.Shield;
|
|
sumAddMorale += cfg.Corrage;
|
|
sumAddAttack += cfg.Attack;
|
|
sumAddDenfense += cfg.Defence;
|
|
sumAddMoveSpeed += cfg.Speed;
|
|
sumAddShootSpped += cfg.ShootSpeed;
|
|
sumAddShootRange += cfg.ShootRange;
|
|
sumYaZhi += cfg.YaZhi;
|
|
sumBulletCapacity += cfg.ManagazinContain;
|
|
sumReload += cfg.ChangeBulletTime;
|
|
sumDRPerson += cfg.DamageToHuman;
|
|
//sumCritRate += cfg.CriticalRatio;
|
|
sumDRVehicle = cfg.DamageToCarrier;
|
|
//sumCritDamageRate = cfg.CriticalDamage;
|
|
});
|
|
//突破暴击相关数值计算方式不同
|
|
var tarCfg = mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, mTargetLevel);
|
|
var curCfg = mCharacterBreakCfg.Get((int)mCharacterDataInfo.ID, (int)mCharacterDataInfo.BreakLevel);
|
|
sumCritRate = Math.Max(tarCfg.CriticalRatio - curCfg.CriticalRatio, 0);
|
|
sumCritDamageRate = Math.Max(tarCfg.CriticalDamage - curCfg.CriticalDamage, 0);
|
|
|
|
RefreshUpperAttri(FindObj("Image_BG/UI_Info/mask/hp"), mCharacterDataInfo.HP(), sumAddHp);
|
|
RefreshUpperAttri(FindObj("Image_BG/UI_Info/mask/Morale"), mCharacterDataInfo.Corrage(), sumAddMorale);
|
|
RefreshUpperAttri(FindObj("Image_BG/UI_Info/mask/Denfense"), mCharacterDataInfo.Defence(), sumAddDenfense);
|
|
RefreshUpperAttri(FindObj("Image_BG/UI_Info/mask/Armor"), mCharacterDataInfo.Armor(), sumAddArmor);
|
|
RefreshUpperAttri(FindObj("Image_BG/UI_Info/mask/Attack"), mCharacterDataInfo.Attack(), sumAddAttack);
|
|
RefreshUpperAttri(FindObj("Image_BG/UI_Info/mask/MoveSpeed"), mCharacterDataInfo.MoveSpeed(), sumAddMoveSpeed);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/FireSpeed"), mCharacterDataInfo.ShootSpeed(), sumAddShootSpped);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/FireRange"), mCharacterDataInfo.Cfg.ShootRange, sumAddShootRange);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/SuppressRate"), mCharacterDataInfo.YaZhi(), sumYaZhi);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/BulletCapacity"), mCharacterDataInfo.BulletCapacity(), sumBulletCapacity);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/Reload"), mCharacterDataInfo.ChangeBulletTime(), sumReload);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/DRPerson"), mCharacterDataInfo.DamageToHuman(), sumDRPerson);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/CritRate"), mCharacterDataInfo.CriticalRatio(), sumCritRate, true);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/DRVehicle"), mCharacterDataInfo.DamageToCarrier(), sumDRVehicle, true);
|
|
RefreshDownnerAttrt(FindObj("Image_BG/UI_Info/mask/CritDamageRate"), mCharacterDataInfo.CriticalDamage(), sumCritDamageRate, true);
|
|
|
|
}
|
|
void RefreshUpperAttri(GameObject obj, float value, float addValue)
|
|
{
|
|
|
|
CommonUtils.GetGameObject(obj, "noChange").SetActive(addValue == 0);
|
|
CommonUtils.GetGameObject(obj, "Change").SetActive(addValue != 0);
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "Change/changeValue").text = "+" + addValue;
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "noChange/value").text = "" + value;
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "Change/value").text = "+" + value;
|
|
|
|
}
|
|
void RefreshDownnerAttrt(GameObject obj, float value, float addValue, bool isPercent = false)
|
|
{
|
|
|
|
CommonUtils.GetGameObject(obj, "noChange").SetActive(addValue == 0);
|
|
CommonUtils.GetGameObject(obj, "Change").SetActive(addValue != 0);
|
|
if (!isPercent)
|
|
{
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "Change/changeValue").text = "+" + string.Format("{0:F2}", addValue);
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "value").text = string.Format("{0:F2}", value);
|
|
}
|
|
else
|
|
{
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "Change/changeValue").text = "+" + string.Format("{0:P1}", addValue);
|
|
CommonUtils.GetComponent<TMP_Text>(obj, "value").text = string.Format("{0:P1}", value);
|
|
}
|
|
}
|
|
|
|
//invoke when reload window
|
|
protected override void OnReloadWindow(object data = null)
|
|
{
|
|
|
|
}
|
|
|
|
//invoke when close window
|
|
protected override void OnHideWindow()
|
|
{
|
|
EventManager.Instance.Send(EventManager.EventName.EN_UIControllCultivateMainInput, true);
|
|
|
|
|
|
}
|
|
|
|
public override void OnRelease()
|
|
{
|
|
base.OnRelease();
|
|
for (int i = 0; i < listMateral.Count; i++)
|
|
{
|
|
listMateral[i].Dispose();
|
|
}
|
|
|
|
UnRegisterEvent();
|
|
}
|
|
} |