NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_CultivateController.cs

1511 lines
59 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.CharacterCfg;
using cfg.SkillCfg;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay;
using Gameplay.Character.Utils;
using Gameplay.Guide;
using Gameplay.Net;
using NLDPB;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
public class UI_CultivateController : UIWindow
{
#region UI
//UI GameObj
///Auto Gen Start///
public Image Image_CultivateBG;
public Image Image_UnderDark;
public Image Image_Book;
public Image Image_Document;
public Image Image_BookShadow;
public Image Image_Line;
//public Image Image_BG;
//public Button Button_Back;
public Button Button_back;
public TMP_Text Text_Back;
public Button Button_Home;
public Image Image_Cultivate_BG_Black;
public Image Image_Black;
public Image Image_Poster00;
public Image Image_BG_Rect;
public Button Button_Look;
public Button Button_ChangeSuit;
public Image Image_CommandCostSign;
public TMP_Text Text_CommandCost;
public Image Image_GroupLogo;
public Image Image_CharacterRegion;
public Image Image_Blow_Shadow;
public Image Image_BottomDark;
public Image Image_NameInfo;
public Image Image_Profession_Logo;
public TMP_Text Text_CharacterName;
public TMP_Text Text_RussiaName;
public Button Button_LevelPlus;
public Image Image_LevelBar;
public Image Image_Level_Arrow;
public TMP_Text Text_Level_Max;
public TMP_Text Text_Exp_Now;
public TMP_Text Text_Level_Now;
public Button Button_LevelPlusLimited;
public Image Image_NeedRankUp;
public Image Image_LevelBar_Max;
public TMP_Text Text_Level_Now_Full;
public TMP_Text Text_Level_Max_Full;
public Image Image_AdvanceLevel;
public Image Image_Advance01;
public Image Image_Advance02;
public Image Image_Advance03;
public Image Image_Advance04;
public TMP_Text Text_Advance;
public TMP_Text Text_AdvanceName;
public Image Image_RankLevel;
public Image Image_Rank_01;
public Image Image_Rank_02;
public Image Image_Rank_03;
public Image Image_Rank_04;
public TMP_Text Text_Rank;
public TMP_Text Text_RankName;
public Button Button_RankPlus;
public Image Image_UI_Cultivate_ActiveSkill;
public Image Image_SkillLogo;
public Image Image_UI_SkillCd;
public TMP_Text Text_CDSecond;
public TMP_Text Text_CDTme;
public Image Image_Max;
//public Button Button_ActiveSK_Arrow;
public Button Button_SkillPlus;
public TMP_Text Text_ActiveSkill;
public TMP_Text Text_ActiveSkillName;
public TMP_Text Text_PassiveSkill;
public TMP_Text Text_Class;
public TMP_Text Text_Class_Value;
public Image Image_UI_Cultivate_ActiveSkill_Open;
//public Button Button_ActiveSK_ArrowClose;
public Image Image_Max_Open;
public Image Image_SkillLogo_Open;
public Image Image_SkillCd_Open;
public TMP_Text Text_CDTme_Open;
public TMP_Text Text_CDSecond_Open;
public Button Button_SkillPlus_Open;
public TMP_Text Text_ActiveSkill_Open;
public TMP_Text Text_ActiveSkillName_Open;
public TMP_Text Text_ActiveSkill_Info;
public TMP_Text Text_PassiveSkill_Open;
public TMP_Text Text_Class_Open;
public TMP_Text Text_Class_Value_Open;
public Image Image_PersonalAttri;
public TMP_Text Text_PersonalAttri;
public Button Button_AttributeInfo;
public TMP_Text Text_PersonalAttriDetail;
public Image Image_AttriHp;
public TMP_Text Text_AttriHp;
public TMP_Text Text_AttriHpNumber;
public Image Image_AttriShiled;
public TMP_Text Text_AttriShiled;
public TMP_Text Text_AttriShiledfNumber;
public Image Image_AttriProficiency;
public TMP_Text Text_AttriProfi;
public TMP_Text Text_AttriProfiNumber;
public Image Image_AttriSolider;
public TMP_Text Text_AttriSoli;
public TMP_Text Text_AttriSoliNumber;
public Image Image_AttriDefend;
public TMP_Text Text_AttriDef;
public TMP_Text Text_AttriDefNumber;
public Image Image_AttriMoveSpeed;
public TMP_Text Text_AttriMove;
public TMP_Text Text_AttriMoveNumber;
public Image Image_AttriBelong;
public TMP_Text Text_AttriBelong;
public Image Image_AttriWeapon;
public TMP_Text Text_AttriWeapom;
public Image Image_AttriBulletAttack;
public TMP_Text Text_AttriBulletAttack;
public Image Image_AttriBulletCapacity;
public TMP_Text Text_AttriBulletCapacity;
public Image Image_AttriBulletRadious;
public PhxhSDK.PhxhScrollView ScrollView_DistanceScale;
public Image Image_Favor;
public Image Image_FavorIconBg;
public Image Image_FavorIcon;
public TMP_Text Text_Favor;
public TMP_Text Text_FavorNumber;
public TMP_Text Text_FavorRankNumber;
public Image Image_Commander;
public TMP_Text Text_Commander;
public Image Image_DarkTop;
public Image Image_DarkBottomThin;
public Image Image_DarkLeft;
public Image Image_DarkRight;
public Image Image_TopBlackBar;
public Image Image_BottomBlackBar;
///Auto Gen End///
#endregion
UILeftCharanterUIType mCurLeftUICharacterType = UILeftCharanterUIType.EbaseAttri;
List<CharacterDataInfo> characterDataInfos = new List<CharacterDataInfo>();
CharacterDataInfo mCurCharaData;
int mCurIndex = 0;//当前人物索引
CharacterLevelExp LevelExpCfg;
CharacterAttri characterAttriCfg;
CharacterBreak characterBreakCfg;
FactionAttri factionAttriCfg;
JobAttri jobAttriCfg;
SkillConfig skillConfig;
DataSkill nowSkillCfg;
CharacterSkillLevel characterSkillLevelCfg;
Image character2dPic;
float ArrowRadius;
public List<Image> advanceImageList;
public List<Image> rankImageList;
public TMP_Text Text_PassiveSkillName01;
public TMP_Text Text_PassiveSkillName02;
//public TMP_Text Text_ActiveSkill_InfoOpen;
public TMP_Text Text_PassiveSkillName01_Info;
public TMP_Text Text_PassiveSkill01_NextLevel;
public TMP_Text Text_PassiveSkillName02_Info;
public TMP_Text Text_PassiveSkill02_NextLevel;
public Button Button_Awake;
public Button Button_SkillLevelUp;
//滑动动画完成,允许左右滑动
private bool IsCanChange = false;
//保证只注册一次
private bool isRegisterInput = false;
private bool isShowParticleAnim = false;
//private UI_Cultivate_DetailController detailWindow;
//private UI_Cultivate_ProAndInfoController proAndInfoWindow;
private GameObject UI_Cultivate_LevelObj;
private GameObject Image_AdvanceLevelObj;
private GameObject Image_RankLevelObj;
private GameObject UI_Cultivate_ActSkObj;
public enum UIRightCharanterUIType
{
ElevelUp,
EskillsHeighten,
Ebreak,
Eawake,
Efavorable,
ENone,
}
public enum UILeftCharanterUIType
{
/// <summary>
/// 角色基础属性
/// </summary>
EbaseAttri,
/// <summary>
/// 角色详细属性
/// </summary>
EDetailInfo,
}
public override void PreLoad(object data = null)
{
base.PreLoad(data);
//#region 子UI预加载
//proAndInfoWindow = await UIManager.Instance.LoadWindow(UINameConst.UI_Cultivate_ProAndInfo) as UI_Cultivate_ProAndInfoController;
//detailWindow = await UIManager.Instance.LoadWindow(UINameConst.UI_Cultivate_Detail) as UI_Cultivate_DetailController;
//#endregion
UISelectCharacterController.CultivateStruct info = data as UISelectCharacterController.CultivateStruct;
if (info != null)
{
isShowParticleAnim = info.showAnim;
}
}
public override void OnInit()
{
UI_CultivateBinder.GetComponents(this);
//BindButton("UIFighterCiltivateAllBtn/Button_BasicInfo", OnButton_BasicInfoClick);
//BindButton("UIFighterCiltivateAllBtn/Button_SkillsHeighten", OnButton_SkillsHeightenClick);
//BindButton("UIFighterCiltivateAllBtn/Button_Break", OnButton_BreakClick);
//BindButton("UIFighterCiltivateAllBtn/Button_Awake", OnButton_AwakeClick);
//BindButton("UIFighterCiltivateAllBtn/Button_Favorable", OnButton_FavoClick);
//BindButton("Image_BG/Image_Cultivate_BG_Black/Button_Look", OnButton_LookClick);
character2dPic = GetComponent<Image>("Image_BG/Image_Cultivate_BG_Black/Hide/Image_Poster00");
//Image_Profession_Logo = GetComponent<Image>("Image_BG/Image_NameInfo/Image_Profession_Logo");
//Text_CharacterName = GetComponent<TMP_Text>("Image_BG/Image_NameInfo/Text_CharacterName");
//Text_CommandCost = GetComponent<TMP_Text>("Image_BG/Image_Cultivate_BG_Black/Text_CommandCost");
//Text_Level_Now_Full = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Level_Max/Text_Level_Now_Full");
//Text_Level_Max_Full = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Level_Max/Text_Level_Max_Full");
//Text_Level_Now = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Text_Level_Now");
//Text_Level_Max = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Text_Level_Max");
//Text_Exp_Now = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Text_Exp_Now");
//Image_LevelBar = GetComponent<Image>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Image_LevelBar");
//Button_LevelPlus = GetComponent<Button>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Button_LevelPlus");
//Button_LevelPlusLimited = GetComponent<Button>("Image_BG/UI_Cultivate_Level/ImageUI_Level_Max/Button_LevelPlusLimited");
//Image_Level_Arrow = GetComponent<Image>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Image_LevelBar/Image_Level_Arrow");
ArrowRadius = -Image_Level_Arrow.GetComponent<RectTransform>().anchoredPosition.y;
//Text_Level_Now = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Text_Level_Now");
//Text_Level_Max = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level/Text_Level_Max");
//Image_LevelBar_Max = GetComponent<Image>("Image_BG/UI_Cultivate_Level/ImageUI_Level_Max/Image_LevelBar_Max");
BindButton(Button_LevelPlus, OnButton_LevelUpClick);
BindButton(Button_LevelPlusLimited, OnButton_RankPlusClick);
//Image_AdvanceLevel = GetComponent<Image>("Image_BG/Image_AdvanceLevel");
//Image_Advance01 = GetComponent<Image>("Image_BG/Image_AdvanceLevel/Image_Advance01");
//Image_Advance02 = GetComponent<Image>("Image_BG/Image_AdvanceLevel/Image_Advance02");
//Image_Advance03 = GetComponent<Image>("Image_BG/Image_AdvanceLevel/Image_Advance03");
//Image_Advance04 = GetComponent<Image>("Image_BG/Image_AdvanceLevel/Image_Advance04");
//Text_Advance = GetComponent<TMP_Text>("Image_BG/Image_AdvanceLevel/Text_Advance");
//Text_AdvanceName = GetComponent<TMP_Text>("Image_BG/Image_AdvanceLevel/Text_AdvanceName");
advanceImageList = new List<Image>
{
Image_Advance01,
Image_Advance02,
Image_Advance03,
Image_Advance04
};
//Image_RankLevel = GetComponent<Image>("Image_BG/Image_RankLevel");
//Button_RankPlus = GetComponent<Button>("Image_BG/Image_RankLevel/Button_RankPlus");
//Image_Rank_01 = GetComponent<Image>("Image_BG/Image_RankLevel/Image_Rank_01");
//Image_Rank_02 = GetComponent<Image>("Image_BG/Image_RankLevel/Image_Rank_02");
//Image_Rank_03 = GetComponent<Image>("Image_BG/Image_RankLevel/Image_Rank_03");
//Image_Rank_04 = GetComponent<Image>("Image_BG/Image_RankLevel/Image_Rank_04");
//Text_Rank = GetComponent<TMP_Text>("Image_BG/Image_RankLevel/Text_Rank");
//Text_RankName = GetComponent<TMP_Text>("Image_BG/Image_RankLevel/Text_RankName");
rankImageList = new List<Image>
{
Image_Rank_01,
Image_Rank_02,
Image_Rank_03,
Image_Rank_04
};
//Image_UI_Cultivate_ActiveSkill = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill");
//Image_SkillLogo = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Image_SkillLogo");
//Image_UI_SkillCd = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Image_SkillLogo/Image_UI_SkillCd");
//Text_CDSecond = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Image_SkillLogo/Image_UI_SkillCd/Text_CDSecond");
//Text_CDTme = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Image_SkillLogo/Image_UI_SkillCd/Text_CDTme");
//Button_SkillPlus = GetComponent<Button>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Button_SkillPlus");
//Text_ActiveSkill = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Text_ActiveSkill");
//Text_ActiveSkillName = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Text_ActiveSkillName");
//Text_PassiveSkill = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Text_PassiveSkill");
//Image_UI_Cultivate_ActiveSkill_Open = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open");
//Image_Max = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Image_Max");
//Image_SkillLogo_Open = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Image_SkillLogo_Open");
//Image_SkillCd_Open = GetComponent<Image>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Image_SkillLogo_Open/Image_SkillCd_Open");
//Text_CDTmeOpen = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Image_SkillLogo_Open/Image_SkillCd_Open/Text_CDTme");
//Text_CDSecond = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Image_SkillLogo_Open/Image_SkillCd_Open/Text_CDSecond");
//Button_SkillPlus_Open = GetComponent<Button>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Button_SkillPlus_Open");
//Text_ActiveSkill = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Text_ActiveSkill");
//Text_ActiveSkillNameOpen = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Text_ActiveSkillName");
//Text_ActiveSkill_InfoOpen = GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Text_ActiveSkill_Info");
//BindButton(Button_ActiveSK_Arrow, OnButton_ActiveSK_ArrowClick);
BindButton(Button_SkillPlus, OnButton_SkillPlusClick);
BindButton(Button_SkillPlus_Open, OnButton_SkillPlusClick);
//Button_Back = GetComponent<Button>("Image_BG/Button_Back/Button_back");
BindButton(Button_back, OnButton_BackClick);
//Button_Look = GetComponent<Button>("Image_BG/Image_Cultivate_BG_Black/Button_Look");
//Button_ChangeSuit = GetComponent<Button>("Image_BG/Image_Cultivate_BG_Black/Button_ChangeSuit");
BindButton(Button_AttributeInfo, OnButton_AttriClick);
BindButton(Button_Look, OnButton_LookClick);
BindButton(Button_RankPlus, OnButton_RankPlusClick);
BindButton(Button_ChangeSuit, OnButton_ChangeSuit);
Button_Awake = GetComponent<Button>("Image_BG/Image_AdvanceLevel/AwakePlusBtn");
BindButton(Button_Awake, OnButton_Awake);
//BindButton(Button_ActiveSK_ArrowClose, OnButton_ActiveSK_ArrowCloseClick);
FindObj("Image_BG/Image_GroupLogo");
BindButton(GetComponent<Button>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/EmptyButton"),
OnButton_ActiveSK_ArrowClick);
BindButton(GetComponent<Button>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/EmptyButton"),
OnButton_ActiveSK_ArrowCloseClick);
UI_Cultivate_LevelObj = FindObj("Image_BG/UI_Cultivate_Level");
Image_AdvanceLevelObj = FindObj("Image_BG/Image_AdvanceLevel");
Image_RankLevelObj = FindObj("Image_BG/Image_RankLevel");
UI_Cultivate_ActSkObj = FindObj("Image_BG/UI_Cultivate_ActSk");
Button_Home = GetComponent<Button>("Image_BG/Button_Back/Button_Home");
BindButton(Button_Home, OnClickHome);
RegisterEvent();
if (!isShowParticleAnim)
{
FindObj("Image_CultivateBG/grow_heidishan").SetActive(false);
}
PlayFx();
}
protected override void OnShowWindow(object info = null)
{
//Button_Look.gameObject.SetActive(false);
//Button_ChangeSuit.gameObject.SetActive(false);
UISelectCharacterController.CultivateStruct newInfo = info as UISelectCharacterController.CultivateStruct;
if (newInfo != null)
{
SetCharaInfoInOpen(newInfo.info, newInfo.showList);
for (int i = 0; i < newInfo.showList.Count; i++)
{
if (newInfo.showList[i].ID == newInfo.info.ID)
{
mCurIndex = i;
break;
}
}
}
ControllInput(true);
RefreshActiveSkillBtn(false);
}
private async void PlayFx()
{
RefreshActiveSkillBtn(false);//动画播放时默认关闭技能详情界面
if (isShowParticleAnim)
AudioManager.Instance.PlayAudio(Framework.Constants.Sound.SELECT_CHARACTER);
PlayAnimation(GetComponent<Animator>(("Image_CultivateBG")), "MainDefault Animation");
PlayAnimation(GetComponent<Animator>(), "Line And Document Animation");
GetComponent<Animator>().speed = 0;
GetComponent<Animator>().Update(0);
UI_Cultivate_LevelObj.SetActive(false);
Image_AdvanceLevelObj.SetActive(false);
Image_RankLevelObj.SetActive(false);
UI_Cultivate_ActSkObj.SetActive(false);
FindObj("Image_BG/Image_NameInfo").SetActive(false);
await WaitTimeForFx();
//StartCoroutine(_coroutine);
}
private async UniTask WaitTimeForFx()
{
await UniTask.Delay(isShowParticleAnim ? 1000 : 10);
if (!IsShow() || !IsCreated())
{
return;
}
OpenLeftChildUI(mCurLeftUICharacterType);
UI_Cultivate_LevelObj.SetActive(true);
Image_AdvanceLevelObj.SetActive(true);
Image_RankLevelObj.SetActive(true);
UI_Cultivate_ActSkObj.SetActive(true);
FindObj("Image_BG/Image_NameInfo").SetActive(true);
Animator animator = GetComponent<Animator>();
PlayAnimation(animator, "MoveIn");
//PlayAnimation(GetComponent<Animator>(("Image_BG/UI_Cultivate_Level")), "Cultivate_LevelChangeIn");
//PlayAnimation(GetComponent<Animator>(("Image_BG/Image_AdvanceLevel")), "Advance_ChangeIn");
//PlayAnimation(GetComponent<Animator>(("Image_BG/Image_RankLevel")), "Rank_LevelChangeIn");
//PlayAnimation(GetComponent<Animator>(("Image_BG/UI_Cultivate_ActSk")), "ActSk_ChangeIn");
//PlayAnimation(GetComponent<Animator>(("Image_CultivateBG")), "MainDefault Animation");
this.GetComponent<Animator>().speed = 1;
PlayAnimation(animator, "Line And Document Animation");
FindObj("Image_CultivateBG/grow_heidishan").SetActive(false);
//Button_Look.gameObject.SetActive(true);
//Button_ChangeSuit.gameObject.SetActive(true);
while (animator != null && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f)
{
await UniTask.Yield();
}
if (animator == null)
{
DebugUtil.LogWarning("animator is null! 可能是由于动画未完成提前关闭了界面导致");
return;
}
EventManager.Instance.Send(EventManager.EventName.UIOpenAndAnim, WindowName);
}
private void OnFingleSwipe(Vector2 delta)
{
if (GuideManager.Instance.IsGuiding)
return;
if (!IsCanChange)
{
return;
}
if (delta.x > 25)
{
OnButton_LeftArrowsClick();
IsCanChange = false;
}//finger drag from left to right
//此时符合拖拽实际效果的应该是向左翻页
else if (delta.x < -25)
{
OnButton_RightArrowsClick();
IsCanChange = false;
}//finger drag from right to left
//此时符合拖拽实际效果的应该是向右翻页
}
//public bool DetectSwipeLeft()
//{
// return fingerDownPosition.x - fingerUpPosition.x > 50f; // 调整阈值以适应您的需求
//}
//public bool DetectSwipeRight()
//{
// return fingerUpPosition.x - fingerDownPosition.x > 50f; // 调整阈值以适应您的需求
//}
public override async UniTask<bool> OnBack(object data = null)
{
ClosePreloadChildUI();
CloseWindow();
return true;
}
/// <summary>
/// 关闭预加载的子UI,由于需要保证动画同步请与界面CloseWindow同时调用
/// </summary>
void ClosePreloadChildUI()
{
//CloseLeftCurChildUI();
UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_ProAndInfo);
UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_Detail);
}
private void RegisterEvent()
{
EventManager.Instance.Register(EventManager.EventName.EN_CharacterLevelUp, (Action<UpgradeType>)OnCharacterLevelup);
EventManager.Instance.Register(EventManager.EventName.EN_ShowAllCharacterOpenDetailUI, OnRecvEventOpenDetailUI);
EventManager.Instance.Register(EventManager.EventName.EN_ShowAllCharacterFavorableUI, OnRecvEventOpenFavorableUI);
EventManager.Instance.Register(EventManager.EventName.EN_ShowAllCharacterOpenBaseAttriUI, OnRecvEventOpenBaseAttriUI);
EventManager.Instance.Register(EventManager.EventName.EN_UIControllCultivateMainInput, (Action<bool>)OnRecvEventControlInput);
EventManager.Instance.Register(EventManager.EventName.ItemUse, OnSkinChange);//物品使用可能是更换皮肤
}
private void OnCharacterLevelup(UpgradeType type)
{
SetCurCharacterData(CharacterDataInfoManager.Instance.GetCharacterInfo(mCurCharaData.ID));//刷新角色数据
switch (type)
{
case UpgradeType.UtLevel:
RefreshLevelBtn();
break;
case UpgradeType.UtAwake:
RefreshAwakeBtn();
RefreshSkillBtn();//觉醒后技能可能会变
break;
case UpgradeType.UtBreak:
RefresshBreakBtn();
RefreshLevelBtn();//突破后等级可能会变
RefreshSkillBtn();//突破后技能可能会变
break;
case UpgradeType.UtUltraSkill:
RefreshSkillBtn();
break;
case UpgradeType.UtNone:
break;
case UpgradeType.UiMax:
break;
default:
DebugUtil.LogError("错误脱离switch");
throw new ArgumentOutOfRangeException(nameof(type), type, null);
}
}
private void OnRecvEventOpenBaseAttriUI()
{
SwitchChildUIForLeft(UILeftCharanterUIType.EbaseAttri);
}
private async void OnRecvEventOpenFavorableUI()
{
await UIFavorableController.Open(mCurCharaData);
ControllInput(false);
}
private void OnRecvEventOpenDetailUI()
{
SwitchChildUIForLeft(UILeftCharanterUIType.EDetailInfo);
}
private void OnSkinChange()
{
SetCurCharacterData(CharacterDataInfoManager.Instance.GetCharacterInfo(mCurCharaData.ID));//刷新角色数据
RefreshMiddle();
}
private void UnRegisterEvent()
{
EventManager.Instance.Unregister(EventManager.EventName.EN_CharacterLevelUp, (Action<UpgradeType>)OnCharacterLevelup);
EventManager.Instance.Unregister(EventManager.EventName.EN_ShowAllCharacterOpenDetailUI, OnRecvEventOpenDetailUI);
EventManager.Instance.Unregister(EventManager.EventName.EN_ShowAllCharacterFavorableUI, OnRecvEventOpenFavorableUI);
EventManager.Instance.Unregister(EventManager.EventName.EN_ShowAllCharacterOpenBaseAttriUI, OnRecvEventOpenBaseAttriUI);
EventManager.Instance.Unregister(EventManager.EventName.EN_UIControllCultivateMainInput, (Action<bool>)OnRecvEventControlInput);
EventManager.Instance.Unregister(EventManager.EventName.ItemUse, OnSkinChange);
}
private void OnRecvEventControlInput(bool isRegister)
{
ControllInput(isRegister);
}
private void ControllInput(bool isRegister)
{
if (isRegisterInput == isRegister)
{
return;
}
isRegisterInput = isRegister;
if (isRegister)
{
InputManager.Instance.OnFingerMoveUI += OnFingleSwipe;
}
else
{
InputManager.Instance.OnFingerMoveUI -= OnFingleSwipe;
}
}
protected override void OnHideWindow()
{
ControllInput(false);
CloseLeftCurChildUI();
//StopAllCoroutines();
}
public override void OnRelease()
{
base.OnRelease();
UnRegisterEvent();
}
float sumTime = 0;
protected override void OnUpdate()
{
if (!IsCanChange)
{
sumTime += Time.deltaTime;
if (sumTime >= 1)
{
IsCanChange = true;
sumTime = 0;
}
}
}
#region button_click
/// <summary>
/// 技能升级
/// </summary>
private async void OnButton_SkillPlusClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
if (mCurCharaData.UltraSkillLevel >= GetSkillMaxLevel())
{
string str = string.Format(CommonUtils.GetLocalizeText("cultivate_UltraSkillMax"),
CommonUtils.GetLocalizeText(E_LocalizePrefix.skill, nowSkillCfg.ID));
CommonUtils.ShowMessageTips(str);
return;
}
await UISkill_LevelUpController.Open(mCurCharaData);
ControllInput(false);
}
/// <summary>
/// 技能展开
/// </summary>
private void OnButton_ActiveSK_ArrowClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
if (mCurCharaData.HasPassiveSkillCount() != 0)
{
PlayAnimation(this.GetComponent<Animator>(), "Open ActiveSkill Animation");
}
RefreshActiveSkillBtn(true);
}
/// <summary>
/// 技能关闭
/// </summary>
private void OnButton_ActiveSK_ArrowCloseClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
if (mCurCharaData.HasPassiveSkillCount() != 0)
{
PlayAnimation(this.GetComponent<Animator>(), "Open ActiveSkill Back Animation");
}
RefreshActiveSkillBtn(false);
}
private void OnButton_BackClick()
{
#region 释放预加载
ClosePreloadChildUI();
#endregion
CloseWindow();
}
private async void OnButton_AttriClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
await UI_CultivateDetailNewController.Open(mCurCharaData);
ControllInput(false);
}
/// <summary>
/// 查看当前立绘与模型
/// </summary>
private async void OnButton_LookClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
await UIPosterController.Open(mCurCharaData);
ControllInput(false);
}
/// <summary>
/// 更换皮肤
/// </summary>
private async void OnButton_ChangeSuit()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
await SkinChangeController.Open(mCurCharaData);
ControllInput(false);
}
/// <summary>
/// 升级界面
/// </summary>
private async void OnButton_LevelUpClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
await UILevelUpController.Open(mCurCharaData);
ControllInput(false);
}
/// <summary>
/// BreakLevel升级界面
/// </summary>
private async void OnButton_RankPlusClick()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
if (mCurCharaData.BreakLevel >= mCurCharaData.GetMaxBreakLevel())
{
CommonUtils.ShowMessageTips(CommonUtils.GetLocalizeText("cultivate_BreakPassiveSkillMax"));
return;
}
await UIRankController.Open(mCurCharaData);
ControllInput(false);
}
/// <summary>
/// AwakeLevel升级界面
/// </summary>
private async void OnButton_Awake()
{
AudioManager.Instance.PlayAudio(Constants.Sound.COMMON_CLICK);
if (mCurCharaData.AwakeLevel >= mCurCharaData.GetMaxAwakeLevel())
{
CommonUtils.ShowMessageTips(CommonUtils.GetLocalizeText("cultivate_AwakePassiveSkill"));
return;
}
await UIAdvanceController.Open(mCurCharaData);
ControllInput(false);
}
private async void OnClickHome()
{
#region 释放预加载
ClosePreloadChildUI();
#endregion
CommonUtils.BackToHome();
}
#endregion
public void SetCharaInfoInOpen(CharacterDataInfo info, List<CharacterDataInfo> mInfos)
{
PreLoadCfg();
GetStorageCharacterDataInfo(mInfos);
SetCurCharacterData(info);
RefreshLeft();
RefreshMiddle();
RefreshRight();
SetFingerMove();
var id = info.ID;
if (CharacterDataHelper.IsNewCharacter((int)id))
{
NetHelper.CheckCharacter((int)id);
}
}
private void SetFingerMove()
{
}
private void OnFingerEvent(Vector2 delta)
{
}
private void PreLoadCfg()
{
characterAttriCfg = TableManager.Instance.Tables.CharacterAttri;
characterBreakCfg = TableManager.Instance.Tables.CharacterBreak;
LevelExpCfg = TableManager.Instance.Tables.CharacterLevelExp;
skillConfig = TableManager.Instance.Tables.SkillConfig;
characterSkillLevelCfg = TableManager.Instance.Tables.CharacterSkillLevel;
factionAttriCfg = TableManager.Instance.Tables.FactionAttri;
jobAttriCfg = TableManager.Instance.Tables.JobAttri;
}
private void RefreshLeft()
{
RefreshFavorableInfo();
RefreshBasicInfo();
//SetCommanderTeamJob();
}
private async void RefreshMiddle()
{
var imgPath =
CommonUtils.GetCharacterPicPath(mCurCharaData.Cfg.RoleID, CommonUtils.ECharacterPicPathType.Cultivate, (int)mCurCharaData.SkinID);
var sprite = await LoadAssetAsync<Sprite>(imgPath);
CommonUtils.RefreshCharacter2DPic(character2dPic, sprite);
Text_CharacterName.text = CommonUtils.GetCharacterName(mCurCharaData.Cfg.RoleID);
Text_CommandCost.text = mCurCharaData.SpendLeadership().ToString();
string fractionPath = factionAttriCfg.GetOrDefault((int)(characterAttriCfg.Get(mCurCharaData.Cfg.RoleID).FacIcon)).IconPath;
GetComponent<Image>("Image_BG/Image_GroupLogo").sprite =
await LoadAssetAsync<Sprite>(fractionPath);
var flagPath = "Assets/Art/UI/Texture/Icon/CharacterRegion/" + factionAttriCfg.GetOrDefault((int)(characterAttriCfg.Get(mCurCharaData.Cfg.RoleID).FacIcon)).FlagPicPath;
GetComponent<Image>("Image_BG/Image_CharacterRegion").sprite =
await LoadAssetAsync<Sprite>(flagPath);
string jobPath = jobAttriCfg.Get((int)(characterAttriCfg.Get(mCurCharaData.Cfg.RoleID).Job)).IconPath;
Image_Profession_Logo.sprite = await LoadAssetAsync<Sprite>(jobPath);
for (int i = 0; i < 4; i++)
{
GameObject tempStar = FindObj(string.Format("Image_BG/Image_NameInfo/Star/{0}", i + 1));
if ((i + 2) <= mCurCharaData.Cfg.StartStar)
{
tempStar.SetActive(true);
}
else
{
tempStar.SetActive(false);
}
}
}
private void RefreshRight()
{
RefreshLevelBtn();
RefresshBreakBtn();
RefreshAwakeBtn();
RefreshSkillBtn();
}
private void RefreshActiveSkillBtn(bool isActive = false)
{
GameObject skillObj = FindObj("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill");
GameObject openObj = FindObj("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open");
skillObj.SetActive(!isActive);
openObj.SetActive(isActive);
}
private async void RefreshSkillBtn()
{
RefreshActiveSkillBtn();
nowSkillCfg = skillConfig.Get(CharacterDataHelper.GetCharacterSkillId(mCurCharaData));
if (nowSkillCfg == null)
{
DebugUtil.LogError($"技能表找不到对应配置RoleID:{mCurCharaData.ID}");
}
List<showSkillBar> showSkillBars = new List<showSkillBar>();
if (mCurCharaData.GetBreakPassiveId() != 0)
{
showSkillBars.Add(new showSkillBar(TableManager.Instance.Tables.SkillConfig.GetOrDefault(mCurCharaData.GetBreakPassiveId()), true));
}
if (mCurCharaData.GetAwakePassiveId() != 0)
{
showSkillBars.Add(new showSkillBar(TableManager.Instance.Tables.SkillConfig.GetOrDefault(mCurCharaData.GetAwakePassiveId()), false));
}
Text_CDTme.text = nowSkillCfg.ChargeParam.ToString();
Image_Max.gameObject.SetActive(mCurCharaData.UltraSkillLevel >= mCurCharaData.GetMaxUltralSkillLevel());
Text_ActiveSkillName.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill, nowSkillCfg.ID);
Image_SkillLogo.sprite = await LoadAssetAsync<Sprite>(Framework.Constants.UI_Cultivata_skillIconFolder + nowSkillCfg.IconPath);
for (int i = 0; i < 2; i++)
{
GameObject obj = FindObj(string.Format("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/passive/{0}", (i + 1).ToString()));
if (i < showSkillBars.Count)
{
obj.SetActive(true);
//CommonUtils.GetComponent<TMP_Text>(obj, "skillName").text = CommonUtils.GetLocalizeText((showSkillBars[i].Cfg.Name));
string colorSprStr;
if (showSkillBars[i].IsBreak)
{
colorSprStr = "Assets/Art/UI/Texture/UI_Pic_Main/UI_Pic_CultivateAll/UI_SkillLevelUp/UI_Blue.png";
}
else
{
colorSprStr = "Assets/Art/UI/Texture/UI_Pic_Main/UI_Pic_CultivateAll/UI_SkillLevelUp/UI_Brown.png";
}
obj.GetComponent<Image>().sprite = await LoadAssetAsync<Sprite>(colorSprStr);
}
else
{
obj.SetActive(false);
}
}
GetComponent<TMP_Text>("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill/Text_Class/Text_Class_Value").text = CommonUtils.GetRomanCode((int)mCurCharaData.UltraSkillLevel);
//不考虑被动技能没有的情况,后面加
bool isShow = mCurCharaData.UltraSkillLevel >= mCurCharaData.GetMaxUltralSkillLevel();
CommonUtils.GetGameObject(Image_UI_Cultivate_ActiveSkill_Open.gameObject, "Image_Max_Open").SetActive(isShow);
Image_SkillLogo_Open.sprite = await LoadAssetAsync<Sprite>(Framework.Constants.UI_Cultivata_skillIconFolder + nowSkillCfg.IconPath);
Text_CDTme_Open.text = nowSkillCfg.ChargeParam.ToString();
Text_ActiveSkillName_Open.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill, nowSkillCfg.ID);
Text_ActiveSkill_Info.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.skill_desc, nowSkillCfg.ID);
//GameObject sumObj = FindObj("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open/Text_ActiveSkill_Info/Text_PassiveSkill");
var awakenSkillGo = CommonUtils.GetGameObject(Text_PassiveSkill_Open.gameObject, "1");
var breakSkillGo = CommonUtils.GetGameObject(Text_PassiveSkill_Open.gameObject, "2");
awakenSkillGo.GetComponent<Image>().sprite = await LoadAssetAsync<Sprite>(
"Assets/Art/UI/Texture/UI_Pic_Main/UI_Pic_CultivateAll/UI_SkillLevelUp/UI_Blue.png");
breakSkillGo.GetComponent<Image>().sprite = await LoadAssetAsync<Sprite>
("Assets/Art/UI/Texture/UI_Pic_Main/UI_Pic_CultivateAll/UI_SkillLevelUp/UI_Brown.png");
CommonUtils.GetGameObject(awakenSkillGo, "tip").SetActive(mCurCharaData.AwakeLevel < mCurCharaData.GetMaxAwakeLevel());
CommonUtils.GetGameObject(breakSkillGo, "tip").SetActive(mCurCharaData.BreakLevel < mCurCharaData.GetMaxBreakLevel());
var txtSkillNameBreak = CommonUtils.GetComponent<TMP_Text>(breakSkillGo, "skillName");
var txtSkillDescBreak = CommonUtils.GetComponent<TMP_Text>(breakSkillGo, "skillinfo");
var txtAwakenNameBreak = CommonUtils.GetComponent<TMP_Text>(awakenSkillGo, "skillName");
var txtAwakenDescBreak = CommonUtils.GetComponent<TMP_Text>(awakenSkillGo, "skillinfo");
var skillGo = CommonUtils.GetGameObject(Image_UI_Cultivate_ActiveSkill.gameObject, "passive");
var txtBreakName = CommonUtils.GetComponent<TMP_Text>(skillGo, "2/skillName");
var txtAwakenName = CommonUtils.GetComponent<TMP_Text>(skillGo, "1/skillName");
var breakPassiveID = mCurCharaData.BreakCfg.PassiveSkillID;
var breakSkillCfg = TableManager.Instance.Tables.PassiveSkillConfig.Get(breakPassiveID);
if (breakSkillCfg == null)
{
DebugUtil.LogError("breakPassive ID 不存在!! ID: " + breakPassiveID);
}
else
{
txtSkillNameBreak.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, breakPassiveID);
txtSkillDescBreak.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkillDesc, breakPassiveID);
txtBreakName.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, breakPassiveID);
}
var awakenPassiveID = mCurCharaData.AwakeCfg.PassiveSkillID;
var awakenSkillCfg = TableManager.Instance.Tables.PassiveSkillConfig.Get(awakenPassiveID);
if (awakenSkillCfg == null)
{
DebugUtil.LogError("awakenPassive ID 不存在!! ID: " + awakenPassiveID);
}
else
{
txtAwakenNameBreak.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, awakenPassiveID);
txtAwakenDescBreak.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkillDesc, awakenPassiveID);
txtAwakenName.text = CommonUtils.GetLocalizeText(E_LocalizePrefix.PassiveSkill, awakenPassiveID);
}
GameObject skillPanelObj = FindObj("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open");
float wholeBarHeight = 0;
switch (showSkillBars.Count)
{
case 0:
wholeBarHeight = 198.16f;
skillPanelObj.GetComponent<RectTransform>().localPosition = new Vector3(1, -134.08f, 0);
Text_PassiveSkill_Open.gameObject.SetActive(false);
break;
case 1:
wholeBarHeight = 410.35f;
skillPanelObj.GetComponent<RectTransform>().localPosition = new Vector3(1, -33f, 0);
Text_PassiveSkill_Open.gameObject.SetActive(true);
break;
case 2:
wholeBarHeight = 617.44f;
skillPanelObj.GetComponent<RectTransform>().localPosition = new Vector3(1, -33f, 0);
Text_PassiveSkill_Open.gameObject.SetActive(true);
break;
}
FindObj(string.Format("Image_BG/UI_Cultivate_ActSk/Image_UI_Cultivate_ActiveSkill_Open")).GetComponent<RectTransform>().sizeDelta = new Vector2(598, wholeBarHeight);
Text_Class_Value_Open.text = CommonUtils.GetRomanCode((int)mCurCharaData.UltraSkillLevel);
}
struct showSkillBar
{
public DataSkill Cfg;
public bool IsBreak;
public showSkillBar(DataSkill cfg, bool v) : this()
{
Cfg = cfg;
this.IsBreak = v;
}
}
int GetSkillMaxLevel()
{
int maxlevel = 0;
for (int i = 0; i < characterSkillLevelCfg.DataList.Count; i++)
{
DataCharacterSkillLevel skillLevelCfg = characterSkillLevelCfg.DataList[i];
if (skillLevelCfg.RoleID == mCurCharaData.Cfg.RoleID)
{
if (skillLevelCfg.SkillLevel > maxlevel)
{
maxlevel = skillLevelCfg.SkillLevel;
}
}
}
return maxlevel;
}
private void RefreshFavorableInfo()
{
var characterLikabilityCfg = TableManager.Instance.Tables.CharacterLikability;
int nowExp = (int)mCurCharaData.LikelyExp;
var likelyCfg = characterLikabilityCfg.Get((int)mCurCharaData.ID, (int)mCurCharaData.LikelyLevel + 1);
Text_FavorRankNumber.text = mCurCharaData.LikelyLevel.ToString();
Text_FavorNumber.text = "-/-";
Image_Favor.GetComponentInChildren<Slider>().value = 1f;
if (likelyCfg == null)
{
DebugUtil.Log($"好感表配置有误角色ID:{mCurCharaData.ID},好感度等级:{mCurCharaData.LikelyLevel + 1}");
return;
}
int fullExp = likelyCfg.LikabilityExp;
Text_FavorNumber.text = nowExp + "/" + fullExp;
Image_Favor.GetComponentInChildren<Slider>().value = (float)nowExp / (float)fullExp;
}
private void RefreshBasicInfo()
{
Text_AttriHpNumber.text = mCurCharaData.HP().ToString();
Text_AttriBulletAttack.text = mCurCharaData.Attack().ToString();
Text_AttriBulletCapacity.text = mCurCharaData.BulletCapacity().ToString();
Text_AttriShiledfNumber.text = mCurCharaData.Armor().ToString();
Text_AttriDefNumber.text = mCurCharaData.Defence().ToString();
Text_AttriMoveNumber.text = mCurCharaData.MoveSpeed().ToString();
Text_AttriSoliNumber.text = mCurCharaData.Cfg.MaxMorale.ToString();
Text_AttriWeapom.text = mCurCharaData.WeaponName();
Text_AttriProfiNumber.text = string.Format("{0}%", (int)(mCurCharaData.WeaponDegree() * 100));
//var jobCfg = jobAttri.Get((int)mCharacterInfo.Cfg.Job);
//if (jobCfg == null)
//{
// DebugUtil.LogError($"职业配置为空RoleID:{mCharacterInfo.ID}");
//}
//else
// Text_Profession_Info.text = CommonUtils.GetLocalizeText(jobCfg.DisplayName);
var factionAttri = TableManager.Instance.Tables.FactionAttri;
var armyAttri = TableManager.Instance.Tables.ArmyAttri;
var factionCfg = factionAttri.Get((int)CommonUtils.GetEfactionByCfg(mCurCharaData.Cfg));
Text_AttriBelong.text = mCurCharaData.CharacterBelong();
var distanceScale = mCurCharaData.Cfg.ShootDistanceScale;
foreach (Transform child in ScrollView_DistanceScale.content.transform)
{
child.gameObject.SetActive(false);
}
for (int i = 0; i < distanceScale.Count; i++)
{
GameObject item = null;
if (i < ScrollView_DistanceScale.content.transform.childCount)
item = ScrollView_DistanceScale.content.transform.GetChild(i)?.gameObject;
else
item = Instantiate(ScrollView_DistanceScale.itemTemplate.gameObject, ScrollView_DistanceScale.content);
item.gameObject.SetActive(true);
CommonUtils.GetComponent<TMP_Text>(item, "Bg/Text (TMP)").text = distanceScale[i].ToString();
}
SetCommanderTeamJob();
}
void SetCommanderTeamJob()
{
List<ProvideJob> provideJobs = null;
if (mCurCharaData.Cfg.Job == Ejob.Job_Commander)
{
provideJobs = CharacterDataInfoManager.Instance.GetCommanderProvideJobs(mCurCharaData.ID);
}
var parent = GetComponent<PhxhSDK.PhxhScrollView>("AttributeNode/ScrollView").content;
foreach (Transform child in parent.transform)
{
Destroy(child.gameObject);
}
if (provideJobs != null)
{
foreach (var job in provideJobs)
{
switch (job)
{
case ProvideJob.ProvideJob_Support:
GameObject cloneJob1 = Instantiate(FindObj("AttributeNode/ScrollView/Viewport/Item1").gameObject, parent.transform);
cloneJob1.gameObject.SetActive(true);
break;
case ProvideJob.ProvideJob_Shoot:
GameObject cloneJob2 = Instantiate(FindObj("AttributeNode/ScrollView/Viewport/Item2").gameObject, parent.transform);
cloneJob2.gameObject.SetActive(true);
break;
case ProvideJob.ProvideJob_Scout:
GameObject cloneJob3 = Instantiate(FindObj("AttributeNode/ScrollView/Viewport/Item3").gameObject, parent.transform);
cloneJob3.gameObject.SetActive(true);
break;
case ProvideJob.ProvideJob_Suppress:
GameObject cloneJob4 = Instantiate(FindObj("AttributeNode/ScrollView/Viewport/Item4").gameObject, parent.transform);
cloneJob4.gameObject.SetActive(true);
break;
case ProvideJob.ProvideJob_Unlimited:
GameObject cloneJob5 = Instantiate(FindObj("AttributeNode/ScrollView/Viewport/Item5").gameObject, parent.transform);
cloneJob5.gameObject.SetActive(true);
break;
case ProvideJob.ProvideJob_Vehicle:
GameObject cloneJob6 = Instantiate(FindObj("AttributeNode/ScrollView/Viewport/Item6").gameObject, parent.transform);
cloneJob6.gameObject.SetActive(true);
break;
}
}
}
}
private async void RefreshAwakeBtn()
{
var awakeCfg =
TableManager.Instance.Tables.CharacterAwaking.Get(mCurCharaData.Cfg.RoleID, (int)mCurCharaData.AwakeLevel);
for (int i = 0; i < Constants.ADVANCE_FLAG_UI; i++)
{
int level = i + 1;//从等级1开始计算觉醒标记
if (level < mCurCharaData.AwakeLevel)//已达成觉醒等级
{
var table = TableManager.Instance.Tables.CharacterAwaking.Get(mCurCharaData.Cfg.RoleID, level);
if (table == null)
{
DebugUtil.LogError($"觉醒表未配置iconRoleID: {mCurCharaData.Cfg.RoleID}");
return;
}
var path = table.IconDarkPath;
var pathList = path.Split('_').ToList();
pathList.Insert(pathList.Count - 1, "NoName");
var NoNameIconPath = string.Join("_", pathList);
advanceImageList[i].sprite = await LoadAssetAsync<Sprite>(Constants.UI_Cultivata_AwakeIconFolder + NoNameIconPath);
advanceImageList[i].gameObject.SetActive(true);
}
else if (level == mCurCharaData.AwakeLevel)//当前最高等级,标签高亮
{
var table = TableManager.Instance.Tables.CharacterAwaking.Get(mCurCharaData.Cfg.RoleID, level);
if (table == null)
{
DebugUtil.LogError($"觉醒表未配置iconRoleID: {mCurCharaData.Cfg.RoleID}");
return;
}
var path = table.IconLightPath;
advanceImageList[i].sprite = await LoadAssetAsync<Sprite>(Constants.UI_Cultivata_AwakeIconFolder + path);
advanceImageList[i].gameObject.SetActive(true);
}
else//尚未觉醒进度
{
//var table = TableManager.Instance.Tables.CharacterAwaking.Get(mCurCharaData.Cfg.RoleID, level);
//if (table == null)
//{
// DebugUtil.LogError($"觉醒表未配置iconRoleID: {mCurCharaData.Cfg.RoleID}");
// return;
//}
//var path = table.IconDarkPath;
//advanceImageList[i].sprite = await LoadAssetAsync<Sprite>(Constants.UI_Cultivata_AwakeIconFolder + path);
advanceImageList[i].gameObject.SetActive(false);
}
}
Text_AdvanceName.text = CommonUtils.GetLocalizeText(awakeCfg.Name);
var redPoint = GetComponent<RedPointUIController>("Image_BG/Image_AdvanceLevel/UI_RedPoint");//.NodeID = mCurCharaData.CharacterAwakingNode.ID;
redPoint.NodeID = CharacterDataInfoManager.Instance.GetCharacterInfo(mCurCharaData.ID).CharacterAwakingNode.ID;
}
private async void RefresshBreakBtn()
{
int maxBreakLevel = mCurCharaData.GetMaxBreakLevel();
DataCharacterBreak breakCfg = characterBreakCfg.Get(mCurCharaData.Cfg.RoleID, (int)mCurCharaData.BreakLevel);
//Button_RankPlus.gameObject.SetActive(!(mCurCharaData.BreakLevel == maxBreakLevel));
//Image_Rank_04.gameObject.SetActive(mCurCharaData.BreakLevel == maxBreakLevel);
int startlv = 0;
if (mCurCharaData.BreakLevel >= maxBreakLevel)
{
startlv = (int)mCurCharaData.BreakLevel - Constants.BREAK_FLAG_UI + 1;
}
else if (mCurCharaData.BreakLevel <= Constants.BREAK_FLAG_UI)
{
startlv = 1;
}
else
{
startlv = (int)mCurCharaData.BreakLevel - Constants.BREAK_FLAG_UI + 1;
}
for (int i = 0; i < Constants.BREAK_FLAG_UI; i++)
{
if ((startlv + i) <= mCurCharaData.BreakLevel)
{
var table = characterBreakCfg.Get(mCurCharaData.Cfg.RoleID, (startlv + i));
if (table == null)
{
DebugUtil.LogError($"突破表未配置iconRoleID: {mCurCharaData.Cfg.RoleID}");
return;
}
var cfgPath = table.IconPathLight;
rankImageList[i].sprite = await LoadAssetAsync<Sprite>(Constants.UI_Cultivata_BreakIconFolder + cfgPath);
CommonUtils.SetImageGrayByChangeColor(rankImageList[i], false);
}
else
{
var table = characterBreakCfg.Get(mCurCharaData.Cfg.RoleID, (startlv + i));
if (table == null)
{
DebugUtil.LogError($"突破表未配置iconRoleID: {mCurCharaData.Cfg.RoleID}");
return;
}
var cfgPath = table.IconPathLight;
rankImageList[i].sprite = await LoadAssetAsync<Sprite>(Constants.UI_Cultivata_BreakIconFolder + cfgPath);
CommonUtils.SetImageGrayByChangeColor(rankImageList[i], true);
}
}
Text_RankName.text = CommonUtils.GetLocalizeText(breakCfg.Name);
}
private void RefreshLevelBtn()
{
uint nowLevel = mCurCharaData.Level;
DataCharacterBreak dataCharacterBreak = characterBreakCfg.Get(mCurCharaData.Cfg.RoleID, (int)mCurCharaData.BreakLevel);
if (dataCharacterBreak == null)
{
DebugUtil.LogError("获取配置表失败");
return;
}
int maxLevel = dataCharacterBreak.LevelLimit;
try
{
if (nowLevel == maxLevel)
{
FindObj("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level").SetActive(false);
FindObj("Image_BG/UI_Cultivate_Level/ImageUI_Level_Max").SetActive(true);
if (mCurCharaData.BreakLevel < mCurCharaData.GetMaxBreakLevel())
{
Button_LevelPlusLimited.gameObject.SetActive(true);
}
else
{
Button_LevelPlusLimited.gameObject.SetActive(false);
}
Image_LevelBar_Max.fillAmount = 1;
Image_Level_Arrow.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -ArrowRadius);
Image_Level_Arrow.transform.rotation = Quaternion.identity;
Text_Level_Now_Full.text = nowLevel.ToString();
Text_Level_Max_Full.text = nowLevel.ToString();
}
else
{
FindObj("Image_BG/UI_Cultivate_Level/ImageUI_Cultivate_Level").SetActive(true);
FindObj("Image_BG/UI_Cultivate_Level/ImageUI_Level_Max").SetActive(false);
float fillAmount = (float)mCurCharaData.Exp / LevelExpCfg.Get((int)nowLevel + 1).EXP;
Image_LevelBar.fillAmount = fillAmount;//(float)mCurCharaData.Level / (float)characterBreakCfg.Get(mCurCharaData.Cfg.RoleID, (int)mCurCharaData.BreakLevel).LevelLimit;
var angle = -360 * fillAmount;
Image_Level_Arrow.transform.rotation = Quaternion.Euler(0, 0, angle);
float posX = Mathf.Sin(angle * Mathf.Deg2Rad) * ArrowRadius;
float posY = -Mathf.Cos(angle * Mathf.Deg2Rad) * ArrowRadius;
Image_Level_Arrow.GetComponent<RectTransform>().anchoredPosition = new Vector2(posX, posY);
Text_Level_Now.text = nowLevel.ToString();
Text_Level_Max.text = "/" + maxLevel.ToString();
Text_Exp_Now.text = "<color=#ADAF30>" + mCurCharaData.Exp.ToString() + "</color>" + "/" + LevelExpCfg.Get((int)nowLevel + 1).EXP.ToString();
}
}
catch (Exception e)
{
//ignore
}
}
void SetCurCharacterData(CharacterDataInfo dataInfo)
{
mCurCharaData = dataInfo;
}
void RefreshCurCharacterDataInfo(int index)
{
mCurCharaData = characterDataInfos[index];
var id = mCurCharaData.ID;
if (CharacterDataHelper.IsNewCharacter((int)id))
{
NetHelper.CheckCharacter((int)id);
}
}
void GetStorageCharacterDataInfo(List<CharacterDataInfo> dataInfos)
{
characterDataInfos.Clear();
characterDataInfos.AddRange(dataInfos);
if (characterDataInfos.Count == 0)
{
DebugUtil.LogError("当前人物列表为空,请检查配置");
}
}
private async void OnButton_RightArrowsClick()
{
int nowIndex = ReturnCorrectCharacterIndex(mCurIndex + 1);
mCurIndex = nowIndex;
RefreshCurCharacterDataInfo(mCurIndex);
RefreshChildUIForLeft();
RefreshActiveSkillBtn(false);//动画播放时默认关闭技能详情界面
PlayChangeOutLeftAnimation();
await RefreshAfterAniChangeOutLeft();
//StartCoroutine(_coroutine);
}
private int ReturnCorrectCharacterIndex(int index)
{
if (index < 0)
{
index = characterDataInfos.Count - 1;
}
if (index > characterDataInfos.Count - 1)
{
index = 0;
}
return index;
}
private IEnumerator _coroutine;
private async void OnButton_LeftArrowsClick()
{
int nowIndex = ReturnCorrectCharacterIndex(mCurIndex - 1);
mCurIndex = nowIndex;
RefreshCurCharacterDataInfo(mCurIndex);
RefreshChildUIForLeft();
RefreshActiveSkillBtn(false);//动画播放时默认关闭技能详情界面
PlayChangeOutRightAnimation();
await RefreshAfterAniChangeOutRight();
//StartCoroutine(_coroutine);
}
private async UniTask RefreshAfterAniChangeOutLeft()
{
await UniTask.Delay(500);
if (!gameObject)
{
return;
}
RefreshLeft();
RefreshMiddle();
RefreshRight();
PlayChangeInAnimationLeft();
}
private async UniTask RefreshAfterAniChangeOutRight()
{
await UniTask.Delay(500);
if (!gameObject)
{
return;
}
RefreshLeft();
RefreshMiddle();
RefreshRight();
PlayChangeInAnimationRight();
}
private void PlayChangeInAnimationLeft()
{
// PlayAnimation(GetComponent<Animator>(), "NameInfo_ChangeOut");
GetComponent<Animator>().Play("MoveL_IN", 0, 0);
}
private void PlayChangeInAnimationRight()
{
// PlayAnimation(GetComponent<Animator>(), "NameInfo_ChangeOut");
GetComponent<Animator>().Play("MoveR_IN", 0, 0);
}
private void PlayAnimation(Animator animator, string animationNmae)
{
animator.enabled = true;
animator.Play(animationNmae, 0, 0);
}
private void PlayChangeOutLeftAnimation()
{
GetComponent<Animator>().speed = 1;
PlayAnimation(GetComponent<Animator>(), "MoveL_OUT");
}
private void PlayChangeOutRightAnimation()
{
GetComponent<Animator>().speed = 1;
PlayAnimation(GetComponent<Animator>(), "MoveR_OUT");
}
void SwitchChildUIForLeft(UILeftCharanterUIType uIChracterType)
{
CloseLeftCurChildUI();
OpenLeftChildUI(uIChracterType);
mCurLeftUICharacterType = uIChracterType;
}
void RefreshChildUIForLeft()
{
//switch (mCurLeftUICharacterType)
//{
// case UILeftCharanterUIType.EDetailInfo:
// if (detailWindow != null)
// {
// detailWindow.RefreshOnChangePlay(mCurCharaData);
// }
// break;
// case UILeftCharanterUIType.EbaseAttri:
// if (proAndInfoWindow != null)
// {
// proAndInfoWindow.RefreshOnChangePlay(mCurCharaData);
// }
// break;
// default:
// DebugUtil.LogError("= =常理来说应该走不到这里但是我也不知道为甚么要加但是还是加了reshaper好怪");
// throw new ArgumentOutOfRangeException();
//}
}
void OpenLeftChildUI(UILeftCharanterUIType uIChracterType)//async
{
switch (uIChracterType)
{
case UILeftCharanterUIType.EbaseAttri:
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UI_Cultivate_ProAndInfo, mCurCharaData);
//proAndInfoWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Cultivate_ProAndInfo, mCurCharaData) as UI_Cultivate_ProAndInfoController;
break;
case UILeftCharanterUIType.EDetailInfo:
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UI_Cultivate_Detail, mCurCharaData);
//
//detailWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Cultivate_Detail, mCurCharaData) as UI_Cultivate_DetailController;
break;
default:
DebugUtil.LogError("= =switch语句跳出默认开关");
throw new ArgumentOutOfRangeException(nameof(uIChracterType), uIChracterType, null);
}
}
void CloseLeftCurChildUI()
{
//switch (mCurLeftUICharacterType)
//{
// case UILeftCharanterUIType.EbaseAttri:
// proAndInfoWindow.Hide();
// //UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_ProAndInfo);
// break;
// case UILeftCharanterUIType.EDetailInfo:
// detailWindow.Hide();
// //UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_Detail);
// break;
//
//
// default:
// DebugUtil.LogError("= =switch语句跳出默认开关");
//
// throw new ArgumentOutOfRangeException();
//}
}
}