Remove lights compref (#19531)

This commit is contained in:
metalgearsloth
2023-09-11 19:18:06 +10:00
committed by GitHub
parent d315ce3c8c
commit 99b77bc2d3
64 changed files with 222 additions and 132 deletions

View File

@@ -12,6 +12,7 @@ using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.Graphics;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Localization; using Robust.Shared.Localization;
using Robust.Shared.Maths; using Robust.Shared.Maths;

View File

@@ -10,6 +10,8 @@ namespace Content.Client.Atmos.EntitySystems;
/// </summary> /// </summary>
public sealed class FireVisualizerSystem : VisualizerSystem<FireVisualsComponent> public sealed class FireVisualizerSystem : VisualizerSystem<FireVisualsComponent>
{ {
[Dependency] private readonly PointLightSystem _lights = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -83,11 +85,11 @@ public sealed class FireVisualizerSystem : VisualizerSystem<FireVisualsComponent
component.LightEntity ??= Spawn(null, new EntityCoordinates(uid, default)); component.LightEntity ??= Spawn(null, new EntityCoordinates(uid, default));
var light = EnsureComp<PointLightComponent>(component.LightEntity.Value); var light = EnsureComp<PointLightComponent>(component.LightEntity.Value);
light.Color = component.LightColor; _lights.SetColor(component.LightEntity.Value, component.LightColor, light);
// light needs a minimum radius to be visible at all, hence the + 1.5f // light needs a minimum radius to be visible at all, hence the + 1.5f
light.Radius = Math.Clamp(1.5f + component.LightRadiusPerStack * fireStacks, 0f, component.MaxLightRadius); _lights.SetRadius(component.LightEntity.Value, Math.Clamp(1.5f + component.LightRadiusPerStack * fireStacks, 0f, component.MaxLightRadius), light);
light.Energy = Math.Clamp(1 + component.LightEnergyPerStack * fireStacks, 0f, component.MaxLightEnergy); _lights.SetEnergy(component.LightEntity.Value, Math.Clamp(1 + component.LightEnergyPerStack * fireStacks, 0f, component.MaxLightEnergy), light);
// TODO flickering animation? Or just add a noise mask to the light? But that requires an engine PR. // TODO flickering animation? Or just add a noise mask to the light? But that requires an engine PR.
} }

View File

@@ -8,6 +8,8 @@ using Robust.Client.GameObjects;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.Graphics.RSI;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Map.Components; using Robust.Shared.Map.Components;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -79,7 +81,7 @@ namespace Content.Client.Atmos.Overlays
if (!rsi.TryGetState(stateId, out var state)) continue; if (!rsi.TryGetState(stateId, out var state)) continue;
_frames[i] = state.GetFrames(RSI.State.Direction.South); _frames[i] = state.GetFrames(RsiDirection.South);
_frameDelays[i] = state.GetDelays(); _frameDelays[i] = state.GetDelays();
_frameCounter[i] = 0; _frameCounter[i] = 0;
break; break;
@@ -97,7 +99,7 @@ namespace Content.Client.Atmos.Overlays
if (!fire.TryGetState((i + 1).ToString(), out var state)) if (!fire.TryGetState((i + 1).ToString(), out var state))
throw new ArgumentOutOfRangeException($"Fire RSI doesn't have state \"{i}\"!"); throw new ArgumentOutOfRangeException($"Fire RSI doesn't have state \"{i}\"!");
_fireFrames[i] = state.GetFrames(RSI.State.Direction.South); _fireFrames[i] = state.GetFrames(RsiDirection.South);
_fireFrameDelays[i] = state.GetDelays(); _fireFrameDelays[i] = state.GetDelays();
_fireFrameCounter[i] = 0; _fireFrameCounter[i] = 0;
} }

View File

