using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class ExpertSkillConditionCell : MonoBehaviour
|
{
|
[SerializeField] Text m_Condition;
|
[SerializeField] Text m_Description;
|
[SerializeField] Image m_Line;
|
[SerializeField] UIEffect m_Effect;
|
|
int skillId = 0;
|
int level = 0;
|
|
TreasureSkillModel model { get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); } }
|
|
public void Display(int skillId,int level)
|
{
|
this.skillId = skillId;
|
this.level = level;
|
|
var activeLevel = 0;
|
model.TryGetExpertActiveLevel(skillId, out activeLevel);
|
|
|
var skillConfig = SkillConfig.Get(skillId + level - 1);
|
var property = skillConfig.RequireProperty();
|
var currentValue = UIHelper.GetPropertyValue((PropertyType)property);
|
|
var propertyConfig = PlayerPropertyConfig.Get(property);
|
var valueLabel = UIHelper.AppendColor(currentValue >= skillConfig.RequirePropertyValue() ? TextColType.Green : TextColType.Red
|
, skillConfig.RequirePropertyValue().ToString());
|
m_Condition.text = string.Format("{0} {1}{2}激活",
|
Language.Get("ExpertSkillLV", Language.Get("Num_CHS_" + level)),
|
propertyConfig.Name, valueLabel);
|
m_Description.text = skillConfig.Description;
|
|
m_Line.gameObject.SetActive(level < skillConfig.SkillMaxLV);
|
|
|
if (activeLevel >= level)
|
{
|
m_Description.color = UIHelper.s_LightYellow;
|
m_Condition.color = UIHelper.s_Gold;
|
}
|
else
|
{
|
m_Description.color = UIHelper.s_BrightWhiteColor;
|
m_Condition.color = UIHelper.s_BrightWhiteColor;
|
if (currentValue >= skillConfig.RequirePropertyValue())
|
{
|
m_Condition.text += UIHelper.AppendColor(TextColType.Green, "(可激活)");
|
}
|
}
|
|
model.expertActiveRefresh -= ExpertActiveRefresh;
|
model.expertActiveRefresh += ExpertActiveRefresh;
|
}
|
|
public void Dispose()
|
{
|
model.expertActiveRefresh -= ExpertActiveRefresh;
|
}
|
|
private void ExpertActiveRefresh(int id)
|
{
|
if (skillId == id)
|
{
|
var activeLevel = 0;
|
model.TryGetExpertActiveLevel(id, out activeLevel);
|
if (activeLevel == level)
|
{
|
m_Effect.Play();
|
}
|
Display(skillId, level);
|
}
|
}
|
}
|
}
|