//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, November 11, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class ActivityNotifyWin : Window { [SerializeField] ActivityNotifyBehaviour m_ActivityNotify; ActivityModel m_Model; ActivityModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } private int presentActivityType = 0; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { WindowCenter.Instance.windowBeforeCloseEvent += WindowBeforeCloseEvent; WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent; model.OnActivityBehaviourCloseEvent += OnActivityBehaviourCloseEvent; } protected override void OnActived() { base.OnActived(); if (model.activityNotifies.Count > 0) { RequestNotify(model.activityNotifies[0]); } else { CloseImmediately(); } } protected override void OnAfterOpen() { } protected override void OnPreClose() { WindowCenter.Instance.windowBeforeCloseEvent -= WindowBeforeCloseEvent; WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent; model.OnActivityBehaviourCloseEvent -= OnActivityBehaviourCloseEvent; } protected override void OnAfterClose() { } #endregion private void OnActivityBehaviourCloseEvent(int _type) { if (model.activityNotifies.Contains(_type) && presentActivityType != _type) { model.activityNotifies.Remove(_type); } else if(presentActivityType == _type) { Release(_type); } } public void Release(int _type) { model.SetActivityNotifty(_type); if (model.activityNotifies.Contains(_type)) { model.activityNotifies.Remove(_type); } if (model.activityNotifies.Count > 0) { RequestNotify(model.activityNotifies[0]); } else { CloseImmediately(); } } private void RequestNotify(int _type) { presentActivityType = _type; m_ActivityNotify.Init(_type, this); var _open = WindowCenter.Instance.IsOpen(); m_ActivityNotify.SetActive(_open); } private void WindowBeforeCloseEvent(Window _window) { if (_window is MainInterfaceWin) { m_ActivityNotify.SetActive(false); } } private void WindowAfterOpenEvent(Window _window) { if (_window is MainInterfaceWin) { m_ActivityNotify.SetActive(true); } } } }