37 lines
809 B
GDScript
37 lines
809 B
GDScript
class_name Quest
|
|
const QuestObjective = preload("res://scripts/Quest/Objective/QuestObjective.gd");
|
|
|
|
enum QuestState {
|
|
NOT_STARTED,
|
|
ACTIVE,
|
|
INACTIVE,
|
|
FINISHED
|
|
};
|
|
|
|
var questName:String;
|
|
var questState:QuestState = QuestState.NOT_STARTED;
|
|
var objectives:Array[QuestObjective] = [];
|
|
var currentObjective = -1;
|
|
|
|
func _init(
|
|
questName:String,
|
|
objectives:Array[QuestObjective]
|
|
) -> void:
|
|
self.questName = questName;
|
|
self.objectives = objectives;
|
|
|
|
func getState() -> QuestState:
|
|
return questState;
|
|
|
|
func start():
|
|
print("Starting quest: " + questName);
|
|
questState = QuestState.ACTIVE;
|
|
currentObjective = 0;
|
|
|
|
func nextObjective():
|
|
currentObjective = currentObjective + 1;
|
|
if currentObjective >= objectives.size():
|
|
questState = QuestState.FINISHED;
|
|
return null;
|
|
return objectives[currentObjective];
|