// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-10-09
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace G.UI
{
///
///
///
public class PropWidget : KUIWidget
{
#region Auto Generate
#pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
[KUIFlag]
TextMeshProUGUI _tmpName;
[KUIFlag]
TextMeshProUGUI _tmpCount;
[KUIFlag]
Image _imgIcon;
[KUIFlag]
KUIImage _imgQuality;
[KUIFlag]
KUIImage _imgLevel;
[KUIFlag]
TextMeshProUGUI _tmpLevel;
#pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
#endregion
#region Field
private ItemProp _showPropItem;
private int _showPropCount;
#endregion
#region Method
///
///
///
///
private void ShowName(string name)
{
if (_tmpName)
_tmpName.text = name;
}
///
///
///
///
private void ShowCount(int count)
{
if (_tmpCount)
_tmpCount.text = "x" + count.ToString();
}
///
///
///
///
private void ShowQuality(int quality)
{
if (_imgQuality)
_imgQuality.ShowSprite(quality);
}
///
///
///
///
///
void ShowGradeInfo(int grade, int quality)
{
if (_imgLevel)
{
_imgLevel.gameObject.SetActive(true);
_imgLevel.ShowSprite(quality - 1);
_tmpLevel.gameObject.SetActive(true);
_tmpLevel.text = grade.ToString();
}
}
///
///
///
void HideGradeInfo()
{
if (_imgLevel)
{
_imgLevel.gameObject.SetActive(false);
_tmpLevel.gameObject.SetActive(false);
}
}
public void SetQualityCount(string name, int quality, int count)
{
ShowName(name);
ShowQuality(quality);
ShowCount(count);
_imgIcon.overrideSprite = null;
}
public void SetCount(int id, int count)
{
var prop = ItemProxy.Instance.GetStaticItem(id);
if (prop != null)
{
IconProxy.Instance.SetSprite(_imgIcon, prop.icon);
ShowQuality(prop.quality);
}
_tmpCount.text = count.ToString();
}
public void SetItem(int id)
{
SetItem(ItemProxy.Instance.GetStaticItem(id));
}
public void SetItem(ItemProp prop, int count = 1)
{
if (prop != null)
{
IconProxy.Instance.SetSprite(_imgIcon, prop.icon);
ShowName(prop.name);
ShowCount(count);
ShowQuality(prop.quality);
}
}
public void SetItem(int id, int count)
{
var prop = ItemProxy.Instance.GetStaticItem(id);
if (prop != null)
{
IconProxy.Instance.SetSprite(_imgIcon, prop.icon);
ShowName(prop.name);
ShowQuality(prop.quality);
if (prop.isGem)
{
var gem = ItemProxy.Instance.GetStaticItem(id);
if (gem != null)
{
ShowGradeInfo(gem.grade, prop.quality);
}
}
else
{
HideGradeInfo();
}
}
_tmpCount.text = $"x{count}";
_showPropItem = prop;
_showPropCount = count;
}
public void SetItem(Item.ItemInfo info)
{
SetItem(info.id, info.count);
}
public void SetProp(EntityItem prop)
{
SetItem(prop.propItem, prop.count);
}
public override void Refresh()
{
if (data is EntityItem prop)
{
_showPropItem = prop.propItem;
_showPropCount = prop.count;
SetProp(prop);
if (prop is EntityItemGem gem)
{
ShowGradeInfo(gem.level, prop.quality);
}
else
{
HideGradeInfo();
}
}
else if (this.data is ItemProp propItem)
{
_showPropItem = propItem;
_showPropCount = 1;
}
}
private void OnFrameClick()
{
if (_showPropItem != null && _showPropItem.id != Item.Id.kCoin)
{
KUIWindow.OpenWindow(_showPropItem);
}
}
#endregion
#region Unity
///
///
///
private void Awake()
{
SetViewData();
var button = GetComponent