class_name Game ## COLORS ## enum COLOR { HEALTH, ENERGY, SELECTED, SECONDARY } const COLOR_HEALTH : Color = Color(0.921569, 0.419608, 0.415686, 1) const COLOR_ENERGY : Color = Color(0.921569, 0.890196, 0.415686, 1) const COLOR_SELECTED : Color = Color(0.721569, 0.600196, 0.355686, 1) const COLOR_SECONDARY : Color = Color(0.341, 0.082, 0.094, 0.0) const COLOR_FALLBACK : Color = Color(0.341176, 0.0823529, 0.0941176, 0) static func getColor(color : COLOR) -> Color : match color: COLOR.HEALTH : return COLOR_HEALTH COLOR.ENERGY : return COLOR_ENERGY COLOR.SELECTED : return COLOR_SELECTED COLOR.SECONDARY : return COLOR_SECONDARY _: return COLOR_FALLBACK ## END COLORS ## const SCENE_DIR_PATTERN : String = "res://\\w+/Scenes/$" const SCENE_FILE_PATTERN : String = "([^/]*)\\.tscn$" const TOWER_DIR : String = "res://Towers/Scenes/" const ENEMY_DIR : String = "res://Enemies/Scenes/" static var towers : Dictionary static var enmies : Dictionary static func _static_init() -> void: preloadSceneInGlobal(towers, TOWER_DIR) #preloadSceneInGlobal(enemies, ENEMY_DIR) static func preloadSceneInGlobal(property: Dictionary, path : String): var files : Array[String] = getFileFromDir(path, SCENE_FILE_PATTERN, SCENE_DIR_PATTERN) for file in files: var scene = load(file) if scene: property.set(EnhancedResource.getPackedSceneProperty(scene, "tower_type"), scene) property.sort() static func getFileFromDir(path : String, regexPattern : String, pathRegexPattern : String = "") -> Array[String]: var files : Array[String] var regex : RegEx = RegEx.create_from_string(regexPattern) var pathRegex : RegEx = RegEx.create_from_string(pathRegexPattern) var dir : DirAccess = DirAccess.open(path) if pathRegexPattern: for subDir in dir.get_directories(): subDir = path + subDir + "/" if pathRegex.search(subDir): files.append_array(getFileFromDir(subDir, regexPattern, pathRegexPattern)) for file in dir.get_files(): if regex.search(file) && pathRegex.search(path): files.append(path + file) return files