extends Node signal job_generated(job: JobData) var job_spawn_timer: Timer var jobs_array: Array[JobData] #Job spawn interval const JOB_SPAWN_WAIT: float = 2.0 const MAX_JOBS: int = 4 var current_job_count: int = 0 func _ready() -> void: load_all_jobs("res://Resources/Jobs/") # Create timer for job spawning job_spawn_timer = Timer.new() add_child(job_spawn_timer) job_spawn_timer.wait_time = JOB_SPAWN_WAIT job_spawn_timer.one_shot = false job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout) job_spawn_timer.start() func _on_job_spawn_timer_timeout() -> void: print("Spawn timer over") generate_job() func generate_job(): if not current_job_count >= MAX_JOBS: var random_job: JobData = jobs_array.pick_random() current_job_count += 1 print("Generated job: ") print(random_job) job_generated.emit(random_job) # Load job resources func load_all_jobs(path: String) -> void: var dir = DirAccess.open(path) if dir: dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": if not dir.current_is_dir() and file_name.get_extension() == "tres": var full_path = path + file_name var job_resource = load(full_path) as JobData if job_resource: jobs_array.append(job_resource) #print(job_resource) file_name = dir.get_next() dir.list_dir_end() #print(jobs_array) else: print("No files found on path")