@@ -9,6 +9,7 @@ using Robust.Client.UserInterface.CustomControls;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using static Content.Shared.Atmos.Components.GasAnalyzerComponent; using static Content.Shared.Atmos.Components.GasAnalyzerComponent;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Atmos.UI namespace Content.Client.Atmos.UI
{ {

View File

@@ -2,6 +2,8 @@ using System.Text;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Graphics;
using Robust.Shared.Graphics.RSI;
using SixLabors.ImageSharp; using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
@@ -71,7 +73,7 @@ namespace Content.Client.Clickable
return SampleClickMap(clickMap, pos, clickMap.Size, Vector2i.Zero); return SampleClickMap(clickMap, pos, clickMap.Size, Vector2i.Zero);
} }
public bool IsOccluding(RSI rsi, RSI.StateId state, RSI.State.Direction dir, int frame, Vector2i pos) public bool IsOccluding(RSI rsi, RSI.StateId state, RsiDirection dir, int frame, Vector2i pos)
{ {
if (!_rsiMaps.TryGetValue(rsi, out var rsiData)) if (!_rsiMaps.TryGetValue(rsi, out var rsiData))
{ {
@@ -210,6 +212,6 @@ namespace Content.Client.Clickable
{ {
public bool IsOccluding(Texture texture, Vector2i pos); public bool IsOccluding(Texture texture, Vector2i pos);
public bool IsOccluding(RSI rsi, RSI.StateId state, RSI.State.Direction dir, int frame, Vector2i pos); public bool IsOccluding(RSI rsi, RSI.StateId state, RsiDirection dir, int frame, Vector2i pos);
} }
} }

View File

@@ -4,6 +4,7 @@ using Robust.Client.Graphics;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Graphics; using Robust.Shared.Graphics;
using static Robust.Client.GameObjects.SpriteComponent; using static Robust.Client.GameObjects.SpriteComponent;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Clickable namespace Content.Client.Clickable
{ {
@@ -74,7 +75,7 @@ namespace Content.Client.Clickable
if (layer.ActualRsi is not { } rsi || !rsi.TryGetState(layer.State, out var rsiState)) if (layer.ActualRsi is not { } rsi || !rsi.TryGetState(layer.State, out var rsiState))
continue; continue;
var dir = Layer.GetDirection(rsiState.Directions, relativeRotation); var dir = Layer.GetDirection(rsiState.RsiDirections, relativeRotation);
// convert to layer-local coordinates // convert to layer-local coordinates
layer.GetLayerDrawMatrix(dir, out var matrix); layer.GetLayerDrawMatrix(dir, out var matrix);
@@ -87,7 +88,7 @@ namespace Content.Client.Clickable
// Next, to get the right click map we need the "direction" of this layer that is actually being used to draw the sprite on the screen. // Next, to get the right click map we need the "direction" of this layer that is actually being used to draw the sprite on the screen.
// This **can** differ from the dir defined before, but can also just be the same. // This **can** differ from the dir defined before, but can also just be the same.
if (sprite.EnableDirectionOverride) if (sprite.EnableDirectionOverride)
dir = sprite.DirectionOverride.Convert(rsiState.Directions); dir = sprite.DirectionOverride.Convert(rsiState.RsiDirections);
dir = dir.OffsetRsiDir(layer.DirOffset); dir = dir.OffsetRsiDir(layer.DirOffset);
if (_clickMapManager.IsOccluding(layer.ActualRsi!, layer.State, dir, layer.AnimationFrame, layerImagePos)) if (_clickMapManager.IsOccluding(layer.ActualRsi!, layer.State, dir, layer.AnimationFrame, layerImagePos))

View File

@@ -6,6 +6,7 @@ using Robust.Client.Graphics;
using Robust.Client.Input; using Robust.Client.Input;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Client.CombatMode; namespace Content.Client.CombatMode;

View File

@@ -5,6 +5,7 @@ using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Localization; using Robust.Shared.Localization;

View File

@@ -8,6 +8,7 @@ using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using static Robust.Client.UserInterface.Controls.BaseButton; using static Robust.Client.UserInterface.Controls.BaseButton;

View File

@@ -8,6 +8,7 @@ using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Graphics;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using static Robust.Client.UserInterface.Controls.BaseButton; using static Robust.Client.UserInterface.Controls.BaseButton;

View File

@@ -7,6 +7,7 @@ using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Graphics;
using static Robust.Client.UserInterface.Controls.BaseButton; using static Robust.Client.UserInterface.Controls.BaseButton;
namespace Content.Client.Decals.UI; namespace Content.Client.Decals.UI;

View File

@@ -3,6 +3,7 @@ using Content.Shared.DoAfter;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility; using Robust.Shared.Utility;

View File

@@ -6,6 +6,8 @@ namespace Content.Client.Dragon;
public sealed class DragonSystem : EntitySystem public sealed class DragonSystem : EntitySystem
{ {
[Dependency] private readonly SharedPointLightSystem _lights = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -32,19 +34,25 @@ public sealed class DragonSystem : EntitySystem
sprite?.LayerSetColor(0, Color.FromHex("#569fff")); sprite?.LayerSetColor(0, Color.FromHex("#569fff"));
if (light != null) if (light != null)
light.Color = Color.FromHex("#366db5"); {
_lights.SetColor(uid, Color.FromHex("#366db5"), light);
}
break; break;
case DragonRiftState.AlmostFinished: case DragonRiftState.AlmostFinished:
sprite?.LayerSetColor(0, Color.FromHex("#cf4cff")); sprite?.LayerSetColor(0, Color.FromHex("#cf4cff"));
if (light != null) if (light != null)
light.Color = Color.FromHex("#9e2fc1"); {
_lights.SetColor(uid, Color.FromHex("#9e2fc1"), light);
}
break; break;
case DragonRiftState.Finished: case DragonRiftState.Finished:
sprite?.LayerSetColor(0, Color.FromHex("#edbc36")); sprite?.LayerSetColor(0, Color.FromHex("#edbc36"));
if (light != null) if (light != null)
light.Color = Color.FromHex("#cbaf20"); {
_lights.SetColor(uid, Color.FromHex("#cbaf20"), light);
}
break; break;
} }
} }

View File

@@ -22,6 +22,7 @@ using static Content.Shared.Interaction.SharedInteractionSystem;
using static Robust.Client.UserInterface.Controls.BoxContainer; using static Robust.Client.UserInterface.Controls.BoxContainer;
using Content.Shared.Interaction.Events; using Content.Shared.Interaction.Events;
using Content.Shared.Item; using Content.Shared.Item;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Examine namespace Content.Client.Examine
{ {

View File

@@ -1,8 +1,8 @@
using Content.Shared.Explosion; using Content.Shared.Explosion;
using Robust.Client.GameObjects;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.Graphics.RSI;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Utility; using Robust.Shared.Utility;
@@ -17,6 +17,7 @@ public sealed class ExplosionOverlaySystem : EntitySystem
[Dependency] private readonly IPrototypeManager _protoMan = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!;
[Dependency] private readonly IResourceCache _resCache = default!; [Dependency] private readonly IResourceCache _resCache = default!;
[Dependency] private readonly IOverlayManager _overlayMan = default!; [Dependency] private readonly IOverlayManager _overlayMan = default!;
[Dependency] private readonly SharedPointLightSystem _lights = default!;
/// <summary> /// <summary>
/// For how many seconds should an explosion stay on-screen once it has finished expanding? /// For how many seconds should an explosion stay on-screen once it has finished expanding?
@@ -71,9 +72,11 @@ public sealed class ExplosionOverlaySystem : EntitySystem
// spawn in a client-side light source at the epicenter // spawn in a client-side light source at the epicenter
var lightEntity = Spawn("ExplosionLight", component.Epicenter); var lightEntity = Spawn("ExplosionLight", component.Epicenter);
var light = EnsureComp<PointLightComponent>(lightEntity); var light = _lights.EnsureLight(lightEntity);
light.Energy = light.Radius = component.Intensity.Count;
light.Color = type.LightColor; _lights.SetRadius(lightEntity, component.Intensity.Count, light);
_lights.SetEnergy(lightEntity, component.Intensity.Count, light);
_lights.SetColor(lightEntity, type.LightColor, light);
textures.LightEntity = lightEntity; textures.LightEntity = lightEntity;
textures.FireColor = type.FireColor; textures.FireColor = type.FireColor;
@@ -82,7 +85,7 @@ public sealed class ExplosionOverlaySystem : EntitySystem
var fireRsi = _resCache.GetResource<RSIResource>(type.TexturePath).RSI; var fireRsi = _resCache.GetResource<RSIResource>(type.TexturePath).RSI;
foreach (var state in fireRsi) foreach (var state in fireRsi)
{ {
textures.FireFrames.Add(state.GetFrames(RSI.State.Direction.South)); textures.FireFrames.Add(state.GetFrames(RsiDirection.South));
if (textures.FireFrames.Count == type.FireStates) if (textures.FireFrames.Count == type.FireStates)
break; break;
} }

View File

@@ -1,4 +1,5 @@
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Shared.Graphics;
namespace Content.Client.Explosion; namespace Content.Client.Explosion;

View File

@@ -4,6 +4,7 @@ using Robust.Client.Graphics;
using Robust.Client.State; using Robust.Client.State;
using Robust.Client.Player; using Robust.Client.Player;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;

View File

@@ -7,7 +7,9 @@ using Robust.Client.Input;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.Map; using Robust.Shared.Map;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Hands namespace Content.Client.Hands
{ {

View File

@@ -5,6 +5,7 @@ using JetBrains.Annotations;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Shared.Graphics;
namespace Content.Client.Kitchen.UI namespace Content.Client.Kitchen.UI
{ {

View File

@@ -3,6 +3,7 @@ using Robust.Client.AutoGenerated;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics;
namespace Content.Client.Lathe.UI; namespace Content.Client.Lathe.UI;

View File

@@ -53,7 +53,7 @@ namespace Content.Client.Light.Components
if (Enabled && _entMan.TryGetComponent(_parent, out PointLightComponent? light)) if (Enabled && _entMan.TryGetComponent(_parent, out PointLightComponent? light))
{ {
light.Enabled = true; _entMan.System<PointLightSystem>().SetEnabled(_parent, true, light);
} }
OnInitialize(); OnInitialize();
@@ -63,7 +63,7 @@ namespace Content.Client.Light.Components
{ {
if (_entMan.TryGetComponent(_parent, out PointLightComponent? light)) if (_entMan.TryGetComponent(_parent, out PointLightComponent? light))
{ {
light.Enabled = true; _entMan.System<PointLightSystem>().SetEnabled(_parent, true, light);
} }
if (MinDuration > 0) if (MinDuration > 0)

View File

@@ -17,6 +17,7 @@ namespace Content.Client.Light
{ {
[Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly ItemSystem _itemSystem = default!; [Dependency] private readonly ItemSystem _itemSystem = default!;
[Dependency] private readonly SharedPointLightSystem _lights = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -156,7 +157,7 @@ namespace Content.Client.Light
if (!Resolve(uid, ref rgb, ref sprite, ref light, false)) if (!Resolve(uid, ref rgb, ref sprite, ref light, false))
return; return;
light.Color = rgb.OriginalLightColor; _lights.SetColor(uid, rgb.OriginalLightColor, light);
if (rgb.Layers == null || rgb.OriginalLayerColors == null) if (rgb.Layers == null || rgb.OriginalLayerColors == null)
return; return;
@@ -173,7 +174,7 @@ namespace Content.Client.Light
{ {
var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, rgb); var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, rgb);
light.Color = color; _lights.SetColor(light.Owner, color, light);
if (rgb.Layers != null) if (rgb.Layers != null)
{ {

View File

@@ -9,6 +9,7 @@ using Robust.Client.Graphics;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.ContentPack; using Robust.Shared.ContentPack;
using Robust.Shared.Graphics;
using SixLabors.ImageSharp; using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;

View File

@@ -1,6 +1,7 @@
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Shared.Graphics;
namespace Content.Client.Parallax.Data namespace Content.Client.Parallax.Data
{ {

View File

@@ -4,6 +4,7 @@ using JetBrains.Annotations;
using Content.Client.Resources; using Content.Client.Resources;
using Content.Client.IoC; using Content.Client.IoC;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Shared.Graphics;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Client.Parallax.Data; namespace Content.Client.Parallax.Data;

View File

@@ -1,6 +1,7 @@
using System; using System;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Content.Client.Parallax.Data; using Content.Client.Parallax.Data;
using Robust.Shared.Graphics;
namespace Content.Client.Parallax; namespace Content.Client.Parallax;

View File

@@ -6,6 +6,8 @@ namespace Content.Client.Power.APC;
public sealed class ApcVisualizerSystem : VisualizerSystem<ApcVisualsComponent> public sealed class ApcVisualizerSystem : VisualizerSystem<ApcVisualsComponent>
{ {
[Dependency] private readonly SharedPointLightSystem _lights = default!;
protected override void OnAppearanceChange(EntityUid uid, ApcVisualsComponent comp, ref AppearanceChangeEvent args) protected override void OnAppearanceChange(EntityUid uid, ApcVisualsComponent comp, ref AppearanceChangeEvent args)
{ {
if (args.Sprite == null) if (args.Sprite == null)
@@ -43,8 +45,10 @@ public sealed class ApcVisualizerSystem : VisualizerSystem<ApcVisualsComponent>
} }
} }
if (TryComp<SharedPointLightComponent>(uid, out var light)) if (TryComp<PointLightComponent>(uid, out var light))
light.Color = comp.ScreenColors[(sbyte)chargeState]; {
_lights.SetColor(uid, comp.ScreenColors[(sbyte)chargeState], light);
}
} }
else else
{ {
@@ -61,8 +65,10 @@ public sealed class ApcVisualizerSystem : VisualizerSystem<ApcVisualsComponent>
args.Sprite.LayerSetVisible(layer, false); args.Sprite.LayerSetVisible(layer, false);
} }
if (TryComp<SharedPointLightComponent>(uid, out var light)) if (TryComp<PointLightComponent>(uid, out var light))
light.Color = comp.EmaggedScreenColor; {
_lights.SetColor(uid, comp.EmaggedScreenColor, light);
}
} }
} }
} }

View File

@@ -9,6 +9,8 @@ using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics;
using Robust.Shared.Graphics.RSI;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.Client.Power; namespace Content.Client.Power;
@@ -64,7 +66,7 @@ public sealed partial class PowerMonitoringWindow : DefaultWindow, IComputerWind
IRsiStateLike? iconState = null; IRsiStateLike? iconState = null;
if (entityPrototype != null) if (entityPrototype != null)
iconState = _spriteSystem.GetPrototypeIcon(entityPrototype); iconState = _spriteSystem.GetPrototypeIcon(entityPrototype);
var icon = iconState?.GetFrame(RSI.State.Direction.South, 0); var icon = iconState?.GetFrame(RsiDirection.South, 0);
var item = list[i]; var item = list[i];
item.Text = $"{ent.NameLocalized} {Loc.GetString("power-monitoring-window-value", ("value", ent.Size))}"; item.Text = $"{ent.NameLocalized} {Loc.GetString("power-monitoring-window-value", ("value", ent.Size))}";
item.Icon = icon; item.Icon = icon;

View File

@@ -25,6 +25,7 @@ using Robust.Shared.Map;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using static Robust.Client.UserInterface.Controls.BoxContainer; using static Robust.Client.UserInterface.Controls.BoxContainer;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Preferences.UI namespace Content.Client.Preferences.UI
{ {

View File

@@ -32,6 +32,7 @@ using Robust.Shared.Random;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using static Robust.Client.UserInterface.Controls.BoxContainer; using static Robust.Client.UserInterface.Controls.BoxContainer;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Preferences.UI namespace Content.Client.Preferences.UI
{ {

View File

@@ -1,6 +1,7 @@
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Shared.Graphics;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Client.Resources namespace Content.Client.Resources

View File

@@ -6,6 +6,8 @@ namespace Content.Client.Revenant;
public sealed class RevenantOverloadedLightsSystem : SharedRevenantOverloadedLightsSystem public sealed class RevenantOverloadedLightsSystem : SharedRevenantOverloadedLightsSystem
{ {
[Dependency] private readonly SharedPointLightSystem _lights = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -20,37 +22,37 @@ public sealed class RevenantOverloadedLightsSystem : SharedRevenantOverloadedLig
var enumerator = EntityQueryEnumerator<RevenantOverloadedLightsComponent, PointLightComponent>(); var enumerator = EntityQueryEnumerator<RevenantOverloadedLightsComponent, PointLightComponent>();
while (enumerator.MoveNext(out var comp, out var light)) while (enumerator.MoveNext(out var uid, out var comp, out var light))
{ {
//this looks cool :HECK: //this looks cool :HECK:
light.Energy = 2f * Math.Abs((float) Math.Sin(0.25 * Math.PI * comp.Accumulator)); _lights.SetEnergy(uid, 2f * Math.Abs((float) Math.Sin(0.25 * Math.PI * comp.Accumulator)), light);
} }
} }
private void OnStartup(EntityUid uid, RevenantOverloadedLightsComponent component, ComponentStartup args) private void OnStartup(EntityUid uid, RevenantOverloadedLightsComponent component, ComponentStartup args)
{ {
var light = EnsureComp<PointLightComponent>(uid); var light = _lights.EnsureLight(uid);
component.OriginalEnergy = light.Energy; component.OriginalEnergy = light.Energy;
component.OriginalEnabled = light.Enabled; component.OriginalEnabled = light.Enabled;
light.Enabled = component.OriginalEnabled; _lights.SetEnabled(uid, component.OriginalEnabled, light);
Dirty(light); Dirty(uid, light);
} }
private void OnShutdown(EntityUid uid, RevenantOverloadedLightsComponent component, ComponentShutdown args) private void OnShutdown(EntityUid uid, RevenantOverloadedLightsComponent component, ComponentShutdown args)
{ {
if (!TryComp<PointLightComponent>(component.Owner, out var light)) if (!_lights.TryGetLight(uid, out var light))
return; return;
if (component.OriginalEnergy == null) if (component.OriginalEnergy == null)
{ {
RemComp<PointLightComponent>(component.Owner); RemComp(uid, light);
return; return;
} }
light.Energy = component.OriginalEnergy.Value; _lights.SetEnergy(uid, component.OriginalEnergy.Value, light);
light.Enabled = component.OriginalEnabled; _lights.SetEnabled(uid, component.OriginalEnabled, light);
Dirty(light); Dirty(uid, light);
} }
protected override void OnZap(RevenantOverloadedLightsComponent component) protected override void OnZap(RevenantOverloadedLightsComponent component)

View File

@@ -4,6 +4,7 @@ using Robust.Client.ResourceManagement;
using Robust.Shared.Serialization.TypeSerializers.Implementations; using Robust.Shared.Serialization.TypeSerializers.Implementations;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using System.Linq; using System.Linq;
using Robust.Shared.Graphics;
namespace Content.Client.SprayPainter; namespace Content.Client.SprayPainter;

View File

@@ -11,6 +11,7 @@ using Content.Shared.Stacks;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using static Robust.Client.UserInterface.Controls.BoxContainer; using static Robust.Client.UserInterface.Controls.BoxContainer;
using static Content.Shared.Storage.SharedStorageComponent; using static Content.Shared.Storage.SharedStorageComponent;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.Storage.UI namespace Content.Client.Storage.UI
{ {

View File

@@ -2,6 +2,7 @@ using Robust.Client.AutoGenerated;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics;
namespace Content.Client.Store.Ui; namespace Content.Client.Store.Ui;

View File

@@ -14,6 +14,7 @@ using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.Graphics;
using static Robust.Client.UserInterface.StylesheetHelpers; using static Robust.Client.UserInterface.StylesheetHelpers;
namespace Content.Client.Stylesheets namespace Content.Client.Stylesheets

View File

@@ -13,6 +13,7 @@ namespace Content.Client.Toggleable;
public sealed class ToggleableLightVisualsSystem : VisualizerSystem<ToggleableLightVisualsComponent> public sealed class ToggleableLightVisualsSystem : VisualizerSystem<ToggleableLightVisualsComponent>
{ {
[Dependency] private readonly SharedItemSystem _itemSys = default!; [Dependency] private readonly SharedItemSystem _itemSys = default!;
[Dependency] private readonly SharedPointLightSystem _lights = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -40,9 +41,11 @@ public sealed class ToggleableLightVisualsSystem : VisualizerSystem<ToggleableLi
if (TryComp(uid, out PointLightComponent? light)) if (TryComp(uid, out PointLightComponent? light))
{ {
DebugTools.Assert(!light.NetSyncEnabled, "light visualizers require point lights without net-sync"); DebugTools.Assert(!light.NetSyncEnabled, "light visualizers require point lights without net-sync");
light.Enabled = enabled; _lights.SetEnabled(uid, enabled, light);
if (enabled && modulate) if (enabled && modulate)
light.Color = color; {
_lights.SetColor(uid, color, light);
}
} }
// update clothing & in-hand visuals. // update clothing & in-hand visuals.

View File

@@ -1,6 +1,7 @@
using System.Numerics; using System.Numerics;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.UserInterface.Controls; namespace Content.Client.UserInterface.Controls;

View File

@@ -7,6 +7,7 @@ using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility; using Robust.Shared.Utility;

View File

@@ -3,6 +3,7 @@ using System.Numerics;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.Input; using Robust.Client.Input;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Shared.Graphics;
using Robust.Shared.Input; using Robust.Shared.Input;
using Robust.Shared.Utility; using Robust.Shared.Utility;

View File

@@ -20,6 +20,7 @@ using Robust.Client.Player;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controllers; using Robust.Client.UserInterface.Controllers;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Shared.Graphics.RSI;
using Robust.Shared.Input; using Robust.Shared.Input;
using Robust.Shared.Input.Binding; using Robust.Shared.Input.Binding;
using Robust.Shared.Timing; using Robust.Shared.Timing;
@@ -748,7 +749,7 @@ public sealed class ActionUIController : UIController, IOnStateChanged<GameplayS
if (entIcon != null) if (entIcon != null)
{ {
_dragShadow.Texture = EntityManager.GetComponent<SpriteComponent>(entIcon.Value).Icon? _dragShadow.Texture = EntityManager.GetComponent<SpriteComponent>(entIcon.Value).Icon?
.GetFrame(RSI.State.Direction.South, 0); .GetFrame(RsiDirection.South, 0);
} }
else if (action.Icon != null) else if (action.Icon != null)
{ {

View File

@@ -9,11 +9,13 @@ using Robust.Client.Graphics;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Graphics;
using Robust.Shared.Input; using Robust.Shared.Input;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using static Robust.Client.UserInterface.Controls.BoxContainer; using static Robust.Client.UserInterface.Controls.BoxContainer;
using static Robust.Client.UserInterface.Controls.TextureRect; using static Robust.Client.UserInterface.Controls.TextureRect;
using Direction = Robust.Shared.Maths.Direction;
namespace Content.Client.UserInterface.Systems.Actions.Controls; namespace Content.Client.UserInterface.Systems.Actions.Controls;

View File

@@ -6,6 +6,7 @@ using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Graphics;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.Client.VendingMachines.UI namespace Content.Client.VendingMachines.UI

View File

@@ -8,6 +8,7 @@ using Robust.Client.Animations;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Shared.Graphics;
namespace Content.Client.Weapons.Ranged.Systems; namespace Content.Client.Weapons.Ranged.Systems;

View File

@@ -312,8 +312,8 @@ public sealed partial class GunSystem : SharedGunSystem
light.NetSyncEnabled = false; light.NetSyncEnabled = false;
Lights.SetEnabled(uid, true, light); Lights.SetEnabled(uid, true, light);
Lights.SetRadius(uid, 2f, light); Lights.SetRadius(uid, 2f, light);
light.Color = Color.FromHex("#cc8e2b"); Lights.SetColor(uid, Color.FromHex("#cc8e2b"), light);
light.Energy = 5f; Lights.SetEnergy(uid, 5f, light);
var animTwo = new Animation() var animTwo = new Animation()
{ {

View File

@@ -7,6 +7,8 @@ using Robust.Client.Graphics;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Client.Utility; using Robust.Client.Utility;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Graphics;
using Robust.Shared.Graphics.RSI;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Components;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -131,7 +133,7 @@ public sealed class WeatherOverlay : Overlay
case SpriteSpecifier.Rsi rsi: case SpriteSpecifier.Rsi rsi:
var rsiActual = _cache.GetResource<RSIResource>(rsi.RsiPath).RSI; var rsiActual = _cache.GetResource<RSIResource>(rsi.RsiPath).RSI;
rsiActual.TryGetState(rsi.RsiState, out var state); rsiActual.TryGetState(rsi.RsiState, out var state);
var frames = state!.GetFrames(RSI.State.Direction.South); var frames = state!.GetFrames(RsiDirection.South);
var delays = state.GetDelays(); var delays = state.GetDelays();
var totalDelay = delays.Sum(); var totalDelay = delays.Sum();
var time = curTime.TotalSeconds % totalDelay; var time = curTime.TotalSeconds % totalDelay;

View File

@@ -156,7 +156,7 @@ public sealed partial class AnomalySystem
return; return;
Appearance.SetData(uid, AnomalyVesselVisuals.HasAnomaly, on, appearanceComponent); Appearance.SetData(uid, AnomalyVesselVisuals.HasAnomaly, on, appearanceComponent);
if (TryComp<SharedPointLightComponent>(uid, out var pointLightComponent)) if (_pointLight.TryGetLight(uid, out var pointLightComponent))
_pointLight.SetEnabled(uid, on, pointLightComponent); _pointLight.SetEnabled(uid, on, pointLightComponent);
// arbitrary value for the generic visualizer to use. // arbitrary value for the generic visualizer to use.

View File

@@ -26,11 +26,12 @@ namespace Content.Server.Botany.Systems;
public sealed partial class BotanySystem : EntitySystem public sealed partial class BotanySystem : EntitySystem
{ {
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly SharedHandsSystem _hands = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly IRobustRandom _robustRandom = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!;
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly SharedHandsSystem _hands = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly FixtureSystem _fixtureSystem = default!; [Dependency] private readonly FixtureSystem _fixtureSystem = default!;
@@ -181,17 +182,17 @@ public sealed partial class BotanySystem : EntitySystem
if (proto.Bioluminescent) if (proto.Bioluminescent)
{ {
var light = EnsureComp<PointLightComponent>(entity); var light = _light.EnsureLight(entity);
light.Radius = proto.BioluminescentRadius; _light.SetRadius(entity, proto.BioluminescentRadius, light);
light.Color = proto.BioluminescentColor; _light.SetColor(entity, proto.BioluminescentColor, light);
light.CastShadows = false; // this is expensive, and botanists make lots of plants // TODO: Ayo why you copy-pasting code between here and plantholder?
Dirty(light); _light.SetCastShadows(entity, false, light); // this is expensive, and botanists make lots of plants
} }
if (proto.Slip) if (proto.Slip)
{ {
var slippery = EnsureComp<SlipperyComponent>(entity); var slippery = EnsureComp<SlipperyComponent>(entity);
EntityManager.Dirty(slippery); Dirty(entity, slippery);
EnsureComp<StepTriggerComponent>(entity); EnsureComp<StepTriggerComponent>(entity);
// Need a fixture with a slip layer in order to actually do the slipping // Need a fixture with a slip layer in order to actually do the slipping
var fixtures = EnsureComp<FixturesComponent>(entity); var fixtures = EnsureComp<FixturesComponent>(entity);

View File

@@ -29,6 +29,7 @@ namespace Content.Server.Botany.Systems;
public sealed class PlantHolderSystem : EntitySystem public sealed class PlantHolderSystem : EntitySystem
{ {
[Dependency] private readonly AtmosphereSystem _atmosphere = default!;
[Dependency] private readonly BotanySystem _botany = default!; [Dependency] private readonly BotanySystem _botany = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly MutationSystem _mutation = default!; [Dependency] private readonly MutationSystem _mutation = default!;
@@ -36,10 +37,11 @@ public sealed class PlantHolderSystem : EntitySystem
[Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly SharedPointLightSystem _pointLight = default!;
[Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!;
[Dependency] private readonly TagSystem _tagSystem = default!;
[Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly AtmosphereSystem _atmosphere = default!;
public const float HydroponicsSpeedMultiplier = 1f; public const float HydroponicsSpeedMultiplier = 1f;
public const float HydroponicsConsumptionMultiplier = 2f; public const float HydroponicsConsumptionMultiplier = 2f;
@@ -856,9 +858,9 @@ public sealed class PlantHolderSystem : EntitySystem
if (component.Seed != null && component.Seed.Bioluminescent) if (component.Seed != null && component.Seed.Bioluminescent)
{ {
var light = EnsureComp<PointLightComponent>(uid); var light = EnsureComp<PointLightComponent>(uid);
light.Radius = component.Seed.BioluminescentRadius; _pointLight.SetRadius(uid, component.Seed.BioluminescentRadius, light);
light.Color = component.Seed.BioluminescentColor; _pointLight.SetColor(uid, component.Seed.BioluminescentColor, light);
light.CastShadows = false; // this is expensive, and botanists make lots of plants _pointLight.SetCastShadows(uid, false, light);
Dirty(uid, light); Dirty(uid, light);
} }
else else

View File

@@ -17,6 +17,7 @@ namespace Content.Server.Gravity
[Dependency] private readonly AmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly AmbientSoundSystem _ambientSoundSystem = default!;
[Dependency] private readonly GravitySystem _gravitySystem = default!; [Dependency] private readonly GravitySystem _gravitySystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedPointLightSystem _lights = default!;
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
public override void Initialize() public override void Initialize()
@@ -233,10 +234,10 @@ namespace Content.Server.Gravity
var appearance = EntityManager.GetComponentOrNull<AppearanceComponent>(uid); var appearance = EntityManager.GetComponentOrNull<AppearanceComponent>(uid);
_appearance.SetData(uid, GravityGeneratorVisuals.Charge, grav.Charge, appearance); _appearance.SetData(uid, GravityGeneratorVisuals.Charge, grav.Charge, appearance);
if (EntityManager.TryGetComponent(uid, out PointLightComponent? pointLight)) if (_lights.TryGetLight(uid, out var pointLight))
{ {
pointLight.Enabled = grav.Charge > 0; _lights.SetEnabled(uid, grav.Charge > 0, pointLight);
pointLight.Radius = MathHelper.Lerp(grav.LightRadiusMin, grav.LightRadiusMax, grav.Charge); _lights.SetRadius(uid, MathHelper.Lerp(grav.LightRadiusMin, grav.LightRadiusMax, grav.Charge), pointLight);
} }
if (!grav.Intact) if (!grav.Intact)

View File

@@ -9,7 +9,6 @@ using Content.Shared.Examine;
using Content.Shared.Light; using Content.Shared.Light;
using Content.Shared.Light.Components; using Content.Shared.Light.Components;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.GameStates;
using Color = Robust.Shared.Maths.Color; using Color = Robust.Shared.Maths.Color;
namespace Content.Server.Light.EntitySystems; namespace Content.Server.Light.EntitySystems;
@@ -103,7 +102,7 @@ public sealed class EmergencyLightSystem : SharedEmergencyLightSystem
if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != ev.Station) if (CompOrNull<StationMemberComponent>(xform.GridUid)?.Station != ev.Station)
continue; continue;
pointLight.Color = details.EmergencyLightColor; _pointLight.SetColor(uid, details.EmergencyLightColor, pointLight);
_appearance.SetData(uid, EmergencyLightVisuals.Color, details.EmergencyLightColor, appearance); _appearance.SetData(uid, EmergencyLightVisuals.Color, details.EmergencyLightColor, appearance);
if (details.ForceEnableEmergencyLights && !light.ForciblyEnabled) if (details.ForceEnableEmergencyLights && !light.ForciblyEnabled)

View File

@@ -13,18 +13,20 @@ using JetBrains.Annotations;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Server.Light.EntitySystems namespace Content.Server.Light.EntitySystems
{ {
[UsedImplicitly]
public sealed class HandheldLightSystem : SharedHandheldLightSystem public sealed class HandheldLightSystem : SharedHandheldLightSystem
{ {
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly ActionsSystem _actions = default!; [Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly PowerCellSystem _powerCell = default!; [Dependency] private readonly PowerCellSystem _powerCell = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedPointLightSystem _lights = default!;
// TODO: Ideally you'd be able to subscribe to power stuff to get events at certain percentages.. or something? // TODO: Ideally you'd be able to subscribe to power stuff to get events at certain percentages.. or something?
// But for now this will be better anyway. // But for now this will be better anyway.
@@ -196,12 +198,12 @@ namespace Content.Server.Light.EntitySystems
public bool TurnOff(EntityUid uid, HandheldLightComponent component, bool makeNoise = true) public bool TurnOff(EntityUid uid, HandheldLightComponent component, bool makeNoise = true)
{ {
if (!component.Activated || !TryComp<PointLightComponent>(uid, out var pointLightComponent)) if (!component.Activated || !_lights.TryGetLight(uid, out var pointLightComponent))
{ {
return false; return false;
} }
pointLightComponent.Enabled = false; _lights.SetEnabled(uid, false, pointLightComponent);
SetActivated(uid, false, component, makeNoise); SetActivated(uid, false, component, makeNoise);
component.Level = null; component.Level = null;
_activeLights.Remove(component); _activeLights.Remove(component);
@@ -210,7 +212,7 @@ namespace Content.Server.Light.EntitySystems
public bool TurnOn(EntityUid user, EntityUid uid, HandheldLightComponent component) public bool TurnOn(EntityUid user, EntityUid uid, HandheldLightComponent component)
{ {
if (component.Activated || !TryComp<PointLightComponent>(uid, out var pointLightComponent)) if (component.Activated || !_lights.TryGetLight(uid, out var pointLightComponent))
{ {
return false; return false;
} }
@@ -233,7 +235,7 @@ namespace Content.Server.Light.EntitySystems
return false; return false;
} }
pointLightComponent.Enabled = true; _lights.SetEnabled(uid, true, pointLightComponent);
SetActivated(uid, true, component, true); SetActivated(uid, true, component, true);
_activeLights.Add(component); _activeLights.Add(component);

View File

@@ -1,12 +1,13 @@
using Content.Server.Light.Components; using Content.Server.Light.Components;
using Content.Server.Power.Components; using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems; using Content.Server.Power.EntitySystems;
using Robust.Server.GameObjects;
namespace Content.Server.Light.EntitySystems namespace Content.Server.Light.EntitySystems
{ {
public sealed class LitOnPoweredSystem : EntitySystem public sealed class LitOnPoweredSystem : EntitySystem
{ {
[Dependency] private readonly SharedPointLightSystem _lights = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -16,17 +17,17 @@ namespace Content.Server.Light.EntitySystems
private void OnPowerChanged(EntityUid uid, LitOnPoweredComponent component, ref PowerChangedEvent args) private void OnPowerChanged(EntityUid uid, LitOnPoweredComponent component, ref PowerChangedEvent args)
{ {
if (EntityManager.TryGetComponent<PointLightComponent>(uid, out var light)) if (_lights.TryGetLight(uid, out var light))
{ {
light.Enabled = args.Powered; _lights.SetEnabled(uid, args.Powered, light);
} }
} }
private void OnPowerSupply(EntityUid uid, LitOnPoweredComponent component, ref PowerNetBatterySupplyEvent args) private void OnPowerSupply(EntityUid uid, LitOnPoweredComponent component, ref PowerNetBatterySupplyEvent args)
{ {
if (EntityManager.TryGetComponent<PointLightComponent>(uid, out var light)) if (_lights.TryGetLight(uid, out var light))
{ {
light.Enabled = args.Supply; _lights.SetEnabled(uid, args.Supply, light);
} }
} }
} }

View File

@@ -14,9 +14,10 @@ namespace Content.Server.Light.EntitySystems
public sealed class MatchstickSystem : EntitySystem public sealed class MatchstickSystem : EntitySystem
{ {
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
[Dependency] private readonly TransformSystem _transformSystem = default!;
[Dependency] private readonly SharedItemSystem _item = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedItemSystem _item = default!;
[Dependency] private readonly SharedPointLightSystem _lights = default!;
[Dependency] private readonly TransformSystem _transformSystem = default!;
private HashSet<MatchstickComponent> _litMatches = new(); private HashSet<MatchstickComponent> _litMatches = new();
@@ -92,25 +93,25 @@ namespace Content.Server.Light.EntitySystems
{ {
component.CurrentState = value; component.CurrentState = value;
if (TryComp<PointLightComponent>(component.Owner, out var pointLightComponent)) if (_lights.TryGetLight(uid, out var pointLightComponent))
{ {
pointLightComponent.Enabled = component.CurrentState == SmokableState.Lit; _lights.SetEnabled(uid, component.CurrentState == SmokableState.Lit, pointLightComponent);
} }
if (EntityManager.TryGetComponent(component.Owner, out ItemComponent? item)) if (EntityManager.TryGetComponent(uid, out ItemComponent? item))
{ {
switch (component.CurrentState) switch (component.CurrentState)
{ {
case SmokableState.Lit: case SmokableState.Lit:
_item.SetHeldPrefix(component.Owner, "lit", item); _item.SetHeldPrefix(uid, "lit", item);
break; break;
default: default:
_item.SetHeldPrefix(component.Owner, "unlit", item); _item.SetHeldPrefix(uid, "unlit", item);
break; break;
} }
} }
if (EntityManager.TryGetComponent(component.Owner, out AppearanceComponent? appearance)) if (EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance))
{ {
_appearance.SetData(uid, SmokingVisuals.Smoking, component.CurrentState, appearance); _appearance.SetData(uid, SmokingVisuals.Smoking, component.CurrentState, appearance);
} }

View File

@@ -41,6 +41,7 @@ namespace Content.Server.Light.EntitySystems
[Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!;
[Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly PointLightSystem _pointLight = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
private static readonly TimeSpan ThunkDelay = TimeSpan.FromSeconds(2); private static readonly TimeSpan ThunkDelay = TimeSpan.FromSeconds(2);
@@ -74,9 +75,10 @@ namespace Content.Server.Light.EntitySystems
private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent args) private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent args)
{ {
// TODO: Use ContainerFill dog
if (light.HasLampOnSpawn != null) if (light.HasLampOnSpawn != null)
{ {
var entity = EntityManager.SpawnEntity(light.HasLampOnSpawn, EntityManager.GetComponent<TransformComponent>(light.Owner).Coordinates); var entity = EntityManager.SpawnEntity(light.HasLampOnSpawn, EntityManager.GetComponent<TransformComponent>(uid).Coordinates);
light.LightBulbContainer.Insert(entity); light.LightBulbContainer.Insert(entity);
} }
// need this to update visualizers // need this to update visualizers
@@ -386,16 +388,16 @@ namespace Content.Server.Light.EntitySystems
if (EntityManager.TryGetComponent(uid, out PointLightComponent? pointLight)) if (EntityManager.TryGetComponent(uid, out PointLightComponent? pointLight))
{ {
pointLight.Enabled = value; _pointLight.SetEnabled(uid, value, pointLight);
if (color != null) if (color != null)
pointLight.Color = color.Value; _pointLight.SetColor(uid, color.Value, pointLight);
if (radius != null) if (radius != null)
pointLight.Radius = (float) radius; _pointLight.SetRadius(uid, (float) radius, pointLight);
if (energy != null) if (energy != null)
pointLight.Energy = (float) energy; _pointLight.SetEnergy(uid, (float) energy, pointLight);
if (softness != null) if (softness != null)
pointLight.Softness = (float) softness; _pointLight.SetSoftness(uid, (float) softness, pointLight);
} }
} }

View File

@@ -7,7 +7,6 @@ using Content.Shared.Light.Components;
using Content.Shared.Mind.Components; using Content.Shared.Mind.Components;
using Content.Shared.Toggleable; using Content.Shared.Toggleable;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Robust.Server.GameObjects;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Utility; using Robust.Shared.Utility;
@@ -16,11 +15,12 @@ namespace Content.Server.Light.EntitySystems
{ {
public sealed class UnpoweredFlashlightSystem : EntitySystem public sealed class UnpoweredFlashlightSystem : EntitySystem
{ {
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -71,13 +71,13 @@ namespace Content.Server.Light.EntitySystems
private void OnGotEmagged(EntityUid uid, UnpoweredFlashlightComponent component, ref GotEmaggedEvent args) private void OnGotEmagged(EntityUid uid, UnpoweredFlashlightComponent component, ref GotEmaggedEvent args)
{ {
if (!TryComp<PointLightComponent>(uid, out var light)) if (!_light.TryGetLight(uid, out var light))
return; return;
if (_prototypeManager.TryIndex<ColorPalettePrototype>(component.EmaggedColorsPrototype, out var possibleColors)) if (_prototypeManager.TryIndex<ColorPalettePrototype>(component.EmaggedColorsPrototype, out var possibleColors))
{ {
var pick = _random.Pick(possibleColors.Colors.Values); var pick = _random.Pick(possibleColors.Colors.Values);
light.Color = pick; _light.SetColor(uid, pick, light);
} }
args.Repeatable = true; args.Repeatable = true;
@@ -86,11 +86,11 @@ namespace Content.Server.Light.EntitySystems
public void ToggleLight(EntityUid uid, UnpoweredFlashlightComponent flashlight) public void ToggleLight(EntityUid uid, UnpoweredFlashlightComponent flashlight)
{ {
if (!TryComp<PointLightComponent>(uid, out var light)) if (!_light.TryGetLight(uid, out var light))
return; return;
flashlight.LightOn = !flashlight.LightOn; flashlight.LightOn = !flashlight.LightOn;
light.Enabled = flashlight.LightOn; _light.SetEnabled(uid, flashlight.LightOn, light);
_appearance.SetData(uid, UnpoweredFlashlightVisuals.LightOn, flashlight.LightOn); _appearance.SetData(uid, UnpoweredFlashlightVisuals.LightOn, flashlight.LightOn);

View File

@@ -270,10 +270,10 @@ public sealed class TegSystem : EntitySystem
_appearance.SetData(uid, TegVisuals.CirculatorSpeed, speed); _appearance.SetData(uid, TegVisuals.CirculatorSpeed, speed);
_appearance.SetData(uid, TegVisuals.CirculatorPower, powered); _appearance.SetData(uid, TegVisuals.CirculatorPower, powered);
if (TryComp(uid, out PointLightComponent? pointLight)) if (_pointLight.TryGetLight(uid, out var pointLight))
{ {
_pointLight.SetEnabled(uid, powered, pointLight); _pointLight.SetEnabled(uid, powered, pointLight);
pointLight.Color = speed == TegCirculatorSpeed.SpeedFast ? circ.LightColorFast : circ.LightColorSlow; _pointLight.SetColor(uid, speed == TegCirculatorSpeed.SpeedFast ? circ.LightColorFast : circ.LightColorSlow, pointLight);
} }
} }

View File

@@ -1,4 +1,3 @@
using System.Linq;
using System.Numerics; using System.Numerics;
using Content.Server.Audio; using Content.Server.Audio;
using Content.Server.Construction; using Content.Server.Construction;
@@ -12,9 +11,7 @@ using Content.Shared.Maps;
using Content.Shared.Physics; using Content.Shared.Physics;
using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Components;
using Content.Shared.Temperature; using Content.Shared.Temperature;
using Robust.Server.GameObjects;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Physics.Collision.Shapes; using Robust.Shared.Physics.Collision.Shapes;
using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Components;
using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Events;
@@ -32,6 +29,7 @@ public sealed class ThrusterSystem : EntitySystem
[Dependency] private readonly AmbientSoundSystem _ambient = default!; [Dependency] private readonly AmbientSoundSystem _ambient = default!;
[Dependency] private readonly FixtureSystem _fixtureSystem = default!; [Dependency] private readonly FixtureSystem _fixtureSystem = default!;
[Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly DamageableSystem _damageable = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
// Essentially whenever thruster enables we update the shuttle's available impulses which are used for movement. // Essentially whenever thruster enables we update the shuttle's available impulses which are used for movement.
@@ -287,9 +285,9 @@ public sealed class ThrusterSystem : EntitySystem
_appearance.SetData(uid, ThrusterVisualState.State, true, appearance); _appearance.SetData(uid, ThrusterVisualState.State, true, appearance);
} }
if (EntityManager.TryGetComponent(uid, out PointLightComponent? pointLightComponent)) if (_light.TryGetLight(uid, out var pointLightComponent))
{ {
pointLightComponent.Enabled = true; _light.SetEnabled(uid, true, pointLightComponent);
} }
_ambient.SetAmbience(uid, true); _ambient.SetAmbience(uid, true);
@@ -376,9 +374,9 @@ public sealed class ThrusterSystem : EntitySystem
_appearance.SetData(uid, ThrusterVisualState.State, false, appearance); _appearance.SetData(uid, ThrusterVisualState.State, false, appearance);
} }
if (EntityManager.TryGetComponent(uid, out PointLightComponent? pointLightComponent)) if (_light.TryGetLight(uid, out var pointLightComponent))
{ {
pointLightComponent.Enabled = false; _light.SetEnabled(uid, false, pointLightComponent);
} }
_ambient.SetAmbience(uid, false); _ambient.SetAmbience(uid, false);

View File

@@ -18,10 +18,11 @@ namespace Content.Server.Singularity.EntitySystems;
public sealed class ContainmentFieldGeneratorSystem : EntitySystem public sealed class ContainmentFieldGeneratorSystem : EntitySystem
{ {
[Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly TagSystem _tags = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly PhysicsSystem _physics = default!;
[Dependency] private readonly AppearanceSystem _visualizer = default!; [Dependency] private readonly AppearanceSystem _visualizer = default!;
[Dependency] private readonly PhysicsSystem _physics = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly TagSystem _tags = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -325,9 +326,9 @@ public sealed class ContainmentFieldGeneratorSystem : EntitySystem
/// </summary> /// </summary>
public void UpdateConnectionLights(ContainmentFieldGeneratorComponent component) public void UpdateConnectionLights(ContainmentFieldGeneratorComponent component)
{ {
if (EntityManager.TryGetComponent<PointLightComponent>(component.Owner, out var pointLightComponent)) if (_light.TryGetLight(component.Owner, out var pointLightComponent))
{ {
pointLightComponent.Enabled = component.Connections.Count > 0; _light.SetEnabled(component.Owner, component.Connections.Count > 0, pointLightComponent);
} }
} }

View File

@@ -22,11 +22,6 @@ namespace Content.Server.Tools
{ {
public sealed partial class ToolSystem public sealed partial class ToolSystem
{ {
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly AppearanceSystem _appearanceSystem = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
private readonly HashSet<EntityUid> _activeWelders = new(); private readonly HashSet<EntityUid> _activeWelders = new();
private const float WelderUpdateTimer = 1f; private const float WelderUpdateTimer = 1f;
@@ -65,7 +60,7 @@ namespace Content.Server.Tools
WelderComponent? welder = null, WelderComponent? welder = null,
SolutionContainerManagerComponent? solutionContainer = null, SolutionContainerManagerComponent? solutionContainer = null,
ItemComponent? item = null, ItemComponent? item = null,
PointLightComponent? light = null, SharedPointLightComponent? light = null,
AppearanceComponent? appearance = null) AppearanceComponent? appearance = null)
{ {
// Right now, we only need the welder. // Right now, we only need the welder.
@@ -82,7 +77,7 @@ namespace Content.Server.Tools
WelderComponent? welder = null, WelderComponent? welder = null,
SolutionContainerManagerComponent? solutionContainer = null, SolutionContainerManagerComponent? solutionContainer = null,
ItemComponent? item = null, ItemComponent? item = null,
PointLightComponent? light = null, SharedPointLightComponent? light = null,
AppearanceComponent? appearance = null, AppearanceComponent? appearance = null,
TransformComponent? transform = null) TransformComponent? transform = null)
{ {
@@ -90,7 +85,9 @@ namespace Content.Server.Tools
return false; return false;
// Optional components. // Optional components.
Resolve(uid, ref item, ref light, ref appearance, false); Resolve(uid, ref item,ref appearance, false);
_light.ResolveLight(uid, ref light);
if (!_solutionContainerSystem.TryGetSolution(uid, welder.FuelSolution, out var solution, solutionContainer)) if (!_solutionContainerSystem.TryGetSolution(uid, welder.FuelSolution, out var solution, solutionContainer))
return false; return false;
@@ -125,7 +122,9 @@ namespace Content.Server.Tools
_appearanceSystem.SetData(uid, ToggleableLightVisuals.Enabled, true); _appearanceSystem.SetData(uid, ToggleableLightVisuals.Enabled, true);
if (light != null) if (light != null)
light.Enabled = true; {
_light.SetEnabled(uid, true, light);
}
_audioSystem.PlayPvs(welder.WelderOnSounds, uid, AudioParams.Default.WithVariation(0.125f).WithVolume(-5f)); _audioSystem.PlayPvs(welder.WelderOnSounds, uid, AudioParams.Default.WithVariation(0.125f).WithVolume(-5f));
@@ -135,7 +134,7 @@ namespace Content.Server.Tools
_atmosphereSystem.HotspotExpose(gridUid, position, 700, 50, uid, true); _atmosphereSystem.HotspotExpose(gridUid, position, 700, 50, uid, true);
} }
_entityManager.Dirty(welder); Dirty(uid, welder);
_activeWelders.Add(uid); _activeWelders.Add(uid);
return true; return true;
@@ -144,7 +143,7 @@ namespace Content.Server.Tools
public bool TryTurnWelderOff(EntityUid uid, EntityUid? user, public bool TryTurnWelderOff(EntityUid uid, EntityUid? user,
WelderComponent? welder = null, WelderComponent? welder = null,
ItemComponent? item = null, ItemComponent? item = null,
PointLightComponent? light = null, SharedPointLightComponent? light = null,
AppearanceComponent? appearance = null) AppearanceComponent? appearance = null)
{ {
if (!Resolve(uid, ref welder)) if (!Resolve(uid, ref welder))
@@ -162,7 +161,7 @@ namespace Content.Server.Tools
_adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(uid):welder} toggled off"); _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(uid):welder} toggled off");
var ev = new WelderToggledEvent(false); var ev = new WelderToggledEvent(false);
RaiseLocalEvent(welder.Owner, ev, false); RaiseLocalEvent(uid, ev, false);
var hotEvent = new IsHotEvent() {IsHot = false}; var hotEvent = new IsHotEvent() {IsHot = false};
RaiseLocalEvent(uid, hotEvent); RaiseLocalEvent(uid, hotEvent);
@@ -172,11 +171,13 @@ namespace Content.Server.Tools
_appearanceSystem.SetData(uid, ToggleableLightVisuals.Enabled, false); _appearanceSystem.SetData(uid, ToggleableLightVisuals.Enabled, false);
if (light != null) if (light != null)
light.Enabled = false; {
_light.SetEnabled(uid, false, light);
}
_audioSystem.PlayPvs(welder.WelderOffSounds, uid, AudioParams.Default.WithVariation(0.125f).WithVolume(-5f)); _audioSystem.PlayPvs(welder.WelderOffSounds, uid, AudioParams.Default.WithVariation(0.125f).WithVolume(-5f));
_entityManager.Dirty(welder); Dirty(uid, welder);
_activeWelders.Remove(uid); _activeWelders.Remove(uid);
return true; return true;
@@ -184,7 +185,8 @@ namespace Content.Server.Tools
private void OnWelderStartup(EntityUid uid, WelderComponent welder, ComponentStartup args) private void OnWelderStartup(EntityUid uid, WelderComponent welder, ComponentStartup args)
{ {
_entityManager.Dirty(welder); // TODO: Delete this shit what
Dirty(welder);
} }
private void OnWelderIsHotEvent(EntityUid uid, WelderComponent welder, IsHotEvent args) private void OnWelderIsHotEvent(EntityUid uid, WelderComponent welder, IsHotEvent args)
@@ -217,7 +219,9 @@ namespace Content.Server.Tools
private void OnWelderSolutionChange(EntityUid uid, WelderComponent welder, SolutionChangedEvent args) private void OnWelderSolutionChange(EntityUid uid, WelderComponent welder, SolutionChangedEvent args)
{ {
_entityManager.Dirty(welder); // TODO what
// ????
Dirty(welder);
} }
private void OnWelderActivate(EntityUid uid, WelderComponent welder, ActivateInWorldEvent args) private void OnWelderActivate(EntityUid uid, WelderComponent welder, ActivateInWorldEvent args)
@@ -310,7 +314,7 @@ namespace Content.Server.Tools
if (solution.GetTotalPrototypeQuantity(welder.FuelReagent) <= FixedPoint2.Zero) if (solution.GetTotalPrototypeQuantity(welder.FuelReagent) <= FixedPoint2.Zero)
TryTurnWelderOff(tool, null, welder); TryTurnWelderOff(tool, null, welder);
_entityManager.Dirty(welder); Dirty(welder);
} }
_welderTimer -= WelderUpdateTimer; _welderTimer -= WelderUpdateTimer;

View File

@@ -12,11 +12,14 @@ namespace Content.Server.Tools
// TODO move tool system to shared, and make it a friend of Tool Component. // TODO move tool system to shared, and make it a friend of Tool Component.
public sealed partial class ToolSystem : SharedToolSystem public sealed partial class ToolSystem : SharedToolSystem
{ {
[Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!;
[Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IMapManager _mapManager = default!;
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!;
[Dependency] private readonly AppearanceSystem _appearanceSystem = default!;
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
[Dependency] private readonly TransformSystem _transformSystem = default!; [Dependency] private readonly TransformSystem _transformSystem = default!;
[Dependency] private readonly TurfSystem _turf = default!; [Dependency] private readonly TurfSystem _turf = default!;

View File

@@ -23,6 +23,7 @@ public abstract partial class SharedCryoPodSystem: EntitySystem
[Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!;
[Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!;
[Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!;
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
public override void Initialize() public override void Initialize()
@@ -51,14 +52,17 @@ public abstract partial class SharedCryoPodSystem: EntitySystem
{ {
if (!Resolve(uid, ref cryoPod)) if (!Resolve(uid, ref cryoPod))
return; return;
var cryoPodEnabled = HasComp<ActiveCryoPodComponent>(uid); var cryoPodEnabled = HasComp<ActiveCryoPodComponent>(uid);
if (TryComp<SharedPointLightComponent>(uid, out var light))
if (_light.TryGetLight(uid, out var light))
{ {
light.Enabled = cryoPodEnabled && cryoPod.BodyContainer.ContainedEntity != null; _light.SetEnabled(uid, cryoPodEnabled && cryoPod.BodyContainer.ContainedEntity != null, light);
} }
if (!Resolve(uid, ref appearance)) if (!Resolve(uid, ref appearance))
return; return;
_appearanceSystem.SetData(uid, CryoPodComponent.CryoPodVisuals.ContainsEntity, cryoPod.BodyContainer.ContainedEntity == null, appearance); _appearanceSystem.SetData(uid, CryoPodComponent.CryoPodVisuals.ContainsEntity, cryoPod.BodyContainer.ContainedEntity == null, appearance);
_appearanceSystem.SetData(uid, CryoPodComponent.CryoPodVisuals.IsOn, cryoPodEnabled, appearance); _appearanceSystem.SetData(uid, CryoPodComponent.CryoPodVisuals.IsOn, cryoPodEnabled, appearance);
} }

View File

@@ -13,7 +13,7 @@ public abstract class SharedRevenantOverloadedLightsSystem : EntitySystem
var enumerator = EntityQueryEnumerator<RevenantOverloadedLightsComponent>(); var enumerator = EntityQueryEnumerator<RevenantOverloadedLightsComponent>();
while (enumerator.MoveNext(out var comp)) while (enumerator.MoveNext(out var uid, out var comp))
{ {
comp.Accumulator += frameTime; comp.Accumulator += frameTime;
@@ -21,7 +21,7 @@ public abstract class SharedRevenantOverloadedLightsSystem : EntitySystem
continue; continue;
OnZap(comp); OnZap(comp);
RemComp(comp.Owner, comp); RemCompDeferred(uid, comp);
} }
} }

View File

@@ -61,7 +61,10 @@ public sealed class DeployableBarrierSystem : EntitySystem
if (TryComp(uid, out SharedPullableComponent? pullable)) if (TryComp(uid, out SharedPullableComponent? pullable))
_pulling.TryStopPull(pullable); _pulling.TryStopPull(pullable);
if (TryComp(uid, out SharedPointLightComponent? light)) SharedPointLightComponent? pointLight = null;
_pointLight.SetEnabled(uid, isDeployed, light); if (_pointLight.ResolveLight(uid, ref pointLight))
{
_pointLight.SetEnabled(uid, isDeployed, pointLight);
}
} }
} }