//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, April 18, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class AlchemyDrugWin : Window { [SerializeField] AlchemyType m_AlchemyType; [SerializeField] AlchemyScrollBehaviour m_AlchemyScroll; [SerializeField] AlchemyDrugBriefBehaviour m_AlchemyDrug; [SerializeField] AlchemyStudyBehaviour m_AlchemyStudy; [SerializeField] AlchemyBriefBehaviour m_AlchemyBrief; [SerializeField] AlchemyStoveBehaviour m_AlchemyStove; AlchemyModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { model.selectAlchemyType = m_AlchemyType; SetDefaultSelect(); model.jumpAlchemy = 0; m_AlchemyScroll.Display((int)m_AlchemyType); DisplayAlchmey(); m_AlchemyDrug.Display(); m_AlchemyStove.Display(); model.selectAlchemyRefresh += SelectAlchemyRefresh; model.selectQualityRefresh += SelectQualityRefresh; model.alchemyStateRefresh += AlchemyStateRefresh; } protected override void OnAfterOpen() { } protected override void OnPreClose() { m_AlchemyScroll.Dispose(); m_AlchemyDrug.Dispose(); m_AlchemyStudy.Dispose(); m_AlchemyBrief.Dispose(); m_AlchemyStove.Dispose(); model.selectAlchemyRefresh -= SelectAlchemyRefresh; model.selectQualityRefresh -= SelectQualityRefresh; model.alchemyStateRefresh -= AlchemyStateRefresh; } protected override void OnAfterClose() { } #endregion void SetDefaultSelect() { Int2 position; if (model.IsStoveAlcheming(model.selectAlchemyType, out position)) { model.selectQuality = position.x; model.selectAlchemy = position.y; return; } var qualities = AlchemyConfig.GetAlchemyQualities((int)m_AlchemyType); if (model.jumpAlchemy != 0) { foreach (var quality in qualities) { var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType, quality); if (alchemys.Contains(model.jumpAlchemy)) { model.selectQuality = quality; model.selectAlchemy = model.jumpAlchemy; return; } } } { model.selectQuality = qualities.First(); var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType, model.selectQuality); model.selectAlchemy = alchemys[0]; } } private void SelectQualityRefresh() { if (model.selectQuality != 0) { var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType, model.selectQuality); model.selectAlchemy = alchemys[0]; } } private void SelectAlchemyRefresh() { DisplayAlchmey(); } private void AlchemyStateRefresh() { DisplayAlchmey(); } void DisplayAlchmey() { var grasp = model.IsGraspRecipe(model.selectAlchemy); m_AlchemyStudy.gameObject.SetActive(!grasp); m_AlchemyBrief.gameObject.SetActive(grasp); if (!grasp) { m_AlchemyStudy.Display(); m_AlchemyBrief.Dispose(); } else { m_AlchemyBrief.Display(); m_AlchemyStudy.Dispose(); } } } }