//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, March 07, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class EquipGemLevelUpWin : Window
|
{
|
[SerializeField] Transform m_ContainerNow;
|
[SerializeField] ItemBehaviour m_Gem;
|
[SerializeField] PropertyBehaviour[] m_Propertys;
|
|
[SerializeField] Transform m_ContainerNext;
|
[SerializeField] ItemBehaviour m_LevelUpGem;
|
[SerializeField] PropertyBehaviour[] m_LevelUpPropertys;
|
[SerializeField] Transform[] m_NewSigns;
|
|
[SerializeField] Transform m_ContainerCostMoney;
|
[SerializeField] Transform m_ContainerCostGem;
|
[SerializeField] Transform m_ContainerLevelType;
|
[SerializeField] Button m_SelectLevelUpType;
|
[SerializeField] Button m_UseMoney;
|
[SerializeField] Button m_UseGem;
|
[SerializeField] Text m_LevelUpType;
|
[SerializeField] Text m_CostMoney;
|
[SerializeField] Text m_CostGem;
|
|
[SerializeField] RedpointBehaviour m_ComposeRedpoint0;
|
[SerializeField] RedpointBehaviour m_ComposeRedpoint1;
|
|
[SerializeField] UIEffect m_Effect;
|
[SerializeField] Button m_LevelUp;
|
[SerializeField] Button m_Close;
|
|
EquipGemModel model
|
{
|
get
|
{
|
return ModelCenter.Instance.GetModel<EquipGemModel>();
|
}
|
}
|
|
PackModel packModel
|
{
|
get
|
{
|
return ModelCenter.Instance.GetModel<PackModel>();
|
}
|
}
|
|
public static GemEquipType equipType = GemEquipType.MultiEquip;
|
public static int equipLevel = 0;
|
public static int equipPlace = 0;
|
public static int equipHole = 0;
|
|
int levelUpType = 0;
|
int levelUpCost = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Close.onClick.AddListener(CloseClick);
|
m_LevelUp.onClick.AddListener(LevelUp);
|
m_UseMoney.onClick.AddListener(() =>
|
{
|
SelectLevelUpType(0);
|
m_ContainerLevelType.SetActive(false);
|
});
|
m_UseGem.onClick.AddListener(() =>
|
{
|
SelectLevelUpType(1);
|
m_ContainerLevelType.SetActive(false);
|
});
|
m_SelectLevelUpType.onClick.AddListener(OnClickSelectType);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.equipGemRefresh += EquipGemRefresh;
|
packModel.refreshItemCountEvent += RefreshItemCountAct;
|
|
m_ContainerLevelType.SetActive(false);
|
|
int equipGem;
|
model.TryGetEquipGem(equipLevel, equipPlace, equipHole, out equipGem);
|
if (equipGem == 0)
|
{
|
return;
|
}
|
var config = ItemConfig.Get(equipGem);
|
var type = config.EffectValueA1;
|
|
GemType gemType;
|
if (model.TryGetGemType(type, out gemType))
|
{
|
m_SelectLevelUpType.SetActive(gemType.shopItemId != 0);
|
if (gemType.shopItemId == 0)
|
{
|
levelUpType = 1;
|
}
|
else
|
{
|
levelUpType = 0;
|
EquipGemRedpoint equipGemRedpoint;
|
if (model.TryGetRedpoint(equipLevel, equipPlace, out equipGemRedpoint))
|
{
|
var composeRedpoint = equipGemRedpoint.GetComposeRedpoint(equipHole);
|
if (composeRedpoint.state == RedPointState.Simple)
|
{
|
levelUpType = 1;
|
}
|
m_ComposeRedpoint0.redpointId = composeRedpoint.id;
|
m_ComposeRedpoint1.redpointId = composeRedpoint.id;
|
}
|
}
|
}
|
|
DisplayLevelUp();
|
DisplayLevelUpType();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
packModel.refreshItemCountEvent -= RefreshItemCountAct;
|
model.equipGemRefresh -= EquipGemRefresh;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
private void LevelUp()
|
{
|
if (levelUpType == 0)
|
{
|
if (PlayerDatas.Instance.baseData.diamond < levelUpCost)
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
return;
|
}
|
model.SendGemLevelUp(equipLevel, equipPlace, equipHole, levelUpType);
|
}
|
else
|
{
|
int equipGem;
|
model.TryGetEquipGem(equipLevel, equipPlace, equipHole, out equipGem);
|
|
var config = ItemConfig.Get(equipGem);
|
|
GemType gemType;
|
model.TryGetGemType(config.EffectValueA1, out gemType);
|
|
var count = model.GetGemCount(config.EffectValueA1, config.EffectValueB1);
|
|
if (count < gemType.composeCount - 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("GemComposeFail");
|
return;
|
}
|
|
if (gemType.composeItems.ContainsKey(config.EffectValueB1 + 1))
|
{
|
var item = gemType.composeItems[config.EffectValueB1 + 1];
|
count = packModel.GetItemCountByID(PackType.Item, item.id);
|
if (count < item.count)
|
{
|
SysNotifyMgr.Instance.ShowTip("GemComposeFail");
|
return;
|
}
|
}
|
|
model.SendGemLevelUp(equipLevel, equipPlace, equipHole, levelUpType);
|
}
|
}
|
|
|
|
private void EquipGemRefresh(int level, int place)
|
{
|
if (equipLevel == level && equipPlace == place)
|
{
|
int equipGem;
|
model.TryGetEquipGem(level, place, equipHole, out equipGem);
|
if (model.IsEquipGemMaxLevel(equipGem))
|
{
|
CloseClick();
|
}
|
else
|
{
|
m_Effect.Play();
|
DisplayLevelUp();
|
}
|
}
|
}
|
|
private void RefreshItemCountAct(PackType _type, int arg2, int arg3)
|
{
|
if (_type == PackType.Item)
|
{
|
DisplayGemCount();
|
}
|
}
|
|
private void DisplayGemCount()
|
{
|
int equipGem;
|
model.TryGetEquipGem(equipLevel, equipPlace, equipHole, out equipGem);
|
|
var config = ItemConfig.Get(equipGem);
|
var type = config.EffectValueA1;
|
|
GemType gemType;
|
model.TryGetGemType(type, out gemType);
|
|
var count = 0;
|
count = model.GetGemCount(type, config.EffectValueB1);
|
var displayString = StringUtility.Contact(count < gemType.composeCount - 1 ? "<color=#ff0303>" : "<color=#109d06>",
|
gemType.composeCount - 1, "</color>");
|
|
var matLabel = string.Empty;
|
if (gemType.composeItems.ContainsKey(config.EffectValueB1 + 1))
|
{
|
var item = gemType.composeItems[config.EffectValueB1 + 1];
|
var matConfig = ItemConfig.Get(item.id);
|
count = packModel.GetItemCountByID(PackType.Item, item.id);
|
matLabel = StringUtility.Contact(matConfig.ItemName, "x",
|
count < item.count ? "<color=#ff0303>" : "<color=#109d06>",
|
item.count, "</color>");
|
}
|
|
m_CostGem.text = Language.Get("GemLevelUpCostGem", config.ItemName, displayString + " " + matLabel);
|
}
|
|
void DisplayLevelUp()
|
{
|
int equipGem;
|
model.TryGetEquipGem(equipLevel, equipPlace, equipHole, out equipGem);
|
EquipGemWin.DisplayProperty(equipGem, m_Propertys);
|
|
var config = ItemConfig.Get(equipGem);
|
m_Gem.SetItem(equipGem, 1);
|
|
if (!model.IsEquipGemMaxLevel(equipGem))
|
{
|
m_ContainerNext.SetActive(true);
|
m_LevelUp.interactable = true;
|
var upConfig = model.GetNextLevelConfig(equipGem);
|
m_LevelUpGem.SetItem(upConfig.ID, 1);
|
EquipGemWin.DisplayProperty(upConfig.ID, m_LevelUpPropertys);
|
|
var index = 0;
|
bool isNew = config.Effect2 == 0 && upConfig.Effect2 != 0;
|
m_NewSigns[index].SetActive(isNew);
|
m_LevelUpPropertys[index].SetColor(isNew ? TextColType.DarkGreen : TextColType.NavyBrown, false);
|
index++;
|
|
isNew = config.Effect3 == 0 && upConfig.Effect3 != 0;
|
m_NewSigns[index].SetActive(isNew);
|
m_LevelUpPropertys[index].SetColor(isNew ? TextColType.DarkGreen : TextColType.NavyBrown, false);
|
index++;
|
|
isNew = config.Effect4 == 0 && upConfig.Effect4 != 0;
|
m_NewSigns[index].SetActive(isNew);
|
m_LevelUpPropertys[index].SetColor(isNew ? TextColType.DarkGreen : TextColType.NavyBrown, false);
|
index++;
|
|
levelUpCost = model.GetGemLevelUpCost(config.EffectValueA1, config.EffectValueB1);
|
if (PlayerDatas.Instance.baseData.diamond < levelUpCost)
|
{
|
m_CostMoney.text = UIHelper.AppendColor(TextColType.Red, levelUpCost.ToString(), true);
|
}
|
else
|
{
|
m_CostMoney.text = UIHelper.AppendColor(TextColType.NavyBrown, levelUpCost.ToString());
|
}
|
|
DisplayGemCount();
|
}
|
else
|
{
|
m_ContainerNext.SetActive(false);
|
m_LevelUp.interactable = false;
|
m_CostMoney.text = (0).ToString();
|
}
|
}
|
|
void DisplayLevelUpType()
|
{
|
m_LevelUpType.text = levelUpType == 0 ? Language.Get("GemLevelUpWin_XianYu") : Language.Get("GemLevelUpWin_ TongJiBaoShi");
|
m_UseGem.image.SetSprite(levelUpType == 0 ? "Title_TabDark" : "Title_TabRight");
|
m_UseMoney.image.SetSprite(levelUpType == 1 ? "Title_TabDark" : "Title_TabRight");
|
m_ContainerCostGem.SetActive(levelUpType == 1);
|
m_ContainerCostMoney.SetActive(levelUpType == 0);
|
}
|
|
private void OnClickSelectType()
|
{
|
m_ContainerLevelType.SetActive(true);
|
}
|
|
void SelectLevelUpType(int _type)
|
{
|
levelUpType = _type;
|
DisplayLevelUpType();
|
}
|
}
|
}
|
|
|
|
|