using Newtonsoft.Json;

namespace ProgressionGates
{
    internal class EngagementGate
    {
        [JsonIgnore]
        public readonly Engagements Engagement;
        public DateTime UnlockTime;
        [JsonIgnore]
        private bool? Allowed_Override;
        [JsonIgnore]
        public bool AllowedToSpawn => DetermineAllowed();

        public EngagementGate(Engagements engagement, DateTime unlockTime)
        {
            Engagement = engagement;
            UnlockTime = unlockTime;
            Allowed_Override = null;
        }

        private bool DetermineAllowed()
        {
            if (Allowed_Override == true) return true;
            if (Allowed_Override == false) return false;

            return DateTime.Now >= UnlockTime;
        }

        public void OverrideAllowance(bool? allowed)
        {
            Allowed_Override = allowed;
        }

        public void SetUnlockTime(DateTime unlockTime)
        {
            UnlockTime = unlockTime;
        }

        public bool? GetOverrideStatus()
        {
            return Allowed_Override;
        }


    }
}