//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Saturday, November 11, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class ActivityNotifyWin : Window
|
{
|
[SerializeField] ActivityNotifyBehaviour m_ActivityNotify;
|
|
ActivityModel m_Model;
|
ActivityModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<ActivityModel>());
|
}
|
}
|
|
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<MainInterfaceWin>();
|
m_ActivityNotify.gameObject.SetActive(_open);
|
}
|
|
private void WindowBeforeCloseEvent(Window _window)
|
{
|
if (_window is MainInterfaceWin)
|
{
|
m_ActivityNotify.gameObject.SetActive(false);
|
}
|
}
|
|
private void WindowAfterOpenEvent(Window _window)
|
{
|
if (_window is MainInterfaceWin)
|
{
|
m_ActivityNotify.gameObject.SetActive(true);
|
}
|
}
|
}
|
|
}
|