92 lines
2.4 KiB
C#
92 lines
2.4 KiB
C#
|
using Thousandto.Code.Center;
|
|||
|
using Thousandto.Code.Global;
|
|||
|
/// <summary>
|
|||
|
/// 物品component组件,用于显示消耗物品显示
|
|||
|
/// </summary>
|
|||
|
using Thousandto.Core.Base;
|
|||
|
using Thousandto.GameUI.Form;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Thousandto.Plugins.Common
|
|||
|
{
|
|||
|
//描述的属性信息
|
|||
|
public class DescItemInfo
|
|||
|
{
|
|||
|
public int ItemID { get; set; }
|
|||
|
public long Num { get; set; }
|
|||
|
public bool IsBind { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
//属性组件
|
|||
|
public class UIItemComponent : IUIComponent<UIItemComponent, DescItemInfo>
|
|||
|
{
|
|||
|
private Transform _trans;
|
|||
|
private UIItem _item;
|
|||
|
private DescItemInfo _data;
|
|||
|
|
|||
|
public UIItemComponent(Transform trans)
|
|||
|
{
|
|||
|
_trans = trans;
|
|||
|
_item = _trans.RequireComponent<UIItem>();
|
|||
|
SetActive(false);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public UIItemComponent Clone()
|
|||
|
{
|
|||
|
var newGo = GameObject.Instantiate(_trans.gameObject) as GameObject;
|
|||
|
var ep = new UIItemComponent(newGo.transform);
|
|||
|
ep._trans.parent = _trans.parent;
|
|||
|
UnityUtils.Reset(ep._trans);
|
|||
|
return ep;
|
|||
|
}
|
|||
|
|
|||
|
public void SetActive(bool active)
|
|||
|
{
|
|||
|
_trans.gameObject.SetActive(active);
|
|||
|
}
|
|||
|
|
|||
|
public void SetData(DescItemInfo data)
|
|||
|
{
|
|||
|
_data = data;
|
|||
|
RefreshData();
|
|||
|
}
|
|||
|
public void SetName(string name)
|
|||
|
{
|
|||
|
_trans.name = name;
|
|||
|
}
|
|||
|
public void RefreshData()
|
|||
|
{
|
|||
|
if (_data != null)
|
|||
|
{
|
|||
|
_trans.gameObject.SetActive(true);
|
|||
|
_item.InitializationWithIdAndNum(_data.ItemID, _data.Num, _data.IsBind);
|
|||
|
}
|
|||
|
}
|
|||
|
public Transform GetTrans()
|
|||
|
{
|
|||
|
return _trans;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 根据背包数量设置数量显示
|
|||
|
/// </summary>
|
|||
|
public void OnSetNumByBack()
|
|||
|
{
|
|||
|
if(_data != null)
|
|||
|
{
|
|||
|
long haveCont = GameCenter.ItemContianerSystem.GetItemCountFromCfgId(_data.ItemID);
|
|||
|
_item.OnSetNum(string.Format("{0}/{1}", haveCont, _data.Num));
|
|||
|
if(haveCont < _data.Num)
|
|||
|
{
|
|||
|
_item.OnSetNumColor(Color.red);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_item.OnSetNumColor(Color.green);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|