diff --git a/Content.Client/GameObjects/Components/IconSmoothing/IconSmoothComponent.cs b/Content.Client/GameObjects/Components/IconSmoothing/IconSmoothComponent.cs index 7adc08b7af..586c91978f 100644 --- a/Content.Client/GameObjects/Components/IconSmoothing/IconSmoothComponent.cs +++ b/Content.Client/GameObjects/Components/IconSmoothing/IconSmoothComponent.cs @@ -101,7 +101,7 @@ namespace Content.Client.GameObjects.Components.IconSmoothing switch (Mode) { case IconSmoothingMode.Corners: - CalculateNewSpriteCorers(); + CalculateNewSpriteCorners(); break; case IconSmoothingMode.CardinalFlags: @@ -129,7 +129,17 @@ namespace Content.Client.GameObjects.Components.IconSmoothing Sprite.LayerSetState(0, $"{StateBase}{(int) dirs}"); } - private void CalculateNewSpriteCorers() + private void CalculateNewSpriteCorners() + { + var (cornerNE, cornerNW, cornerSW, cornerSE) = CalculateCornerFill(); + + Sprite.LayerSetState(CornerLayers.NE, $"{StateBase}{(int) cornerNE}"); + Sprite.LayerSetState(CornerLayers.SE, $"{StateBase}{(int) cornerSE}"); + Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int) cornerSW}"); + Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int) cornerNW}"); + } + + protected (CornerFill ne, CornerFill nw, CornerFill sw, CornerFill se) CalculateCornerFill() { var n = MatchingEntity(SnapGrid.GetInDir(Direction.North)); var ne = MatchingEntity(SnapGrid.GetInDir(Direction.NorthEast)); @@ -191,10 +201,7 @@ namespace Content.Client.GameObjects.Components.IconSmoothing cornerNW |= CornerFill.Diagonal; } - Sprite.LayerSetState(CornerLayers.NE, $"{StateBase}{(int) cornerNE}"); - Sprite.LayerSetState(CornerLayers.SE, $"{StateBase}{(int) cornerSE}"); - Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int) cornerSW}"); - Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int) cornerNW}"); + return (cornerNE, cornerNW, cornerSW, cornerSE); } /// @@ -258,7 +265,6 @@ namespace Content.Client.GameObjects.Components.IconSmoothing Clockwise = 4, } - [SuppressMessage("ReSharper", "InconsistentNaming")] public enum CornerLayers { SE, diff --git a/Content.Client/GameObjects/Components/ReinforcedWallComponent.cs b/Content.Client/GameObjects/Components/ReinforcedWallComponent.cs new file mode 100644 index 0000000000..8a7d8c90da --- /dev/null +++ b/Content.Client/GameObjects/Components/ReinforcedWallComponent.cs @@ -0,0 +1,60 @@ +using Content.Client.GameObjects.Components.IconSmoothing; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using static Robust.Client.GameObjects.SpriteComponent; + +namespace Content.Client.GameObjects.Components +{ + [RegisterComponent] + [ComponentReference(typeof(IconSmoothComponent))] + public class ReinforcedWallComponent : IconSmoothComponent + { + public override string Name => "ReinforcedWall"; + + [ViewVariables(VVAccess.ReadWrite)] + private string _reinforcedStateBase; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _reinforcedStateBase, "reinforcedBase", null); + } + + protected override void Startup() + { + base.Startup(); + + var state0 = $"{_reinforcedStateBase}0"; + Sprite.LayerMapSet(ReinforcedCornerLayers.SE, Sprite.AddLayerState(state0)); + Sprite.LayerSetDirOffset(ReinforcedCornerLayers.SE, DirectionOffset.None); + Sprite.LayerMapSet(ReinforcedCornerLayers.NE, Sprite.AddLayerState(state0)); + Sprite.LayerSetDirOffset(ReinforcedCornerLayers.NE, DirectionOffset.CounterClockwise); + Sprite.LayerMapSet(ReinforcedCornerLayers.NW, Sprite.AddLayerState(state0)); + Sprite.LayerSetDirOffset(ReinforcedCornerLayers.NW, DirectionOffset.Flip); + Sprite.LayerMapSet(ReinforcedCornerLayers.SW, Sprite.AddLayerState(state0)); + Sprite.LayerSetDirOffset(ReinforcedCornerLayers.SW, DirectionOffset.Clockwise); + } + + internal override void CalculateNewSprite() + { + base.CalculateNewSprite(); + + var (cornerNE, cornerNW, cornerSW, cornerSE) = CalculateCornerFill(); + + Sprite.LayerSetState(ReinforcedCornerLayers.NE, $"{_reinforcedStateBase}{(int) cornerNE}"); + Sprite.LayerSetState(ReinforcedCornerLayers.SE, $"{_reinforcedStateBase}{(int) cornerSE}"); + Sprite.LayerSetState(ReinforcedCornerLayers.SW, $"{_reinforcedStateBase}{(int) cornerSW}"); + Sprite.LayerSetState(ReinforcedCornerLayers.NW, $"{_reinforcedStateBase}{(int) cornerNW}"); + } + + public enum ReinforcedCornerLayers + { + SE, + NE, + NW, + SW, + } + } +} diff --git a/Resources/Prototypes/Entities/Buildings/walls.yml b/Resources/Prototypes/Entities/Buildings/walls.yml index 5a479212bb..97bd3b62cf 100644 --- a/Resources/Prototypes/Entities/Buildings/walls.yml +++ b/Resources/Prototypes/Entities/Buildings/walls.yml @@ -220,15 +220,18 @@ parent: base_wall components: - type: Sprite - sprite: Buildings/Walls/reinforced.rsi + color: "#889192" + sprite: Buildings/Walls/solid.rsi - type: Icon - sprite: Buildings/Walls/reinforced.rsi + sprite: Buildings/Walls/solid.rsi + state: rgeneric - type: Destructible thresholdvalue: 300 spawnondestroy: Girder - - type: IconSmooth + - type: ReinforcedWall key: walls - base: reinforced + base: solid + reinforcedBase: reinf_over # Riveting - type: entity diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/full.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/full.png deleted file mode 100644 index 80afd7a640..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/full.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/meta.json b/Resources/Textures/Buildings/Walls/reinforced.rsi/meta.json deleted file mode 100644 index 31a5ab6a9f..0000000000 --- a/Resources/Textures/Buildings/Walls/reinforced.rsi/meta.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", - "states": [ - { - "name": "full", - "directions": 1 - }, - { - "name": "reinforced0", - "directions": 4 - }, - { - "name": "reinforced1", - "directions": 4 - }, - { - "name": "reinforced2", - "directions": 4 - }, - { - "name": "reinforced3", - "directions": 4 - }, - { - "name": "reinforced4", - "directions": 4 - }, - { - "name": "reinforced5", - "directions": 4 - }, - { - "name": "reinforced6", - "directions": 4 - }, - { - "name": "reinforced7", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced0.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced0.png deleted file mode 100644 index b2a009861b..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced0.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced1.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced1.png deleted file mode 100644 index dd7af70642..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced1.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced2.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced2.png deleted file mode 100644 index b2a009861b..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced2.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced3.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced3.png deleted file mode 100644 index dd7af70642..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced3.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced4.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced4.png deleted file mode 100644 index 2f2c404b19..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced4.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced5.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced5.png deleted file mode 100644 index 7f933a86c7..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced5.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced6.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced6.png deleted file mode 100644 index 2f2c404b19..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced6.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced7.png b/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced7.png deleted file mode 100644 index 7f933a86c7..0000000000 Binary files a/Resources/Textures/Buildings/Walls/reinforced.rsi/reinforced7.png and /dev/null differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/meta.json b/Resources/Textures/Buildings/Walls/solid.rsi/meta.json index 1a680b0803..59910380d4 100644 --- a/Resources/Textures/Buildings/Walls/solid.rsi/meta.json +++ b/Resources/Textures/Buildings/Walls/solid.rsi/meta.json @@ -1,65 +1 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/c34c1b30abf18aa552e19294523924c39e5ea127/icons/turf/wall_masks.dmi and modified.", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "full", - "select": [], - "flags": {}, - "directions": 1 - }, - { - "name": "solid0", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid1", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid2", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid3", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid4", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid5", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid6", - "select": [], - "flags": {}, - "directions": 4 - }, - { - "name": "solid7", - "select": [], - "flags": {}, - "directions": 4 - } - ] -} \ No newline at end of file +{"version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/c34c1b30abf18aa552e19294523924c39e5ea127/icons/turf/wall_masks.dmi and modified.", "size": {"x": 32, "y": 32}, "states": [{"name": "full", "select": [], "flags": {}, "directions": 1}, {"name": "solid0", "select": [], "flags": {}, "directions": 4}, {"name": "solid1", "select": [], "flags": {}, "directions": 4}, {"name": "solid2", "select": [], "flags": {}, "directions": 4}, {"name": "solid3", "select": [], "flags": {}, "directions": 4}, {"name": "solid4", "select": [], "flags": {}, "directions": 4}, {"name": "solid5", "select": [], "flags": {}, "directions": 4}, {"name": "solid6", "select": [], "flags": {}, "directions": 4}, {"name": "solid7", "select": [], "flags": {}, "directions": 4}, {"name": "reinf_construct-0", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_construct-1", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_construct-2", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_construct-3", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_construct-4", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_construct-5", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_cult", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_metal", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_over", "directions": 1, "delays": [[1.0]]}, {"name": "reinf_over0", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over3", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over4", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over5", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over6", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "reinf_over7", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "rgeneric", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-0.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-0.png new file mode 100644 index 0000000000..ce2e78e01e Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-0.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-1.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-1.png new file mode 100644 index 0000000000..79dfd001ce Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-1.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-2.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-2.png new file mode 100644 index 0000000000..31364cdb3c Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-2.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-3.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-3.png new file mode 100644 index 0000000000..40eea5344c Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-3.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-4.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-4.png new file mode 100644 index 0000000000..fdd114ee1f Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-4.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-5.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-5.png new file mode 100644 index 0000000000..9a9180b773 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_construct-5.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_cult.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_cult.png new file mode 100644 index 0000000000..0d8922c7ee Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_cult.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_metal.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_metal.png new file mode 100644 index 0000000000..6e4b5179c7 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_metal.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over.png new file mode 100644 index 0000000000..f7175ea7e6 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over0.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over0.png new file mode 100644 index 0000000000..cd6fde9a30 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over0.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over1.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over1.png new file mode 100644 index 0000000000..a6278861f0 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over1.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over2.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over2.png new file mode 100644 index 0000000000..cd6fde9a30 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over2.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over3.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over3.png new file mode 100644 index 0000000000..a6278861f0 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over3.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over4.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over4.png new file mode 100644 index 0000000000..5b3dd1a524 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over4.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over5.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over5.png new file mode 100644 index 0000000000..765dae5a0c Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over5.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over6.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over6.png new file mode 100644 index 0000000000..5b3dd1a524 Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over6.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over7.png b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over7.png new file mode 100644 index 0000000000..6d2f9044ac Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/reinf_over7.png differ diff --git a/Resources/Textures/Buildings/Walls/solid.rsi/rgeneric.png b/Resources/Textures/Buildings/Walls/solid.rsi/rgeneric.png new file mode 100644 index 0000000000..7934e6a9aa Binary files /dev/null and b/Resources/Textures/Buildings/Walls/solid.rsi/rgeneric.png differ