Biome rework (#37735)

* DungeonData rework

Back to fields, serializes better, just make new layers dumby.

* wawawewa

* Fix this

* Fixes

* Port the work over

* wawawewa

* zoom

* Kinda workin

* Adjust wawa

* Unloading work

* Ore + entitytable fixes

Iterate every dungeon not just last.

* Big shot

* wawawewa

* Fixes

* true

* Fixes

# Conflicts:
#	Content.Server/Procedural/DungeonJob/DungeonJob.cs

* wawawewa

* Fixes

* Fix

* Lot of work

* wawawewa

* Fixing

* eh?

* a

* Fix a heap of stuff

* Better ignored check

* Reserve tile changes

* biome

* changes

* wawawewa

* Fixes & snow

* Shadow fixes

* wawawewa

* smol

* Add layer API

* More work

* wawawewa

* Preloads and running again

* wawawewa

* Modified

* Replacements and command

* Runtime support

* werk

* Fix expeds + dungeon alltiles

* reh

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
This commit is contained in:
metalgearsloth
2025-07-03 14:36:06 +10:00
committed by GitHub
parent fdf3d6715e
commit fe7b96147c
116 changed files with 3005 additions and 3537 deletions

View File

@@ -32,7 +32,10 @@ public sealed partial class DungeonJob
if (!_anchorable.TileFree((_gridUid, _grid), neighbor, DungeonSystem.CollisionLayer, DungeonSystem.CollisionMask))
continue;
tiles.Add((neighbor, _tile.GetVariantTile((ContentTileDefinition) tileDef, random)));
var tile = _tile.GetVariantTile((ContentTileDefinition)tileDef, random);
tiles.Add((neighbor, tile));
AddLoadedTile(neighbor, tile);
DebugTools.Assert(dungeon.AllTiles.Contains(neighbor));
}
foreach (var index in dungeon.CorridorExteriorTiles)
@@ -43,7 +46,10 @@ public sealed partial class DungeonJob
if (!_anchorable.TileFree((_gridUid, _grid), index, DungeonSystem.CollisionLayer, DungeonSystem.CollisionMask))
continue;
tiles.Add((index, _tile.GetVariantTile((ContentTileDefinition)tileDef, random)));
var tile = _tile.GetVariantTile((ContentTileDefinition)tileDef, random);
tiles.Add((index, tile));
AddLoadedTile(index, tile);
DebugTools.Assert(dungeon.AllTiles.Contains(index));
}
_maps.SetTiles(_gridUid, _grid, tiles);
@@ -82,18 +88,21 @@ public sealed partial class DungeonJob
}
if (isCorner)
_entManager.SpawnEntity(cornerWall, _maps.GridTileToLocal(_gridUid, _grid, index.Index));
{
var uid = _entManager.SpawnEntity(cornerWall, _maps.GridTileToLocal(_gridUid, _grid, index.Index));
AddLoadedEntity(index.Index, uid);
}
if (!isCorner)
_entManager.SpawnEntity(wall, _maps.GridTileToLocal(_gridUid, _grid, index.Index));
if (i % 20 == 0)
{
await SuspendDungeon();
if (!ValidateResume())
return;
var uid = _entManager.SpawnEntity(wall, _maps.GridTileToLocal(_gridUid, _grid, index.Index));
AddLoadedEntity(index.Index, uid);
}
await SuspendDungeon();
if (!ValidateResume())
return;
}
}
}