//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, November 02, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using Snxxz.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class DungeonUseLiquidWin : Window
|
{
|
[SerializeField] Text m_Remind;
|
[SerializeField] ScrollerController m_ScrollerControl;
|
[SerializeField] Button m_CloseBtn;
|
[SerializeField] RectTransform m_ContaienrLiquidEffect;
|
[SerializeField] Text m_LiquidEffect;
|
[SerializeField] Text m_BuffTime;
|
|
DungeonLiquidModel m_Model;
|
DungeonLiquidModel model {
|
get {
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonLiquidModel>());
|
}
|
}
|
|
BuffModel m_BuffModel;
|
BuffModel Buffmodel {
|
get {
|
return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel<BuffModel>());
|
}
|
}
|
|
PackModel _playerPack;
|
PackModel playerPack {
|
get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
|
}
|
|
private int buffId = 0;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
m_CloseBtn.onClick.AddListener(CloseClick);
|
}
|
|
protected override void OnPreOpen()
|
{
|
OnRefershLiquid();
|
playerPack.refreshItemCountEvent += OnRefreshItem;
|
BuffModel.Even_ObjAddBuf += UpdateBuf;
|
BuffModel.Even_ObjDelBuff += UpdateBuf;
|
UpdateBuf();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
playerPack.refreshItemCountEvent -= OnRefreshItem;
|
BuffModel.Even_ObjAddBuf -= UpdateBuf;
|
BuffModel.Even_ObjDelBuff -= UpdateBuf;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
float timer = 0f;
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
if (buffId == 0)
|
{
|
return;
|
}
|
timer += Time.deltaTime;
|
if (timer > 0.5f)
|
{
|
timer = 0f;
|
RefreshBuffTime();
|
}
|
}
|
#endregion
|
|
private void OnRefreshItem(PackType type, int index, int id)
|
{
|
OnRefershLiquid();
|
}
|
|
void OnRefershLiquid()
|
{
|
SinglePack singlePack = playerPack.GetSinglePack(PackType.Item);
|
model.liquidItemList.Clear();
|
model.liquidStoreConfigs.Clear();
|
if (model.liquidItems.Count > 0)
|
{
|
for (int i = 0; i < model.liquidItems.Count; i++)
|
{
|
var list = singlePack.GetItemsById(model.liquidItems[i]);
|
if (list != null && list.Count > 0)
|
{
|
model.liquidItemList.AddRange(list);
|
}
|
}
|
}
|
|
model.IsBagHasLiquid = model.liquidItemList.Count > 0;
|
m_Remind.gameObject.SetActive(!UseLiquid());
|
m_Remind.text = model.IsBagHasLiquid ? Language.Get("FairyLand_Func27") : Language.Get("FairyLand_Func28");
|
|
m_ScrollerControl.Refresh();
|
if (model.IsBagHasLiquid)
|
{
|
model.liquidItemList.Sort(Compare);
|
for (int i = 0; i < model.liquidItemList.Count; i++)
|
{
|
m_ScrollerControl.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
else
|
{
|
for (int i = 0; i < model.liquidItems.Count; i++)
|
{
|
var _dict = model.liquidStoreDict[model.liquidItems[i]];
|
if (_dict.Count > 0)
|
{
|
foreach (var _key in _dict.Keys)
|
{
|
if (_key == 1)
|
{
|
model.liquidStoreConfigs.Add(_dict[_key]);
|
break;
|
}
|
}
|
}
|
}
|
for (int i = 0; i < model.liquidStoreConfigs.Count; i++)
|
{
|
m_ScrollerControl.AddCell(ScrollerDataType.Header, i);
|
}
|
|
}
|
m_ScrollerControl.Restart();
|
}
|
|
private void UpdateBuf()
|
{
|
var _buffid = 0;
|
for (int i = 0; i < model.liquidItems.Count; i++)
|
{
|
ItemConfig cfg = ItemConfig.Get(model.liquidItems[i]);
|
if (Buffmodel._BuffDic.ContainsKey(cfg.AddSkill1))
|
{
|
_buffid = cfg.AddSkill1;
|
break;
|
}
|
}
|
buffId = _buffid;
|
m_ContaienrLiquidEffect.gameObject.SetActive(_buffid != 0);
|
m_BuffTime.gameObject.SetActive(_buffid != 0);
|
if (_buffid != 0)
|
{
|
RefreshBuffTime();
|
SkillConfig skillCfg = SkillConfig.Get(_buffid);
|
if (skillCfg != null)
|
{
|
m_LiquidEffect.text = StringUtility.Contact("<color=#109d06>", skillCfg.EffectValue11 / 100, "%</color>");
|
return;
|
}
|
}
|
}
|
|
private void RefreshBuffTime()
|
{
|
if (Buffmodel._BuffDic.ContainsKey(buffId))
|
{
|
var buff = Buffmodel._BuffDic[buffId];
|
var seconds = buff.LastTime - (DateTime.Now - buff._dattTime).TotalSeconds;
|
m_BuffTime.text = TimeUtility.SecondsToDHMSCHS((int)seconds);
|
}
|
}
|
|
private bool UseLiquid()
|
{
|
for (int i = 0; i < model.liquidItems.Count; i++)
|
{
|
var config = ItemConfig.Get(model.liquidItems[i]);
|
if (Buffmodel._BuffDic.ContainsKey(config.AddSkill1))
|
{
|
return true;
|
}
|
}
|
return false;
|
}
|
|
int Compare(ItemModel x, ItemModel y)
|
{
|
return -x.itemId.CompareTo(y.itemId);
|
}
|
|
}
|
|
}
|
|
|
|
|