Add map loading logic and spawn rate control
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
using Godot;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
public partial class EnemyDatabase : Node
|
||||
{
|
||||
[Export]
|
||||
public PackedScene[] EnemyList;
|
||||
|
||||
[Export]
|
||||
public float[] SpawnRate;
|
||||
}
|
||||
21
Zennysoft.Game.Ma/src/enemy/EnemyType.cs
Normal file
21
Zennysoft.Game.Ma/src/enemy/EnemyType.cs
Normal 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
|
||||
}
|
||||
1
Zennysoft.Game.Ma/src/enemy/EnemyType.cs.uid
Normal file
1
Zennysoft.Game.Ma/src/enemy/EnemyType.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bwqjmol68w6pr
|
||||
56
Zennysoft.Game.Ma/src/enemy/EnemyTypeToEnemyConverter.cs
Normal file
56
Zennysoft.Game.Ma/src/enemy/EnemyTypeToEnemyConverter.cs
Normal 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>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://ctspbxmdle4vt
|
||||
Reference in New Issue
Block a user