using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class ExpertSkillConditionCell : ScrollItem
|
{
|
[SerializeField] UIAlphaTween m_AlphaTween;
|
[SerializeField] UILinerMove m_LinerMove;
|
[SerializeField] Text m_Condition;
|
[SerializeField] Text m_Description;
|
[SerializeField] Image m_Line;
|
[SerializeField] UIEffect m_Effect;
|
|
public UIAlphaTween alphaTween
|
{
|
get { return m_AlphaTween; }
|
}
|
|
public UILinerMove linerMove
|
{
|
get { return m_LinerMove; }
|
}
|
|
int skillId = 0;
|
int level = 0;
|
|
TreasureSkillModel model { get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); } }
|
|
public override void Display(object _data)
|
{
|
var data = (int)_data;
|
skillId = data / 100;
|
level = data % 100;
|
|
m_AlphaTween.SetStartState();
|
|
var activeLevel = 0;
|
model.TryGetExpertActiveLevel(skillId, out activeLevel);
|
|
var skillConfig = SkillConfig.Get(skillId + level - 1);
|
var property = skillConfig.RequireProperty();
|
var propertyConfig = PlayerPropertyConfig.Get(property);
|
m_Condition.text = string.Format("{0}灵根{1}激活", propertyConfig.Name, skillConfig.RequirePropertyValue());
|
m_Description.text = skillConfig.Description;
|
|
m_Line.gameObject.SetActive(level < skillConfig.SkillMaxLV);
|
|
var currentValue = UIHelper.GetPropertyValue((PropertyType)property);
|
|
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 override void Dispose()
|
{
|
base.Dispose();
|
m_AlphaTween.SetStartState();
|
|
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 * 100 + level);
|
}
|
}
|
}
|
}
|