using vnxbqy.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 合服-骑宠盛宴
///
public class MergeServerQCSYModel : ILModel
{
public ILOpenServerActivityProxy activity;
public Operation operationType = Operation.default11;
public const int activityID = 4;
public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_HFHD;
public bool IsOpen()
{
return OperationTimeHepler.Instance.SatisfyOpenCondition(operationType);
}
public bool IsAdvance()
{
return false;
}
public bool priorityOpen()
{
//红点
return redpoint.state == RedPointState.Simple;
}
public event Action onStateUpdate;
protected override void Init()
{
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
GameEvent.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
GameEvent.playerLoginOkEvent += OnPlayerLoginOk;
activity = new ILOpenServerActivityProxy(IsOpen, IsAdvance, priorityOpen);
OpenServerActivityCenter.Instance.Register(activityID, activity, activityType);
}
public void OnBeforePlayerDataInitialize()
{
}
public void OnPlayerLoginOk()
{
UpdateRedpoint();
}
protected override void UnInit()
{
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
GameEvent.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
GameEvent.playerLoginOkEvent -= OnPlayerLoginOk;
}
private void OperationEndEvent(Operation operation, int state)
{
if (operation == operationType && state == 0)
{
TimeMgr.Instance.OnMinuteEvent -= OnMinuteEvent;
if (onStateUpdate != null)
{
onStateUpdate(activityID);
}
redpoint.state = RedPointState.None;
}
}
private void OperationStartEvent(Operation operation, int state)
{
if (operation == operationType && state == 0)
{
TimeMgr.Instance.OnMinuteEvent -= OnMinuteEvent;
TimeMgr.Instance.OnMinuteEvent += OnMinuteEvent;
if (onStateUpdate != null)
{
onStateUpdate(activityID);
}
}
}
void OnMinuteEvent()
{
OperationBase operationBase = null;
if (OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
{
OperationQCSY operation = operationBase as OperationQCSY;
if (operation.IsInAction())
{
UpdateRedpoint();
}
}
}
#region 红点
public Redpoint redpoint = new Redpoint(MainRedPoint.hfhdRedPoint, MainRedPoint.hfhdRedPoint * 100 + activityID);
public void UpdateRedpoint()
{
redpoint.state = RedPointState.None;
if (!IsOpen())
{
return;
}
redpoint.state = RedPointState.Simple;
}
#endregion
}