Files
2026-03-04 10:03:45 +08:00

79 lines
1.7 KiB
C#

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;
}
}
}