class_name Quest extends PanelContainer @export var goalType := WorldArea.GoalType.KILL @export var faction := WorldArea.Faction.CREATURE @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: var factionStr = WorldArea.Faction.keys()[self.faction].capitalize() match self.goalType: WorldArea.GoalType.KILL: $QuestProgress/GoalTypeVal.text = "Kill " + factionStr + "s" func _set_goal_val() -> void: $QuestProgress/GoalVal.text = str(self.goalTotal) func _quest_goal_check(enemyKillType: WorldArea.Faction) -> void: if enemyKillType == self.faction: 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.faction = KillTypes.NATURAL func _on_enemy_died(_enemyDifficulty: NPC.NPCDifficulty, enemyFaction: WorldArea.Faction): _quest_goal_check(enemyFaction)