Mining Asteroid Treasure Vaults (#31638)

add interior rooms to the vgroid
This commit is contained in:
Nemanja
2024-09-10 23:33:41 -04:00
committed by GitHub
parent 276b0f0d5c
commit a9d93e18c8
7 changed files with 2495 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
using System.Numerics; using System.Numerics;
using System.Threading.Tasks; using System.Threading.Tasks;
using Content.Shared.Maps;
using Content.Shared.Procedural; using Content.Shared.Procedural;
using Content.Shared.Procedural.DungeonGenerators; using Content.Shared.Procedural.DungeonGenerators;
@@ -10,7 +11,7 @@ public sealed partial class DungeonJob
/// <summary> /// <summary>
/// <see cref="FillGridDunGen"/> /// <see cref="FillGridDunGen"/>
/// </summary> /// </summary>
private async Task<Dungeon> GenerateFillDunGen(DungeonData data, HashSet<Vector2i> reservedTiles) private async Task<Dungeon> GenerateFillDunGen(FillGridDunGen fill, DungeonData data, HashSet<Vector2i> reservedTiles)
{ {
if (!data.Entities.TryGetValue(DungeonDataKey.Fill, out var fillEnt)) if (!data.Entities.TryGetValue(DungeonDataKey.Fill, out var fillEnt))
{ {
@@ -28,6 +29,9 @@ public sealed partial class DungeonJob
if (reservedTiles.Contains(tile)) if (reservedTiles.Contains(tile))
continue; continue;
if (fill.AllowedTiles != null && !fill.AllowedTiles.Contains(((ContentTileDefinition) _tileDefManager[tileRef.Value.Tile.TypeId]).ID))
continue;
if (!_anchorable.TileFree(_grid, tile, DungeonSystem.CollisionLayer, DungeonSystem.CollisionMask)) if (!_anchorable.TileFree(_grid, tile, DungeonSystem.CollisionLayer, DungeonSystem.CollisionMask))
continue; continue;

View File

@@ -230,7 +230,7 @@ public sealed partial class DungeonJob : Job<List<Dungeon>>
dungeons.AddRange(await GenerateExteriorDungen(position, exterior, reservedTiles, random)); dungeons.AddRange(await GenerateExteriorDungen(position, exterior, reservedTiles, random));
break; break;
case FillGridDunGen fill: case FillGridDunGen fill:
dungeons.Add(await GenerateFillDunGen(data, reservedTiles)); dungeons.Add(await GenerateFillDunGen(fill, data, reservedTiles));
break; break;
case JunctionDunGen junc: case JunctionDunGen junc:
await PostGen(junc, data, dungeons[^1], reservedTiles, random); await PostGen(junc, data, dungeons[^1], reservedTiles, random);

View File

@@ -1,3 +1,6 @@
using Content.Shared.Maps;
using Robust.Shared.Prototypes;
namespace Content.Shared.Procedural.DungeonGenerators; namespace Content.Shared.Procedural.DungeonGenerators;
/// <summary> /// <summary>
@@ -7,4 +10,11 @@ namespace Content.Shared.Procedural.DungeonGenerators;
/// DungeonData keys are: /// DungeonData keys are:
/// - Fill /// - Fill
/// </remarks> /// </remarks>
public sealed partial class FillGridDunGen : IDunGenLayer; public sealed partial class FillGridDunGen : IDunGenLayer
{
/// <summary>
/// Tiles the fill can occur on.
/// </summary>
[DataField]
public HashSet<ProtoId<ContentTileDefinition>>? AllowedTiles;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,105 @@
- type: dungeonRoom
id: VGRoidInterior5x5a
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 0,0
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5b
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 6,0
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5c
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 12,0
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5d
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 18,0
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5e
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 0,6
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5f
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 6,6
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5g
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 12,6
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5h
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 18,6
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5i
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 0,12
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5j
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 6,12
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5k
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 12,12
tags:
- VGRoidInterior
- type: dungeonRoom
id: VGRoidInterior5x5l
size: 5,5
atlas: /Maps/Dungeon/vgroidinterior.yml
offset: 18,12
tags:
- VGRoidInterior
- type: entity
id: VGRoidInteriorRoomMarker
parent: BaseRoomMarker
name: VGRoid interior marker
components:
- type: RoomFill
roomWhitelist:
tags:
- VGRoidInterior

View File

@@ -18,6 +18,11 @@
proto: VGRoidSmaller proto: VGRoidSmaller
- !type:PrototypeDunGen - !type:PrototypeDunGen
proto: VGRoidSmallPaths proto: VGRoidSmallPaths
- !type:EntityTableDunGen
minCount: 7
maxCount: 12
table:
id: VGRoidInteriorRoomMarker
# Fill # Fill
- !type:PrototypeDunGen - !type:PrototypeDunGen
proto: VGRoidFill proto: VGRoidFill
@@ -219,3 +224,5 @@
Fill: IronRock Fill: IronRock
layers: layers:
- !type:FillGridDunGen - !type:FillGridDunGen
allowedTiles:
- FloorAsteroidSand

View File

@@ -1345,6 +1345,9 @@
- type: Tag - type: Tag
id: Vegetable id: Vegetable
- type: Tag
id: VGRoidInterior
- type: Tag - type: Tag
id: VimPilot id: VimPilot