Remove emergencylight hashset (#12386)
* Remove emergencylight hashset Take 2 * Fix test
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
namespace Content.Server.Light.Components;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class ActiveEmergencyLightComponent : Component
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
using System.Drawing;
|
|
||||||
using Content.Server.AlertLevel;
|
using Content.Server.AlertLevel;
|
||||||
using Content.Server.Audio;
|
using Content.Server.Audio;
|
||||||
using Content.Server.Light.Components;
|
using Content.Server.Light.Components;
|
||||||
@@ -21,12 +20,10 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
[Dependency] private readonly AmbientSoundSystem _ambient = default!;
|
[Dependency] private readonly AmbientSoundSystem _ambient = default!;
|
||||||
[Dependency] private readonly StationSystem _station = default!;
|
[Dependency] private readonly StationSystem _station = default!;
|
||||||
|
|
||||||
private readonly HashSet<EmergencyLightComponent> _activeLights = new();
|
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
SubscribeLocalEvent<EmergencyLightEvent>(HandleEmergencyLightMessage);
|
SubscribeLocalEvent<EmergencyLightComponent, EmergencyLightEvent>(OnEmergencyLightEvent);
|
||||||
SubscribeLocalEvent<AlertLevelChangedEvent>(OnAlertLevelChanged);
|
SubscribeLocalEvent<AlertLevelChangedEvent>(OnAlertLevelChanged);
|
||||||
SubscribeLocalEvent<EmergencyLightComponent, ComponentGetState>(GetCompState);
|
SubscribeLocalEvent<EmergencyLightComponent, ComponentGetState>(GetCompState);
|
||||||
SubscribeLocalEvent<EmergencyLightComponent, PointLightToggleEvent>(HandleLightToggle);
|
SubscribeLocalEvent<EmergencyLightComponent, PointLightToggleEvent>(HandleLightToggle);
|
||||||
@@ -36,6 +33,9 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
|
|
||||||
private void OnEmergencyPower(EntityUid uid, EmergencyLightComponent component, ref PowerChangedEvent args)
|
private void OnEmergencyPower(EntityUid uid, EmergencyLightComponent component, ref PowerChangedEvent args)
|
||||||
{
|
{
|
||||||
|
if (MetaData(uid).EntityLifeStage >= EntityLifeStage.Terminating)
|
||||||
|
return;
|
||||||
|
|
||||||
UpdateState(component);
|
UpdateState(component);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +67,9 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
|
|
||||||
private void HandleLightToggle(EntityUid uid, EmergencyLightComponent component, PointLightToggleEvent args)
|
private void HandleLightToggle(EntityUid uid, EmergencyLightComponent component, PointLightToggleEvent args)
|
||||||
{
|
{
|
||||||
if (component.Enabled == args.Enabled) return;
|
if (component.Enabled == args.Enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
component.Enabled = args.Enabled;
|
component.Enabled = args.Enabled;
|
||||||
Dirty(component);
|
Dirty(component);
|
||||||
}
|
}
|
||||||
@@ -77,17 +79,17 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
args.State = new EmergencyLightComponentState(component.Enabled);
|
args.State = new EmergencyLightComponentState(component.Enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleEmergencyLightMessage(EmergencyLightEvent @event)
|
private void OnEmergencyLightEvent(EntityUid uid, EmergencyLightComponent component, EmergencyLightEvent args)
|
||||||
{
|
{
|
||||||
switch (@event.State)
|
switch (args.State)
|
||||||
{
|
{
|
||||||
case EmergencyLightState.On:
|
case EmergencyLightState.On:
|
||||||
case EmergencyLightState.Charging:
|
case EmergencyLightState.Charging:
|
||||||
_activeLights.Add(@event.Component);
|
EnsureComp<ActiveEmergencyLightComponent>(uid);
|
||||||
break;
|
break;
|
||||||
case EmergencyLightState.Full:
|
case EmergencyLightState.Full:
|
||||||
case EmergencyLightState.Empty:
|
case EmergencyLightState.Empty:
|
||||||
_activeLights.Remove(@event.Component);
|
RemComp<ActiveEmergencyLightComponent>(uid);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
@@ -129,24 +131,19 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
if (component.State == state) return;
|
if (component.State == state) return;
|
||||||
|
|
||||||
component.State = state;
|
component.State = state;
|
||||||
RaiseLocalEvent(component.Owner, new EmergencyLightEvent(component, state), true);
|
RaiseLocalEvent(component.Owner, new EmergencyLightEvent(component, state));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
{
|
{
|
||||||
foreach (var activeLight in _activeLights)
|
foreach (var (_, activeLight, battery) in EntityQuery<ActiveEmergencyLightComponent, EmergencyLightComponent, BatteryComponent>())
|
||||||
{
|
{
|
||||||
Update(activeLight, frameTime);
|
Update(activeLight, battery, frameTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update(EmergencyLightComponent component, float frameTime)
|
private void Update(EmergencyLightComponent component, BatteryComponent battery, float frameTime)
|
||||||
{
|
{
|
||||||
if (!EntityManager.EntityExists(component.Owner) || !TryComp(component.Owner, out BatteryComponent? battery) || MetaData(component.Owner).EntityPaused)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (component.State == EmergencyLightState.On)
|
if (component.State == EmergencyLightState.On)
|
||||||
{
|
{
|
||||||
if (!battery.TryUseCharge(component.Wattage * frameTime))
|
if (!battery.TryUseCharge(component.Wattage * frameTime))
|
||||||
|
|||||||
Reference in New Issue
Block a user