diff --git a/Content.Server/Procedural/DungeonSystem.Rooms.cs b/Content.Server/Procedural/DungeonSystem.Rooms.cs index 8a1606c488..9765a7722d 100644 --- a/Content.Server/Procedural/DungeonSystem.Rooms.cs +++ b/Content.Server/Procedural/DungeonSystem.Rooms.cs @@ -118,7 +118,7 @@ public sealed partial class DungeonSystem // go BRRNNTTT on existing stuff if (clearExisting) { - var gridBounds = new Box2(Vector2.Transform(Vector2.Zero, roomTransform), Vector2.Transform(room.Size, roomTransform)); + var gridBounds = new Box2(Vector2.Transform(-room.Size/2, roomTransform), Vector2.Transform(room.Size/2, roomTransform)); //CP14 bugfix _entitySet.Clear(); // Polygon skin moment gridBounds = gridBounds.Enlarged(-0.05f); diff --git a/Content.Server/_CP14/Procedural/RoomSpawner/CP14RoomSpawnerSystem.cs b/Content.Server/_CP14/Procedural/RoomSpawner/CP14RoomSpawnerSystem.cs index ecf272a641..1355dfb1c0 100644 --- a/Content.Server/_CP14/Procedural/RoomSpawner/CP14RoomSpawnerSystem.cs +++ b/Content.Server/_CP14/Procedural/RoomSpawner/CP14RoomSpawnerSystem.cs @@ -13,7 +13,6 @@ public sealed class CP14RoomSpawnerSystem : EntitySystem [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly DungeonSystem _dungeon = default!; [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly TransformSystem _transform = default!; [Dependency] private readonly SharedMapSystem _maps = default!; public override void Initialize() @@ -31,19 +30,23 @@ public sealed class CP14RoomSpawnerSystem : EntitySystem var roomProto = rooms.Pick(_random); if (!_proto.TryIndex(roomProto, out var room)) + { + Log.Error($"Unable to find matching room prototype ({room}) for {ToPrettyString(spawner)}"); return; + } var gridUid = Transform(spawner).GridUid; if (!TryComp(gridUid, out var gridComp)) return; + var xform = Transform(spawner).Coordinates.Offset(- room.Size / 2); var random = new Random(); _dungeon.SpawnRoom( gridUid.Value, gridComp, - _maps.LocalToTile(gridUid.Value, gridComp, Transform(spawner).Coordinates), + _maps.LocalToTile(gridUid.Value, gridComp, xform), room, random, null, diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Rooms/test.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Rooms/test.yml index 3f571ff1a7..2535ef05f3 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Rooms/test.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Rooms/test.yml @@ -1,17 +1,8 @@ -- type: weightedRandom - id: CP14RoomSpawnerCaelid - weights: - LavaBrig17x5a: 1 - LavaBrig17x5b: 1 - LavaBrig7x7a: 1 - LavaBrig7x7b: 1 - LavaBrig7x7c: 1 - LavaBrig7x7d: 1 - LavaBrig11x5a: 1 - - type: entity id: CP14BaseRoomSpawner name: room spawner + abstract: true + description: A marker that creates a random building at the specified location. Warning! Wipes out everything in that location, including agosts! parent: MarkerBase placement: mode: SnapgridCenter @@ -21,7 +12,27 @@ - type: Clickable - type: InteractionOutline - type: Sprite - layers: - - state: green + sprite: _CP14/Markers/biome.rsi + snapCardinals: true + + +- type: entity + id: CP14RoomSpawnerCaelid7x7 + suffix: Caelid Test + parent: CP14BaseRoomSpawner + components: - type: CP14RoomSpawner - roomsRandom: CP14RoomSpawnerCaelid \ No newline at end of file + roomsRandom: CP14RoomSpawnerCaelid + - type: Sprite + layers: + - state: room + - sprite: _CP14/Markers/RoomBorders/7x7.rsi + state: frame + +- type: weightedRandom + id: CP14RoomSpawnerCaelid + weights: + LavaBrig7x7a: 1 + LavaBrig7x7b: 1 + LavaBrig7x7c: 1 + LavaBrig7x7d: 1 diff --git a/Resources/Textures/_CP14/Markers/RoomBorders/5x5.rsi/frame.png b/Resources/Textures/_CP14/Markers/RoomBorders/5x5.rsi/frame.png new file mode 100644 index 0000000000..257a22a88a Binary files /dev/null and b/Resources/Textures/_CP14/Markers/RoomBorders/5x5.rsi/frame.png differ diff --git a/Resources/Textures/_CP14/Markers/RoomBorders/5x5.rsi/meta.json b/Resources/Textures/_CP14/Markers/RoomBorders/5x5.rsi/meta.json new file mode 100644 index 0000000000..c312dbeabd --- /dev/null +++ b/Resources/Textures/_CP14/Markers/RoomBorders/5x5.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd (Github) for CrystallPunk", + "size": { + "x": 160, + "y": 160 + }, + "states": [ + { + "name": "frame" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Markers/RoomBorders/7x7.rsi/frame.png b/Resources/Textures/_CP14/Markers/RoomBorders/7x7.rsi/frame.png new file mode 100644 index 0000000000..83e6f09612 Binary files /dev/null and b/Resources/Textures/_CP14/Markers/RoomBorders/7x7.rsi/frame.png differ diff --git a/Resources/Textures/_CP14/Markers/RoomBorders/7x7.rsi/meta.json b/Resources/Textures/_CP14/Markers/RoomBorders/7x7.rsi/meta.json new file mode 100644 index 0000000000..6199650875 --- /dev/null +++ b/Resources/Textures/_CP14/Markers/RoomBorders/7x7.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd (Github) for CrystallPunk", + "size": { + "x": 224, + "y": 224 + }, + "states": [ + { + "name": "frame" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Markers/biome.rsi/meta.json b/Resources/Textures/_CP14/Markers/biome.rsi/meta.json index 63d7d3871b..ca0e2da8fa 100644 --- a/Resources/Textures/_CP14/Markers/biome.rsi/meta.json +++ b/Resources/Textures/_CP14/Markers/biome.rsi/meta.json @@ -13,6 +13,9 @@ { "name": "frame" }, + { + "name": "room" + }, { "name": "grass" } diff --git a/Resources/Textures/_CP14/Markers/biome.rsi/room.png b/Resources/Textures/_CP14/Markers/biome.rsi/room.png new file mode 100644 index 0000000000..8f4b175dd8 Binary files /dev/null and b/Resources/Textures/_CP14/Markers/biome.rsi/room.png differ