using Godot; using Newlon; using System.Collections.Generic; public partial class GameRegistry : Node { private const string PLANT_RESOURCE_PATH = "res://resources/plants/"; private const string ZOMBIE_RESOURCE_PATH = "res://resources/zombies/"; public static GameRegistry Instance { get; private set; } private Dictionary PlantDictionary = []; private Dictionary ZombieDictionary = []; public override void _Ready() { Instance = this; //Plant init string[] plantFiles = DirAccess.GetFilesAt(PLANT_RESOURCE_PATH); foreach (var file in plantFiles) { if (ResourceLoader.Exists(PLANT_RESOURCE_PATH + file)) { var plant = ResourceLoader.Load(PLANT_RESOURCE_PATH + file); PlantDictionary.Add(file.ToLower().Split('.')[0], plant); } } //Zombie init string[] zombieFiles = DirAccess.GetFilesAt(ZOMBIE_RESOURCE_PATH); foreach (var file in zombieFiles) { if (ResourceLoader.Exists(ZOMBIE_RESOURCE_PATH + file)) { var zombie = ResourceLoader.Load(ZOMBIE_RESOURCE_PATH + file); ZombieDictionary.Add(file.ToLower().Split('.')[0], zombie); } } } public static PlantResource GetPlantByName(string name) { if (Instance.PlantDictionary.ContainsKey(name) == false) return null; return Instance.PlantDictionary[name]; } public static List GetPlantNames() { List result = []; foreach (var key in Instance.PlantDictionary.Keys) { result.Add(key); } return result; } public static List GetPlants() { List result = []; foreach (var value in Instance.PlantDictionary.Values) { result.Add(value); } return result; } public static ZombieResource GetZombieByName(string name) { if (Instance.ZombieDictionary.ContainsKey(name) == false) return null; return Instance.ZombieDictionary[name]; } public static List GetZombieNames() { List result = []; foreach (var key in Instance.ZombieDictionary.Keys) { result.Add(key); } return result; } public static List GetZombies() { List result = []; foreach (var value in Instance.ZombieDictionary.Values) { result.Add(value); } return result; } }