Files
Babushka/scripts/CSharp/Common/Fight/FightRoomSceneSetup.cs
T

49 lines
1.5 KiB
C#
Raw Normal View History

2025-09-30 16:23:05 +02:00
using System.Collections.Generic;
using System.Linq;
2025-12-11 15:09:28 +01:00
using Babushka.scripts.CSharp.Common.Inventory;
2025-09-12 13:20:27 +02:00
using Godot;
namespace Babushka.scripts.CSharp.Common.Fight;
2025-09-21 14:54:55 +02:00
public partial class FightRoomSceneSetup : Node
2025-09-12 13:20:27 +02:00
{
2025-12-11 15:09:28 +01:00
[Export(PropertyHint.ArrayType)] private Node2D[] _enemyGroupSpawns = null!;
[Export] private PackedScene _roamingEnemyGroupPrefab = null!;
[Export] private PackedScene _itemOnGroundPrefab = null!;
[Export] private FightSceneSwitcher _fightSceneSwitcher = null!;
2025-09-30 16:23:05 +02:00
2025-09-12 13:20:27 +02:00
public override void _Ready()
{
var room = FightWorld.Instance.currentRoom!;
2025-09-30 16:23:05 +02:00
foreach (var (parent, group) in _enemyGroupSpawns.Zip(room.enemyGroups))
2025-09-12 13:20:27 +02:00
{
if (group.AreAllDead())
2025-12-11 15:09:28 +01:00
{
SpawnLoot(group, parent);
}
else
{
SpawnEnemies(group, parent);
}
2025-09-12 13:20:27 +02:00
}
}
2025-12-11 15:09:28 +01:00
private void SpawnEnemies(FightWorld.FighterGroup group, Node2D parent)
{
var roamingEnemyGroup = _roamingEnemyGroupPrefab.Instantiate<RoamingEnemyGroup>();
roamingEnemyGroup.Initialize(group, _fightSceneSwitcher);
parent.AddChild(roamingEnemyGroup);
}
private void SpawnLoot(FightWorld.FighterGroup group, Node2D parent)
{
if (group.lootToDrop == null)
return;
var onGroundInstance = _itemOnGroundPrefab.Instantiate<ItemOnGround2D>();
onGroundInstance.itemInstance = group.lootToDrop;
parent.AddChild(onGroundInstance);
}
2025-09-12 13:20:27 +02:00
}