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; bool isNewDay = false; bool openNotify = false; public event Action onStateUpate; public override void Init() { OpenServerActivityCenter.Instance.Register(8, this); //StageManager.Instance.onStageLoadFinish += CheckReconnect; } public void OnBeforePlayerDataInitialize() { isNewDay = false; } public void OnAfterPlayerDataInitialize() { } public void OnPlayerLoginOk() { openNotify = false; LocalRecord_Key = StringUtility.Contact("MultipleRealmRecord", PlayerDatas.Instance.baseData.PlayerID); GlobalTimeEvent.Instance.secondEvent -= SecondEvent; GlobalTimeEvent.Instance.secondEvent += SecondEvent; CheckShowRed(); } public override void UnInit() { StageManager.Instance.onStageLoadFinish -= CheckReconnect; } public bool IsOpen { get { OperationBase operation; OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operation); return operation != null && (operation as OperationMultipleRealmPoint).InActiveTime(TimeUtility.ServerNow); } } public bool priorityOpen { get { return multipleRed.state == RedPointState.Simple; } } public bool IsAdvance { get { return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.MultipRealmPoint); } } private void CheckReconnect() { if (!(StageManager.Instance.CurrentStage is DungeonStage)) { CheckShowRed(); } } private void SecondEvent() { if (IsOpen && !openNotify) { openNotify = true; CheckShowRed(); if (onStateUpate != null) { onStateUpate(8); } } else if (!IsOpen && openNotify) { openNotify = false; CheckShowRed(); if (onStateUpate != null) { onStateUpate(8); } } } public void CheckShowRed(bool isClick = false) { 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; } } } }