//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, April 18, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class AlchemyResultWin : Window { [SerializeField] UIAlphaTween m_DisplayAlphaTween; [SerializeField] Transform m_ContainerSucc; [SerializeField] Transform m_ContainerDefeat; [SerializeField] Text m_StoveLevel; [SerializeField] Text m_StoveExp; [SerializeField] Slider m_Slider; [SerializeField] ItemBehaviour m_Item; [SerializeField] Text m_CloseTip; [SerializeField] Button m_Close; public static Item displayItem; DateTime openTime = DateTime.Now; AlchemyModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.AddListener(OnClose); } protected override void OnPreOpen() { Display(); m_DisplayAlphaTween.SetStartState(); m_CloseTip.gameObject.SetActive(false); openTime = DateTime.Now; } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } protected override void LateUpdate() { base.LateUpdate(); if ((DateTime.Now - openTime).TotalSeconds > 2f && !m_CloseTip.gameObject.activeSelf) { m_CloseTip.gameObject.SetActive(true); } } #endregion void Display() { DisplayStove(); m_ContainerDefeat.gameObject.SetActive(displayItem.count == 0); m_ContainerSucc.gameObject.SetActive(displayItem.count > 0); if (displayItem.count > 0) { DisplayItem(); } } void DisplayStove() { m_StoveLevel.text = StringUtility.Contact("Lv.", model.stoveLevel); var isMax = !RefineStoveConfig.Has(model.stoveLevel + 1); var stoveConfig = RefineStoveConfig.Get(model.stoveLevel); if (isMax) { m_StoveExp.text = Language.Get("L1055"); m_Slider.value = 1; } else { m_StoveExp.text = StringUtility.Contact(model.stoveExp, "/", stoveConfig.Exp); var progress = Mathf.Clamp01((float)model.stoveExp / stoveConfig.Exp); m_Slider.value = progress; } } void DisplayItem() { m_Item.SetItem(displayItem); } private void OnClose() { if ((DateTime.Now - openTime).TotalSeconds < 2f) { return; } CloseClick(); } } }