Quest system fixed.
This commit is contained in:
@@ -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)
|
||||
|
||||
|
17
scripts/Event/Quest/EventShowQuest.gd
Normal file
17
scripts/Event/Quest/EventShowQuest.gd
Normal 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
|
1
scripts/Event/Quest/EventShowQuest.gd.uid
Normal file
1
scripts/Event/Quest/EventShowQuest.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dd6ppw243a5x7
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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()
|
||||
|
@@ -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")
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user