/// #pkgName FGUI包名 /// #panelName UIPanel名字 /// #UIName = $"{#pkgName}{#panelName}" UIKey名字 /// 该脚本由模板创建 /// created by cb 2024 using System.Collections.Generic; using FairyGUI; using FL.Data; using XGame.Database; using XGame.Framework.UI; namespace FL.FGUI { /// /// UI逻辑处理类 /// /// public partial class PartnerSbStrengthPanelCtrl : UIController { protected override void OnEnable(object intent) { AddUIListenres(); InitView(); _curSelectId = (int)intent; ShowUI(); } protected override void OnDisable() { RemoveUIListenres(); } #region UI事件 private void AddUIListenres() { VM.UpBtn.onClick.Add(OnClickUpBtn); VM.LeftBtn.onClick.Add(OnClickLeftBtn); VM.RightBtn.onClick.Add(OnClickRightBtn); VM.MwSet.VM.PanelEvent.Add(OnClickMwSet); VM.StarUpBtn.VM.PanelEvent.Add(OnClickStarUp); VM.LevelUpBtn.VM.PanelEvent.Add(OnClickLevelUp); VM.DownBtn.onClick.Add(OnClickDownBtn); Context.AddListener(EventDefine.PartnerUpLevel, OnUpInfo); Context.AddListener(EventDefine.PartnerUpStar, OnUpInfo); Context.AddListener(EventDefine.PartnerBinding, OnEpiChange); } private void RemoveUIListenres() { VM.UpBtn.onClick.Remove(OnClickUpBtn); VM.LeftBtn.onClick.Remove(OnClickLeftBtn); VM.RightBtn.onClick.Remove(OnClickRightBtn); VM.MwSet.VM.PanelEvent.Remove(OnClickMwSet); VM.StarUpBtn.VM.PanelEvent.Remove(OnClickStarUp); VM.LevelUpBtn.VM.PanelEvent.Remove(OnClickLevelUp); VM.DownBtn.onClick.Remove(OnClickDownBtn); Context.RemoveListener(EventDefine.PartnerUpLevel, OnUpInfo); Context.RemoveListener(EventDefine.PartnerUpStar, OnUpInfo); Context.RemoveListener(EventDefine.PartnerBinding, OnEpiChange); } private void OnClickDownBtn(EventContext eventContext) { PartnersService.Instance.RequestPartnerDownNew(_curSelectId); Context.ClosePanel(); } public void OnEpiChange(int eventId, object args) { ShowEpi(); } private void OnUpInfo(int eventId, object args) { ShowInfo(); } private void OnClickLevelUp() { var attr = PartnersData.Instance.GetPartnerAttrByTableId(_curSelectId); var level = attr?.Level ?? 1; var upLevelTable = partnerLvUpTableRepo.GetPartnerLvUpTable(_curSelectId, level); XGame.Framework.Assert.IsNotNull( upLevelTable, $"圣兵升级表不存在,id:{_curSelectId},level:{level}" ); if ( ItemService.Instance.IsEnough( upLevelTable.LevelUpCost[0], upLevelTable.LevelUpCost[1], true ) ) { PartnersService.Instance.RequestLvUp(_curSelectId); } } private void OnClickStarUp(EventContext context) { var attr = PartnersData.Instance.GetPartnerAttrByTableId(_curSelectId); var star = attr?.RisingStarLv ?? 1; var starUpTable = partnerStarUpTableRepo.GetPartnerStarTable(_curSelectId, star); XGame.Framework.Assert.IsNotNull( starUpTable, $"圣兵升星表不存在,id:{_curSelectId},starlv:{star}" ); if (ItemService.Instance.IsEnough(starUpTable.PetId, starUpTable.StarUpCost, true)) { PartnersService.Instance.RequestStarUp(_curSelectId); } } private void OnClickUpBtn(EventContext context) { PartnersService.Instance.OpenUpPartnerMode(_curSelectId); Context.UI.Close(UIKeys.PartnerSbBagPanel); Context.ClosePanel(); } private void OnClickLeftBtn(EventContext context) { OnSelectPartnerOffset(-1); } private void OnClickRightBtn(EventContext context) { OnSelectPartnerOffset(1); } private void OnClickMwSet(EventContext context) { Context.UI.OpenAsync( UIKeys.PartnerEpiChangePanel, new PartnerEpiChangePanelCtrlParam() { SbId = _curSelectId } ); } #endregion private bool _init = false; private List _sbList = new List(); private int _curSelectId; private void InitView() { if (_init) return; _init = true; var tableList = PartnerTableRepo.GetAll(); foreach (var item in tableList) { _sbList.Add(item.Id); } } private void ShowUI() { ShowInfo(); ShowEpi(); } private void ShowInfo() { var table = PartnerTableRepo.Get(_curSelectId); XGame.Framework.Assert.IsNotNull(table, $"圣兵表不存在,id:{_curSelectId}"); VM.NameLabel.text = table.Name; VM.PictureLoader.url = AddressableDefine.PartnerPicture(table.Id); var attr = PartnersData.Instance.GetPartnerAttrByTableId(table.Id); var level = attr == null ? 1 : attr.Level; var star = attr == null ? 1 : attr.RisingStarLv; if (attr == null) { VM.StarUpBtn.Disable(); VM.LevelUpBtn.Disable(); VM.Have.selectedIndex = 1; } else { if (partnerStarUpTableRepo.GetPartnerStarTable(_curSelectId, star + 1) == null) { VM.StarUpBtn.Disable(); } else { VM.StarUpBtn.Enable(null); } if (partnerLvUpTableRepo.GetPartnerLvUpTable(_curSelectId, level + 1) == null) { VM.LevelUpBtn.Disable(); } else { VM.LevelUpBtn.Enable(null); } VM.Have.selectedIndex = 0; var pos = PartnersData.Instance.UpSbPosMap.GetValueOrDefault(_curSelectId, -1); VM.IsUp.selectedIndex = pos < 0 ? 0 : 1; } ShowStar(star); VM.LvLabel.text = $"Lv {level}"; VM.DetailNested.Ctrl.ShowUI(_curSelectId); if (attr != null) { ShowUpBtn(attr.TableId); } } private void ShowStar(int starLv) { var curNum = PartnersService.Instance.GetStarLv(starLv); var curStep = PartnersService.Instance.GetStarStep(starLv); var list = new List(); for (int i = 0; i < curNum; i++) { list.Add(curStep); } VM.StarList.BindDatas(list); } private void ShowEpi() { var info = PartnersData.Instance.GetPartnerAttrByTableId(_curSelectId); if (info == null) { VM.MwSet.Disable(); } else { VM.MwSet.Enable(null); VM.MwSet.Ctrl.SetData(info.EpigraphId, _curSelectId, true); } } private void ShowUpBtn(int sbId) { VM.StarUpBtn.Ctrl.SetData(sbId); VM.LevelUpBtn.Ctrl.ShowUI(sbId); } private void OnSelectPartnerOffset(int offset) { var index = _sbList.IndexOf(_curSelectId); index += offset; if (index < 0) { index += _sbList.Count; } else if (index >= _sbList.Count) { index -= _sbList.Count; } _curSelectId = _sbList[index]; ShowUI(); } } }