Add basic item spawns to altar
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user