/// #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 PartnerEpiBookDetailPanelCtrl : UIController
{
protected override void OnEnable(object intent)
{
_curId = (int)intent;
AddUIListenres();
InitView();
UpView();
}
protected override void OnDisable()
{
RemoveUIListenres();
}
#region UI事件
private void AddUIListenres()
{
VM.LeftBtn.onClick.Add(OnClickLeftBtn);
VM.RightBtn.onClick.Add(OnClickRightBtn);
VM.GetBtn.onClick.Add(OnClickGetBtn);
Context.AddListener(EventDefine.PartnerJibanRwdGet, OnRwdGet);
Context.AddListener(EventDefine.PartnerJibanRwdGetAll, OnRwdGet);
}
private void RemoveUIListenres()
{
VM.LeftBtn.onClick.Remove(OnClickLeftBtn);
VM.RightBtn.onClick.Remove(OnClickRightBtn);
VM.GetBtn.onClick.Remove(OnClickGetBtn);
Context.RemoveListener(EventDefine.PartnerJibanRwdGet, OnRwdGet);
Context.RemoveListener(EventDefine.PartnerJibanRwdGetAll, OnRwdGet);
}
private void OnRwdGet(int eventId, object args)
{
UpdateList();
}
private void OnClickLeftBtn(EventContext context)
{
SelectOffset(-1);
}
private void OnClickRightBtn(EventContext context)
{
SelectOffset(1);
}
private void OnClickGetBtn(EventContext context)
{
var collectTable = collectTableRepo.Get(_curId);
var starLv = 0;
foreach (var id in collectTable.Param)
{
if (EpigraphData.Instance.TryGetEpigraphAttrByTableId(id, out var epi))
{
starLv += epi.StarLv;
}
}
var rwdList = collect_rewardTableRepo.GetCollectRwdList(_curId);
var canGet = false;
foreach (var item in rwdList)
{
if (
starLv > item.Unlock
&& !EpigraphData.Instance.GetJibaIsActive(item.CollectId, item.Level)
)
{
canGet = true;
break;
}
}
if (canGet)
{
EpigraphService.Instance.RequestJibanRwdGetAll(_curId);
}
else
{
Context.ShowTips(StringDefine.PartnerJiBanNoActivatable);
}
}
#endregion
private bool _initView = false;
private int _curId;
private List _list;
private void InitView()
{
if (_initView)
return;
_initView = true;
VM.List.ListType = EGListType.None;
VM.RwdList.ListType = EGListType.Virtual;
var tableList = collectTableRepo.GetAllEpiCollectList();
var list = new List();
foreach (var item in tableList)
{
list.Add(item.Id);
}
_list = list;
}
private void UpView()
{
var table = collectTableRepo.Get(_curId);
XGame.Framework.Assert.IsNotNull(table, $"羁绊表不存在,id:{_curId}");
VM.List.BindDatas(table.Param);
VM.NameLabel.text = table.Name;
UpdateList();
}
private void UpdateList()
{
var list = collect_rewardTableRepo.GetCollectRwdList(_curId);
VM.RwdList.BindDatas(list);
}
private void SelectOffset(int offset)
{
var index = _list.IndexOf(offset);
index += offset;
if (index < 0)
{
index += _list.Count;
}
else if (index >= _list.Count)
{
index -= _list.Count;
}
_curId = _list[index];
UpView();
}
}
}