/// #pkgName FGUI包名 /// #panelName UIPanel名字 /// #UIName = $"{#pkgName}{#panelName}" UIKey名字 /// 该脚本由模板创建 /// created by cb 2024 using FairyGUI; using FL.Data; using System.Collections.Generic; using XGame.Database; using XGame.Framework.UI; namespace FL.FGUI { /// /// UI逻辑处理类 /// /// public partial class PlayerJobInfoSkillNestedCtrl : UIController { private bool _bHideSkillInfo; // 是否需要隐藏技能信息气泡 private List _passiveSkillDataArray; protected override void OnEnable(object intent) { AddUIListenres(); } protected override void OnDisable() { RemoveUIListenres(); VM.SkillInfoNested.Disable(); _passiveSkillDataArray?.Clear(); _passiveSkillDataArray = null; } #region UI事件 private void AddUIListenres() { VM.BackBtn.onClick.Add(OnClickBackBtn); VM.PanelEvent.Add(OnCllickPanel); VM.PassiveSkillList.ItemClickEvent += OnClickPassiveSkillItem; } private void RemoveUIListenres() { VM.BackBtn.onClick.Remove(OnClickBackBtn); VM.PanelEvent.Remove(OnCllickPanel); VM.PassiveSkillList.ItemClickEvent -= OnClickPassiveSkillItem; } /// /// 隐藏技能信息气泡框 /// /// private void OnCllickPanel(EventContext context) { if (_bHideSkillInfo) { ShowSkillInfoGroup(false); } _bHideSkillInfo = true; } private void OnClickBackBtn(EventContext context) { Context.ClosePanel(); } #endregion public void ShowUI(careerTable jobInfo) { _bHideSkillInfo = true; ShowSkillInfoGroup(false); if (jobInfo == null) jobInfo = careerTableRepo.Get(PlayerData.Instance.JobId); if (jobInfo == null) return; VM.JobNameLabel.text = jobInfo.Name; VM.JobTypeLabel.text = jobInfo.Job_pos; VM.JobDescLabel.text = jobInfo.Desc; ShowSkill(jobInfo.Skill); ShowJobPassiveSkillUI(jobInfo.Passive_skill); LoadJobSpine("info_job_1001_1_SkeletonData"); } /// /// 主动技能 /// /// private void ShowSkill(int[] skillIds) { var skillInfo = SkillTableRepo.Get(skillIds[1]); if (skillInfo == null) return; VM.SkillNameLabel.text = skillInfo.Name; VM.SkillDescLabel.text = skillInfo.Desc; VM.ActiveSkillIcon.icon = skillInfo.Icon; VM.SkillCdLabel.text = (skillInfo.RestTime * 0.001f).ToString("F1"); } /// /// 职业被动技能UI /// private void ShowJobPassiveSkillUI(int[] skillIds) { int index = 0; if (_passiveSkillDataArray == null) _passiveSkillDataArray = new List(); for (int i = 0; i < skillIds.Length; i += 2) { _passiveSkillDataArray.Add(new JobSkillParam() { unlockLv = skillIds[i], skillId = skillIds[i + 1], }); index++; } VM.PassiveSkillList.BindDatas(_passiveSkillDataArray); } /// /// 点击的被动技能项 /// /// private void OnClickPassiveSkillItem(int index) { _bHideSkillInfo = false; ShowSkillInfoGroup(true, index, SkillTableRepo.Get(_passiveSkillDataArray[index].skillId)); } /// /// 显示技能弹窗信息UI /// /// /// private void ShowSkillInfoGroup(bool bShow, int index = 0, SkillTable skillInfo = null) { //Log.Debug($"ShowSkillInfoGroup bShow:{bShow} info:{skillInfo != null} Frame:{Time.frameCount}"); if (bShow && skillInfo != null) { var skillParam = new SkillInfoParam() { bShowRightBubble = index > 1, skillInfo = skillInfo }; if (VM.SkillInfoNested.Active) VM.SkillInfoNested.Ctrl.ShowSkillInfo(skillParam); else VM.SkillInfoNested.Enable(skillParam); VM.PosCtrl.selectedIndex = index; } else { VM.SkillInfoNested.Disable(); } } /// /// 加载主角的spine /// /// private void LoadJobSpine(string spineName) { VM.JobSpine.LoadSpine(spineName, "stand", true); } } }