Compare commits

...

2 Commits

Author SHA1 Message Date
Martin Felis 6c97c7c6fc UI Cleanup, initial works for saving game state. 2024-07-20 11:20:18 +02:00
Martin Felis 91237270f2 Renamed all files to snake_case.ending. 2024-07-20 09:53:16 +02:00
31 changed files with 319 additions and 243 deletions

View File

@ -1,5 +0,0 @@
class_name Game
extends Node3D
@onready var message_container:Control = %MessagesContainer
@onready var message_textedit:TextEdit = %MessageTextEdit

View File

@ -1,12 +0,0 @@
extends Control
func _on_message_timer_timeout():
%MessagesContainer.visible = false
func _on_player_trigger_message(message):
%MessagesContainer/MessageTextEdit.text = message
%MessagesContainer/MessageTimer.start(1)
%MessagesContainer.visible = true

View File

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cnk5evriq2ayx"
path="res://.godot/imported/Door.png-145ec46e1204f0ef4edc7c38b96826ec.ctex"
path="res://.godot/imported/door.png-4773fa46d37f0eeb39c2983dbabcd688.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/resources/Door.png"
dest_files=["res://.godot/imported/Door.png-145ec46e1204f0ef4edc7c38b96826ec.ctex"]
source_file="res://assets/resources/door.png"
dest_files=["res://.godot/imported/door.png-4773fa46d37f0eeb39c2983dbabcd688.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://16ro4vt2obea"
path="res://.godot/imported/TreeLog.png-db62f094f2963276a02c5369c99c4c79.ctex"
path="res://.godot/imported/tree_log.png-d87ebeb4287fdaeb09b73b4d4e061e2b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/resources/TreeLog.png"
dest_files=["res://.godot/imported/TreeLog.png-db62f094f2963276a02c5369c99c4c79.ctex"]
source_file="res://assets/resources/tree_log.png"
dest_files=["res://.godot/imported/tree_log.png-d87ebeb4287fdaeb09b73b4d4e061e2b.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://52wdejv20ogj"
path="res://.godot/imported/WoodPlank.png-dd6fcf30b33f5d76c4a05b736723549f.ctex"
path="res://.godot/imported/wood_planks.png-33bd750bd8ac9cf6721f3e489ebb2390.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/resources/WoodPlank.png"
dest_files=["res://.godot/imported/WoodPlank.png-dd6fcf30b33f5d76c4a05b736723549f.ctex"]
source_file="res://assets/resources/wood_planks.png"
dest_files=["res://.godot/imported/wood_planks.png-33bd750bd8ac9cf6721f3e489ebb2390.ctex"]
[params]

View File

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Item" load_steps=4 format=3 uid="uid://bn5j38jbwlj1f"]
[ext_resource type="Texture2D" uid="uid://c3jmpy6x5m4gj" path="res://assets/3rdparty/kenney/survival-kit/Previews/resourceWood.png" id="1_c3g8n"]
[ext_resource type="PackedScene" uid="uid://dtd7p4wjaumae" path="res://assets/resources/Stick.tscn" id="2_mrxum"]
[ext_resource type="PackedScene" uid="uid://dtd7p4wjaumae" path="res://assets/resources/stick.tscn" id="2_mrxum"]
[ext_resource type="Script" path="res://model/item.gd" id="3_45lxd"]
[resource]

View File

@ -2,7 +2,7 @@
[ext_resource type="Script" path="res://model/item.gd" id="1_dao2u"]
[ext_resource type="Texture2D" uid="uid://g3681g7x22eg" path="res://assets/3rdparty/kenney/survival-kit/Previews/resourceStone.png" id="1_t2qva"]
[ext_resource type="PackedScene" uid="uid://lp0bgqyd2pnr" path="res://assets/resources/Stone.tscn" id="2_6nus0"]
[ext_resource type="PackedScene" uid="uid://lp0bgqyd2pnr" path="res://assets/resources/stone.tscn" id="2_6nus0"]
[resource]
script = ExtResource("1_dao2u")

View File

@ -1,8 +1,8 @@
[gd_resource type="Resource" script_class="Item" load_steps=4 format=3 uid="uid://c1ll2snhgv3m1"]
[ext_resource type="Texture2D" uid="uid://16ro4vt2obea" path="res://assets/resources/TreeLog.png" id="1_ak0y2"]
[ext_resource type="Texture2D" uid="uid://16ro4vt2obea" path="res://assets/resources/tree_log.png" id="1_ak0y2"]
[ext_resource type="Script" path="res://model/item.gd" id="1_tlj5a"]
[ext_resource type="PackedScene" uid="uid://bbmt7xom1j84b" path="res://assets/resources/TreeLog.tscn" id="2_ufvdy"]
[ext_resource type="PackedScene" uid="uid://bbmt7xom1j84b" path="res://assets/resources/tree_log.tscn" id="2_ufvdy"]
[resource]
script = ExtResource("1_tlj5a")

View File

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Item" load_steps=4 format=3 uid="uid://dmjr6pmb17l2y"]
[ext_resource type="Texture2D" uid="uid://52wdejv20ogj" path="res://assets/resources/WoodPlank.png" id="1_plody"]
[ext_resource type="PackedScene" uid="uid://ysfnsrvgemi6" path="res://assets/resources/WoodPlanks.tscn" id="2_4oehn"]
[ext_resource type="Texture2D" uid="uid://52wdejv20ogj" path="res://assets/resources/wood_planks.png" id="1_plody"]
[ext_resource type="PackedScene" uid="uid://ysfnsrvgemi6" path="res://assets/resources/wood_planks.tscn" id="2_4oehn"]
[ext_resource type="Script" path="res://model/item.gd" id="3_c8yxb"]
[resource]

5
data/save_game.gd Normal file
View File

@ -0,0 +1,5 @@
class_name SaveGame
extends Resource
@export var player_transform:Transform3D

24
game.gd Normal file
View File

@ -0,0 +1,24 @@
class_name Game
extends Node3D
@onready var message_container:Control = %MessagesContainer
@onready var message_textedit:TextEdit = %MessageTextEdit
@onready var player = %Player
@onready var root_ui:RootUI = %RootUI
func save_game():
var save_game:SaveGame = SaveGame.new()
save_game.player_transform = player.global_transform
ResourceSaver.save(save_game, "user://savegame.tres")
root_ui.activate_ui_panel(%GameUI)
func load_game():
var save_game:SaveGame = load("user://savegame.tres") as SaveGame
player.global_transform = save_game.player_transform
root_ui.activate_ui_panel(%GameUI)

View File

@ -1,29 +1,30 @@
[gd_scene load_steps=36 format=3 uid="uid://bugqatylloxkl"]
[gd_scene load_steps=37 format=3 uid="uid://bugqatylloxkl"]
[ext_resource type="Script" path="res://Player.gd" id="1_3lyis"]
[ext_resource type="Script" path="res://Game.gd" id="1_h44o7"]
[ext_resource type="Script" path="res://RootUI.gd" id="2_gg3gt"]
[ext_resource type="PackedScene" uid="uid://dy8vjf760prhq" path="res://assets/characters/Rogue.tscn" id="4_6mbva"]
[ext_resource type="Script" path="res://model/quest_state.gd" id="4_fmwrw"]
[ext_resource type="Texture2D" uid="uid://cq8ypeagpedq" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_bronze.png" id="4_pcyi0"]
[ext_resource type="Texture2D" uid="uid://c7fu3paj3b4e8" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_silver.png" id="5_24tqj"]
[ext_resource type="Texture2D" uid="uid://drpl0ql1p3pfk" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_gold.png" id="6_uid86"]
[ext_resource type="Script" path="res://GameUI.gd" id="7_mw21s"]
[ext_resource type="Theme" uid="uid://dmk7hc81l8gbw" path="res://ui/ui_theme.tres" id="8_qpuke"]
[ext_resource type="Texture2D" uid="uid://bq3b1hxl5ojh6" path="res://assets/icons/npc_emotes/attention.tres" id="10_6agi3"]
[ext_resource type="PackedScene" uid="uid://dmagdl5pi6jdj" path="res://world/level.tscn" id="11_m8tt7"]
[ext_resource type="Script" path="res://ui/inventory_dialog.gd" id="12_8cl6a"]
[ext_resource type="PackedScene" uid="uid://dp3fi0g53qrt2" path="res://ui/item_slot.tscn" id="12_v6fpp"]
[ext_resource type="PackedScene" uid="uid://2q8dhf61a7os" path="res://assets/characters/Engineer.tscn" id="13_gxr54"]
[ext_resource type="PackedScene" uid="uid://dhpc2xvlfln7o" path="res://objects/Actionable.tscn" id="14_qb8uo"]
[ext_resource type="Resource" uid="uid://b1gd54koq1h7o" path="res://dialogue/testdialogue.dialogue" id="15_2n7cr"]
[ext_resource type="PackedScene" uid="uid://bwui4acukq4x6" path="res://ui/item_grid.tscn" id="15_5xu2a"]
[ext_resource type="PackedScene" uid="uid://dnobr4inhiskv" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/tree-pine.glb" id="21_5210s"]
[ext_resource type="PackedScene" uid="uid://m4tk7vhjy310" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/tree.glb" id="22_xm4au"]
[ext_resource type="PackedScene" uid="uid://cgde10y3e7w86" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/rocks.glb" id="23_ve8c6"]
[ext_resource type="PackedScene" uid="uid://dg1rtct0vrk3p" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/poles.glb" id="24_a3mo8"]
[ext_resource type="PackedScene" uid="uid://kpyvcyklt68g" path="res://assets/scene_props/bridge.tscn" id="25_qvbtw"]
[ext_resource type="PackedScene" uid="uid://cej0a41nm3eh7" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/mushrooms.glb" id="25_tea3k"]
[ext_resource type="Script" path="res://game.gd" id="1_uwyoo"]
[ext_resource type="Texture2D" uid="uid://bq3b1hxl5ojh6" path="res://assets/icons/npc_emotes/attention.tres" id="2_4dxur"]
[ext_resource type="PackedScene" uid="uid://2q8dhf61a7os" path="res://assets/characters/engineer.tscn" id="3_gf736"]
[ext_resource type="PackedScene" uid="uid://dhpc2xvlfln7o" path="res://objects/actionable.tscn" id="4_pths5"]
[ext_resource type="Resource" uid="uid://b1gd54koq1h7o" path="res://dialogue/testdialogue.dialogue" id="5_i1opu"]
[ext_resource type="PackedScene" uid="uid://dmagdl5pi6jdj" path="res://world/level.tscn" id="6_svjo8"]
[ext_resource type="PackedScene" uid="uid://dnobr4inhiskv" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/tree-pine.glb" id="7_0tqw3"]
[ext_resource type="PackedScene" uid="uid://m4tk7vhjy310" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/tree.glb" id="8_ivm2f"]
[ext_resource type="PackedScene" uid="uid://cgde10y3e7w86" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/rocks.glb" id="9_0hvyx"]
[ext_resource type="PackedScene" uid="uid://dg1rtct0vrk3p" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/poles.glb" id="10_8fhnl"]
[ext_resource type="PackedScene" uid="uid://cej0a41nm3eh7" path="res://assets/3rdparty/kenney/platformer-kit/Models/GLB format/mushrooms.glb" id="11_ytfwt"]
[ext_resource type="PackedScene" uid="uid://kpyvcyklt68g" path="res://assets/scene_props/bridge.tscn" id="12_ybrl7"]
[ext_resource type="Script" path="res://player.gd" id="13_2wo8v"]
[ext_resource type="Script" path="res://model/quest_state.gd" id="14_g3xjj"]
[ext_resource type="PackedScene" uid="uid://dy8vjf760prhq" path="res://assets/characters/rogue.tscn" id="15_2476h"]
[ext_resource type="Script" path="res://root_ui.gd" id="16_winq7"]
[ext_resource type="Theme" uid="uid://dmk7hc81l8gbw" path="res://ui/ui_theme.tres" id="17_1odts"]
[ext_resource type="Script" path="res://game_ui.gd" id="18_i4pxl"]
[ext_resource type="Script" path="res://ui/game_menu_ui.gd" id="18_lr26g"]
[ext_resource type="Texture2D" uid="uid://c7fu3paj3b4e8" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_silver.png" id="19_mn7wc"]
[ext_resource type="Texture2D" uid="uid://drpl0ql1p3pfk" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_gold.png" id="20_3b2hv"]
[ext_resource type="Texture2D" uid="uid://cq8ypeagpedq" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_bronze.png" id="21_act8d"]
[ext_resource type="Script" path="res://ui/inventory_dialog.gd" id="22_s3l55"]
[ext_resource type="PackedScene" uid="uid://dp3fi0g53qrt2" path="res://ui/item_slot.tscn" id="23_4kchv"]
[ext_resource type="PackedScene" uid="uid://bwui4acukq4x6" path="res://ui/item_grid.tscn" id="24_hfjh5"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_y65pc"]
@ -67,7 +68,7 @@ height = 0.952333
radius = 0.194932
[node name="Game" type="Node3D"]
script = ExtResource("1_h44o7")
script = ExtResource("1_uwyoo")
[node name="World" type="Node3D" parent="."]
unique_name_in_owner = true
@ -96,46 +97,83 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0272007, 0.901301, 0.16839
centered = false
billboard = 1
texture_filter = 0
texture = ExtResource("10_6agi3")
texture = ExtResource("2_4dxur")
[node name="Geometry" type="Node3D" parent="World/Merchant"]
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0, 0)
[node name="Engineer" parent="World/Merchant/Geometry" instance=ExtResource("13_gxr54")]
[node name="Engineer" parent="World/Merchant/Geometry" instance=ExtResource("3_gf736")]
[node name="Actionable" parent="World/Merchant" instance=ExtResource("14_qb8uo")]
dialogue_resource = ExtResource("15_2n7cr")
[node name="Actionable" parent="World/Merchant" instance=ExtResource("4_pths5")]
dialogue_resource = ExtResource("5_i1opu")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/Merchant/Actionable"]
shape = SubResource("SphereShape3D_6nrvr")
[node name="Level" parent="World" instance=ExtResource("11_m8tt7")]
[node name="Level" parent="World" instance=ExtResource("6_svjo8")]
[node name="Decorations" type="Node3D" parent="World"]
[node name="tree-pine2" parent="World/Decorations" instance=ExtResource("21_5210s")]
[node name="tree-pine2" parent="World/Decorations" instance=ExtResource("7_0tqw3")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.754677, 0, 0.0391712)
[node name="tree2" parent="World/Decorations" instance=ExtResource("22_xm4au")]
[node name="tree2" parent="World/Decorations" instance=ExtResource("8_ivm2f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.80764, 0, -3.13532)
[node name="rocks2" parent="World/Decorations" instance=ExtResource("23_ve8c6")]
[node name="rocks2" parent="World/Decorations" instance=ExtResource("9_0hvyx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3817, -4.76837e-07, -3.3938)
[node name="poles2" parent="World/Decorations" instance=ExtResource("24_a3mo8")]
[node name="poles2" parent="World/Decorations" instance=ExtResource("10_8fhnl")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.56186, 0, -3.13331)
[node name="mushrooms2" parent="World/Decorations" instance=ExtResource("25_tea3k")]
[node name="mushrooms2" parent="World/Decorations" instance=ExtResource("11_ytfwt")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.851, 0, 0.798104)
[node name="Bridge" type="Node3D" parent="World"]
unique_name_in_owner = true
[node name="BridgePart2" parent="World/Bridge" instance=ExtResource("25_qvbtw")]
[node name="BridgePart2" parent="World/Bridge" instance=ExtResource("12_ybrl7")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 5.723, 0, -1.439)
[node name="Player" type="CharacterBody3D" parent="World" groups=["savable_nodes"]]
unique_name_in_owner = true
script = ExtResource("13_2wo8v")
[node name="QuestState" type="Node" parent="World/Player"]
unique_name_in_owner = true
script = ExtResource("14_g3xjj")
[node name="MeshInstance3D" type="MeshInstance3D" parent="World/Player"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
visible = false
mesh = SubResource("CapsuleMesh_dwrtd")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/Player"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.470516, 0)
shape = SubResource("CapsuleShape3D_7kfad")
[node name="Camera3D" type="Camera3D" parent="World/Player"]
transform = Transform3D(1, 0, 0, 0, 0.460138, 0.887848, 0, -0.887848, 0.460138, 0, 2.91421, 1.186)
current = true
[node name="Geometry" type="Node3D" parent="World/Player"]
unique_name_in_owner = true
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0, 0)
[node name="Rogue" parent="World/Player/Geometry" instance=ExtResource("15_2476h")]
[node name="ActionableDetector" type="Area3D" parent="World/Player"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.325311)
collision_layer = 0
collision_mask = 16
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/Player/ActionableDetector"]
shape = SubResource("SphereShape3D_wrkyq")
[node name="RootUI" type="CanvasLayer" parent="."]
script = ExtResource("2_gg3gt")
unique_name_in_owner = true
script = ExtResource("16_winq7")
[node name="MainMenuUI" type="PanelContainer" parent="RootUI"]
unique_name_in_owner = true
@ -151,7 +189,7 @@ offset_right = 199.0
offset_bottom = 134.5
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("8_qpuke")
theme = ExtResource("17_1odts")
[node name="MarginContainer" type="MarginContainer" parent="RootUI/MainMenuUI"]
layout_mode = 2
@ -222,7 +260,7 @@ offset_right = 291.0
offset_bottom = 144.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("8_qpuke")
theme = ExtResource("17_1odts")
[node name="MarginContainer" type="MarginContainer" parent="RootUI/NewGameUI"]
layout_mode = 2
@ -295,80 +333,6 @@ layout_mode = 2
text = "Start
"
[node name="GameMenuUI" type="PanelContainer" parent="RootUI"]
unique_name_in_owner = true
visible = false
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -199.0
offset_top = -186.0
offset_right = 199.0
offset_bottom = 186.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("8_qpuke")
[node name="MarginContainer" type="MarginContainer" parent="RootUI/GameMenuUI"]
layout_mode = 2
theme_override_constants/margin_left = 60
theme_override_constants/margin_top = 60
theme_override_constants/margin_right = 60
theme_override_constants/margin_bottom = 60
[node name="VBoxContainer" type="VBoxContainer" parent="RootUI/GameMenuUI/MarginContainer"]
layout_mode = 2
[node name="MarginContainer4" type="MarginContainer" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="SaveGameButton" type="Button" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer4"]
layout_mode = 2
text = "Save Game
"
[node name="MarginContainer2" type="MarginContainer" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="OptionsButton" type="Button" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer2"]
layout_mode = 2
text = "Options"
[node name="MarginContainer3" type="MarginContainer" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="BackToGameButton" type="Button" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer3"]
layout_mode = 2
text = "Return to Game"
[node name="HSeparator" type="HSeparator" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="MarginContainer5" type="MarginContainer" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="ToMainMenuButton" type="Button" parent="RootUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer5"]
layout_mode = 2
text = "Back to Main Menu"
[node name="GameUI" type="Control" parent="RootUI"]
unique_name_in_owner = true
layout_mode = 3
@ -379,40 +343,8 @@ grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme = ExtResource("8_qpuke")
script = ExtResource("7_mw21s")
[node name="ToolSlots" type="MarginContainer" parent="RootUI/GameUI"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -67.0
offset_top = -77.0
offset_right = 67.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_bottom = 32
[node name="PanelContainer" type="PanelContainer" parent="RootUI/GameUI/ToolSlots"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="RootUI/GameUI/ToolSlots/PanelContainer"]
layout_mode = 2
[node name="Button2" type="Button" parent="RootUI/GameUI/ToolSlots/PanelContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("5_24tqj")
[node name="Button3" type="Button" parent="RootUI/GameUI/ToolSlots/PanelContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("6_uid86")
[node name="Button" type="Button" parent="RootUI/GameUI/ToolSlots/PanelContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("4_pcyi0")
theme = ExtResource("17_1odts")
script = ExtResource("18_i4pxl")
[node name="MessagesContainer" type="MarginContainer" parent="RootUI/GameUI"]
unique_name_in_owner = true
@ -450,8 +382,8 @@ theme_override_constants/margin_left = 40
theme_override_constants/margin_top = 82
theme_override_constants/margin_right = 40
theme_override_constants/margin_bottom = 128
script = ExtResource("12_8cl6a")
slot_scene = ExtResource("12_v6fpp")
script = ExtResource("22_s3l55")
slot_scene = ExtResource("23_4kchv")
[node name="Panel" type="Panel" parent="RootUI/GameUI/InventoryDialog"]
layout_mode = 2
@ -503,7 +435,7 @@ text = "Recipes"
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme = ExtResource("8_qpuke")
theme = ExtResource("17_1odts")
item_count = 2
item_0/text = "Blab"
item_1/text = "Bloobalb"
@ -535,7 +467,7 @@ grow_horizontal = 2
grow_vertical = 2
size_flags_vertical = 3
[node name="IngredientsContainer" parent="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/CraftingUI/HBoxContainer/CraftIngredients/Panel/CenterContainer" instance=ExtResource("15_5xu2a")]
[node name="IngredientsContainer" parent="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/CraftingUI/HBoxContainer/CraftIngredients/Panel/CenterContainer" instance=ExtResource("24_hfjh5")]
unique_name_in_owner = true
layout_mode = 2
@ -573,7 +505,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ResultsContainer" parent="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/CraftingUI/HBoxContainer/CraftResult/Panel/CenterContainer" instance=ExtResource("15_5xu2a")]
[node name="ResultsContainer" parent="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/CraftingUI/HBoxContainer/CraftResult/Panel/CenterContainer" instance=ExtResource("24_hfjh5")]
unique_name_in_owner = true
layout_mode = 2
@ -601,55 +533,142 @@ layout_mode = 2
layout_mode = 2
text = "Backpack"
[node name="InventoryContainer" parent="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/BackpackUI/VBoxContainer" instance=ExtResource("15_5xu2a")]
[node name="InventoryContainer" parent="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/BackpackUI/VBoxContainer" instance=ExtResource("24_hfjh5")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="Player" type="CharacterBody3D" parent="." groups=["savable_nodes"]]
[node name="GameMenuUI" type="PanelContainer" parent="RootUI/GameUI"]
unique_name_in_owner = true
script = ExtResource("1_3lyis")
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -199.0
offset_top = -215.0
offset_right = 199.0
offset_bottom = 215.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("17_1odts")
script = ExtResource("18_lr26g")
[node name="QuestState" type="Node" parent="Player"]
[node name="MarginContainer" type="MarginContainer" parent="RootUI/GameUI/GameMenuUI"]
layout_mode = 2
theme_override_constants/margin_left = 60
theme_override_constants/margin_top = 60
theme_override_constants/margin_right = 60
theme_override_constants/margin_bottom = 60
[node name="VBoxContainer" type="VBoxContainer" parent="RootUI/GameUI/GameMenuUI/MarginContainer"]
layout_mode = 2
[node name="MarginContainer4" type="MarginContainer" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="SaveGameButton" type="Button" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer4"]
layout_mode = 2
text = "Save Game
"
[node name="MarginContainer6" type="MarginContainer" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="LoadGameButton" type="Button" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer6"]
layout_mode = 2
text = "Load Game
"
[node name="MarginContainer2" type="MarginContainer" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="OptionsButton" type="Button" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer2"]
layout_mode = 2
text = "Options"
[node name="MarginContainer3" type="MarginContainer" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="BackToGameButton" type="Button" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer3"]
layout_mode = 2
text = "Return to Game"
[node name="HSeparator" type="HSeparator" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="MarginContainer5" type="MarginContainer" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="ToMainMenuButton" type="Button" parent="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer5"]
layout_mode = 2
text = "Back to Main Menu"
[node name="ToolSlots" type="MarginContainer" parent="RootUI/GameUI"]
unique_name_in_owner = true
script = ExtResource("4_fmwrw")
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -87.0
offset_top = -101.0
offset_right = 87.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_bottom = 32
[node name="MeshInstance3D" type="MeshInstance3D" parent="Player"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
visible = false
mesh = SubResource("CapsuleMesh_dwrtd")
[node name="PanelContainer" type="PanelContainer" parent="RootUI/GameUI/ToolSlots"]
layout_mode = 2
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.470516, 0)
shape = SubResource("CapsuleShape3D_7kfad")
[node name="HBoxContainer" type="HBoxContainer" parent="RootUI/GameUI/ToolSlots/PanelContainer"]
layout_mode = 2
[node name="Camera3D" type="Camera3D" parent="Player"]
transform = Transform3D(1, 0, 0, 0, 0.460138, 0.887848, 0, -0.887848, 0.460138, 0, 2.91421, 1.186)
current = true
[node name="Button2" type="Button" parent="RootUI/GameUI/ToolSlots/PanelContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("19_mn7wc")
[node name="Geometry" type="Node3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0, 0)
[node name="Button3" type="Button" parent="RootUI/GameUI/ToolSlots/PanelContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("20_3b2hv")
[node name="Rogue" parent="Player/Geometry" instance=ExtResource("4_6mbva")]
[node name="ActionableDetector" type="Area3D" parent="Player"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.325311)
collision_layer = 0
collision_mask = 16
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/ActionableDetector"]
shape = SubResource("SphereShape3D_wrkyq")
[node name="Button" type="Button" parent="RootUI/GameUI/ToolSlots/PanelContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("21_act8d")
[connection signal="pressed" from="RootUI/MainMenuUI/MarginContainer/VBoxContainer/MarginContainer/NewGameButton" to="RootUI" method="_on_new_game_button_pressed"]
[connection signal="pressed" from="RootUI/MainMenuUI/MarginContainer/VBoxContainer/MarginContainer3/QuitButton" to="RootUI" method="_on_quit_button_pressed"]
[connection signal="pressed" from="RootUI/NewGameUI/MarginContainer/VBoxContainer/MarginContainer3/HBoxContainer/BackButton" to="RootUI" method="_to_main_menu_button_pressed"]
[connection signal="pressed" from="RootUI/NewGameUI/MarginContainer/VBoxContainer/MarginContainer3/HBoxContainer/StartGameButton" to="RootUI" method="_on_start_game_button_pressed"]
[connection signal="pressed" from="RootUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer3/BackToGameButton" to="RootUI" method="_on_start_game_button_pressed"]
[connection signal="pressed" from="RootUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer5/ToMainMenuButton" to="RootUI" method="_to_main_menu_button_pressed"]
[connection signal="timeout" from="RootUI/GameUI/MessagesContainer/MessageTimer" to="RootUI/GameUI" method="_on_message_timer_timeout"]
[connection signal="pressed" from="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/Title/CloseButton" to="RootUI/GameUI/InventoryDialog" method="_on_close_button_pressed"]
[connection signal="item_selected" from="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/CraftingUI/HBoxContainer/Recipes/RecipeList" to="RootUI/GameUI/InventoryDialog" method="_on_recipe_list_item_selected"]
[connection signal="pressed" from="RootUI/GameUI/InventoryDialog/Panel/PanelContainer/CraftingUI/HBoxContainer/CraftResult/HBoxContainer/CraftButton" to="RootUI/GameUI/InventoryDialog" method="_on_craft_button_pressed"]
[connection signal="visibility_changed" from="RootUI/GameUI/GameMenuUI" to="RootUI/GameUI" method="_on_game_menu_ui_visibility_changed"]
[connection signal="pressed" from="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer4/SaveGameButton" to="." method="save_game"]
[connection signal="pressed" from="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer6/LoadGameButton" to="." method="load_game"]
[connection signal="pressed" from="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer3/BackToGameButton" to="RootUI" method="_on_start_game_button_pressed"]
[connection signal="pressed" from="RootUI/GameUI/GameMenuUI/MarginContainer/VBoxContainer/MarginContainer5/ToMainMenuButton" to="RootUI" method="_to_main_menu_button_pressed"]

40
game_ui.gd Normal file
View File

@ -0,0 +1,40 @@
extends Control
@onready var tool_slots = %ToolSlots
@onready var game_menu_ui = %GameMenuUI
@onready var world = %World
func _on_message_timer_timeout():
%MessagesContainer.visible = false
func _on_player_trigger_message(message):
%MessagesContainer/MessageTextEdit.text = message
%MessagesContainer/MessageTimer.start(1)
%MessagesContainer.visible = true
func _unhandled_key_input(event:InputEvent):
var key_event:InputEventKey = event as InputEventKey
if key_event and key_event.pressed and key_event.get_keycode_with_modifiers() == KEY_ESCAPE:
if %GameMenuUI.visible:
%GameMenuUI.hide()
else:
%GameMenuUI.show()
func _on_game_menu_ui_visibility_changed():
# Function gets triggered when scene is still in construction. In that
# case just return.
if tool_slots == null:
return
if %GameMenuUI.visible:
tool_slots.hide()
%World.process_mode = Node.PROCESS_MODE_DISABLED
else:
tool_slots.show()
%World.process_mode = Node.PROCESS_MODE_INHERIT

View File

@ -11,7 +11,7 @@ config_version=5
[application]
config/name="UIAndInteractionTests"
run/main_scene="res://Game.tscn"
run/main_scene="res://game.tscn"
config/features=PackedStringArray("4.2", "Forward Plus")
config/icon="res://icon.svg"

View File

@ -1,3 +1,4 @@
class_name RootUI
extends CanvasLayer
@onready var ui_panels:Array = [ %MainMenuUI, %NewGameUI, %GameUI, %GameMenuUI ]
@ -6,9 +7,10 @@ extends CanvasLayer
@onready var player = %Player
@onready var inventory_dialog:InventoryDialog = %InventoryDialog
enum ROOT_UI_STATE { MENU, GAME }
var _root_ui_state:ROOT_UI_STATE = ROOT_UI_STATE.GAME
var _all_recipes:Array[Recipe] = []
# Called when the node enters the scene tree for the first time.
func _ready():
for file in DirAccess.get_files_at("res://data/recipes"):
@ -16,8 +18,10 @@ func _ready():
var recipe:Recipe = load(resource_file) as Recipe
_all_recipes.append(recipe)
activate_ui_panel(%GameUI)
# activate_ui_panel(%MainMenuUI)
if _root_ui_state == ROOT_UI_STATE.MENU:
activate_ui_panel(%MainMenuUI)
else:
activate_ui_panel(%GameUI)
func activate_ui_panel(ui_panel:Control):
@ -26,22 +30,26 @@ func activate_ui_panel(ui_panel:Control):
control.visible = true
else:
control.visible = false
if not %GameUI.visible:
%World.process_mode = Node.PROCESS_MODE_DISABLED
else:
%World.process_mode = Node.PROCESS_MODE_INHERIT
active_ui_panel = ui_panel
func set_root_ui_state(state:ROOT_UI_STATE):
if state == ROOT_UI_STATE.GAME:
%World.process_mode = Node.PROCESS_MODE_INHERIT
activate_ui_panel(%GameUI)
else:
%GameMenuUI.hide()
%World.process_mode = Node.PROCESS_MODE_DISABLED
activate_ui_panel(%MainMenuUI)
_root_ui_state = state
func _on_start_game_button_pressed():
activate_ui_panel(%GameUI)
set_root_ui_state(ROOT_UI_STATE.GAME)
func _on_quit_button_pressed():
get_tree().quit()
func _on_new_game_button_pressed():
@ -49,17 +57,7 @@ func _on_new_game_button_pressed():
func _to_main_menu_button_pressed():
activate_ui_panel(%MainMenuUI)
func _unhandled_key_input(event:InputEvent):
if active_ui_panel != %GameUI:
return
var key_event:InputEventKey = event as InputEventKey
if key_event and key_event.pressed and key_event.get_keycode_with_modifiers() == KEY_ESCAPE:
activate_ui_panel(%GameMenuUI)
set_root_ui_state(ROOT_UI_STATE.MENU)
func _unhandled_input(event):

7
ui/game_menu_ui.gd Normal file
View File

@ -0,0 +1,7 @@
extends PanelContainer
func _unhandled_key_input(event:InputEvent):
var key_event:InputEventKey = event as InputEventKey
if visible and key_event.pressed and key_event.get_keycode_with_modifiers() == KEY_ESCAPE:
get_viewport().set_input_as_handled()
hide()

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=9 format=3 uid="uid://cqmnmqjsutedj"]
[ext_resource type="Theme" uid="uid://dmk7hc81l8gbw" path="res://ui/ui_theme.tres" id="1_xu30n"]
[ext_resource type="Script" path="res://GameUI.gd" id="2_vb3s6"]
[ext_resource type="Script" path="res://game_ui.gd" id="2_vb3s6"]
[ext_resource type="Texture2D" uid="uid://c7fu3paj3b4e8" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_silver.png" id="3_vepel"]
[ext_resource type="Texture2D" uid="uid://drpl0ql1p3pfk" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_gold.png" id="4_ijjgh"]
[ext_resource type="Texture2D" uid="uid://cq8ypeagpedq" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/cursorSword_bronze.png" id="5_4e7rh"]

View File

View File

@ -1,15 +1,15 @@
[gd_scene load_steps=11 format=3 uid="uid://dmagdl5pi6jdj"]
[ext_resource type="MeshLibrary" uid="uid://dcpuitbu16j1a" path="res://assets/mesh_library.tres" id="1_q0eym"]
[ext_resource type="PackedScene" uid="uid://da5r82nvypfk4" path="res://objects/PickupItem.tscn" id="2_qurr0"]
[ext_resource type="PackedScene" uid="uid://da5r82nvypfk4" path="res://objects/pickup_item.tscn" id="2_qurr0"]
[ext_resource type="Resource" uid="uid://bn5j38jbwlj1f" path="res://data/items/stick.tres" id="3_q180r"]
[ext_resource type="PackedScene" uid="uid://dtd7p4wjaumae" path="res://assets/resources/Stick.tscn" id="4_h3618"]
[ext_resource type="PackedScene" uid="uid://dtd7p4wjaumae" path="res://assets/resources/stick.tscn" id="4_h3618"]
[ext_resource type="Resource" uid="uid://egkatj1ci0ga" path="res://data/items/wrench.tres" id="5_tmrcc"]
[ext_resource type="Resource" uid="uid://coser1y1y5unl" path="res://data/items/door.tres" id="5_twsf3"]
[ext_resource type="PackedScene" uid="uid://ca2l61b2j3y5b" path="res://assets/tools/Pickaxe.tscn" id="6_fq3ct"]
[ext_resource type="PackedScene" uid="uid://ysfnsrvgemi6" path="res://assets/resources/WoodPlanks.tscn" id="7_2hyvg"]
[ext_resource type="PackedScene" uid="uid://ysfnsrvgemi6" path="res://assets/resources/wood_planks.tscn" id="8_4vlpe"]
[ext_resource type="Resource" uid="uid://c1ll2snhgv3m1" path="res://data/items/treelog.tres" id="8_pafka"]
[ext_resource type="PackedScene" uid="uid://bbmt7xom1j84b" path="res://assets/resources/TreeLog.tscn" id="9_51v1q"]
[ext_resource type="PackedScene" uid="uid://bbmt7xom1j84b" path="res://assets/resources/tree_log.tscn" id="9_51v1q"]
[node name="Level" type="Node3D"]
@ -47,7 +47,7 @@ item = ExtResource("5_twsf3")
[node name="Item2" parent="Objects" instance=ExtResource("2_qurr0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.978853, -2.38419e-07, -1.39068)
[node name="_Node3D_153925" parent="Objects/Item2" instance=ExtResource("7_2hyvg")]
[node name="_Node3D_153925" parent="Objects/Item2" instance=ExtResource("8_4vlpe")]
[node name="Item3" parent="Objects" instance=ExtResource("2_qurr0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.28455, 0, -0.204204)