using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
public class MultipleExpModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize
|
{
|
private bool showTip = false;
|
private bool todayRemind = false;
|
public override void Init()
|
{
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
|
WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
|
StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
|
|
}
|
|
private void OnStageLoadFinish()
|
{
|
if (!(StageManager.Instance.CurrentStage is DungeonStage))
|
{
|
showTip = true;
|
todayRemind = false;
|
}
|
}
|
|
private void WindowAfterOpenEvent(Window _win)
|
{
|
if (_win is MainInterfaceWin && StageManager.Instance.CurrentStage is DungeonStage && showTip)
|
{
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipleExp, out operationBase)
|
&& operationBase.InDay(TimeUtility.ServerNow) && operationBase.SatisfyOpenCondition())
|
{
|
OperationMultiExp operation = operationBase as OperationMultiExp;
|
if (operationBase.allDay || operation.InTime(TimeUtility.ServerNow))
|
{
|
SysNotifyMgr.Instance.ShowTip("ExpActivity_Goahead",
|
operation.GetMultipleCHS());
|
}
|
else
|
{
|
for (int i = 0; i < operationBase.times.Count; i++)
|
{
|
if (operationBase.times[i].SideOfTime(TimeUtility.ServerNow) == -1)
|
{
|
SysNotifyMgr.Instance.ShowTip("ExpActivity_Ready",
|
operation.GetMultipleCHS(),
|
operationBase.times[i].ToString());
|
break;
|
}
|
}
|
}
|
}
|
showTip = false;
|
}
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
UpdateRedpoint();
|
}
|
|
public override void UnInit()
|
{
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
|
WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
}
|
|
private void OperationStartEvent(Operation type, int state)
|
{
|
if (type == Operation.MultipleExp && state == 1)
|
{
|
UpdateRedpoint();
|
}
|
}
|
|
private void OperationTimeUpdateEvent(Operation _type)
|
{
|
if (_type == Operation.MultipleExp)
|
{
|
UpdateRedpoint();
|
}
|
}
|
|
public Redpoint multipleExpRedpoint = new Redpoint(201, 20106);
|
|
public void SetDayRemind()
|
{
|
if (multipleExpRedpoint.state == RedPointState.Simple)
|
{
|
todayRemind = true;
|
UpdateRedpoint();
|
}
|
}
|
|
public bool Open()
|
{
|
OperationBase operation;
|
OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipleExp, out operation);
|
return operation != null && operation.SatisfyOpenCondition() && operation.InDay(TimeUtility.ServerNow);
|
}
|
|
private void UpdateRedpoint()
|
{
|
multipleExpRedpoint.state = RedPointState.None;
|
if (todayRemind || !Open())
|
{
|
multipleExpRedpoint.state = RedPointState.None;
|
return;
|
}
|
multipleExpRedpoint.state = RedPointState.Simple;
|
}
|
}
|
}
|