project-villain/places/base_place/task_list.gd

34 lines
870 B
GDScript

extends Node
class_name TaskList
var unassigned_tasks = []
var assigned_task_dict: Dictionary = {}
func record_task(task):
#Records a provided task in the list
if task.assignment:
var assignment: Actor = task["assignment"]
#var assignment_task_list: Array = []
assign_task(task, assignment)
if not assigned_task_dict.has(assignment):
assigned_task_dict[assignment] = []
assigned_task_dict[assignment].append(task)
func finish_task(source, task):
#Removes a completed task from the list
var source_task_array = assigned_task_dict[source]
var finished_task_index = source_task_array.find(task)
source_task_array.pop_at(finished_task_index)
if not assigned_task_dict[source]:
assigned_task_dict.erase(source)
func assign_task(task, assignment: Actor):
#Alerts an actor that it has a new task.
assignment.lookup_actor_to_task.append(task)