Quest system fixed.

This commit is contained in:
2025-05-07 10:33:00 -05:00
parent 12746a520e
commit f940247a48
14 changed files with 94 additions and 29 deletions

View File

@@ -25,7 +25,7 @@ func start() -> void:
assert(started == false)
started = true
func update(delta:float) -> void:
func update(_delta:float) -> void:
assert(started == true)
assert(ended == false)

View File

@@ -0,0 +1,17 @@
class_name EventShowQuest extends "res://scripts/Event/Event.gd"
@export var quest:QuestSystem.QuestKey = QuestSystem.QuestKey.TEST_QUEST
@export var waitUntilClosed:bool = true
func start():
UI.showQuestsMenu(quest)
pass
func isDone() -> bool:
if !super.isDone():
return false
if waitUntilClosed:
return false
return true

View File

@@ -0,0 +1 @@
uid://dd6ppw243a5x7

View File

@@ -1,3 +1,4 @@
class_name Quest extends Node
@export var questName:String = "Some quest"
@export var questName:String = "Some quest"
@export var questKey:QuestSystem.QuestKey = QuestSystem.QuestKey.TEST_QUEST

View File

@@ -1,13 +1,21 @@
class_name QuestSystem extends Node
var quests:Array[Quest]
enum QuestKey {
TEST_QUEST
};
var quests:Dictionary[int, Quest]
func _ready() -> void:
_updateQuests()
pass
func _updateQuests() -> void:
quests = []
quests = {}
for quest in $Quests.get_children():
if quest is Quest:
quests.append(quest)
if quests.has(quest.questKey):
assert(false, "Quest with key %s already exists" % quest.questKey)
quests[quest.questKey] = quest
for quest in QuestKey:
assert(quests.has(QuestKey[quest]), "Quest with key %s does not exist" % quest)

View File

@@ -3,3 +3,7 @@ class_name UISystem extends Control
func _process(delta: float) -> void:
# This needs to always be at the end of the parent node's tree
get_parent().move_child(self, get_parent().get_child_count() - 1)
func showQuestsMenu(questKey = null) -> void:
$QuestMenu.setQuest(questKey)
$QuestMenu.show()

View File

@@ -1,7 +1,7 @@
class_name DebugMenu extends VBoxContainer
func _ready() -> void:
hide()
show()
$MainMenu.connect("pressed", _on_MainMenu_pressed);
$OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed);
@@ -34,7 +34,7 @@ func _on_Overworld_pressed():
hide()
func _on_Quests_pressed():
print("Quests pressed")
UI.showQuestsMenu()
func _on_Custscene_pressed():
print("Cutscene pressed")

View File

@@ -1,6 +1,31 @@
class_name QuestMenu extends Control
class_name QuestMenu extends Panel
@export var questList:ItemList
@export var questName:Label
func _ready() -> void:
$VBoxContainer/HBoxContainer/ItemList.clear()
for quest in QUEST.quests:
$VBoxContainer/HBoxContainer/ItemList.add_item(quest.questName)
hide()
# Setup quests
questList.clear()
for questKey in QUEST.quests:
var q = QUEST.quests[questKey]
questList.add_item(q.questName)
# Connect signals
questList.item_selected.connect(_onQuestSelected)
func _onQuestSelected(index:int) -> void:
setQuest(index)
pass
func setQuest(questKey = null):
if questKey == null:
questList.deselect_all()
return
assert(QUEST.quests.has(questKey), "Quest with key %s does not exist" % questKey)
var quest = QUEST.quests[questKey];
questList.select(questKey)
questName.text = quest.questName
pass