/// #pkgName FGUI包名
/// #panelName UIPanel名字
/// #UIName = $"{#pkgName}{#panelName}" UIKey名字
/// 该脚本由模板创建
/// created by cb 2024
using FairyGUI;
using FL.Data.Items;
using XGame;
using XGame.Database;
using XGame.Framework.UI;
namespace FL.FGUI
{
public class UiParam
{
public bool bShowName;
public bool bShowCount;
public bool bShowBtn; // 是否可点击
public bool bShowMask;
public bool bShowLevel;
public bool bShowBaseInfo; // 点击道具是否只显示物品简易信息
}
///
/// UI逻辑处理类
///
///
public partial class CommonItemBaseCtrl : UIController
{
private IItem data;
private bool bShowBaseInfo;
protected override void OnEnable(object intent)
{
AddUIListenres();
}
protected override void OnDisable()
{
RemoveUIListenres();
}
#region UI事件
private void AddUIListenres()
{
if (VM.ItemBtn != null)
{
VM.ItemBtn.onClick.Add(OnClickBtn);
}
}
private void RemoveUIListenres()
{
if (VM.ItemBtn != null)
{
VM.ItemBtn.onClick.Remove(OnClickBtn);
}
}
#endregion
private void OnClickBtn(EventContext context)
{
if (data == null)
{
return;
}
else if (bShowBaseInfo)
{
ShowItemInfoPanel();
}
else if (data?.ItemType == EItemType.Equip)
{
Context.UI.OpenAsync(UIKeys.EquipEquipPanel, data);
}
else
{
ShowItemInfoPanel();
}
}
private void ShowItemInfoPanel()
{
Log.Debug($"显示道具:{data.Name}详情界面");
Context.UI.OpenAsync(UIKeys.ItemInformationPanel, new ItemInfoParam
{
itemInfo = ItemTableRepo.Get(data.TableId),
numDesc = data?.ItemType == EItemType.Equip ? $"LV.{data.Level}" : (int.Parse(data.Count) > 1 ? data.Count : null),
});
}
public void ShowUI(IItem item, UiParam uiParam)
{
data = item;
bShowBaseInfo = uiParam.bShowBaseInfo;
if (VM.QualityImg != null)
{
VM.QualityImg.icon = AddressableDefine.ItemFrame(item.Quality);
}
if (VM.ItemIcon != null)
{
VM.ItemIcon.icon = item.Icon;
}
if (VM.NameLabel != null)
{
VM.NameLabel.visible = uiParam.bShowName;
if (uiParam.bShowName)
{
VM.NameLabel.text = item.Name;
}
}
if (VM.LvLabel != null)
{
VM.LvLabel.visible = uiParam.bShowLevel;
if (uiParam.bShowLevel)
{
VM.LvLabel.text = $"LV.{item.Level}";
}
}
if (VM.CountLabel != null)
{
VM.CountLabel.visible = uiParam.bShowCount;
if (uiParam.bShowCount)
{
VM.CountLabel.text = item.Count;
}
}
if (VM.MaskImg != null)
{
VM.MaskImg.visible = uiParam.bShowMask;
}
if (VM.ItemBtn != null)
{
VM.ItemBtn.visible = uiParam.bShowBtn;
}
}
}
}