RoomSpawner mask (#33110)

* RoolFill can now spaw rooms with any size

* tile ignoring

* upgrade interior

* simplify

* Update DungeonSystem.Rooms.cs

* center rooms

* Update RoomFillComponent.cs

* Update RoomFillComponent.cs

* Update DungeonSystem.Rooms.cs

* Remove roomfillcoponent from integration test

* Update EntityTest.cs

* remove nullable size, replaced with minsize and maxsize

* clear existing logic refactor

* delete this one
This commit is contained in:
Ed
2025-02-12 15:47:48 +03:00
committed by GitHub
parent 0d33e6182c
commit 47cb8a0b08
8 changed files with 1318 additions and 930 deletions

View File

@@ -1,6 +1,6 @@
using Content.Shared.Maps;
using Content.Shared.Tag;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
using Robust.Shared.Utility;
namespace Content.Shared.Procedural;
@@ -10,18 +10,28 @@ public sealed partial class DungeonRoomPrototype : IPrototype
{
[IdDataField] public string ID { get; } = string.Empty;
[ViewVariables(VVAccess.ReadWrite), DataField("tags", customTypeSerializer:typeof(PrototypeIdListSerializer<TagPrototype>))]
public List<string> Tags = new();
[ViewVariables(VVAccess.ReadWrite), DataField]
public List<ProtoId<TagPrototype>> Tags = new();
[DataField("size", required: true)] public Vector2i Size;
[DataField(required: true)]
public Vector2i Size;
/// <summary>
/// Path to the file to use for the room.
/// </summary>
[DataField("atlas", required: true)] public ResPath AtlasPath;
[DataField("atlas", required: true)]
public ResPath AtlasPath;
/// <summary>
/// Tile offset into the atlas to use for the room.
/// </summary>
[DataField("offset", required: true)] public Vector2i Offset;
[DataField(required: true)]
public Vector2i Offset;
/// <summary>
/// These tiles will be ignored when copying from the atlas into the actual game,
/// allowing you to make rooms of irregular shapes that blend seamlessly into their surroundings
/// </summary>
[DataField]
public ProtoId<ContentTileDefinition>? IgnoreTile;
}