Files
wwdpublic/Content.Server/Procedural/RoomFillSystem.cs
Kutosss f865873e85 [PORT] Повороты комнат при генерации (#456)
* маркеры

* [eq

* e''

* пути

* похуй, уберу лишние спрайты

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/RoomFillSystem.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update Content.Server/Procedural/DungeonSystem.Rooms.cs

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>

* Update DungeonSystem.Rooms.cs

* /

* уэ

* блять

* Update rooms.yml

---------

Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>
2025-04-18 08:14:03 +03:00

55 lines
1.6 KiB
C#

using Robust.Shared.Map.Components;
namespace Content.Server.Procedural;
public sealed class RoomFillSystem : EntitySystem
{
[Dependency] private readonly DungeonSystem _dungeon = default!;
[Dependency] private readonly SharedMapSystem _maps = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RoomFillComponent, MapInitEvent>(OnRoomFillMapInit);
}
private void OnRoomFillMapInit(EntityUid uid, RoomFillComponent component, MapInitEvent args)
{
// Just test things.
if (component.Size == Vector2i.Zero)
return;
var xform = Transform(uid);
if (xform.GridUid != null)
{
var random = new Random();
var room = _dungeon.GetRoomPrototype(component.Size, random, component.RoomWhitelist);
if (room != null)
{
var mapGrid = Comp<MapGridComponent>(xform.GridUid.Value);
_dungeon.SpawnRoom(
xform.GridUid.Value,
mapGrid,
_maps.LocalToTile(xform.GridUid.Value, mapGrid, xform.Coordinates),
room,
random,
// WD EDIT START
null,
xform.LocalRotation,
component.ClearExisting,
component.Rotation);
// WD EDIT END
}
else
{
Log.Error($"Unable to find matching room prototype for {ToPrettyString(uid)}");
}
}
// Final cleanup
QueueDel(uid);
}
}