]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Remove explosion visuals component references (#15264)
authorDrSmugleaf <DrSmugleaf@users.noreply.github.com>
Wed, 19 Apr 2023 10:09:22 +0000 (03:09 -0700)
committerGitHub <noreply@github.com>
Wed, 19 Apr 2023 10:09:22 +0000 (20:09 +1000)
Content.Client/Explosion/ExplosionOverlay.cs
Content.Client/Explosion/ExplosionOverlaySystem.cs
Content.Client/Explosion/ExplosionVisualsTexturesComponent.cs [moved from Content.Client/Explosion/ExplosionVisualsComponent.cs with 81% similarity]
Content.Server/Explosion/Components/ExplosionVisualsComponent.cs [deleted file]
Content.Shared/Explosion/ExplosionVisualsComponent.cs [moved from Content.Shared/Explosion/SharedExplosionVisualsComponent.cs with 93% similarity]

index ad66e2380349857e0d629c80283da9c23d8f1352..41dceb94bd27f11ad4b39d5f5ab4b470354bd794 100644 (file)
@@ -32,27 +32,35 @@ public sealed class ExplosionOverlay : Overlay
         drawHandle.UseShader(_shader);
 
         var xforms = _entMan.GetEntityQuery<TransformComponent>();
+        var query = _entMan
+            .EntityQuery<ExplosionVisualsComponent, ExplosionVisualsTexturesComponent, AppearanceComponent>(true);
 
-        foreach (var (comp, appearance) in _entMan.EntityQuery<ExplosionVisualsComponent, AppearanceComponent>(true))
+        foreach (var (visuals, textures, appearance) in query)
         {
-            if (comp.Epicenter.MapId != args.MapId)
+            if (visuals.Epicenter.MapId != args.MapId)
                 continue;
 
             if (!appearance.TryGetData(ExplosionAppearanceData.Progress, out int index))
                 continue;
 
-            index = Math.Min(index, comp.Intensity.Count - 1);
-            DrawExplosion(drawHandle, args.WorldBounds, comp, index, xforms);
+            index = Math.Min(index, visuals.Intensity.Count - 1);
+            DrawExplosion(drawHandle, args.WorldBounds, visuals, index, xforms, textures);
         }
 
         drawHandle.SetTransform(Matrix3.Identity);
         drawHandle.UseShader(null);
     }
 
-    private void DrawExplosion(DrawingHandleWorld drawHandle, Box2Rotated worldBounds, ExplosionVisualsComponent exp, int index, EntityQuery<TransformComponent> xforms)
+    private void DrawExplosion(
+        DrawingHandleWorld drawHandle,
+        Box2Rotated worldBounds,
+        ExplosionVisualsComponent visuals,
+        int index,
+        EntityQuery<TransformComponent> xforms,
+        ExplosionVisualsTexturesComponent textures)
     {
         Box2 gridBounds;
-        foreach (var (gridId, tiles) in exp.Tiles)
+        foreach (var (gridId, tiles) in visuals.Tiles)
         {
             if (!_mapManager.TryGetGrid(gridId, out var grid))
                 continue;
@@ -63,16 +71,16 @@ public sealed class ExplosionOverlay : Overlay
             gridBounds = invWorldMatrix.TransformBox(worldBounds).Enlarged(grid.TileSize * 2);
             drawHandle.SetTransform(worldMatrix);
 
-            DrawTiles(drawHandle, gridBounds, index, tiles, exp, grid.TileSize);
+            DrawTiles(drawHandle, gridBounds, index, tiles, visuals, grid.TileSize, textures);
         }
 
-        if (exp.SpaceTiles == null)
+        if (visuals.SpaceTiles == null)
             return;
 
-        gridBounds = Matrix3.Invert(exp.SpaceMatrix).TransformBox(worldBounds).Enlarged(2);
-        drawHandle.SetTransform(exp.SpaceMatrix);
+        gridBounds = Matrix3.Invert(visuals.SpaceMatrix).TransformBox(worldBounds).Enlarged(2);
+        drawHandle.SetTransform(visuals.SpaceMatrix);
 
-        DrawTiles(drawHandle, gridBounds, index, exp.SpaceTiles, exp, exp.SpaceTileSize);
+        DrawTiles(drawHandle, gridBounds, index, visuals.SpaceTiles, visuals, visuals.SpaceTileSize, textures);
     }
 
     private void DrawTiles(
@@ -80,26 +88,27 @@ public sealed class ExplosionOverlay : Overlay
         Box2 gridBounds,
         int index,
         Dictionary<int, List<Vector2i>> tileSets,
-        ExplosionVisualsComponent exp,
-        ushort tileSize)
+        ExplosionVisualsComponent visuals,
+        ushort tileSize,
+        ExplosionVisualsTexturesComponent textures)
     {
         for (var j = 0; j <= index; j++)
         {
             if (!tileSets.TryGetValue(j, out var tiles))
                 continue;
 
-            var frameIndex = (int) Math.Min(exp.Intensity[j] / exp.IntensityPerState, exp.FireFrames.Count - 1);
-            var frames = exp.FireFrames[frameIndex];
+            var frameIndex = (int) Math.Min(visuals.Intensity[j] / textures.IntensityPerState, textures.FireFrames.Count - 1);
+            var frames = textures.FireFrames[frameIndex];
 
             foreach (var tile in tiles)
             {
-                Vector2 centre = ((Vector2) tile + 0.5f) * tileSize;
+                var centre = ((Vector2) tile + 0.5f) * tileSize;
 
                 if (!gridBounds.Contains(centre))
                     continue;
 
                 var texture = _robustRandom.Pick(frames);
-                drawHandle.DrawTextureRect(texture, Box2.CenteredAround(centre, (tileSize, tileSize)), exp.FireColor);
+                drawHandle.DrawTextureRect(texture, Box2.CenteredAround(centre, (tileSize, tileSize)), textures.FireColor);
             }
         }
     }
