Revamp goals as resources

This commit is contained in:
2026-03-19 23:46:24 +01:00
parent 3c8709c834
commit bcf228447d
25 changed files with 561 additions and 343 deletions

43
core/goals/goal_data.gd Normal file
View File

@@ -0,0 +1,43 @@
class_name GoalData
extends Resource
@export var id: StringName = &""
@export var requirements: Array[GoalRequirementData] = []
func has_id() -> bool:
return not String(id).strip_edges().is_empty()
func get_valid_requirements() -> Array[Resource]:
var result: Array[Resource] = []
for requirement_resource in requirements:
if requirement_resource == null:
continue
if not bool(requirement_resource.call("is_valid")):
continue
result.append(requirement_resource)
return result
func is_valid() -> bool:
if not has_id():
return false
return not get_valid_requirements().is_empty()
func is_met() -> bool:
var valid_requirements: Array[Resource] = get_valid_requirements()
if valid_requirements.is_empty():
return false
for requirement_resource in valid_requirements:
if not bool(requirement_resource.call("is_met")):
return false
return true
func get_first_requirement_summary() -> String:
var valid_requirements: Array[Resource] = get_valid_requirements()
if valid_requirements.is_empty():
return ""
return String(valid_requirements[0].call("get_summary_text"))