/// #pkgName FGUI包名 /// #panelName UIPanel名字 /// #UIName = $"{#pkgName}{#panelName}" UIKey名字 /// 该脚本由模板创建 /// created by cb 2024 using System.Collections.Generic; using FairyGUI; using FL.Data; using XGame; using XGame.Framework.UI; namespace FL.FGUI { public class PartnerEpiChangePanelCtrlParam { public int SbId; /// /// 方案id /// public int PlanId; /// /// 方案内槽位,如果有planId则必填 /// public int SlotId; } /// /// UI逻辑处理类 /// /// public partial class PartnerEpiChangePanelCtrl : UIController { protected override void OnEnable(object intent) { var param = intent as PartnerEpiChangePanelCtrlParam; _sbId = param.SbId; _planId = param.PlanId; _slotId = param.SlotId; AddUIListenres(); InitView(); UpView(); } protected override void OnDisable() { RemoveUIListenres(); } #region UI事件 private void AddUIListenres() { EventSingle.Instance.AddListener(EventDefine.PartnerBinding, OnUpdateList); EventSingle.Instance.AddListener(EventDefine.EpigraphChangeSelect, OnClickItem); VM.UpBtn.onClick.Add(OnClickUpBtn); } private void RemoveUIListenres() { EventSingle.Instance.RemoveListener(EventDefine.PartnerBinding, OnUpdateList); EventSingle.Instance.RemoveListener(EventDefine.EpigraphChangeSelect, OnClickItem); VM.UpBtn.onClick.Remove(OnClickUpBtn); } private void OnUpdateList(int eventId, object args) { RefreshList(); } private void OnClickItem(int eventId, object args) { var id = (int)args; if (id == _curSelectId) { Context.UI.OpenAsync( UIKeys.PartnerEpiDetailInfo, new PartnerEpiDetailInfoParam() { EpigraphId = _curSelectId, PlanId = _planId, SlotId = _slotId, PartnerId = _sbId, } ); Context.ClosePanel(); return; } _curSelectId = id; RefreshList(); } private void OnClickUpBtn(EventContext eventContext) { var id = _curSelectId; if (_planId == PartnersData.Instance.UsePlanId) { if (!PartnersData.Instance.TryGetPartnerAttrByTableId(_sbId, out var info)) { Context.ShowTips(StringDefine.PartnerEmptyTips); return; } if (id == info.EpigraphId) return; EpigraphService.Instance.RequestEpiInset(_sbId, id); Context.ClosePanel(); } else if (_planId >= 0 && _slotId >= 0 && _sbId > 0) { var plan = PartnersData.Instance.GetPlanById(_planId); foreach (var slot in plan.Slots) { if (slot.MwId == id) { Context.ShowTips(StringDefine.EpigraphAlreadyUpTips); return; } } PartnersService.Instance.RequestUpdatePlanMw(_planId, _slotId, _sbId, id); Context.ClosePanel(); } } #endregion #region 属性 private bool _isInit = false; /// /// 圣兵id /// private int _sbId; private int _planId; private int _slotId; private List _list; private int _curSelectId; #endregion #region 页面 private void InitView() { if (_isInit) return; _isInit = true; VM.List.ListType = EGListType.Virtual; } private void UpView() { var epiList = EpigraphData.Instance.EpiList; if (_slotId < 0) { if (!PartnersData.Instance.TryGetPartnerAttrByTableId(_sbId, out var attr)) { Log.Error($"圣兵数据不存在,id:{_sbId}"); return; } if (attr.EpigraphId > 0) { _curSelectId = attr.EpigraphId; } else { _curSelectId = epiList[0].TableId; } } else { var slot = PartnersData.Instance.GetPlanSlot(_planId, _slotId); if (slot == null || slot.MwId == 0) { _curSelectId = epiList[0].TableId; } else { _curSelectId = slot.MwId; } } var list = new List(); _list = list; foreach (var epi in epiList) { list.Add(new EpiChangeListData(_planId, _sbId, epi.TableId, _curSelectId)); } VM.List.BindDatas(list); } private void RefreshList() { var epiList = EpigraphData.Instance.EpiList; var list = new List(); foreach (var epi in epiList) { list.Add(new EpiChangeListData(_planId, _sbId, epi.TableId, _curSelectId)); } _list = list; VM.List.BindDatas(list); } #endregion } }