diff --git a/Content.Shared/Tiles/RequiresTileComponent.cs b/Content.Shared/Tiles/RequiresTileComponent.cs new file mode 100644 index 0000000000..52e646ed2a --- /dev/null +++ b/Content.Shared/Tiles/RequiresTileComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Tiles; + +/// +/// Deletes the entity if the tile changes from under it. Used for visual effects. +/// +[RegisterComponent, NetworkedComponent] +public sealed class RequiresTileComponent : Component +{ + +} diff --git a/Content.Shared/Tiles/RequiresTileSystem.cs b/Content.Shared/Tiles/RequiresTileSystem.cs new file mode 100644 index 0000000000..e34e6ffb18 --- /dev/null +++ b/Content.Shared/Tiles/RequiresTileSystem.cs @@ -0,0 +1,33 @@ +using Robust.Shared.Map.Components; +using Robust.Shared.Map.Enumerators; + +namespace Content.Shared.Tiles; + +public sealed class RequiresTileSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnTileChange); + } + + private void OnTileChange(ref TileChangedEvent ev) + { + if (!TryComp(ev.Entity, out var grid)) + return; + + var anchored = grid.GetAnchoredEntitiesEnumerator(ev.NewTile.GridIndices); + if (anchored.Equals(AnchoredEntitiesEnumerator.Empty)) + return; + + var query = GetEntityQuery(); + + while (anchored.MoveNext(out var ent)) + { + if (!query.HasComponent(ent.Value)) + continue; + + QueueDel(ent.Value); + } + } +} diff --git a/Resources/Prototypes/Decals/rock.yml b/Resources/Prototypes/Decals/rock.yml new file mode 100644 index 0000000000..a9d4dda414 --- /dev/null +++ b/Resources/Prototypes/Decals/rock.yml @@ -0,0 +1,62 @@ +- type: decal + id: Basalt1 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt1 + +- type: decal + id: Basalt2 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt2 + +- type: decal + id: Basalt3 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt3 + +- type: decal + id: Basalt4 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt4 + +- type: decal + id: Basalt5 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt5 + +- type: decal + id: Basalt6 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt6 + +- type: decal + id: Basalt7 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt7 + +- type: decal + id: Basalt8 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt8 + +- type: decal + id: Basalt9 + tags: ["rock"] + sprite: + sprite: Decals/basalt.rsi + state: basalt9 diff --git a/Resources/Prototypes/Entities/Tile/basalt.yml b/Resources/Prototypes/Entities/Tile/basalt.yml new file mode 100644 index 0000000000..064bbb45ad --- /dev/null +++ b/Resources/Prototypes/Entities/Tile/basalt.yml @@ -0,0 +1,81 @@ +- type: entity + id: BasaltOne + name: basalt + description: Rock + placement: + mode: SnapgridCenter + components: + - type: Sprite + sprite: /Textures/Tiles/Planet/basalt.rsi + layers: + - state: basalt1 + shader: unshaded + drawdepth: LowFloors + - type: RequiresTile + - type: Transform + anchored: true + - type: Tag + tags: + - HideContextMenu + +- type: entity + id: BasaltTwo + parent: BasaltOne + placement: + mode: SnapgridCenter + components: + - type: Sprite + layers: + - state: basalt2 + shader: unshaded + +- type: entity + id: BasaltThree + parent: BasaltOne + placement: + mode: SnapgridCenter + components: + - type: Sprite + layers: + - state: basalt3 + shader: unshaded + +- type: entity + id: BasaltFour + parent: BasaltOne + placement: + mode: SnapgridCenter + components: + - type: Sprite + layers: + - state: basalt4 + shader: unshaded + +- type: entity + id: BasaltFive + parent: BasaltOne + placement: + mode: SnapgridCenter + components: + - type: Sprite + layers: + - state: basalt5 + shader: unshaded + +- type: entity + id: BasaltRandom + parent: BasaltOne + suffix: Random + components: + - type: RandomSprite + available: + - 0: + basalt1: "" + - 0: + basalt2: "" + - 0: + basalt3: "" + - 0: + basalt4: "" + - 0: + basalt5: "" diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index c392d0fa2e..9043d57afa 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -1092,6 +1092,18 @@ heatCapacity: 10000 # Terrain +- type: tile + id: FloorBasaslt + name: tiles-basalt-floor + sprite: /Textures/Tiles/Planet/basalt.png + isSubfloor: true + canCrowbar: false + footstepSounds: + collection: FootstepAsteroid + friction: 0.30 + thermalConductivity: 0.04 + heatCapacity: 10000 + - type: tile id: FloorSnow name: tiles-snow diff --git a/Resources/Textures/Decals/basalt.rsi/basalt1.png b/Resources/Textures/Decals/basalt.rsi/basalt1.png new file mode 100644 index 0000000000..98289f7369 Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt1.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt2.png b/Resources/Textures/Decals/basalt.rsi/basalt2.png new file mode 100644 index 0000000000..135a513d2b Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt2.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt3.png b/Resources/Textures/Decals/basalt.rsi/basalt3.png new file mode 100644 index 0000000000..f957b0dc72 Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt3.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt4.png b/Resources/Textures/Decals/basalt.rsi/basalt4.png new file mode 100644 index 0000000000..85dba4a9ee Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt4.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt5.png b/Resources/Textures/Decals/basalt.rsi/basalt5.png new file mode 100644 index 0000000000..c73e5cabdf Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt5.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt6.png b/Resources/Textures/Decals/basalt.rsi/basalt6.png new file mode 100644 index 0000000000..8e3b047913 Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt6.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt7.png b/Resources/Textures/Decals/basalt.rsi/basalt7.png new file mode 100644 index 0000000000..814b996273 Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt7.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt8.png b/Resources/Textures/Decals/basalt.rsi/basalt8.png new file mode 100644 index 0000000000..90d6164ab7 Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt8.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/basalt9.png b/Resources/Textures/Decals/basalt.rsi/basalt9.png new file mode 100644 index 0000000000..0b7b1316fa Binary files /dev/null and b/Resources/Textures/Decals/basalt.rsi/basalt9.png differ diff --git a/Resources/Textures/Decals/basalt.rsi/meta.json b/Resources/Textures/Decals/basalt.rsi/meta.json new file mode 100644 index 0000000000..4dcef5184b --- /dev/null +++ b/Resources/Textures/Decals/basalt.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/tree/423404b31e36c4605faacec881b324db8997b0a6", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "basalt1" + }, + { + "name": "basalt2" + }, + { + "name": "basalt3" + }, + { + "name": "basalt4" + }, + { + "name": "basalt5" + }, + { + "name": "basalt6" + }, + { + "name": "basalt7" + }, + { + "name": "basalt8" + }, + { + "name": "basalt9" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Tiles/Planet/attributions.yml b/Resources/Textures/Tiles/Planet/attributions.yml new file mode 100644 index 0000000000..f85b983186 --- /dev/null +++ b/Resources/Textures/Tiles/Planet/attributions.yml @@ -0,0 +1,4 @@ +- files: ["basalt.png"] + license: "CC-BY-SA-3.0" + copyright: "Taken from tgstation" + source: "https://github.com/tgstation/tgstation/tree/423404b31e36c4605faacec881b324db8997b0a6" \ No newline at end of file diff --git a/Resources/Textures/Tiles/Planet/basalt.png b/Resources/Textures/Tiles/Planet/basalt.png new file mode 100644 index 0000000000..11f3c562dc Binary files /dev/null and b/Resources/Textures/Tiles/Planet/basalt.png differ diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/basalt1.png b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt1.png new file mode 100644 index 0000000000..f595ee02db Binary files /dev/null and b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt1.png differ diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/basalt2.png b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt2.png new file mode 100644 index 0000000000..48a125a40b Binary files /dev/null and b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt2.png differ diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/basalt3.png b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt3.png new file mode 100644 index 0000000000..37b954466e Binary files /dev/null and b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt3.png differ diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/basalt4.png b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt4.png new file mode 100644 index 0000000000..7070b6ff53 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt4.png differ diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/basalt5.png b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt5.png new file mode 100644 index 0000000000..d01f6513c0 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/basalt.rsi/basalt5.png differ diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json b/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json new file mode 100644 index 0000000000..a16b6d3fb6 --- /dev/null +++ b/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/tree/423404b31e36c4605faacec881b324db8997b0a6", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "basalt1", + "delays": [ + [ + 2, + 2, + 2, + 2 + ] + ] + }, + { + "name": "basalt2", + "delays": [ + [ + 2, + 2, + 2, + 2 + ] + ] + }, + { + "name": "basalt3", + "delays": [ + [ + 2, + 2, + 2, + 2 + ] + ] + }, + { + "name": "basalt4", + "delays": [ + [ + 2, + 2, + 2, + 2 + ] + ] + }, + { + "name": "basalt5", + "delays": [ + [ + 2, + 2, + 2, + 2 + ] + ] + } + ] +} \ No newline at end of file