index 6c7fafc4634f37cb3f47790a5b865eeee874f6bd..d182c0be2d3673eea3df6b90fdfb9b6c321ae3ec 100644 (file)
@@ -48,28 +48,35 @@ public sealed class ExplosionOverlaySystem : EntitySystem
 
     private void OnCompRemove(EntityUid uid, ExplosionVisualsComponent component, ComponentRemove args)
     {
-        QueueDel(component.LightEntity);
+        if (TryComp(uid, out ExplosionVisualsTexturesComponent? textures))
+            QueueDel(textures.LightEntity);
     }
 
     private void OnExplosionInit(EntityUid uid, ExplosionVisualsComponent component, ComponentInit args)
     {
-        if (!_protoMan.TryIndex(component.ExplosionType, out ExplosionPrototype? type))
+        EnsureComp<ExplosionVisualsTexturesComponent>(uid);
+
+        if (!_protoMan.TryIndex(component.ExplosionType, out ExplosionPrototype? type) ||
+            !TryComp(uid, out ExplosionVisualsTexturesComponent? textures))
+        {
             return;
+        }
 
         // spawn in a client-side light source at the epicenter
         var lightEntity = Spawn("ExplosionLight", component.Epicenter);
         var light = EnsureComp<PointLightComponent>(lightEntity);
         light.Energy = light.Radius = component.Intensity.Count;
         light.Color = type.LightColor;
-        component.LightEntity = lightEntity;
-        component.FireColor = type.FireColor;
-        component.IntensityPerState = type.IntensityPerState;
+
+        textures.LightEntity = lightEntity;
+        textures.FireColor = type.FireColor;
+        textures.IntensityPerState = type.IntensityPerState;
 
         var fireRsi = _resCache.GetResource<RSIResource>(type.TexturePath).RSI;
         foreach (var state in fireRsi)
         {
-            component.FireFrames.Add(state.GetFrames(RSI.State.Direction.South));
-            if (component.FireFrames.Count == type.FireStates)
+            textures.FireFrames.Add(state.GetFrames(RSI.State.Direction.South));
+            if (textures.FireFrames.Count == type.FireStates)
                 break;
         }
     }
similarity index 81%
rename from Content.Client/Explosion/ExplosionVisualsComponent.cs
rename to Content.Client/Explosion/ExplosionVisualsTexturesComponent.cs
index a925b3d3007db02da8d857f61ea66f7a63bc4d84..4ac708796128db6b70192cb6a7ac41216581f8df 100644 (file)
@@ -1,11 +1,9 @@
-using Content.Shared.Explosion;
 using Robust.Client.Graphics;
 
 namespace Content.Client.Explosion;
 
 [RegisterComponent]
-[ComponentReference(typeof(SharedExplosionVisualsComponent))]
-public sealed class ExplosionVisualsComponent : SharedExplosionVisualsComponent
+public sealed class ExplosionVisualsTexturesComponent : Component
 {
     /// <summary>
     ///     Uid of the client-side point light entity for this explosion.
diff --git a/Content.Server/Explosion/Components/ExplosionVisualsComponent.cs b/Content.Server/Explosion/Components/ExplosionVisualsComponent.cs
deleted file mode 100644 (file)
index eba85ca..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-using Content.Shared.Explosion;
-
-namespace Content.Server.Explosion;
-
-[RegisterComponent]
-[ComponentReference(typeof(SharedExplosionVisualsComponent))]
-public sealed class ExplosionVisualsComponent : SharedExplosionVisualsComponent
-{
-}
similarity index 93%
rename from Content.Shared/Explosion/SharedExplosionVisualsComponent.cs
rename to Content.Shared/Explosion/ExplosionVisualsComponent.cs
index f30f1767e5bc4651135c02e9aab3f943623b5bbe..5d1400cedb15e57720849bc6bd2802d2773ca446 100644 (file)
@@ -7,8 +7,8 @@ namespace Content.Shared.Explosion;
 /// <summary>
 ///     Component that is used to send explosion overlay/visual data to an abstract explosion entity.
 /// </summary>
-[NetworkedComponent]
-public abstract class SharedExplosionVisualsComponent : Component
+[RegisterComponent, NetworkedComponent]
+public sealed class ExplosionVisualsComponent : Component
 {
     public MapCoordinates Epicenter;
     public Dictionary<int, List<Vector2i>>? SpaceTiles;
@@ -52,5 +52,5 @@ public sealed class ExplosionVisualsState : ComponentState
 [Serializable, NetSerializable]
 public enum ExplosionAppearanceData
 {
-    Progress, // iteration index tracker for explosions that are still expanding outwards, 
+    Progress, // iteration index tracker for explosions that are still expanding outwards,
 }