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 }