From 512c7dc051a0ed7cb041b3096038ace72cec70b8 Mon Sep 17 00:00:00 2001 From: Ed Date: Sat, 2 Nov 2024 14:30:38 +0300 Subject: [PATCH] room fill fix --- .../Procedural/DungeonSystem.Rooms.cs | 55 ++++++++++++------- .../Structures/Furniture/lamppost.yml | 6 ++ 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/Content.Server/Procedural/DungeonSystem.Rooms.cs b/Content.Server/Procedural/DungeonSystem.Rooms.cs index 011cc4ad54..a990edd715 100644 --- a/Content.Server/Procedural/DungeonSystem.Rooms.cs +++ b/Content.Server/Procedural/DungeonSystem.Rooms.cs @@ -115,28 +115,30 @@ public sealed partial class DungeonSystem var finalRoomRotation = roomTransform.Rotation(); + //CP14 bandage it - int dont work // go BRRNNTTT on existing stuff - if (clearExisting) - { - var gridBounds = new Box2(Vector2.Transform(-room.Size/2, roomTransform), Vector2.Transform(room.Size/2, roomTransform)); - _entitySet.Clear(); - // Polygon skin moment - gridBounds = gridBounds.Enlarged(-0.05f); - _lookup.GetLocalEntitiesIntersecting(gridUid, gridBounds, _entitySet, LookupFlags.Uncontained); - - foreach (var templateEnt in _entitySet) - { - Del(templateEnt); - } - - if (TryComp(gridUid, out DecalGridComponent? decalGrid)) - { - foreach (var decal in _decals.GetDecalsIntersecting(gridUid, gridBounds, decalGrid)) - { - _decals.RemoveDecal(gridUid, decal.Index, decalGrid); - } - } - } + //if (clearExisting) + //{ + // var gridBounds = new Box2(Vector2.Transform(-room.Size/2, roomTransform), Vector2.Transform(room.Size/2, roomTransform)); + // _entitySet.Clear(); + // // Polygon skin moment + // gridBounds = gridBounds.Enlarged(-0.05f); + // _lookup.GetLocalEntitiesIntersecting(gridUid, gridBounds, _entitySet, LookupFlags.Uncontained); +// + // foreach (var templateEnt in _entitySet) + // { + // Del(templateEnt); + // } +// + // if (TryComp(gridUid, out DecalGridComponent? decalGrid)) + // { + // foreach (var decal in _decals.GetDecalsIntersecting(gridUid, gridBounds, decalGrid)) + // { + // _decals.RemoveDecal(gridUid, decal.Index, decalGrid); + // } + // } + //} + //CP14 end var roomCenter = (room.Offset + room.Size / 2f) * grid.TileSize; var tileOffset = -roomCenter + grid.TileSizeHalfVector; @@ -163,6 +165,17 @@ public sealed partial class DungeonSystem } _tiles.Add((rounded, tileRef.Tile)); + + //CP14 clearExisting variant + if (clearExisting) + { + var anchored = _maps.GetAnchoredEntities((gridUid, grid), rounded); + foreach (var ent in anchored) + { + QueueDel(ent); + } + } + //CP14 clearExisting variant end } } diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml index a0bface339..3b6da32677 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml @@ -2,7 +2,13 @@ id: CP14BaseLamppost categories: [ ForkFiltered ] abstract: true + placement: + mode: SnapgridCenter + snap: + - Wall components: + - type: Transform + anchored: true - type: SpriteFade - type: Clickable - type: Physics