//-------------------------------------------------------- // [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; [SerializeField] UIEffect m_StudySuccEffect; AlchemyModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { 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; packModel.refreshItemCountEvent += OnItemCountRefresh; } protected override void OnActived() { base.OnActived(); m_AlchemyScroll.Display((int)m_AlchemyType); DisplayAlchmey(); m_AlchemyDrug.Display(); m_AlchemyStove.Display(); model.selectAlchemyRefresh += SelectAlchemyRefresh; 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.alchemyStateRefresh -= AlchemyStateRefresh; packModel.refreshItemCountEvent -= OnItemCountRefresh; } protected override void OnAfterClose() { } #endregion private void OnItemCountRefresh(PackType type, int index, int itemId) { if (type == PackType.Item) { var itemConfig = ItemConfig.Get(itemId); if (itemConfig.Type == 55) DisplayAlchmey(); } } void SetDefaultSelect() { int alchemyId = 0; if (model.IsStoveAlcheming(model.selectAlchemyType, out alchemyId)) { model.selectAlchemy = alchemyId; return; } if (model.jumpAlchemy != 0) { var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType); if (alchemys.Contains(model.jumpAlchemy)) { model.selectAlchemy = model.jumpAlchemy; return; } } { var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType); foreach (var id in alchemys) { var redpointId = model.GetAlchemyRedpointId(id); if (RedpointCenter.Instance.GetRedpointState(redpointId) == RedPointState.Simple) { model.selectAlchemy = id; return; } } model.selectAlchemy = alchemys[0]; } } private void SelectAlchemyRefresh() { DisplayAlchmey(); } private void AlchemyStateRefresh() { var lastGrasp = !m_AlchemyStudy.gameObject.activeSelf; if (model.isServerPrepare && !lastGrasp && model.IsGraspRecipe(model.selectAlchemy)) { m_StudySuccEffect.Play(); } 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(); } } } }