Add basic item spawns to altar

This commit is contained in:
2026-04-28 01:39:56 -07:00
parent c26c566d56
commit bd5154a02f
2 changed files with 45 additions and 0 deletions

View File

@@ -19,6 +19,8 @@ public partial class Altar : SpecialFloor
[Node] private Marker3D PlayerSpawnPoint { get; set; } = default!;
[Node] public Node3D ItemSpawnPoints { get; set; } = default!;
[Node] private Area3D NoExitArea { get; set; } = default!;
[Export] public Resource Dialogue { get; set; } = default!;
@@ -29,6 +31,31 @@ public partial class Altar : SpecialFloor
Exit.AreaEntered += Exit_AreaEntered;
NoExitArea.AreaEntered += NoExitArea_AreaEntered;
FloorIsLoaded = true;
SpawnItems();
}
private void SpawnItems()
{
if (ItemSpawnPoints == null)
return;
var itemSpawnPoints = ItemSpawnPoints.GetChildren();
var rng = new RandomNumberGenerator();
rng.Randomize();
var numberOfItemsToSpawn = rng.RandiRange(2, itemSpawnPoints.Count);
itemSpawnPoints.Shuffle();
var database = ItemDatabase.Instance;
foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>())
{
if (numberOfItemsToSpawn <= 0)
break;
numberOfItemsToSpawn--;
var selectedItem = database.PickBasicItem<IBaseInventoryItem>() as Node3D;
var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
AddChild(duplicated);
duplicated.Position = new Vector3(spawnPoint.Position.X, 0, spawnPoint.Position.Z);
}
}
private void NoExitArea_AreaEntered(Area3D area)

View File

@@ -162,6 +162,24 @@ transform = Transform3D(1.4, 0, 0, 0, 1.4, 0, 0, 0, 1.4, 0, 3.70806, 0)
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 39.3951, -2.89376, -1.035)
[node name="ItemSpawnPoints" type="Node3D" parent="Spawn Points"]
unique_name_in_owner = true
[node name="Marker3D" type="Marker3D" parent="Spawn Points/ItemSpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5546, -2.4089, -2.33621)
[node name="Marker3D2" type="Marker3D" parent="Spawn Points/ItemSpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.30073, -2.4089, -7.21384)
[node name="Marker3D3" type="Marker3D" parent="Spawn Points/ItemSpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.23559, -2.4089, 3.53153)
[node name="Marker3D4" type="Marker3D" parent="Spawn Points/ItemSpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.62001, -2.4089, 3.3162)
[node name="Marker3D5" type="Marker3D" parent="Spawn Points/ItemSpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.67877, -2.4089, -5.30614)
[node name="Room" type="Node3D" parent="."]
transform = Transform3D(1.4, 0, 0, 0, 1.4, 0, 0, 0, 1.4, 0, 4.31338, 0)