//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, February 20, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class TreasurePotentialLevelUpWin : Window
|
{
|
[SerializeField] Image m_SkillIcon;
|
[SerializeField] Text m_SkillName;
|
[SerializeField] Text m_SkillLevel;
|
[SerializeField] Text m_FightPower;
|
[SerializeField] Transform m_ContainerNow;
|
[SerializeField] Text m_SkillDescNow;
|
[SerializeField] Transform m_ContainerNext;
|
[SerializeField] Text m_SkillDescNext;
|
[SerializeField] Transform m_ContainerLevelUp;
|
[SerializeField] Text m_PreSkillCondition;
|
[SerializeField] ItemBehaviour m_Item;
|
[SerializeField] Transform m_ContainerMax;
|
[SerializeField] Button m_Learn;
|
[SerializeField] Button m_LevelUp;
|
[SerializeField] Button m_GetWay;
|
[SerializeField] Button m_Close;
|
[SerializeField] UIEffect m_LevelUpEffect;
|
|
public static int selectPotentialId = 0;
|
|
TreasureSkillModel model
|
{
|
get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); }
|
}
|
|
PackModel packModel
|
{
|
get { return ModelCenter.Instance.GetModel<PackModel>(); }
|
}
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
m_LevelUp.AddListener(LevelUp);
|
m_Learn.AddListener(LevelUp);
|
m_Close.AddListener(CloseClick);
|
m_GetWay.AddListener(GetWay);
|
}
|
|
protected override void OnPreOpen()
|
{
|
Display();
|
model.skillLevelUpRefresh += SkillLevelUpRefresh;
|
packModel.refreshItemCountEvent += RefreshItemCountEvent;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.skillLevelUpRefresh -= SkillLevelUpRefresh;
|
packModel.refreshItemCountEvent -= RefreshItemCountEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void SkillLevelUpRefresh(int id)
|
{
|
if (selectPotentialId == id)
|
{
|
Display();
|
m_LevelUpEffect.Play();
|
}
|
}
|
|
public void Display()
|
{
|
TreasurePotential potential;
|
if (model.TryGetPotential(selectPotentialId, out potential))
|
{
|
var config = potential.GetSkillConfig(potential.level);
|
m_SkillIcon.SetSprite(config.IconName);
|
m_SkillName.text = config.SkillName;
|
m_SkillLevel.text = StringUtility.Contact("LV", potential.level);
|
m_FightPower.text = StringUtility.Contact("+", config.FightPower);
|
|
var isMax = potential.level >= potential.maxLevel;
|
m_ContainerNext.gameObject.SetActive(!isMax);
|
|
if (potential.level == 0)
|
{
|
m_SkillDescNow.text = Language.Get("TreasurePotentialNowEffect", Language.Get("TreasurePotentialUnLearn"));
|
}
|
else
|
{
|
m_SkillDescNow.text = Language.Get("TreasurePotentialNowEffect", config.Description);
|
}
|
|
if (!isMax)
|
{
|
var nextConfig = potential.GetSkillConfig(potential.level + 1);
|
m_SkillDescNext.text = Language.Get("TreasurePotentialNextEffect", nextConfig.Description);
|
|
var preSkill = config.LearnSkillReq;
|
|
m_PreSkillCondition.gameObject.SetActive(preSkill != 0 && config.LearnSkillLV > 0);
|
if (preSkill != 0 && config.LearnSkillLV > 0)
|
{
|
TreasurePotential prePotential;
|
var satisfyLevel = false;
|
var preSkillLevel = 0;
|
if (model.TryGetPotential(preSkill, out prePotential))
|
{
|
preSkillLevel = prePotential.level;
|
satisfyLevel = preSkillLevel >= config.LearnSkillLV;
|
}
|
var preSkillConfig = SkillConfig.Get(preSkill);
|
var displayLevel = StringUtility.Contact(
|
UIHelper.AppendColor(satisfyLevel ? TextColType.Green : TextColType.Red, preSkillLevel.ToString())
|
, "/", config.LearnSkillLV);
|
m_PreSkillCondition.text = Language.Get("PotentialPreSkillCondition",
|
preSkillConfig.SkillName, displayLevel);
|
}
|
}
|
|
m_ContainerLevelUp.gameObject.SetActive(!isMax);
|
m_ContainerMax.gameObject.SetActive(isMax);
|
m_GetWay.gameObject.SetActive(!isMax);
|
|
if (!isMax)
|
{
|
var nextConfig = potential.GetSkillConfig(potential.level + 1);
|
m_Item.SetItem(nextConfig.ExAttr4, nextConfig.ExAttr5);
|
}
|
}
|
|
var potentialLevel = 0;
|
if (potential != null)
|
{
|
potentialLevel = potential.level;
|
}
|
|
var error = 0;
|
bool satisfyLevelUp = model.TryLevelUpPotential(selectPotentialId, out error);
|
m_LevelUp.gameObject.SetActive(satisfyLevelUp && potentialLevel > 0);
|
m_Learn.gameObject.SetActive(satisfyLevelUp && potentialLevel == 0);
|
}
|
|
private void GetWay()
|
{
|
TreasurePotential potential;
|
if (model.TryGetPotential(selectPotentialId, out potential))
|
{
|
var upConfig = potential.GetSkillConfig(potential.level + 1);
|
ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(upConfig.ExAttr4);
|
}
|
}
|
|
private void LevelUp()
|
{
|
var error = 0;
|
if (model.TryLevelUpPotential(selectPotentialId, out error))
|
{
|
var pak = new C0304_tagCAddSkillPoint();
|
pak.SkillID = (ushort)selectPotentialId;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
else
|
{
|
model.DisplayLevelUpError(error);
|
}
|
}
|
|
private void RefreshItemCountEvent(PackType packType, int arg2, int itemId)
|
{
|
if (packType == PackType.Item && model.skillLevelUpItems.Contains(itemId))
|
{
|
Display();
|
}
|
}
|
|
}
|
|
}
|
|
|
|
|