using System;
|
using UnityEngine;
|
|
namespace Snxxz.UI
|
{
|
public class MultipleRealmPointModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
|
{
|
public Redpoint multipleRed = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20908);
|
public string LocalRecord_Key = "MultipleRealmRecord";
|
bool isNewDay = false;
|
|
public event Action<int> onStateUpate;
|
|
public override void Init()
|
{
|
OpenServerActivityCenter.Instance.Register(8, this);
|
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
isNewDay = false;
|
}
|
|
public void OnAfterPlayerDataInitialize()
|
{
|
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
LocalRecord_Key = StringUtility.Contact(LocalRecord_Key, PlayerDatas.Instance.baseData.PlayerID);
|
CheckShowRed();
|
OperationTimeHepler.Instance.operationStartEvent -= RefreshOperationState;
|
OperationTimeHepler.Instance.operationStartEvent += RefreshOperationState;
|
OperationTimeHepler.Instance.operationEndEvent -= RefreshOperationState;
|
OperationTimeHepler.Instance.operationEndEvent += RefreshOperationState;
|
OperationTimeHepler.Instance.operationServerCloseEvent -= RefreshOperationClose;
|
OperationTimeHepler.Instance.operationServerCloseEvent += RefreshOperationClose;
|
}
|
|
public override void UnInit()
|
{
|
|
}
|
|
public bool IsOpen
|
{
|
get
|
{
|
OperationBase operation;
|
OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operation);
|
return operation != null && operation.SatisfyOpenCondition() && operation.InDay(TimeUtility.ServerNow);
|
}
|
}
|
|
public bool priorityOpen
|
{
|
get
|
{
|
return multipleRed.state == RedPointState.Simple;
|
}
|
}
|
|
private void RefreshOperationClose(Operation type)
|
{
|
if (type != Operation.MultipRealmPoint) return;
|
CheckShowRed();
|
if (onStateUpate != null)
|
{
|
onStateUpate(8);
|
}
|
}
|
|
private void RefreshOperationState(Operation type, int arg2)
|
{
|
if (type != Operation.MultipRealmPoint) return;
|
CheckShowRed();
|
if (onStateUpate != null)
|
{
|
onStateUpate(8);
|
}
|
}
|
|
public void CheckShowRed(bool isClick = false)
|
{
|
bool isOpen = OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.MultipRealmPoint);
|
if (!isOpen) return;
|
|
if(!isNewDay)
|
{
|
if (!PlayerPrefs.HasKey(LocalRecord_Key))
|
{
|
LocalSave.SetInt(LocalRecord_Key, TimeUtility.ServerNow.Day);
|
isNewDay = true;
|
}
|
else
|
{
|
if (TimeUtility.ServerNow.Day != LocalSave.GetInt(LocalRecord_Key))
|
{
|
isNewDay = true;
|
LocalSave.SetInt(LocalRecord_Key, TimeUtility.ServerNow.Day);
|
}
|
}
|
}
|
|
if(!isClick)
|
{
|
if (isOpen && isNewDay)
|
{
|
multipleRed.state = RedPointState.Simple;
|
}
|
else
|
{
|
multipleRed.state = RedPointState.None;
|
}
|
}
|
else
|
{
|
multipleRed.state = RedPointState.None;
|
}
|
|
}
|
}
|
}
|