Files
tbd-station-14/Content.Shared/Light/SharedRgbLightControllerSystem.cs
Leon Friedrich 4bc73ac591 Make flashlights, atmos hardsuit, and RGB use the new layer features (#6253)
* Make flashlights, atmos hardsuit, and RGB use the new layer features

* avoid self-conflict

* fix rgb not updating on add

* cleanup

* Update Content.Client/Light/RgbLightControllerSystem.cs

Co-authored-by: mirrorcult <lunarautomaton6@gmail.com>

* cleanup diff

Co-authored-by: mirrorcult <lunarautomaton6@gmail.com>
2022-03-30 00:57:35 -05:00

41 lines
1.1 KiB
C#

using Content.Shared.Light.Component;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates;
using System;
using System.Collections.Generic;
namespace Content.Shared.Light;
public abstract class SharedRgbLightControllerSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RgbLightControllerComponent, ComponentGetState>(OnGetState);
}
private void OnGetState(EntityUid uid, RgbLightControllerComponent component, ref ComponentGetState args)
{
args.State = new RgbLightControllerState(component.CycleRate, component.Layers);
}
public void SetLayers(EntityUid uid, List<int>? layers, RgbLightControllerComponent? rgb = null)
{
if (!Resolve(uid, ref rgb))
return;
rgb.Layers = layers;
rgb.Dirty();
}
public void SetCycleRate(EntityUid uid, float rate, RgbLightControllerComponent? rgb = null)
{
if (!Resolve(uid, ref rgb))
return;
rgb.CycleRate = Math.Clamp(0.01f, rate, 1); // lets not give people seizures
rgb.Dirty();
}
}