34 lines
870 B
GDScript
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)
|