1A fix
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
Reference in New Issue
Block a user