using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class RolePropertyBehaviour : MonoBehaviour
|
{
|
[SerializeField] PropertyType m_PropertyType;
|
[SerializeField] Text m_PropertyName;
|
[SerializeField] Text m_PropertyValue;
|
|
bool propertyDirty = false;
|
|
float timer = 0f;
|
|
public void Display()
|
{
|
DisplayProperty();
|
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
|
}
|
|
void DisplayProperty()
|
{
|
propertyDirty = false;
|
m_PropertyName.text = Language.Get("RolePropertyName_" + m_PropertyType.ToString());
|
m_PropertyValue.text = GetPropertyValue(m_PropertyType);
|
}
|
|
private void LateUpdate()
|
{
|
timer += Time.deltaTime;
|
if (timer > 1f)
|
{
|
timer = 0f;
|
if (propertyDirty)
|
{
|
DisplayProperty();
|
}
|
}
|
}
|
|
static string GetPropertyValue(PropertyType propertyType)
|
{
|
if (propertyType == PropertyType.MinAtk
|
|| propertyType == PropertyType.MaxAtk)
|
{
|
var minAtk = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MINATK);
|
var maxAtk = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MAXATK);
|
var minAtkLabel = PlayerPropertyConfig.GetValueDescription((int)propertyType, minAtk, true);
|
var maxAtkLabel = PlayerPropertyConfig.GetValueDescription((int)propertyType, maxAtk, true);
|
return StringUtility.Contact(minAtkLabel, "-", maxAtkLabel);
|
}
|
else
|
{
|
var value = UIHelper.GetPropertyValue(propertyType);
|
switch (propertyType)
|
{
|
case PropertyType.ATKSPEED:
|
return PlayerPropertyConfig.GetValueDescription((int)propertyType, value, true);
|
default:
|
return PlayerPropertyConfig.GetValueDescription((int)propertyType, value, true);
|
}
|
}
|
}
|
|
private void PlayerDataRefreshEvent(PlayerDataType dataType)
|
{
|
propertyDirty = true;
|
}
|
|
public void Dispose()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
|
}
|
}
|
}
|