//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, January 03, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class RuneComposeWin : Window
|
{
|
[SerializeField] ScrollerController scrollerController;
|
[SerializeField] Image m_MagicLockImg;
|
[SerializeField] Button m_MagicEssenceBtn;
|
[SerializeField] Text m_MagicEssenceTxt;
|
[SerializeField] RectTransform m_ContainerMagicUnlock;
|
|
[SerializeField] Image m_ComposeRuneImg;
|
[SerializeField] Text m_ComposeRuneNameTxt;
|
[SerializeField] Text m_ComposeRuneProperty0;
|
[SerializeField] Text m_ComposeRuneProperty1;
|
[SerializeField] Text m_ComposeRunePropertyValue0;
|
[SerializeField] Text m_ComposeRunePropertyValue1;
|
[SerializeField] RectTransform m_ContainerComposeUnlock;
|
|
[SerializeField] Image m_Rune1Img;
|
[SerializeField] Image m_Rune1LockImg;
|
[SerializeField] Text m_Rune1NameTxt;
|
[SerializeField] Text m_Rune1NumTxt;
|
[SerializeField] Button m_Rune1Btn;
|
[SerializeField] RectTransform m_ContainerRune1Unlock;
|
|
[SerializeField] Image m_Rune2Img;
|
[SerializeField] Image m_Rune2LockImg;
|
[SerializeField] Text m_Rune2NameTxt;
|
[SerializeField] Text m_Rune2NumTxt;
|
[SerializeField] Button m_Rune2Btn;
|
[SerializeField] RectTransform m_ContainerRune2Unlock;
|
|
[SerializeField] UIEffect m_RuneComposeEffect;
|
|
[SerializeField] Button m_ComposeBtn;
|
[SerializeField] RedpointBehaviour m_ComposeRedpoint;
|
|
RuneComposeModel model { get { return ModelCenter.Instance.GetModel<RuneComposeModel>(); } }
|
|
RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
|
|
RuneResolveModel runeResolveModel { get { return ModelCenter.Instance.GetModel<RuneResolveModel>(); } }
|
|
VirtualPackModel virtualPackModel { get { return ModelCenter.Instance.GetModel<VirtualPackModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
scrollerController.lockType = EnhanceLockType.KeepVertical;
|
m_Rune2Btn.onClick.AddListener(() =>
|
{
|
OnClickRune(1);
|
});
|
m_Rune1Btn.onClick.AddListener(() =>
|
{
|
OnClickRune(0);
|
});
|
m_ComposeBtn.onClick.AddListener(OnComposeBtn);
|
m_MagicEssenceBtn.onClick.AddListener(OnMagicEssenceBtn);
|
}
|
|
protected override void OnPreOpen()
|
{
|
runeModel.onRuneTowerRefresh += OnRuneTowerRefresh;
|
virtualPackModel.virtualPackRefresh += VirtualPackRefresh;
|
PlayerDatas.Instance.playerDataRefreshEvent += OnRefreshPlayerInfo;
|
DTC0721_tagMakeItemAnswer.MakeItemAnswerEvent += MakeItemAnswerEvent;
|
RefreshRuneType();
|
RefreshRuneCompose();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
runeModel.onRuneTowerRefresh -= OnRuneTowerRefresh;
|
virtualPackModel.virtualPackRefresh -= VirtualPackRefresh;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnRefreshPlayerInfo;
|
DTC0721_tagMakeItemAnswer.MakeItemAnswerEvent -= MakeItemAnswerEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
private void OnRuneTowerRefresh()
|
{
|
scrollerController.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void OnRefreshPlayerInfo(PlayerDataType type)
|
{
|
if (type == PlayerDataType.MagicEssence)
|
{
|
RuneComposeConfig _cfg = model.GetRuneCompose(model.presentSelectRuneQuality, model.presentSelectComposeRune);
|
if (_cfg == null)
|
{
|
return;
|
}
|
var _magicEssence = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MagicEssence);
|
m_MagicEssenceTxt.text = StringUtility.Contact(_magicEssence >= (ulong)_cfg.NeedMJ ?
|
UIHelper.AppendColor(TextColType.Green, _magicEssence.ToString()) :
|
UIHelper.AppendColor(TextColType.Red, _magicEssence.ToString()), "/", _cfg.NeedMJ);
|
}
|
}
|
|
private void MakeItemAnswerEvent(H0721_tagMakeItemAnswer package)
|
{
|
if (package.MakeType == (int)MakeType.RuneCompound)
|
{
|
if (package.Result == 1)
|
{
|
if (m_RuneComposeEffect != null)
|
{
|
m_RuneComposeEffect.Play();
|
}
|
}
|
}
|
}
|
|
void RefreshRuneCompose()
|
{
|
RuneComposeConfig _cfg = model.GetRuneCompose(model.presentSelectRuneQuality, model.presentSelectComposeRune);
|
m_MagicLockImg.SetActive(_cfg == null);
|
m_ContainerMagicUnlock.SetActive(_cfg != null);
|
m_ContainerComposeUnlock.SetActive(_cfg != null);
|
m_ContainerRune1Unlock.SetActive(_cfg != null);
|
m_ContainerRune2Unlock.SetActive(_cfg != null);
|
m_Rune1LockImg.SetActive(_cfg == null);
|
m_Rune2LockImg.SetActive(_cfg == null);
|
m_ComposeBtn.SetActive(_cfg != null);
|
|
if (_cfg != null)
|
{
|
var _redpointTypeKey = 10803 * 100 + model.presentSelectRuneQuality;
|
m_ComposeRedpoint.redpointId = _redpointTypeKey * 100 + model.presentSelectComposeRune;
|
var _magicEssence = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MagicEssence);
|
m_MagicEssenceTxt.text = StringUtility.Contact(_magicEssence >= (ulong)_cfg.NeedMJ ?
|
UIHelper.AppendColor(TextColType.Green, _magicEssence.ToString()) :
|
UIHelper.AppendColor(TextColType.Red, _magicEssence.ToString()), "/", _cfg.NeedMJ);
|
|
ItemConfig _itemCfg = ItemConfig.Get(_cfg.NeedItem[0]);
|
m_Rune1Img.SetSprite(_itemCfg.IconKey);
|
RuneItem _rune1 = null;
|
var _runeCnt = runeModel.TryGetComposeRuneCount(_cfg.NeedItem[0], out _rune1);
|
m_Rune1NumTxt.text = StringUtility.Contact(_runeCnt > 0 ?
|
UIHelper.AppendColor(TextColType.White, _runeCnt.ToString()) :
|
UIHelper.AppendColor(TextColType.Red, _runeCnt.ToString()), "/", 1);
|
m_Rune1NameTxt.text = StringUtility.Contact(_itemCfg.ItemName, " Lv.", _rune1 == null ? 1 : _rune1.level);
|
m_Rune1NameTxt.color = UIHelper.GetUIColor(_itemCfg.ItemColor, true);
|
|
_itemCfg = ItemConfig.Get(_cfg.NeedItem[1]);
|
m_Rune2Img.SetSprite(_itemCfg.IconKey);
|
RuneItem _rune2 = null;
|
_runeCnt = runeModel.TryGetComposeRuneCount(_cfg.NeedItem[1], out _rune2);
|
m_Rune2NumTxt.text = StringUtility.Contact(_runeCnt > 0 ?
|
UIHelper.AppendColor(TextColType.White, _runeCnt.ToString()) :
|
UIHelper.AppendColor(TextColType.Red, _runeCnt.ToString()), "/", 1);
|
m_Rune2NameTxt.text = StringUtility.Contact(_itemCfg.ItemName, " Lv.", _rune2 == null ? 1 : _rune2.level);
|
m_Rune2NameTxt.color = UIHelper.GetUIColor(_itemCfg.ItemColor, true);
|
|
_itemCfg = ItemConfig.Get(_cfg.TagItemID);
|
var _composeLv = 1;
|
m_ComposeRuneImg.SetSprite(_itemCfg.IconKey);
|
if (_rune1 != null && _rune2 != null)
|
{
|
float _exp = 0;
|
_exp += runeResolveModel.GetRuneResolveGetSplinters(_rune1.id, _rune1.level, true);
|
_exp += runeResolveModel.GetRuneResolveGetSplinters(_rune2.id, _rune2.level, true);
|
_composeLv = runeModel.GetRuneLevelBySplinters(_cfg.TagItemID, _exp);
|
}
|
m_ComposeRuneNameTxt.text = StringUtility.Contact(_itemCfg.ItemName, " Lv.", _composeLv);
|
RuneConfig _tagRuneModel = RuneConfig.Get(_itemCfg.ID);
|
int[] _runeTypes = _tagRuneModel.AttrType;
|
var _propertyCfg = PlayerPropertyConfig.Get(_runeTypes[0]);
|
m_ComposeRuneProperty0.text = _propertyCfg.Name;
|
m_ComposeRunePropertyValue0.text = StringUtility.Contact("+", UIHelper.ReplacePercentage(runeModel.GetPropertyValue(_itemCfg.ID,
|
_composeLv, _runeTypes[0]), _propertyCfg.ISPercentage), _propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
_propertyCfg = PlayerPropertyConfig.Get(_runeTypes[1]);
|
m_ComposeRuneProperty1.text = _propertyCfg.Name;
|
m_ComposeRunePropertyValue1.text = StringUtility.Contact("+", UIHelper.ReplacePercentage(runeModel.GetPropertyValue(_itemCfg.ID,
|
_composeLv, _runeTypes[1]), _propertyCfg.ISPercentage), _propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
m_ComposeRuneNameTxt.color = UIHelper.GetUIColor(_itemCfg.ItemColor, true);
|
}
|
}
|
void RefreshRuneType()
|
{
|
scrollerController.Refresh();
|
foreach (var _key in model.runeComposeDict.Keys)
|
{
|
scrollerController.AddCell(ScrollerDataType.Header, _key, OnRuneQualityClick);
|
if (model.presentSelectRuneQuality == _key)
|
{
|
List<RuneComposeConfig> list = model.runeComposeDict[_key];
|
for (int i = 0; i < list.Count; i++)
|
{
|
scrollerController.AddCell(ScrollerDataType.Normal, i, OnComposeRuneClick);
|
}
|
}
|
}
|
scrollerController.Restart();
|
}
|
|
private void VirtualPackRefresh(PackType packType)
|
{
|
if (packType == PackType.RunePack)
|
{
|
RefreshRuneCompose();
|
}
|
}
|
|
private void OnComposeRuneClick(CellView cell)
|
{
|
if (model.presentSelectComposeRune == cell.index)
|
{
|
return;
|
}
|
List<RuneComposeConfig> _list = model.runeComposeDict[model.presentSelectRuneQuality];
|
if (cell.index >= _list.Count)
|
{
|
return;
|
}
|
RuneConfig _runeCfg = RuneConfig.Get(_list[cell.index].TagItemID);
|
bool _unlockTower = _runeCfg.TowerID <= runeModel.passRuneTowerFloor;
|
if (!_unlockTower)
|
{
|
return;
|
}
|
model.presentSelectComposeRune = cell.index;
|
scrollerController.m_Scorller.RefreshActiveCellViews();
|
RefreshRuneCompose();
|
}
|
private void OnRuneQualityClick(CellView cell)
|
{
|
model.presentSelectRuneQuality = model.presentSelectRuneQuality == cell.index ? 0 : cell.index;
|
model.presentSelectComposeRune = -1;
|
RefreshRuneType();
|
RefreshRuneCompose();
|
}
|
|
private void OnClickRune(int _index)
|
{
|
var _cfg = model.GetRuneCompose(model.presentSelectRuneQuality, model.presentSelectComposeRune);
|
if (_cfg != null)
|
{
|
ItemTipUtility.Show(_cfg.NeedItem[_index]);
|
}
|
}
|
|
private void OnComposeBtn()
|
{
|
RuneComposeConfig _cfg = model.GetRuneCompose(model.presentSelectRuneQuality, model.presentSelectComposeRune);
|
RuneItem _rune1 = null;
|
var _runeCnt = runeModel.TryGetComposeRuneCount(_cfg.NeedItem[0], out _rune1);
|
RuneItem _rune2 = null;
|
_runeCnt = runeModel.TryGetComposeRuneCount(_cfg.NeedItem[1], out _rune2);
|
if (PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MagicEssence) < (ulong)_cfg.NeedMJ)
|
{
|
return;
|
}
|
if (_rune1 != null && _rune2 != null)
|
{
|
CA578_tagCMRuneCompound pak = new CA578_tagCMRuneCompound();
|
pak.TagItemID = (uint)_cfg.TagItemID;
|
pak.Cnt = 2;
|
pak.PackList = new byte[pak.Cnt];
|
pak.IndexList = new byte[pak.Cnt];
|
pak.PackList[0] = (byte)_rune1.placeType;
|
pak.IndexList[0] = (byte)_rune1.index;
|
pak.PackList[1] = (byte)_rune2.placeType;
|
pak.IndexList[1] = (byte)_rune2.index;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
}
|
|
private void OnMagicEssenceBtn()
|
{
|
var _displayId = GeneralDefine.moneyDisplayIds.ContainsKey(14) ? GeneralDefine.moneyDisplayIds[14] : 0;
|
if (_displayId != 0)
|
{
|
ItemTipUtility.Show(_displayId);
|
}
|
}
|
}
|
}
|
|
|
|
|