//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, December 12, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class GatherSoulLevelUpWin : Window
|
{
|
[SerializeField] Text m_ItemName;
|
[SerializeField] Text m_Level;
|
[SerializeField] Image m_Icon;
|
[SerializeField] PropertyBehaviour[] m_Propertys;
|
[SerializeField] Image[] m_Arrows;
|
[SerializeField] Text m_LevelUpCost;
|
[SerializeField] Button m_LevelUp;
|
[SerializeField] Button m_Close;
|
[SerializeField] RectTransform m_ContainerHighest;
|
[SerializeField] RectTransform m_ContainerLevelUp;
|
|
public static int selectHole = 0;
|
|
int level = 0;
|
|
GatheringSoulModel model
|
{
|
get { return ModelCenter.Instance.GetModel<GatheringSoulModel>(); }
|
}
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Close.onClick.AddListener(CloseClick);
|
m_LevelUp.onClick.AddListener(LevelUp);
|
}
|
|
protected override void OnPreOpen()
|
{
|
Display();
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
|
model.gatherSoulHoleRefresh += GatherSoulHoleRefresh;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
|
model.gatherSoulHoleRefresh -= GatherSoulHoleRefresh;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
void Display()
|
{
|
DisplayBase();
|
DisplayCost();
|
DisplayProperty();
|
}
|
|
void DisplayBase()
|
{
|
GatherSoulItem item;
|
if (model.TryGetItem(selectHole, out item))
|
{
|
var itemConfig = ItemConfig.Get(item.id);
|
m_ItemName.text = itemConfig.ItemName;
|
m_ItemName.color = UIHelper.GetUIColor(itemConfig.ItemColor);
|
m_Level.text = Language.Get("Z1024", item.level);
|
m_Icon.SetSprite(itemConfig.IconKey);
|
level = item.level;
|
}
|
}
|
|
void DisplayProperty()
|
{
|
GatherSoulItem item;
|
if (model.TryGetItem(selectHole, out item) && model.gatherSoulPropertys.ContainsKey(item.id))
|
{
|
bool isMaxLevle = model.IsGatherSoulMaxLevel(item.id, item.level);
|
var list = model.gatherSoulPropertys[item.id];
|
for (int i = 0; i < m_Propertys.Length; i++)
|
{
|
m_Propertys[i].gameObject.SetActive(i < list.Count);
|
if (i < list.Count)
|
{
|
var valueNow = model.GetPropertyValue(item.id, list[i], item.level);
|
var valueNext = isMaxLevle ? 0 : model.GetPropertyValue(item.id, list[i], item.level + 1);
|
m_Propertys[i].DisplayUp(list[i], valueNow, valueNext);
|
}
|
}
|
for (int i = 0; i < m_Arrows.Length; i++)
|
{
|
m_Arrows[i].gameObject.SetActive(!isMaxLevle);
|
}
|
}
|
}
|
|
void DisplayCost()
|
{
|
GatherSoulItem item;
|
if (model.TryGetItem(selectHole, out item))
|
{
|
var levelUpCost = model.RequireLevelUpCost(item);
|
var soulDust = UIHelper.GetMoneyCnt(28);
|
var satisfy = soulDust >= (ulong)levelUpCost;
|
m_LevelUpCost.text = StringUtility.Contact(
|
UIHelper.AppendColor(satisfy ? TextColType.NavyBrown : TextColType.Red, soulDust.ToString())
|
, "/", levelUpCost);
|
bool isMaxLevle = model.IsGatherSoulMaxLevel(item.id, item.level);
|
m_ContainerLevelUp.gameObject.SetActive(!isMaxLevle);
|
m_ContainerHighest.gameObject.SetActive(isMaxLevle);
|
}
|
}
|
|
private void PlayerDataRefreshInfoEvent(PlayerDataType refreshType)
|
{
|
if (refreshType == PlayerDataType.CDBPlayerRefresh_SoulDust)
|
{
|
DisplayCost();
|
}
|
}
|
|
private void GatherSoulHoleRefresh(int hole)
|
{
|
if (hole == selectHole)
|
{
|
GatherSoulItem item;
|
if (!model.TryGetItem(hole, out item))
|
{
|
CloseImmediately();
|
return;
|
}
|
var record = level;
|
Display();
|
if (level > record && model.serverInited)
|
{
|
EffectMgr.Instance.PlayUIEffect(3078, 3100, m_Icon.transform, false);
|
}
|
}
|
}
|
|
private void LevelUp()
|
{
|
GatherSoulItem item;
|
if (model.TryGetItem(selectHole, out item))
|
{
|
var error = 0;
|
if (!model.SatisfyLevelUp(item, out error))
|
{
|
model.DisplayLevelUpError(error);
|
}
|
else
|
{
|
CA518_tagCMGatherSoulUp pak = new CA518_tagCMGatherSoulUp();
|
pak.PlaceType = (byte)item.placeType;
|
pak.PlaceIndex = (ushort)item.index;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
}
|
}
|
}
|
|
}
|
|
|
|
|