using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Serialization; namespace Content.Shared.Explosion.Components; /// /// Component that is used to send explosion overlay/visual data to an abstract explosion entity. /// [RegisterComponent, NetworkedComponent] public sealed partial class ExplosionVisualsComponent : Component { public MapCoordinates Epicenter; public Dictionary>? SpaceTiles; public Dictionary>> Tiles = new(); public List Intensity = new(); public string ExplosionType = string.Empty; public Matrix3x2 SpaceMatrix; public ushort SpaceTileSize; } [Serializable, NetSerializable] public sealed class ExplosionVisualsState : ComponentState { public MapCoordinates Epicenter; public Dictionary>? SpaceTiles; public Dictionary>> Tiles; public List Intensity; public string ExplosionType = string.Empty; public Matrix3x2 SpaceMatrix; public ushort SpaceTileSize; public ExplosionVisualsState( MapCoordinates epicenter, string typeID, List intensity, Dictionary>? spaceTiles, Dictionary>> tiles, Matrix3x2 spaceMatrix, ushort spaceTileSize) { Epicenter = epicenter; SpaceTiles = spaceTiles; Tiles = tiles; Intensity = intensity; ExplosionType = typeID; SpaceMatrix = spaceMatrix; SpaceTileSize = spaceTileSize; } } [Serializable, NetSerializable] public enum ExplosionAppearanceData { Progress, // iteration index tracker for explosions that are still expanding outwards, }