using System; using Obvious.Soap; using UnityEngine; namespace _Data.Variabales.DayWeather { [CreateAssetMenu(fileName = "DayTime", menuName = "Soap/ScriptableVariables/DayTime", order = 0)] public class ScriptableTimeDayVariable : FloatVariable { public float Morning = 8f; public float Noon = 12f; public float Evening = 17f; public float Night = 20f; public float GetDayTime(TimeOfDay timeOfDay) { return timeOfDay switch { TimeOfDay.Morning => Morning, TimeOfDay.Noon => Noon, TimeOfDay.Evening => Evening, TimeOfDay.Night => Night, _ => throw new ArgumentOutOfRangeException("timeOfDay", timeOfDay, null), }; } public void SetDayTime(TimeOfDay timeOfDay) { switch (timeOfDay) { case TimeOfDay.Morning: Value = Morning; break; case TimeOfDay.Noon: Value = Noon; break; case TimeOfDay.Evening: Value = Evening; break; case TimeOfDay.Night: Value = Night; break; default: throw new ArgumentOutOfRangeException("timeOfDay", timeOfDay, null); } } public TimeOfDay GetTimeOfDayFromHour() { float num = ValidateHour(Value); if ((num >= Morning && num < Noon) || (Morning > Noon && (num >= Morning || num < Noon))) { return TimeOfDay.Morning; } if ((num >= Noon && num < Evening) || (Noon > Evening && (num >= Noon || num < Evening))) { return TimeOfDay.Noon; } if ((num >= Evening && num < Night) || (Evening > Night && (num >= Evening || num < Night))) { return TimeOfDay.Evening; } return TimeOfDay.Night; } private float ValidateHour(float hour) { if (hour < 0f || hour >= 24f) { throw new ArgumentOutOfRangeException("hour", "Hour must be within 0-24 range."); } return hour; } } }