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] private Marker3D PlayerSpawnPoint { get; set; } = default!;
|
||||||
|
|
||||||
|
[Node] public Node3D ItemSpawnPoints { get; set; } = default!;
|
||||||
|
|
||||||
[Node] private Area3D NoExitArea { get; set; } = default!;
|
[Node] private Area3D NoExitArea { get; set; } = default!;
|
||||||
|
|
||||||
[Export] public Resource Dialogue { get; set; } = default!;
|
[Export] public Resource Dialogue { get; set; } = default!;
|
||||||
@@ -29,6 +31,31 @@ public partial class Altar : SpecialFloor
|
|||||||
Exit.AreaEntered += Exit_AreaEntered;
|
Exit.AreaEntered += Exit_AreaEntered;
|
||||||
NoExitArea.AreaEntered += NoExitArea_AreaEntered;
|
NoExitArea.AreaEntered += NoExitArea_AreaEntered;
|
||||||
FloorIsLoaded = true;
|
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)
|
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
|
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)
|
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="."]
|
[node name="Room" type="Node3D" parent="."]
|
||||||
transform = Transform3D(1.4, 0, 0, 0, 1.4, 0, 0, 0, 1.4, 0, 4.31338, 0)
|
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