//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, November 02, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using vnxbqy.UI; namespace vnxbqy.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()); } } BuffModel m_BuffModel; BuffModel Buffmodel { get { return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel()); } } PackModel _playerPack; PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } 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.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.SetActive(_buffid != 0); m_BuffTime.SetActive(_buffid != 0); if (_buffid != 0) { RefreshBuffTime(); SkillConfig skillCfg = SkillConfig.Get(_buffid); if (skillCfg != null) { m_LiquidEffect.text = StringUtility.Contact("", skillCfg.EffectValue11 / 100, "%"); 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); } } }