using System; using UnityEngine; namespace Snxxz.UI { public class MultipleRealmPointModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk { public Redpoint multipleRed = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20908); public string LocalRecord_Key = "MultipleRealmRecord"; bool isNewDay = false; public override void Init() { } 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); } } private void RefreshOperationClose(Operation type) { if (type != Operation.MultipRealmPoint) return; CheckShowRed(); } private void RefreshOperationState(Operation type, int arg2) { if (type != Operation.MultipRealmPoint) return; CheckShowRed(); } 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; } } } }