//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, October 27, 2017
|
//--------------------------------------------------------
|
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class GemLevelUpWin : Window
|
{
|
[SerializeField] Image _gemLevelUpPreIcon;
|
[SerializeField] Image _gemLevelUpPreBG;
|
[SerializeField] Image _gemLevelUpPreBind;
|
[SerializeField] GemProperty m_NowGemProperty;
|
|
[SerializeField] Image _gemLevelUpNextIcon;
|
[SerializeField] Image _gemLevelUpNextBG;
|
[SerializeField] Image _gemLevelUpNextBind;
|
[SerializeField] GemProperty m_NextGemProperty;
|
|
[SerializeField] List<Image> _gemNewIcons;
|
|
|
[SerializeField] Text _gemLevelUpCost;
|
|
[SerializeField] Button _gemlevelUpBtn;
|
[SerializeField] Button _gemlevelCloseBtn;
|
|
[SerializeField] UIEffect levelUpEffect;
|
|
[SerializeField] RectTransform m_ContainerCostMoney;
|
[SerializeField] RectTransform m_ContainerCostGem;
|
[SerializeField] RectTransform m_ContainerLevelType;
|
[SerializeField] Button m_MoneyTypeBtn;
|
[SerializeField] Button m_ComposeTypeBtn;
|
[SerializeField] Text m_LevelUpTypeText;
|
[SerializeField] Text m_LevelUpCostGemText;
|
[SerializeField] Button m_SelectTypeBtn;
|
|
[SerializeField] RedpointBehaviour m_ComposeRedpoint0;
|
[SerializeField] RedpointBehaviour m_ComposeRedpoint1;
|
|
|
int gemUpCost = 0;
|
|
GemModel m_Model;
|
GemModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<GemModel>());
|
}
|
}
|
|
JadeDynastyGemModel jadeDynastyGemModel
|
{
|
get { return ModelCenter.Instance.GetModel<JadeDynastyGemModel>(); }
|
}
|
|
PlayerPackModel m_PackModel;
|
PlayerPackModel packModel
|
{
|
get
|
{
|
return m_PackModel ?? (m_PackModel = ModelCenter.Instance.GetModel<PlayerPackModel>());
|
}
|
}
|
|
public static PackType packType = PackType.Equip;
|
public static int equipPlace = 0;
|
public static int equipHole = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
private void OnGemLevelUp()
|
{
|
if (model.levelUpType == 0)
|
{
|
if (PlayerDatas.Instance.baseData.Gold < gemUpCost)
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
return;
|
}
|
}
|
else
|
{
|
var _type = 0;
|
var id = 0;
|
int _count = 0;
|
int _bind = 0;
|
if (packType == PackType.Equip)
|
{
|
_type = FuncConfigConfig.GetGemTypeByEquipPos(equipPlace);
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(equipPlace);
|
byte[] stoneBind = PlayerStoneData.Instance.GetStoneBindInfo(equipPlace);
|
if (stones != null && equipHole < stones.Length)
|
{
|
id = (int)stones[equipHole];
|
if (stoneBind != null && equipHole < stoneBind.Length)
|
{
|
_bind = stoneBind[equipHole];
|
}
|
}
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
_type = jadeDynastyGemModel.GetGemType(equipPlace);
|
JadeDynastyGemModel.GemEquipData equipData;
|
if (jadeDynastyGemModel.TryGetEquipGems(equipPlace, out equipData))
|
{
|
id = (int)equipData.items[equipHole];
|
_bind = equipData.binds[equipHole];
|
}
|
}
|
|
ItemConfig cfg = ItemConfig.Get((int)id);
|
if (packType == PackType.Equip)
|
{
|
_count = model.GemCountByLevel(_type, cfg.EffectValueB1);
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
_count = jadeDynastyGemModel.GemCountByLevel(_type, cfg.EffectValueB1);
|
}
|
if (_count < model.gemComposeCount - 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("GemComposeFail");
|
return;
|
}
|
var realCount = 0;
|
if (packType == PackType.Equip)
|
{
|
realCount = model.GemCountByLevel(_type, cfg.EffectValueB1, true, _bind);
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
realCount = jadeDynastyGemModel.GemCountByLevel(_type, cfg.EffectValueB1, true, _bind);
|
}
|
if (realCount < model.gemComposeCount - 1)
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("GemComposeFail"), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
model.SendGemLevelUp(equipPlace, equipHole);
|
}
|
});
|
return;
|
}
|
}
|
model.SendGemLevelUp(equipPlace, equipHole);
|
}
|
|
protected override void AddListeners()
|
{
|
_gemlevelCloseBtn.onClick.AddListener(CloseClick);
|
_gemlevelUpBtn.onClick.AddListener(OnGemLevelUp);
|
m_MoneyTypeBtn.onClick.AddListener(() =>
|
{
|
SelectLevelUpType(0);
|
m_ContainerLevelType.gameObject.SetActive(false);
|
});
|
m_ComposeTypeBtn.onClick.AddListener(() =>
|
{
|
SelectLevelUpType(1);
|
m_ContainerLevelType.gameObject.SetActive(false);
|
});
|
m_SelectTypeBtn.onClick.AddListener(OnClickSelectType);
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerStoneData.OnRefreshStoneData += OnUpdateGem;
|
jadeDynastyGemModel.equipGemRefresh += EquipGemRefresh;
|
packModel.RefreshItemCountAct += RefreshItemCountAct;
|
m_ContainerLevelType.gameObject.SetActive(false);
|
if (packType == PackType.Equip)
|
{
|
if (equipHole < model.gemComposeReds.Count &&
|
model.gemComposeReds[equipHole].state == RedPointState.Simple)
|
{
|
model.levelUpType = 1;
|
}
|
m_ComposeRedpoint0.redpointId = GemModel.GEM_REDPOINT * GemModel.REDPOINT_INTERVAL + 20 + equipHole + 1;
|
m_ComposeRedpoint1.redpointId = GemModel.GEM_REDPOINT * GemModel.REDPOINT_INTERVAL + 20 + equipHole + 1;
|
m_SelectTypeBtn.gameObject.SetActive(true);
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
model.levelUpType = 1;
|
m_ComposeRedpoint0.redpointId = 0;
|
m_ComposeRedpoint1.redpointId = 0;
|
var type = jadeDynastyGemModel.GetGemType(equipPlace);
|
m_SelectTypeBtn.gameObject.SetActive(model.gemShopIds.ContainsKey(type));
|
|
if (model.gemShopIds.ContainsKey(type))
|
{
|
if (equipHole < jadeDynastyGemModel.gemComposeReds.Count &&
|
jadeDynastyGemModel.gemComposeReds[equipHole].state == RedPointState.Simple)
|
{
|
model.levelUpType = 1;
|
}
|
else
|
{
|
model.levelUpType = 0;
|
}
|
}
|
}
|
OnUpdateLevelUp();
|
UpdateLevelUpType();
|
}
|
|
private void EquipGemRefresh()
|
{
|
JadeDynastyGemModel.GemEquipData equipData;
|
if(jadeDynastyGemModel.TryGetEquipGems(equipPlace,out equipData))
|
{
|
int id = (int)equipData.items[equipHole];
|
if (jadeDynastyGemModel.IsHightestLevelGem(id))
|
{
|
CloseClick();
|
}
|
else
|
{
|
levelUpEffect.Play();
|
OnUpdateLevelUp();
|
}
|
}
|
}
|
|
private void RefreshItemCountAct(PackType _type, int arg2, int arg3)
|
{
|
if (_type == PackType.Item
|
|| _type == PackType.JadeDynastyItem)
|
{
|
OnUpdateGemCount();
|
}
|
}
|
|
private void OnUpdateGemCount()
|
{
|
var type = -1;
|
if (packType == PackType.Equip)
|
{
|
type = FuncConfigConfig.GetGemTypeByEquipPos(equipPlace);
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
type = jadeDynastyGemModel.GetGemType(equipPlace);
|
}
|
int _count = 0;
|
if (type != -1)
|
{
|
var id = 0;
|
if (packType == PackType.Equip)
|
{
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(equipPlace);
|
if (stones != null && equipHole < stones.Length)
|
{
|
id = (int)stones[equipHole];
|
}
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
JadeDynastyGemModel.GemEquipData equipData;
|
if(jadeDynastyGemModel.TryGetEquipGems(equipPlace,out equipData))
|
{
|
id = (int)equipData.items[equipHole];
|
}
|
}
|
ItemConfig cfg = ItemConfig.Get((int)id);
|
if (packType == PackType.Equip)
|
{
|
_count = model.GemCountByLevel(type, cfg.EffectValueB1);
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
_count = jadeDynastyGemModel.GemCountByLevel(type, cfg.EffectValueB1);
|
}
|
var _countStr = StringUtility.Contact(_count < model.gemComposeCount - 1 ? "<color=#ff0303>" : "<color=#109d06>", model.gemComposeCount - 1, "</color>");
|
m_LevelUpCostGemText.text = Language.Get("GemLevelUpCostGem", cfg.ItemName, _countStr);
|
}
|
}
|
|
private void OnUpdateGem()
|
{
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(model.presentGemEquip);
|
if (stones != null && equipHole < stones.Length)
|
{
|
uint id = stones[equipHole];
|
ItemConfig cfg = ItemConfig.Get((int)id);
|
ItemConfig next = ItemConfig.GetGemDataByLevelAndType(cfg.EffectValueB1 + 1, cfg.EffectValueA1);
|
if (next == null)
|
{
|
CloseClick();
|
}
|
else
|
{
|
levelUpEffect.Play();
|
OnUpdateLevelUp();
|
}
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerStoneData.OnRefreshStoneData -= OnUpdateGem;
|
packModel.RefreshItemCountAct -= RefreshItemCountAct;
|
jadeDynastyGemModel.equipGemRefresh -= EquipGemRefresh;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
void OnUpdateLevelUp()
|
{
|
var _bind = 0;
|
var id = 0;
|
if (packType == PackType.Equip)
|
{
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(equipPlace);
|
byte[] stoneBind = PlayerStoneData.Instance.GetStoneBindInfo(equipPlace);
|
if (stones != null)
|
{
|
id = (int)stones[equipHole];
|
}
|
if (stoneBind != null)
|
{
|
_bind = equipHole < stoneBind.Length ? stoneBind[equipHole] : 0;
|
}
|
}
|
else if (packType == PackType.JadeDynastyEquip)
|
{
|
JadeDynastyGemModel.GemEquipData equipData;
|
if (jadeDynastyGemModel.TryGetEquipGems(equipPlace, out equipData))
|
{
|
_bind = equipData.binds[equipHole];
|
id = (int)equipData.items[equipHole];
|
}
|
}
|
|
ItemConfig config = ItemConfig.Get((int)id);
|
if (id == 0 || config == null)
|
{
|
return;
|
}
|
_gemLevelUpPreIcon.SetSprite(config.IconKey);
|
_gemLevelUpPreBG.SetItemBackGround(config.ItemColor);
|
_gemLevelUpPreBind.gameObject.SetActive(_bind == 1);
|
_gemLevelUpNextBind.gameObject.SetActive(_bind == 1);
|
m_NowGemProperty.Display(config.ID);
|
ItemConfig next = ItemConfig.GetGemDataByLevelAndType(config.EffectValueB1 + 1, config.EffectValueA1);
|
if (next != null && config.Type == next.Type && config.EffectValueA1 == next.EffectValueA1)
|
{
|
_gemlevelUpBtn.interactable = true;
|
_gemLevelUpNextBG.gameObject.SetActive(true);
|
_gemLevelUpNextIcon.gameObject.SetActive(true);
|
m_NextGemProperty.SetActive(true);
|
gemUpCost = model.GemLevelUpCost(config.EffectValueB1, model.GetSingleGemPrice(config.EffectValueA1));
|
if (PlayerDatas.Instance.baseData.Gold < gemUpCost)
|
{
|
_gemLevelUpCost.text = UIHelper.AppendStringColor(TextColType.Red, gemUpCost.ToString(), true);
|
}
|
else
|
{
|
_gemLevelUpCost.text = UIHelper.AppendStringColor(TextColType.NavyBrown, gemUpCost.ToString());
|
}
|
OnUpdateGemCount();
|
_gemLevelUpNextIcon.SetSprite(next.IconKey);
|
_gemLevelUpNextBG.SetItemBackGround(next.ItemColor);
|
m_NextGemProperty.Display(next.ID);
|
_gemNewIcons[0].gameObject.SetActive(config.Effect2 == 0 && next.Effect2 != 0);
|
m_NextGemProperty.Display(0, config.Effect2 == 0 && next.Effect2 != 0);
|
_gemNewIcons[1].gameObject.SetActive(config.Effect3 == 0 && next.Effect3 != 0);
|
m_NextGemProperty.Display(1, config.Effect3 == 0 && next.Effect3 != 0);
|
_gemNewIcons[2].gameObject.SetActive(config.Effect4 == 0 && next.Effect4 != 0);
|
m_NextGemProperty.Display(2, config.Effect4 == 0 && next.Effect4 != 0);
|
}
|
else
|
{
|
_gemLevelUpNextBG.gameObject.SetActive(false);
|
_gemLevelUpNextIcon.gameObject.SetActive(false);
|
m_NextGemProperty.SetActive(false);
|
_gemlevelUpBtn.interactable = false;
|
_gemLevelUpCost.text = (0).ToString();
|
}
|
}
|
|
void UpdateLevelUpType()
|
{
|
m_LevelUpTypeText.text = model.levelUpType == 0 ? Language.Get("GemLevelUpWin_XianYu") : Language.Get("GemLevelUpWin_ TongJiBaoShi");
|
m_ComposeTypeBtn.image.SetSprite(model.levelUpType == 0 ? "Title_TabDark" : "Title_TabRight");
|
m_MoneyTypeBtn.image.SetSprite(model.levelUpType == 1 ? "Title_TabDark" : "Title_TabRight");
|
m_ContainerCostGem.gameObject.SetActive(model.levelUpType == 1);
|
m_ContainerCostMoney.gameObject.SetActive(model.levelUpType == 0);
|
}
|
|
private void OnClickSelectType()
|
{
|
m_ContainerLevelType.gameObject.SetActive(true);
|
}
|
|
void SelectLevelUpType(int _type)
|
{
|
model.levelUpType = _type;
|
UpdateLevelUpType();
|
}
|
[Serializable]
|
public class GemProperty
|
{
|
[SerializeField] Text m_Property0;
|
[SerializeField] Text m_PropertyValue0;
|
[SerializeField] Text m_Property1;
|
[SerializeField] Text m_PropertyValue1;
|
[SerializeField] Text m_Property2;
|
[SerializeField] Text m_PropertyValue2;
|
|
public void Display(int _gemId)
|
{
|
var _itemCfg = ItemConfig.Get(_gemId);
|
m_Property0.gameObject.SetActive(_itemCfg.Effect2 != 0);
|
m_PropertyValue0.gameObject.SetActive(_itemCfg.Effect2 != 0);
|
if (_itemCfg.Effect2 != 0)
|
{
|
PlayerPropertyConfig _propertyCfg = PlayerPropertyConfig.Get(_itemCfg.Effect2);
|
m_Property0.text = _propertyCfg.Name;
|
m_PropertyValue0.text = StringUtility.Contact("+",
|
UIHelper.ReplacePercentage(_itemCfg.EffectValueA2, _propertyCfg.ISPercentage
|
, _propertyCfg.ISPercentage == 1 ? 2 : 1),
|
_propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
m_Property1.gameObject.SetActive(_itemCfg.Effect3 != 0);
|
m_PropertyValue1.gameObject.SetActive(_itemCfg.Effect3 != 0);
|
if (_itemCfg.Effect3 != 0)
|
{
|
PlayerPropertyConfig _propertyCfg = PlayerPropertyConfig.Get(_itemCfg.Effect3);
|
m_Property1.text = _propertyCfg.Name;
|
m_PropertyValue1.text = StringUtility.Contact("+",
|
UIHelper.ReplacePercentage(_itemCfg.EffectValueA3, _propertyCfg.ISPercentage
|
, _propertyCfg.ISPercentage == 1 ? 2 : 1),
|
_propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
m_Property2.gameObject.SetActive(_itemCfg.Effect4 != 0);
|
m_PropertyValue2.gameObject.SetActive(_itemCfg.Effect4 != 0);
|
if (_itemCfg.Effect4 != 0)
|
{
|
PlayerPropertyConfig _propertyCfg = PlayerPropertyConfig.Get(_itemCfg.Effect4);
|
m_Property2.text = _propertyCfg.Name;
|
m_PropertyValue2.text = StringUtility.Contact("+",
|
UIHelper.ReplacePercentage(_itemCfg.EffectValueA4, _propertyCfg.ISPercentage,
|
_propertyCfg.ISPercentage == 1 ? 2 : 1),
|
_propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
}
|
|
public void SetActive(bool _active)
|
{
|
m_Property0.gameObject.SetActive(_active);
|
m_PropertyValue0.gameObject.SetActive(_active);
|
m_Property1.gameObject.SetActive(_active);
|
m_PropertyValue1.gameObject.SetActive(_active);
|
m_Property2.gameObject.SetActive(_active);
|
m_PropertyValue2.gameObject.SetActive(_active);
|
}
|
|
public void Display(int _index, bool _new)
|
{
|
if (_index == 0)
|
{
|
m_Property0.color = _new ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.NavyBrown);
|
m_PropertyValue0.color = _new ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.NavyBrown);
|
}
|
else if (_index == 1)
|
{
|
m_Property1.color = _new ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.NavyBrown);
|
m_PropertyValue1.color = _new ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.NavyBrown);
|
}
|
else if (_index == 2)
|
{
|
m_Property2.color = _new ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.NavyBrown);
|
m_PropertyValue2.color = _new ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.NavyBrown);
|
}
|
}
|
}
|
}
|
|
|
}
|
|
|
|
|