* Тюрьма (#150) * Prison Init * Новая карта для планетарных тюрем * Готовая планетарная тюрьма * Незначительное изменение тайлов --------- Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com> * Космическая тюрьма и всё остальное говно * фиксы * фикс PrisonlDoctor * фикс PrisonDoctor * день длится 20 минут --------- Co-authored-by: SplikZerys <136282037+SplikZerys@users.noreply.github.com>
52 lines
1.9 KiB
C#
52 lines
1.9 KiB
C#
using Robust.Shared.Map.Components;
|
|
using Robust.Shared.Timing;
|
|
|
|
namespace Content.Server._Sunrise.NightDayMapLight
|
|
{
|
|
public sealed class NightDayMapLightSystem : EntitySystem
|
|
{
|
|
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
}
|
|
|
|
public override void Update(float frameTime)
|
|
{
|
|
base.Update(frameTime);
|
|
|
|
var query = EntityQueryEnumerator<NightDayMapLightComponent, MapLightComponent>();
|
|
while (query.MoveNext(out var uid, out var nightDayMapLight, out var mapLight))
|
|
{
|
|
var dayDuration = nightDayMapLight.DayDuration;
|
|
var transitionDuration = dayDuration / 2f;
|
|
|
|
var t = (float)_gameTiming.CurTime.TotalSeconds % dayDuration / dayDuration;
|
|
|
|
if (t <= 0.5f)
|
|
{
|
|
var dayColor = nightDayMapLight.DayColor;
|
|
if (t >= 0.5f - (transitionDuration / dayDuration))
|
|
{
|
|
var transitionT = (0.5f - t) / (transitionDuration / dayDuration);
|
|
dayColor = Color.InterpolateBetween(nightDayMapLight.NightColor, nightDayMapLight.DayColor, transitionT);
|
|
}
|
|
mapLight.AmbientLightColor = dayColor;
|
|
}
|
|
else
|
|
{
|
|
var nightColor = nightDayMapLight.NightColor;
|
|
if (t <= 0.5f + (transitionDuration / dayDuration))
|
|
{
|
|
var transitionT = (t - 0.5f) / (transitionDuration / dayDuration);
|
|
nightColor = Color.InterpolateBetween(nightDayMapLight.NightColor, nightDayMapLight.DayColor, transitionT);
|
|
}
|
|
mapLight.AmbientLightColor = nightColor;
|
|
}
|
|
|
|
Dirty(uid, mapLight);
|
|
}
|
|
}
|
|
}
|
|
}
|