70 lines
2 KiB
GDScript3
70 lines
2 KiB
GDScript3
|
|
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
|