//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, July 31, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using Snxxz.UI; namespace Snxxz.UI { [XLua.LuaCallCSharp] public class ItemBehaviour : MonoBehaviour { ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel(); } } [SerializeField] ImageEx m_Icon; public ImageEx icon { get { return m_Icon; } } [SerializeField] ImageEx m_BackGround; public ImageEx backGround { get { return m_BackGround; } } [SerializeField] Transform m_CountContainer; public Transform countContainer { get { return m_CountContainer; } } [SerializeField] Text m_Count; public Text count { get { return m_Count; } } [SerializeField] Image m_Bind; public Image bind { get { return m_Bind; } } [SerializeField] Image[] m_Stars; public Image[] stars { get { return m_Stars; } } [SerializeField] Button m_ViewDetails; [SerializeField] ItemType m_ItemType = ItemType.Rewards; bool m_ShowCount = true; public bool showCount { get { return m_ShowCount; } set { if (m_ShowCount != value) { m_ShowCount = value; DisplayCount(); } } } public int itemId { get; private set; } public int itemCount { get; private set; } public bool itemBind { get; private set; } public int itemQuality { get; private set; } private void Awake() { if (m_ViewDetails != null) { m_ViewDetails.AddListener(ViewDetails); } } public void SetItem(Item _item) { SetItem(_item.id, _item.count, _item.bind, _item.quality); } public void SetItem(int _id, int _count, bool _bind = false, int _quality = 0) { itemId = _id; itemCount = _count; itemBind = _bind; itemQuality = _quality; DisplayBaseInfo(); DisplayCount(); } public void SetCount(int _count) { itemCount = _count; DisplayCount(); } public void DisplayEmpty() { try { icon.gameObject.SetActive(false); backGround.gameObject.SetActive(false); if (countContainer != null) { countContainer.gameObject.SetActive(false); } if (m_Stars != null) { for (int i = 0; i < m_Stars.Length; i++) { m_Stars[i].gameObject.SetActive(false); } } } catch (System.Exception ex) { DebugEx.Log(ex); } } private void DisplayBaseInfo() { try { var itemInfo = ItemConfig.Get(itemId); if (icon != null) { icon.gameObject.SetActive(true); icon.SetSprite(itemInfo.IconKey); } if (backGround != null) { backGround.gameObject.SetActive(true); backGround.SetItemBackGround(itemQuality != 0 ? itemQuality : itemInfo.ItemColor); } if (m_Stars != null) { for (int i = 0; i < m_Stars.Length; i++) { m_Stars[i].gameObject.SetActive(i < itemInfo.StarLevel); } } if (m_Bind != null) { m_Bind.gameObject.SetActive(itemBind); } } catch (Exception e) { DebugEx.Log(e); } } private void DisplayCount() { if (countContainer == null) { return; } switch (m_ItemType) { case ItemType.Rewards: if (showCount && itemCount > 1) { countContainer.gameObject.SetActive(true); count.text = UIHelper.ReplaceLargeNum((ulong)itemCount); } else { countContainer.gameObject.SetActive(false); } break; case ItemType.Use: var _itemCnt = ModelCenter.Instance.GetModel().GetItemCountByID(PackType.Item, itemId); count.text = StringUtility.Contact(_itemCnt >= itemCount ? "" : "", _itemCnt, "/", itemCount, ""); break; } } private void ViewDetails() { switch (m_ItemType) { case ItemType.Rewards: ItemAttrData attrData = new ItemAttrData(itemId, true, (ulong)itemCount); itemTipsModel.SetItemTipsModel(attrData); break; case ItemType.Use: ModelCenter.Instance.GetModel().SetChinItemModel(itemId); break; } } public enum ItemType { Rewards, Use, } } }