239 lines
4.5 KiB
C#
239 lines
4.5 KiB
C#
// ***********************************************************************
|
|
// Assembly : Game
|
|
// Author : Kimch
|
|
// Created : 2020-10-09
|
|
// Description :
|
|
// Last Modified By :
|
|
// Last Modified On :
|
|
// ***********************************************************************
|
|
// <copyright file= "PropWidget" company="Kunpo"></copyright>
|
|
// <summary></summary>
|
|
// ***********************************************************************
|
|
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace G.UI
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="name"></param>
|
|
private void ShowName(string name)
|
|
{
|
|
if (_tmpName)
|
|
_tmpName.text = name;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="count"></param>
|
|
private void ShowCount(int count)
|
|
{
|
|
if (_tmpCount)
|
|
_tmpCount.text = "x" + count.ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="quality"></param>
|
|
private void ShowQuality(int quality)
|
|
{
|
|
if (_imgQuality)
|
|
_imgQuality.ShowSprite(quality);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="grade"></param>
|
|
/// <param name="quality"></param>
|
|
void ShowGradeInfo(int grade, int quality)
|
|
{
|
|
if (_imgLevel)
|
|
{
|
|
_imgLevel.gameObject.SetActive(true);
|
|
_imgLevel.ShowSprite(quality - 1);
|
|
_tmpLevel.gameObject.SetActive(true);
|
|
_tmpLevel.text = grade.ToString();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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<ItemProp>(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<ItemProp>(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<ItemProp>(id);
|
|
if (prop != null)
|
|
{
|
|
IconProxy.Instance.SetSprite(_imgIcon, prop.icon);
|
|
ShowName(prop.name);
|
|
ShowQuality(prop.quality);
|
|
|
|
if (prop.isGem)
|
|
{
|
|
var gem = ItemProxy.Instance.GetStaticItem<ItemGem>(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<PropTipsBox>(_showPropItem);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Unity
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
private void Awake()
|
|
{
|
|
SetViewData();
|
|
var button = GetComponent<Button>();
|
|
if (button)
|
|
button.onClick.AddListener(this.OnFrameClick);
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
_showPropItem = null;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|