using Framework; using UnityEngine; /// /// 高级账户状态变化的触发原因 /// public enum PremiumChangeReason { /// /// 未知或默认原因(例如,数据同步) /// Sync, /// /// 因为到期而失效 /// Expiration } /// /// 高级账户状态变化事件的数据包 /// public class PremiumStatusChangedEvent { /// /// 当前是否已激活 /// public readonly bool IsActivated; /// /// PVP保护次数 /// public readonly int PvpProtectionCount; /// /// 高账到期UTC时间戳 /// public readonly long ExpirationTimestamp; /// /// 剩余时间(秒) /// public readonly long RemainingSeconds; /// /// 状态变化的原因 /// public readonly PremiumChangeReason Reason; public PremiumStatusChangedEvent(bool isActivated, int pvpCount, long expirationTimestamp, long remainingSeconds, PremiumChangeReason reason) { this.IsActivated = isActivated; this.PvpProtectionCount = pvpCount; this.ExpirationTimestamp = expirationTimestamp; this.RemainingSeconds = remainingSeconds; this.Reason = reason; } } public class PremiumHandle : MonoBehaviour { /// /// 未激活时的显示状态 /// public enum InactiveDisplayMode { /// /// 隐藏 /// Hidden, /// /// 置灰 /// GrayedOut } [Header("未激活时标志的显示状态")] public InactiveDisplayMode inactiveDisplayMode = InactiveDisplayMode.Hidden; private void OnEnable() { EventManager.Instance.Register(EventManager.EventName.PremiumStatusRefresh, OnPremiumStatusChanged); EventManager.Instance.Send(EventManager.EventName.RequestPremiumStatus); } private void OnDisable() { EventManager.Instance.Unregister(EventManager.EventName.PremiumStatusRefresh, OnPremiumStatusChanged); } protected virtual void OnPremiumStatusChanged(PremiumStatusChangedEvent eventData) { if (eventData.IsActivated) { gameObject.transform.localScale = Vector3.one; //if (eventData.Reason == PremiumChangeReason.Sync) //{ // Debug.Log("高账状态因登录同步而激活,不弹窗。"); //} //else //{ // Debug.Log("高账状态更新:" + eventData.Reason); //} } else { gameObject.transform.localScale = Vector3.zero; } } }