class_name Quest extends PanelContainer @export var goalType := WorldArea.GoalTypes.KILLMANY @export var killType := WorldArea.KillTypes.NATURAL @export var goalTotal := 1 @export var goalCurrent := 0 var questComplete := false func _ready() -> void: SignalBus.enemy_died.connect(_on_enemy_died) _generate_random_quest() _set_goal_text() _set_goal_val() func _process(_delta: float) -> void: if questComplete: _quest_progress_hide() _quest_complete_show() func _set_goal_text() -> void: match self.goalType: WorldArea.GoalTypes.KILLMANY: $QuestProgress/GoalTextVal.text = "Kill Many" func _set_goal_val() -> void: $QuestProgress/GoalVal.text = str(self.goalTotal) func _quest_goal_check(enemyKillType: WorldArea.KillTypes) -> void: if enemyKillType == self.killType: self.goalCurrent += 1 $QuestProgress/CompletedVal.text = str(self.goalCurrent) if self.goalCurrent == self.goalTotal: SignalBus.quest_completed.emit() questComplete = true func _quest_progress_hide() -> void: $QuestProgress.modulate.a -= 0.05 func _quest_complete_show() -> void: $QuestComplete.show() $QuestComplete.modulate.a += 0.05 func _generate_random_quest() -> void: pass # TODO: generate random quest # self.goalType = GoalTypes. # match self.goalType: # GoalTypes.KILLMANY: # self.killType = KillTypes.NATURAL func _on_enemy_died(_enemyDifficulty: NPC.NPCDifficulties, enemyKillType: WorldArea.KillTypes): _quest_goal_check(enemyKillType)