Quest system fixed.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=10 format=3 uid="uid://dx6fv8n4jl5ku"]
|
[gd_scene load_steps=11 format=3 uid="uid://dx6fv8n4jl5ku"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://yhtpoum3eek7" path="res://scenes/Entities/Rosa.tscn" id="1_7b7hx"]
|
[ext_resource type="PackedScene" uid="uid://yhtpoum3eek7" path="res://scenes/Entities/Rosa.tscn" id="1_7b7hx"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dr4b2pmsknuhc" path="res://scenes/Entities/TestNPC.tscn" id="2_cg1ph"]
|
[ext_resource type="PackedScene" uid="uid://dr4b2pmsknuhc" path="res://scenes/Entities/TestNPC.tscn" id="2_cg1ph"]
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://boj5o4fx41rv8" path="res://scenes/Maps/TestMap/TestMapBuilding.tscn" id="4_brp0k"]
|
[ext_resource type="PackedScene" uid="uid://boj5o4fx41rv8" path="res://scenes/Maps/TestMap/TestMapBuilding.tscn" id="4_brp0k"]
|
||||||
[ext_resource type="Script" uid="uid://tkfc88q8m86f" path="res://scripts/Event/EventConversation.gd" id="5_cg1ph"]
|
[ext_resource type="Script" uid="uid://tkfc88q8m86f" path="res://scripts/Event/EventConversation.gd" id="5_cg1ph"]
|
||||||
[ext_resource type="Script" uid="uid://y7ckj1tn5cro" path="res://scripts/Event/EventTextbox.gd" id="6_gxq5o"]
|
[ext_resource type="Script" uid="uid://y7ckj1tn5cro" path="res://scripts/Event/EventTextbox.gd" id="6_gxq5o"]
|
||||||
|
[ext_resource type="Script" uid="uid://dd6ppw243a5x7" path="res://scripts/Event/Quest/EventShowQuest.gd" id="7_brp0k"]
|
||||||
|
|
||||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1h75"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1h75"]
|
||||||
sky_horizon_color = Color(0.59625, 0.6135, 0.6375, 1)
|
sky_horizon_color = Color(0.59625, 0.6135, 0.6375, 1)
|
||||||
@@ -60,3 +61,6 @@ script = ExtResource("5_cg1ph")
|
|||||||
[node name="Text 0" type="Node" parent="Events/TestConversation"]
|
[node name="Text 0" type="Node" parent="Events/TestConversation"]
|
||||||
script = ExtResource("6_gxq5o")
|
script = ExtResource("6_gxq5o")
|
||||||
text = "I am giving you a quest to gather some ingredients."
|
text = "I am giving you a quest to gather some ingredients."
|
||||||
|
|
||||||
|
[node name="Quest" type="Node" parent="Events/TestConversation"]
|
||||||
|
script = ExtResource("7_brp0k")
|
||||||
|
@@ -1,16 +1,9 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://tmbx2kit0jyq"]
|
[gd_scene load_steps=3 format=3 uid="uid://tmbx2kit0jyq"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://pcncoc6wum4q" path="res://scripts/Scene/OverworldScene.gd" id="1_rfscu"]
|
[ext_resource type="Script" uid="uid://pcncoc6wum4q" path="res://scripts/Scene/OverworldScene.gd" id="1_rfscu"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dx6fv8n4jl5ku" path="res://scenes/Maps/TestMap/TestMap.tscn" id="2_puia7"]
|
[ext_resource type="PackedScene" uid="uid://dx6fv8n4jl5ku" path="res://scenes/Maps/TestMap/TestMap.tscn" id="2_puia7"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bimrljk1rn7af" path="res://scenes/UI/SubsceneUI.tscn" id="3_gacct"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bfioi52hjn2kf" path="res://scenes/UI/QuestMenu.tscn" id="3_puia7"]
|
|
||||||
|
|
||||||
[node name="Overworld" type="Node3D"]
|
[node name="Overworld" type="Node3D"]
|
||||||
script = ExtResource("1_rfscu")
|
script = ExtResource("1_rfscu")
|
||||||
|
|
||||||
[node name="Some-map" parent="." instance=ExtResource("2_puia7")]
|
[node name="Some-map" parent="." instance=ExtResource("2_puia7")]
|
||||||
|
|
||||||
[node name="SubsceneUI" parent="." instance=ExtResource("3_gacct")]
|
|
||||||
|
|
||||||
[node name="QuestMenu" parent="SubsceneUI" instance=ExtResource("3_puia7")]
|
|
||||||
layout_mode = 1
|
|
||||||
|
@@ -17,9 +17,7 @@ script = ExtResource("1_g3au4")
|
|||||||
metadata/_custom_type_script = "uid://dahhuhiu8u88b"
|
metadata/_custom_type_script = "uid://dahhuhiu8u88b"
|
||||||
|
|
||||||
[node name="QuestMenu" parent="." instance=ExtResource("2_mpokx")]
|
[node name="QuestMenu" parent="." instance=ExtResource("2_mpokx")]
|
||||||
visible = false
|
layout_mode = 1
|
||||||
layout_mode = 0
|
|
||||||
anchors_preset = 0
|
|
||||||
|
|
||||||
[node name="VNTextbox" parent="." instance=ExtResource("3_btpxp")]
|
[node name="VNTextbox" parent="." instance=ExtResource("3_btpxp")]
|
||||||
visible = false
|
visible = false
|
||||||
|
@@ -27,7 +27,6 @@ layout_mode = 2
|
|||||||
|
|
||||||
[node name="Quests" type="Button" parent="."]
|
[node name="Quests" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
disabled = true
|
|
||||||
text = "Prototype Quests
|
text = "Prototype Quests
|
||||||
"
|
"
|
||||||
|
|
||||||
|
@@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbsrw36kkucje" path="res://scripts/UI/QuestMenu.gd" id="1_a7vj2"]
|
[ext_resource type="Script" uid="uid://cbsrw36kkucje" path="res://scripts/UI/QuestMenu.gd" id="1_a7vj2"]
|
||||||
|
|
||||||
[node name="QuestMenu" type="Panel"]
|
[node name="QuestMenu" type="Panel" node_paths=PackedStringArray("questList", "questName")]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_a7vj2")
|
script = ExtResource("1_a7vj2")
|
||||||
|
questList = NodePath("VBoxContainer/HBoxContainer/QuestList")
|
||||||
|
questName = NodePath("VBoxContainer/HBoxContainer/Control/VBoxContainer/QuestName")
|
||||||
|
metadata/_custom_type_script = "uid://cbsrw36kkucje"
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -26,7 +29,7 @@ text = "Quests"
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="ItemList" type="ItemList" parent="VBoxContainer/HBoxContainer"]
|
[node name="QuestList" type="ItemList" parent="VBoxContainer/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(250, 0)
|
custom_minimum_size = Vector2(250, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
@@ -38,3 +41,15 @@ item_1/text = "Quest Name 2"
|
|||||||
[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"]
|
[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/Control"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="QuestName" type="Label" parent="VBoxContainer/HBoxContainer/Control/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "QuestName"
|
||||||
|
@@ -25,7 +25,7 @@ func start() -> void:
|
|||||||
assert(started == false)
|
assert(started == false)
|
||||||
started = true
|
started = true
|
||||||
|
|
||||||
func update(delta:float) -> void:
|
func update(_delta:float) -> void:
|
||||||
assert(started == true)
|
assert(started == true)
|
||||||
assert(ended == false)
|
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
|
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
|
class_name QuestSystem extends Node
|
||||||
|
|
||||||
var quests:Array[Quest]
|
enum QuestKey {
|
||||||
|
TEST_QUEST
|
||||||
|
};
|
||||||
|
|
||||||
|
var quests:Dictionary[int, Quest]
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
_updateQuests()
|
_updateQuests()
|
||||||
pass
|
|
||||||
|
|
||||||
func _updateQuests() -> void:
|
func _updateQuests() -> void:
|
||||||
quests = []
|
quests = {}
|
||||||
for quest in $Quests.get_children():
|
for quest in $Quests.get_children():
|
||||||
if quest is Quest:
|
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:
|
func _process(delta: float) -> void:
|
||||||
# This needs to always be at the end of the parent node's tree
|
# 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)
|
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
|
class_name DebugMenu extends VBoxContainer
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
hide()
|
show()
|
||||||
|
|
||||||
$MainMenu.connect("pressed", _on_MainMenu_pressed);
|
$MainMenu.connect("pressed", _on_MainMenu_pressed);
|
||||||
$OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed);
|
$OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed);
|
||||||
@@ -34,7 +34,7 @@ func _on_Overworld_pressed():
|
|||||||
hide()
|
hide()
|
||||||
|
|
||||||
func _on_Quests_pressed():
|
func _on_Quests_pressed():
|
||||||
print("Quests pressed")
|
UI.showQuestsMenu()
|
||||||
|
|
||||||
func _on_Custscene_pressed():
|
func _on_Custscene_pressed():
|
||||||
print("Cutscene 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:
|
func _ready() -> void:
|
||||||
$VBoxContainer/HBoxContainer/ItemList.clear()
|
hide()
|
||||||
for quest in QUEST.quests:
|
|
||||||
$VBoxContainer/HBoxContainer/ItemList.add_item(quest.questName)
|
# 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
|
||||||
|
@@ -30,7 +30,7 @@ void vertex() {
|
|||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
vec4 npcColor = texture(npcTexture, UV);
|
vec4 npcColor = texture(npcTexture, UV);
|
||||||
|
|
||||||
if(npcColor.a == 0.0)
|
if(npcColor.a == 0.0)
|
||||||
discard;
|
discard;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user