/// #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
}
}