79 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|