Add map loading logic and spawn rate control

This commit is contained in:
2025-09-30 02:32:03 -07:00
parent 70d1871985
commit 6f582fcca1
43 changed files with 470 additions and 118 deletions

View File

@@ -1,12 +0,0 @@
using Godot;
namespace Zennysoft.Game.Ma;
public partial class EnemyDatabase : Node
{
[Export]
public PackedScene[] EnemyList;
[Export]
public float[] SpawnRate;
}

View File

@@ -0,0 +1,21 @@
namespace Zennysoft.Game.Ma;
public enum EnemyType
{
Sproingy,
Michael,
FilthEater,
Sara,
Ballos,
Chariot,
Chinthe,
AmbassadorGreen,
AmbassadorRed,
AmbassadorSteel,
AgniDemon,
AqueousDemon,
EdenPillar,
Palan,
ShieldOfHeaven,
GoldSproingy
}

View File

@@ -0,0 +1 @@
uid://bwqjmol68w6pr

View File

@@ -0,0 +1,56 @@
using Godot;
using System;
namespace Zennysoft.Game.Ma;
public static class EnemyTypeToEnemyConverter
{
private static readonly string _folderPath = "res://src/enemy/enemy_types";
public static Enemy Convert(EnemyType enemyType)
{
switch (enemyType)
{
case EnemyType.Sproingy:
return InstantiateFromPath(@$"{_folderPath}/01. sproingy/Sproingy.tscn");
case EnemyType.Michael:
return InstantiateFromPath(@$"{_folderPath}/02. michael/Michael.tscn");
case EnemyType.FilthEater:
return InstantiateFromPath(@$"{_folderPath}/03. filth_eater/FilthEater.tscn");
case EnemyType.Sara:
return InstantiateFromPath(@$"{_folderPath}/04. sara/Sara.tscn");
case EnemyType.Ballos:
return InstantiateFromPath(@$"{_folderPath}/05. ballos/Ballos.tscn");
case EnemyType.Chariot:
return InstantiateFromPath(@$"{_folderPath}/06. chariot/Chariot.tscn");
case EnemyType.Chinthe:
return InstantiateFromPath(@$"{_folderPath}/07. chinthe/Chinthe.tscn");
case EnemyType.AmbassadorGreen:
return InstantiateFromPath(@$"{_folderPath}/08a. Ambassador/Ambassador.tscn");
case EnemyType.AmbassadorRed:
return InstantiateFromPath(@$"{_folderPath}/08b. Ambassador (red)/AmbassadorRed.tscn");
case EnemyType.AmbassadorSteel:
return InstantiateFromPath(@$"{_folderPath}/08c. Ambassador (steel)/AmbassadorSteel.tscn");
case EnemyType.AgniDemon:
return InstantiateFromPath(@$"{_folderPath}/09. Agni/AgniDemon.tscn");
case EnemyType.AqueousDemon:
return InstantiateFromPath(@$"{_folderPath}/9b. Aqueos Demon/AqueosDemon.tscn");
case EnemyType.EdenPillar:
return InstantiateFromPath(@$"{_folderPath}/10. Eden Pillar/Eden Pillar.tscn");
case EnemyType.Palan:
return InstantiateFromPath(@$"{_folderPath}/11. Palan/Palan.tscn");
case EnemyType.ShieldOfHeaven:
return InstantiateFromPath(@$"{_folderPath}/12. Shield of Heaven/ShieldModelView.tscn");
case EnemyType.GoldSproingy:
return InstantiateFromPath(@$"{_folderPath}/13. gold sproingy/GoldSproingy.tscn");
default:
throw new NotImplementedException("Not supported");
}
}
private static Enemy InstantiateFromPath(string scenePath)
{
var enemyScene = GD.Load<PackedScene>(scenePath);
return enemyScene.Instantiate<Enemy>();
}
}

View File

@@ -0,0 +1 @@
uid://ctspbxmdle4vt