diff --git a/project.godot b/project.godot index dc73717..94eaab5 100644 --- a/project.godot +++ b/project.godot @@ -17,9 +17,10 @@ config/icon="res://icon.svg" [autoload] +DEBUG="*res://scenes/Debug.tscn" BATTLE="*res://scripts/Singletons/Battle.gd" -COOKING="*res://scripts/Singletons/Cooking.gd" CUTSCENE="*res://scripts/Singletons/Cutscene.gd" +COOKING="*res://scripts/Singletons/Cooking.gd" ITEM="*res://scripts/Singletons/Item.gd" OVERWORLD="*res://scripts/Singletons/Overworld.gd" PAUSE="*res://scripts/Singletons/Pause.gd" @@ -81,6 +82,11 @@ pause={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } +debug={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [rendering] diff --git a/scenes/Meta/Cooking.tscn b/scenes/Cooking.tscn similarity index 100% rename from scenes/Meta/Cooking.tscn rename to scenes/Cooking.tscn diff --git a/scenes/Debug.tscn b/scenes/Debug.tscn new file mode 100644 index 0000000..c85c645 --- /dev/null +++ b/scenes/Debug.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=3 format=3 uid="uid://klfo3l0dxlht"] + +[ext_resource type="Script" uid="uid://d36d3fnpi8y30" path="res://scripts/Singletons/Debug.gd" id="1_5spvt"] +[ext_resource type="PackedScene" uid="uid://verg13jtqwvh" path="res://scenes/UI/DebugMenu.tscn" id="2_c2xgb"] + +[node name="Debug" type="Node2D"] +script = ExtResource("1_5spvt") + +[node name="UI" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DebugMenu" parent="UI" instance=ExtResource("2_c2xgb")] +layout_mode = 0 +anchors_preset = 0 +anchor_bottom = 0.0 +grow_vertical = 1 diff --git a/scenes/MainMenu.tscn b/scenes/MainMenu.tscn index 1b25a74..8f6c072 100644 --- a/scenes/MainMenu.tscn +++ b/scenes/MainMenu.tscn @@ -1,9 +1,6 @@ -[gd_scene load_steps=2 format=3 uid="uid://w1q5eoiejmy3"] - -[ext_resource type="Script" uid="uid://cak4lch21nq30" path="res://scripts/Scenes/MainMenuScene.gd" id="1_yqorp"] +[gd_scene format=3 uid="uid://w1q5eoiejmy3"] [node name="MainMenu" type="Node3D"] -script = ExtResource("1_yqorp") [node name="UI" type="Control" parent="."] layout_mode = 3 @@ -13,46 +10,20 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="VBoxContainer" type="VBoxContainer" parent="UI"] +[node name="Label" type="Label" parent="UI"] layout_mode = 1 -anchors_preset = 9 -anchor_bottom = 1.0 -offset_right = 171.0 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -68.0 +offset_top = -11.5 +offset_right = 68.0 +offset_bottom = 11.5 +grow_horizontal = 2 grow_vertical = 2 +text = "Thyme and Magic -[node name="HBoxContainer" type="HBoxContainer" parent="UI/VBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 0 - -[node name="Overworld" type="Button" parent="UI/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Prototype Overworld" - -[node name="MapDropdown" type="OptionButton" parent="UI/VBoxContainer/HBoxContainer"] -layout_mode = 2 - -[node name="Quests" type="Button" parent="UI/VBoxContainer"] -layout_mode = 2 -text = "Prototype Quests -" - -[node name="Cutscene" type="Button" parent="UI/VBoxContainer"] -layout_mode = 2 -text = "Prototype Cutscene" - -[node name="Cooking" type="Button" parent="UI/VBoxContainer"] -layout_mode = 2 -text = "Prototype Cooking -" - -[node name="Battle" type="Button" parent="UI/VBoxContainer"] -layout_mode = 2 -text = "Prototype Battle -" - -[connection signal="pressed" from="UI/VBoxContainer/HBoxContainer/Overworld" to="." method="_on_Overworld_pressed"] -[connection signal="pressed" from="UI/VBoxContainer/Quests" to="." method="_on_Quests_pressed"] -[connection signal="pressed" from="UI/VBoxContainer/Cutscene" to="." method="_on_Custscene_pressed"] -[connection signal="pressed" from="UI/VBoxContainer/Cooking" to="." method="_on_Cooking_pressed"] -[connection signal="pressed" from="UI/VBoxContainer/Battle" to="." method="_on_Battle_pressed"] +Press tab to bring up debug menu." +horizontal_alignment = 1 diff --git a/scenes/Meta/UI.tscn b/scenes/Meta/UI.tscn deleted file mode 100644 index d984842..0000000 --- a/scenes/Meta/UI.tscn +++ /dev/null @@ -1,20 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://dfwwtbs3ywcyq"] - -[ext_resource type="Theme" uid="uid://dm7ee4aqjr2dl" path="res://ui/UI Theme.tres" id="1_3b1y4"] -[ext_resource type="Script" uid="uid://vjr7s045ri4a" path="res://scripts/Scenes/UIScene.gd" id="2_5efuf"] -[ext_resource type="PackedScene" uid="uid://bkx3l0kckf4a8" path="res://scenes/UI/VNTextbox.tscn" id="2_x0c4l"] - -[node name="UI" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme = ExtResource("1_3b1y4") -script = ExtResource("2_5efuf") - -[node name="VNTextbox" parent="." instance=ExtResource("2_x0c4l")] -visible = false -layout_mode = 1 -offset_top = -133.0 diff --git a/scenes/Meta/Overworld.tscn b/scenes/Overworld.tscn similarity index 54% rename from scenes/Meta/Overworld.tscn rename to scenes/Overworld.tscn index 517afe8..fda2025 100644 --- a/scenes/Meta/Overworld.tscn +++ b/scenes/Overworld.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=3 format=3 uid="uid://tmbx2kit0jyq"] -[ext_resource type="Script" uid="uid://pcncoc6wum4q" path="res://scripts/Scenes/OverworldScene.gd" id="1_yv6j0"] -[ext_resource type="PackedScene" uid="uid://dx6fv8n4jl5ku" path="res://scenes/Maps/TestMap.tscn" id="4_8dvtu"] +[ext_resource type="Script" uid="uid://pcncoc6wum4q" path="res://scripts/Scenes/OverworldScene.gd" id="1_rfscu"] +[ext_resource type="PackedScene" uid="uid://dx6fv8n4jl5ku" path="res://scenes/Maps/TestMap.tscn" id="2_puia7"] [node name="Overworld" type="Node3D"] -script = ExtResource("1_yv6j0") +script = ExtResource("1_rfscu") -[node name="Some-map" parent="." instance=ExtResource("4_8dvtu")] +[node name="Some-map" parent="." instance=ExtResource("2_puia7")] diff --git a/scenes/UI/DebugMenu.tscn b/scenes/UI/DebugMenu.tscn new file mode 100644 index 0000000..abc7c07 --- /dev/null +++ b/scenes/UI/DebugMenu.tscn @@ -0,0 +1,49 @@ +[gd_scene load_steps=2 format=3 uid="uid://verg13jtqwvh"] + +[ext_resource type="Script" uid="uid://bn2kdjf586e5p" path="res://scripts/UI/DebugMenu.gd" id="1_pcsq6"] + +[node name="DebugMenu" type="VBoxContainer"] +anchors_preset = 9 +anchor_bottom = 1.0 +offset_right = 171.0 +grow_vertical = 2 +script = ExtResource("1_pcsq6") + +[node name="MainMenu" type="Button" parent="."] +layout_mode = 2 +text = "Prototype Main Menu" + +[node name="OverworldOption" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 0 + +[node name="Overworld" type="Button" parent="OverworldOption"] +layout_mode = 2 +text = "Prototype Overworld" + +[node name="MapDropdown" type="OptionButton" parent="OverworldOption"] +layout_mode = 2 + +[node name="Quests" type="Button" parent="."] +layout_mode = 2 +disabled = true +text = "Prototype Quests +" + +[node name="Cutscene" type="Button" parent="."] +layout_mode = 2 +disabled = true +text = "Prototype Cutscene" + +[node name="Cooking" type="Button" parent="."] +layout_mode = 2 +disabled = true +text = "Prototype Cooking +" + +[node name="Battle" type="Button" parent="."] +layout_mode = 2 +disabled = true +text = "Prototype Battle +" diff --git a/scripts/Scenes/MainMenuScene.gd b/scripts/Scenes/MainMenuScene.gd deleted file mode 100644 index e5f0f0b..0000000 --- a/scripts/Scenes/MainMenuScene.gd +++ /dev/null @@ -1,29 +0,0 @@ -class_name MainMenuScene extends Node3D - -var mapDropdown:OptionButton - -func _ready() -> void: - # mapDropdown = $UI/VBoxContainer/HBoxContainer/MapDropdown; - # var i:int = 0; - # for map in OverworldSystem.MAPS.keys(): - # mapDropdown.add_item(map, i); - # i = i + 1; - pass - -func _on_Overworld_pressed(): - # var keys:Array[String] = OverworldSystem.MAPS.keys() - # var key:String = keys[mapDropdown.selected] - # print("Overworld pressed" + OverworldSystem.MAPS[key]) - print("Overworld pressed") - -func _on_Quests_pressed(): - print("Quests pressed") - -func _on_Custscene_pressed(): - print("Cutscene pressed") - -func _on_Cooking_pressed(): - print("Cooking pressed") - -func _on_Battle_pressed(): - print("Battle pressed") diff --git a/scripts/Singletons/Debug.gd b/scripts/Singletons/Debug.gd new file mode 100644 index 0000000..208d64b --- /dev/null +++ b/scripts/Singletons/Debug.gd @@ -0,0 +1,23 @@ +extends Node + +var debugMenu:DebugMenu + +func _ready() -> void: + debugMenu = $UI/DebugMenu; + debugMenu.hide() + +func _process(delta: float) -> void: + if Input.is_action_just_pressed("debug"): + print("Debug key pressed") + if debugMenu.is_visible(): + hideMenu() + else: + showMenu() + +func showMenu() -> void: + debugMenu.show() + self.get_parent().move_child(self, self.get_parent().get_child_count() - 1) + +func hideMenu() -> void: + debugMenu.hide() + self.get_parent().move_child(self, 0) diff --git a/scripts/Singletons/Debug.gd.uid b/scripts/Singletons/Debug.gd.uid new file mode 100644 index 0000000..3478388 --- /dev/null +++ b/scripts/Singletons/Debug.gd.uid @@ -0,0 +1 @@ +uid://d36d3fnpi8y30 diff --git a/scripts/Singletons/SceneManager.gd b/scripts/Singletons/SceneManager.gd index c593a65..1abbb43 100644 --- a/scripts/Singletons/SceneManager.gd +++ b/scripts/Singletons/SceneManager.gd @@ -1,52 +1,34 @@ extends Node const MainMenu = preload("res://scenes/MainMenu.tscn"); -const OverworldScene = preload("res://scenes/Meta/Overworld.tscn"); +const OverworldScene = preload("res://scenes/Overworld.tscn"); -enum DawnScene { - INITIAL, - MAIN_MENU, - OVERWORLD, - BATTLE, - COOKING +const SCENES:Dictionary[String, PackedScene] = { + "Initial": MainMenu, + "MainMenu": MainMenu, + "Overworld": OverworldScene }; -# static const SCENES:Dictionary[String, PackedScene] = { -# "MainMenu": MainMenu, -# "Overworld": OverworldScene -# }; +var scene = "Initial"; +var currentScene:Node = null; -var scene:DawnScene = DawnScene.INITIAL; +func _ready() -> void: + currentScene = get_tree().root.get_child(-1); -func getMainMenuScene(): - return get_tree().current_scene.get_node("MainMenu"); - -func setScene(newScene:DawnScene) -> void: +func setScene(newScene:String) -> void: print("Setting scene to " + str(newScene)); scene = newScene; + + if not SCENES.has(newScene): + push_error("Scene not found: " + newScene); + return; + + var root = get_tree().root; + print("Current scene: " + str(currentScene)); + if currentScene: + currentScene.queue_free(); - if newScene == DawnScene.MAIN_MENU: - # Remove all non essential scenes - - # Add Main menu scene if not present - var mainMenu = getMainMenuScene(); - if mainMenu == null: - var instance = MainMenu.instantiate(PackedScene.GEN_EDIT_STATE_DISABLED); - get_tree().current_scene.add_child(instance); - return - - if newScene == DawnScene.OVERWORLD: - # Remove all non essential scenes - var mainMenuScene = getMainMenuScene(); - if mainMenuScene != null: - mainMenuScene.queue_free(); - - # Add Overworld scene if not present - var overworld = get_tree().current_scene.get_node("OverworldScene"); - if overworld == null: - var instance = OverworldScene.instantiate(PackedScene.GEN_EDIT_STATE_DISABLED); - get_tree().current_scene.add_child(instance); - return - - # error - print("Scene not found: " + str(newScene)); + var newSceneInstance = SCENES[newScene].instantiate(); + if newSceneInstance: + root.add_child(newSceneInstance); + currentScene = newSceneInstance; diff --git a/scripts/UI/DebugMenu.gd b/scripts/UI/DebugMenu.gd new file mode 100644 index 0000000..7c984f0 --- /dev/null +++ b/scripts/UI/DebugMenu.gd @@ -0,0 +1,36 @@ +class_name DebugMenu extends VBoxContainer + +func _ready() -> void: + $MainMenu.connect("pressed", _on_MainMenu_pressed); + $OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed); + $Quests.connect("pressed", _on_Quests_pressed); + $Cutscene.connect("pressed", _on_Custscene_pressed); + $Cooking.connect("pressed", _on_Cooking_pressed); + $Battle.connect("pressed", _on_Battle_pressed); + + var i:int = 0; + for map in OVERWORLD.MAPS.keys(): + $OverworldOption/MapDropdown.add_item(map, i); + i = i + 1; + +func _on_MainMenu_pressed(): + SCENE_MANAGER.setScene("MainMenu"); + DEBUG.hideMenu() + +func _on_Overworld_pressed(): + var keys:Array[String] = OVERWORLD.MAPS.keys() + OVERWORLD.setMap(keys[$OverworldOption/MapDropdown.selected]) + SCENE_MANAGER.setScene("Overworld"); + DEBUG.hideMenu() + +func _on_Quests_pressed(): + print("Quests pressed") + +func _on_Custscene_pressed(): + print("Cutscene pressed") + +func _on_Cooking_pressed(): + print("Cooking pressed") + +func _on_Battle_pressed(): + print("Battle pressed") diff --git a/scripts/UI/DebugMenu.gd.uid b/scripts/UI/DebugMenu.gd.uid new file mode 100644 index 0000000..df1b2d1 --- /dev/null +++ b/scripts/UI/DebugMenu.gd.uid @@ -0,0 +1 @@ +uid://bn2kdjf586e5p