/// #pkgName FGUI包名 /// #panelName UIPanel名字 /// #UIName = $"{#pkgName}{#panelName}" UIKey名字 /// 该脚本由模板创建 /// created by cb 2024 using FairyGUI; using FL.Data; using FL.FGUI; using System.Collections.Generic; using XGame.Database; using XGame.Framework.UI; namespace FL.FGUIP { /// /// UI逻辑处理类 /// /// public partial class PlayerJobCareerPreviewPanelCtrl : UIController { private ScrollPane _scrollPanel; protected override void OnEnable(object intent) { _scrollPanel = VM.JobCareerScrollNested.VM.Scroll; AddUIListenres(); ShowUI(); } protected override void OnDisable() { RemoveUIListenres(); } #region UI事件 private void AddUIListenres() { VM.BackBtn.onClick.Add(OnClickBackBtn); VM.ResetBtn.onClick.Add(OnClickResetBtn); _scrollPanel.onScroll.Add(OnScrollPaneScroll); } private void RemoveUIListenres() { VM.BackBtn.onClick.Remove(OnClickBackBtn); VM.ResetBtn.onClick.Remove(OnClickResetBtn); _scrollPanel.onScroll.Remove(OnScrollPaneScroll); } private void OnClickBackBtn(EventContext context) { Context.ClosePanel(); } private void OnClickResetBtn(EventContext context) { ConfirmationBoxParam dialogParam = new ConfirmationBoxParam() { cnt = StringDefine.resetCareer, onPromiseCallback = ()=> { PlayerService.Instance.SendToResetJob(); Context.ClosePanel(); } }; Context.UI.OpenAsync(UIKeys.CommonConfirmationBox, dialogParam); } #endregion private void ShowUI() { var curJobInfo = careerTableRepo.Get(PlayerData.Instance.JobId); if (curJobInfo != null) { var lvList = new HashSet(); var dataList = careerTableRepo.GetAll(); var preDataList = new List(); // 前置数据(初始职业和10级转职数据) var soldierDataMap = new Dictionary>(); var shooterDataMap = new Dictionary>(); var magicianDataMap = new Dictionary>(); foreach (var item in dataList) { lvList.Add(item.Unlock); if (item.Change_times < 2) { preDataList.Add(item); } else { eAdvanceType advanceType = (eAdvanceType)item.Type; if (item.Careertype == (int)eCareerType.Soldier) { if (soldierDataMap.ContainsKey(advanceType)) { soldierDataMap[advanceType].Add(item); } else { soldierDataMap.Add(advanceType, new List() { item }); } } else if (item.Careertype == (int)eCareerType.Shooter) { if (shooterDataMap.ContainsKey(advanceType)) { shooterDataMap[advanceType].Add(item); } else { shooterDataMap.Add(advanceType, new List() { item }); } } else if (item.Careertype == (int)eCareerType.Magician) { if (magicianDataMap.ContainsKey(advanceType)) { magicianDataMap[advanceType].Add(item); } else { magicianDataMap.Add(advanceType, new List() { item }); } } } } ShowLvTitle(curJobInfo.Unlock, lvList); VM.JobCareerScrollNested.Ctrl.ShowUI(curJobInfo, preDataList, soldierDataMap, shooterDataMap, magicianDataMap); _scrollPanel.SetPercX(0,false); _scrollPanel.SetPercY(0, false); } } /// /// 等级阶段 /// private void ShowLvTitle(int jobLv, HashSet lvList) { var jobLvParamList = new List(); foreach (var item in lvList) { jobLvParamList.Add(new JobLvParam() { lv = item, bJobLv = item == jobLv }); } VM.LvList.BindDatas(jobLvParamList); } /// /// 职业阶段等级UI滚动 /// private void OnScrollPaneScroll() { // 获取当前滚动位置 if (VM.LvList.scrollPane.percX != _scrollPanel.percX) VM.LvList.scrollPane.percX = _scrollPanel.percX; } } }