This commit is contained in:
Pal
2026-02-01 05:07:13 -08:00
parent 3e178257aa
commit e85c8d51f1
3 changed files with 56 additions and 44 deletions

View File

@@ -18,13 +18,13 @@ public partial class CorridorRoom : Node3D
public void Setup() public void Setup()
{ {
if (_room != null) if (_room != null)
_room.BodyEntered += Room_BodyEntered; _room.BodyEntered += Room_BodyEntered;
} }
private void Room_BodyEntered(Node3D body) private void Room_BodyEntered(Node3D body)
{ {
if (!Game.CurrentFloor.FloorIsLoaded) if (!Game.CurrentFloor.FloorIsLoaded)
return; return;
} }
} }

View File

@@ -19,31 +19,31 @@ public partial class MonsterRoom : DungeonRoom
public override void _Ready() public override void _Ready()
{ {
SpawnItems(); SpawnItems();
} }
public void SpawnEnemies(Godot.Collections.Dictionary<EnemyType, float> enemyInfo) public void SpawnEnemies(Godot.Collections.Dictionary<EnemyType, float> enemyInfo)
{ {
if (enemyInfo == null || !enemyInfo.Any(x => x.Value > 0)) if (enemyInfo == null || !enemyInfo.Any(x => x.Value > 0))
return; return;
var rng = new RandomNumberGenerator(); var rng = new RandomNumberGenerator();
rng.Randomize(); rng.Randomize();
var enemySpawnPoints = EnemySpawnPoints.GetChildren(); var enemySpawnPoints = EnemySpawnPoints.GetChildren();
var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count); var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count);
foreach (var spawnPoint in enemySpawnPoints.Cast<Marker3D>()) foreach (var spawnPoint in enemySpawnPoints.Cast<Marker3D>())
{ {
if (numberOfEnemiesToSpawn <= 0) if (numberOfEnemiesToSpawn <= 0)
break; break;
numberOfEnemiesToSpawn--; numberOfEnemiesToSpawn--;
var index = rng.RandWeighted([.. enemyInfo.Values]); var index = rng.RandWeighted([.. enemyInfo.Values]);
var selectedEnemy = enemyInfo.ElementAt((int)index); var selectedEnemy = enemyInfo.ElementAt((int)index);
var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(selectedEnemy.Key); var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(selectedEnemy.Key);
instantiatedEnemy.Position = new Vector3(spawnPoint.Position.X, 0f, spawnPoint.Position.Z); instantiatedEnemy.Position = new Vector3(spawnPoint.Position.X, 0f, spawnPoint.Position.Z);
AddChild(instantiatedEnemy); AddChild(instantiatedEnemy);
} }
} }
@@ -51,25 +51,25 @@ public partial class MonsterRoom : DungeonRoom
// //
private void SpawnItems() private void SpawnItems()
{ {
if (ItemSpawnPoints == null) if (ItemSpawnPoints == null)
return; return;
var itemSpawnPoints = ItemSpawnPoints.GetChildren(); var itemSpawnPoints = ItemSpawnPoints.GetChildren();
var rng = new RandomNumberGenerator(); var rng = new RandomNumberGenerator();
rng.Randomize(); rng.Randomize();
var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count); var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count);
itemSpawnPoints.Shuffle(); itemSpawnPoints.Shuffle();
var database = ItemDatabase.Instance; var database = ItemDatabase.Instance;
foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>()) foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>())
{ {
if (numberOfItemsToSpawn <= 0) if (numberOfItemsToSpawn <= 0)
break; break;
numberOfItemsToSpawn--; numberOfItemsToSpawn--;
var selectedItem = database.PickItem<InventoryItem>(); var selectedItem = database.PickItem<InventoryItem>();
var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D; var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
duplicated.Position = new Vector3(spawnPoint.Position.X, 0, spawnPoint.Position.Z); duplicated.Position = new Vector3(spawnPoint.Position.X, 0, spawnPoint.Position.Z);
AddChild(duplicated); AddChild(duplicated);
} }
} }
} }

File diff suppressed because one or more lines are too long