diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg
index ab6df2e..1dfd26b 100644
--- a/.godot/global_script_class_cache.cfg
+++ b/.godot/global_script_class_cache.cfg
@@ -29,6 +29,12 @@ list=Array[Dictionary]([{
"language": &"GDScript",
"path": "res://scripts/item/car.gd"
}, {
+"base": &"Node",
+"class": &"Config",
+"icon": "",
+"language": &"GDScript",
+"path": "res://addons/logger/config.gd"
+}, {
"base": &"Observable",
"class": &"DarkRoad",
"icon": "",
@@ -95,6 +101,18 @@ list=Array[Dictionary]([{
"language": &"GDScript",
"path": "res://scripts/item/generic/item.gd"
}, {
+"base": &"RefCounted",
+"class": &"JsonData",
+"icon": "",
+"language": &"GDScript",
+"path": "res://addons/logger/json-data.gd"
+}, {
+"base": &"Node",
+"class": &"LogStream",
+"icon": "",
+"language": &"GDScript",
+"path": "res://addons/logger/log-stream.gd"
+}, {
"base": &"Observable",
"class": &"Mechanism",
"icon": "",
@@ -125,12 +143,6 @@ list=Array[Dictionary]([{
"language": &"GDScript",
"path": "res://scripts/item/generic/observable.gd"
}, {
-"base": &"Node",
-"class": &"OptionsConstants",
-"icon": "",
-"language": &"GDScript",
-"path": "res://addons/EasyMenus/Scripts/options_constants.gd"
-}, {
"base": &"Resource",
"class": &"ProtonScatterBaseShape",
"icon": "",
diff --git a/.godot/imported/Noise.png-49623d22636507f04adfc06869f390a7.md5 b/.godot/imported/Noise.png-49623d22636507f04adfc06869f390a7.md5
index 3d29a6f..effeb6e 100644
--- a/.godot/imported/Noise.png-49623d22636507f04adfc06869f390a7.md5
+++ b/.godot/imported/Noise.png-49623d22636507f04adfc06869f390a7.md5
@@ -1,2 +1,2 @@
source_md5="e498578efefc577ddbb0e257552fac7d"
-dest_md5="1de5bc52ef763bc03ffb753bdfa5eab6"
+dest_md5="53934533203a8657f61908a5a02be5a1"
diff --git a/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.md5 b/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.md5
index 90b7f96..fb7e513 100644
--- a/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.md5
+++ b/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.md5
@@ -1,2 +1,2 @@
source_md5="a7594812277c0f513192cb7969b6573c"
-dest_md5="5f91dd82d872c7cbdcefd8ec910a9f30"
+dest_md5="4720028adf4fcd64b6ef9fb97ffd60e8"
diff --git a/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.scn b/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.scn
index f31e4c6..5554406 100644
Binary files a/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.scn and b/.godot/imported/brick.glb-d79404ecf88b29143e6e07e77bacb44c.scn differ
diff --git a/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.md5 b/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.md5
index 2aa39a3..b5f9110 100644
--- a/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.md5
+++ b/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.md5
@@ -1,2 +1,2 @@
source_md5="2363f5129d4bd1510e126638c39f7379"
-dest_md5="95d670224f15a320c95c3732144568a6"
+dest_md5="82c6536b61aa9ba45d55612bfcdc5c43"
diff --git a/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.scn b/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.scn
index d438f3d..61aa61e 100644
Binary files a/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.scn and b/.godot/imported/bush.glb-28e0128066fe8d913839a6b96204b1c6.scn differ
diff --git a/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.md5 b/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.md5
index 6efcbb4..aa70c07 100644
--- a/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.md5
+++ b/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.md5
@@ -1,2 +1,2 @@
source_md5="d28fc1b4998adc3f0ef9aeebc3099059"
-dest_md5="43e7cf69ccc9b54a8a560968ca86ab7c"
+dest_md5="3120e8627fd85e0dffaa930f089b9191"
diff --git a/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.res b/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.res
index 87c53a5..a99ab7f 100644
Binary files a/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.res and b/.godot/imported/compute_relax.glsl-b06f9e60cda7719b78bde9673f2501b7.res differ
diff --git a/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.md5 b/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.md5
index d618b66..1da5f59 100644
--- a/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.md5
+++ b/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.md5
@@ -1,2 +1,2 @@
source_md5="81425403dffc8e4a8722edc480988edb"
-dest_md5="82b37f1033cf12357c82cb49f073421a"
+dest_md5="f77681161bf685758a8fb067cefe48a5"
diff --git a/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.scn b/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.scn
index 95f8ca5..74f2538 100644
Binary files a/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.scn and b/.godot/imported/dead_branch.glb-e4e41ce877f1ef0b2d20a7b89af5de7b.scn differ
diff --git a/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.md5 b/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.md5
index 259556e..d2bd104 100644
--- a/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.md5
+++ b/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.md5
@@ -1,2 +1,2 @@
source_md5="acf67c6d4b4eddc4751a018ed6cf3ca9"
-dest_md5="f37a94e0b17a4e60ba899f1459003892"
+dest_md5="001d331d10fb156de30d4d918cc0d32c"
diff --git a/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.scn b/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.scn
index 75f22f5..781ebe4 100644
Binary files a/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.scn and b/.godot/imported/fence_planks.glb-4cee642c3e514323763ee9631fb323e9.scn differ
diff --git a/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.md5 b/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.md5
index 8b0fb46..e157d1b 100644
--- a/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.md5
+++ b/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.md5
@@ -1,2 +1,2 @@
source_md5="47b2f0428ac459670abcb7eed226e03e"
-dest_md5="091fe4b7e5fde3bcfdd7ac311c5575dc"
+dest_md5="6f0dfad3090721e9eda817b8de14d359"
diff --git a/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.scn b/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.scn
index 46f2273..4d5144f 100644
Binary files a/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.scn and b/.godot/imported/gobot.glb-36505aa16090f2bc2f34fbe5362f44e8.scn differ
diff --git a/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.md5 b/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.md5
index b46eed4..9d30328 100644
--- a/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.md5
+++ b/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.md5
@@ -1,2 +1,2 @@
source_md5="78c80a15562fc393dc8d024b43f1dd75"
-dest_md5="87b3e6b8aca9d8e3051d2628f4e1d5d9"
+dest_md5="70d8b873a7cdd5494936a1283092db23"
diff --git a/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.scn b/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.scn
index 06e3e15..6d4f702 100644
Binary files a/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.scn and b/.godot/imported/grass.glb-0ef73576363e4c601b9f45b1787e1487.scn differ
diff --git a/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.md5 b/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.md5
index 50aa914..dbe157a 100644
--- a/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.md5
+++ b/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.md5
@@ -1,2 +1,2 @@
source_md5="c8ea57ccd2f30a806bfd7c6c516a9391"
-dest_md5="1e048276a6630a1b26d955bdd544a52a"
+dest_md5="64f1d5e37347a6f24c9f521529912fc6"
diff --git a/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.scn b/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.scn
index c6138ca..96e55c8 100644
Binary files a/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.scn and b/.godot/imported/grass_2.glb-2dc56a32acf64077863c701e8b94ea02.scn differ
diff --git a/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.md5 b/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.md5
index 0fa5009..2774726 100644
--- a/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.md5
+++ b/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.md5
@@ -1,2 +1,2 @@
source_md5="1fc3800f498ce772e019676efe8fb1c8"
-dest_md5="560c32023579075e39a419583d3690c5"
+dest_md5="8cd3ead11cdf497a5f909cd7936b4246"
diff --git a/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.scn b/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.scn
index 6b3935a..9f89d6d 100644
Binary files a/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.scn and b/.godot/imported/large_rock.glb-f7a7a73f49167cee4ed84e7342d1f507.scn differ
diff --git a/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.md5 b/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.md5
index cfb6c1c..e720cf2 100644
--- a/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.md5
+++ b/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.md5
@@ -1,2 +1,2 @@
source_md5="d41b4c6d18ea38557a3db75c02211906"
-dest_md5="5e9079268ddfcfc248354c743987729c"
+dest_md5="1821bde55f93880ecd8f16965bfeee62"
diff --git a/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.scn b/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.scn
index 2b5f64e..4354329 100644
Binary files a/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.scn and b/.godot/imported/mushrooms.glb-64c83b02a53711f9983c978d53ab0f12.scn differ
diff --git a/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.md5 b/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.md5
index 59ca041..812b806 100644
--- a/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.md5
+++ b/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.md5
@@ -1,2 +1,2 @@
source_md5="9cca2d6634b61774d490534b8f565fce"
-dest_md5="1a88b93d5eb9c3ef3b6d823f7a079ef3"
+dest_md5="6ef3a97eb62cabea5d1a54967f924517"
diff --git a/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.scn b/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.scn
index 96a220c..6fc65e6 100644
Binary files a/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.scn and b/.godot/imported/pine_tree.glb-662cc3d34707ccadde24f89b98fadf88.scn differ
diff --git a/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.md5 b/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.md5
index 4c2955f..1496ee3 100644
--- a/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.md5
+++ b/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.md5
@@ -1,2 +1,2 @@
source_md5="6061dbc319955281054c4160679e3aa2"
-dest_md5="7e72593e0be8336037513a000505c686"
+dest_md5="ca7bd4f03890dc71ab31e5f0c750e255"
diff --git a/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.scn b/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.scn
index c5034b1..f98ba7a 100644
Binary files a/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.scn and b/.godot/imported/small_rock.glb-9b9690e480edfa6e23f0243045338de9.scn differ
diff --git a/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.md5 b/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.md5
index 67bd147..68c5f21 100644
--- a/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.md5
+++ b/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.md5
@@ -1,2 +1,2 @@
source_md5="a4c148dcac1393f31f0aca35e3497b59"
-dest_md5="c052c91364a9aa97136c6b97900728ed"
+dest_md5="e130df7991ae2a15a5993328aa07905c"
diff --git a/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.scn b/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.scn
index 7623477..b1bb31c 100644
Binary files a/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.scn and b/.godot/imported/tree.glb-86fae6fb2428df7d74097b1a7c75b288.scn differ
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 099ceb9..f6fbd72 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,28 +10,22 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
### Security
### Dependencies
+## [1.0.2]
+### Fixed
+- Correctly define path to control box switch mesh [#14](https://github.com/MechanicalFlower/HazyRoad/pull/14)
+
## [1.0.1]
-### Added
-### Changed
-### Deprecated
-### Removed
### Fixed
- Add the English translation [#13](https://github.com/MechanicalFlower/HazyRoad/pull/13)
-### Security
-### Dependencies
## [1.0.0]
-### Added
### Changed
- Optimize images via ImgBot [#1](https://github.com/MechanicalFlower/HazyRoad/pull/1)
- Update sky shader to add clouds [#4](https://github.com/MechanicalFlower/HazyRoad/pull/4)
-### Deprecated
-### Removed
### Fixed
- Include `.godot` folder to fix the CI build step [#2](https://github.com/MechanicalFlower/HazyRoad/pull/2)
-### Security
-### Dependencies
-[Unreleased]: https://github.com/MechanicalFlower/HazyRoad/compare/1.0.1...HEAD
+[Unreleased]: https://github.com/MechanicalFlower/HazyRoad/compare/1.0.2...HEAD
+[1.0.2]: https://github.com/MechanicalFlower/HazyRoad/compare/1.0.1...1.0.2
[1.0.1]: https://github.com/MechanicalFlower/HazyRoad/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/MechanicalFlower/HazyRoad/commits/1.0.0
diff --git a/Justfile b/Justfile
index 330c69f..7f833e0 100644
--- a/Justfile
+++ b/Justfile
@@ -182,6 +182,9 @@ butler *ARGS: check-butler
sed -i "s,application/version=.*$,application/version=\"{{ game_version }}\",g" ./export_presets.cfg
sed -i "s,application/short_version=.*$,application/short_version=\"{{ short_version }}\",g" ./export_presets.cfg
+ echo "Update version in the project.godot"
+ sed -i "s,config/version=.*$,config/version=\"{{ game_version }}\",g" ./project.godot
+
echo "Create the override.cfg"
touch override.cfg
echo -e '[build_info]\npackage/version="{{ game_version }}"\npackage/build_date="{{ build_date }}"\nsource/commit="{{ commit_hash }}"' > override.cfg
diff --git a/README.md b/README.md
index dacb0b4..9558f13 100644
--- a/README.md
+++ b/README.md
@@ -13,17 +13,23 @@ A short puzzle game with a dark atmosphere, made with [Godot Engine](https://god
-## About
+# About
-You're on your way home and come to a crossroads where a barrier is blocking your way. You decide to get out of your car to find a way through.
+Ever had one of those days where even getting home feels like a puzzle? Well, that's exactly what happens in __Hazy Road__. You're cruising home, and bam! A barrier shows up out of nowhere, blocking your way. So, you do what any sane person would do – step out of your car and figure out how to get the heck out of this crossroads mess.
-### Controls
+Explore and interact with object to figure out how to unblock your way at the crossroads.
-- `WASD` to move.
-- `Mouse` to move the camera around.
-- `Shift` to sprint.
-- `Space` to jump.
-- `ESC` to open and close settings menu.
+## Controls
+
+Keep it simple and straight:
+
+- WASD: Move around, just like in real life.
+- Mouse: Look around, because that's what you'd do.
+- Shift: Speed things up with a good old sprint.
+- Space: Jump – because life's full of unexpected obstacles.
+- ESC: Press this when you need a breather, to fiddle with settings or take a break.
+
+It's not the fanciest game, but hey, neither is life. So, go on, tackle that crossroads puzzle, and let's see if you've got what it takes to outsmart a stubborn barrier. Good luck!
### Screenshots
diff --git a/assets/models/lamp_post_bench_trashcan/control_box.tscn b/assets/models/lamp_post_bench_trashcan/control_box.tscn
index f7811c5..e47f5c5 100644
--- a/assets/models/lamp_post_bench_trashcan/control_box.tscn
+++ b/assets/models/lamp_post_bench_trashcan/control_box.tscn
@@ -4,4 +4,4 @@
[node name="ControlBox" type="Node3D"]
-[node name="ControlBox_1" parent="." instance=ExtResource("1_6goij")]
+[node name="ControlBoxMesh" parent="." instance=ExtResource("1_6goij")]
diff --git a/export_presets.cfg b/export_presets.cfg
index b2c9738..011106e 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -35,8 +35,8 @@ application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
-application/file_version="1.0.0.20231231"
-application/product_version="1.0.0.20231231"
+application/file_version="1.0.1.20240114"
+application/product_version="1.0.1.20240114"
application/company_name="Mechanical Flower"
application/product_name="Marble"
application/file_description=""
@@ -131,7 +131,7 @@ application/bundle_identifier="io.itch.MechanicalFlower"
application/signature=""
application/app_category="Games"
application/short_version="1.0"
-application/version="1.0.0"
+application/version="1.0.1"
application/copyright="2023-present Mechanical Flower"
application/copyright_localized={}
application/min_macos_version="10.12"
diff --git a/plug.gd b/plug.gd
index 15e4a7c..89a3f97 100644
--- a/plug.gd
+++ b/plug.gd
@@ -18,6 +18,7 @@ func _plugging():
"HolonProduction/godot_kanban_tasks",
{"commit": "cfc914caa1dabd085024ff196bcb8578eaee1e67", "include": ["addons/kanban_tasks"]}
)
+ plug("florianvazelle/Log", {"commit": "51878aa55c4169f19b2c000f0e53b77439654829"})
# Patched version
plug("florianvazelle/EasyMenus", {"commit": "4d960ef6ab9f51a206e2eb40c2cc0b8f8eced71a"})
diff --git a/project.godot b/project.godot
index 70af011..b9ff697 100644
--- a/project.godot
+++ b/project.godot
@@ -11,12 +11,15 @@ config_version=5
[addons]
universal_fade/patterns_directory="res://addons/UniversalFade/Patterns"
+logger/log_message_format="{hour}:{minute}:{second} [{level}] {log_name} : {message}"
+logger/use_utc_time_format=true
+logger/break_on_error=false
[application]
config/name="Hazy Road"
config/description="You're on your way home and come to a crossroads where a barrier is blocking your way. You decide to get out of your car to find a way through."
-config/version="1.0.0"
+config/version="1.0.1"
run/main_scene="res://scenes/menu.tscn"
config/features=PackedStringArray("4.2")
@@ -30,6 +33,7 @@ DebugMenu="*res://addons/debug_menu/debug_menu.tscn"
GlobalSignal="*res://scripts/framework/global_signal.gd"
GameState="*res://scripts/framework/game_state.gd"
MenuTemplateManager="*res://addons/EasyMenus/Nodes/menu_template_manager.tscn"
+Log="*res://addons/logger/logger.gd"
[display]
@@ -38,7 +42,7 @@ window/size/viewport_height=720
[editor_plugins]
-enabled=PackedStringArray("res://addons/debug_menu/plugin.cfg", "res://addons/dialogue_label/plugin.cfg", "res://addons/kanban_tasks/plugin.cfg", "res://addons/proton_scatter/plugin.cfg", "res://addons/scenetomeshconverter/plugin.cfg")
+enabled=PackedStringArray("res://addons/debug_menu/plugin.cfg", "res://addons/dialogue_label/plugin.cfg", "res://addons/kanban_tasks/plugin.cfg", "res://addons/logger/plugin.cfg", "res://addons/proton_scatter/plugin.cfg")
[filesystem]
diff --git a/scenes/item/receptacle/fuse_box.tscn b/scenes/item/receptacle/fuse_box.tscn
index a9cbe05..f024e6c 100644
--- a/scenes/item/receptacle/fuse_box.tscn
+++ b/scenes/item/receptacle/fuse_box.tscn
@@ -16,7 +16,7 @@ translation_keys = Array[String](["FUSE_BOX"])
identifier = "fuse_box"
icon = ExtResource("2_dkrrj")
-[node name="ControlBox_1" parent="." instance=ExtResource("3_bhemg")]
+[node name="ControlBox" parent="." instance=ExtResource("3_bhemg")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.1, 0, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
diff --git a/scenes/menu.tscn b/scenes/menu.tscn
index e097499..cb20867 100644
--- a/scenes/menu.tscn
+++ b/scenes/menu.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=33 format=3 uid="uid://bel6wcaksdcjk"]
+[gd_scene load_steps=34 format=3 uid="uid://bel6wcaksdcjk"]
[ext_resource type="Script" path="res://scripts/menu.gd" id="1_qiuru"]
[ext_resource type="Environment" uid="uid://dtgnbg8pmfbjy" path="res://resources/fog_env.tres" id="2_nkke1"]
@@ -13,12 +13,13 @@
[ext_resource type="Script" path="res://addons/proton_scatter/src/scatter_item.gd" id="14_1h27t"]
[ext_resource type="Script" path="res://addons/proton_scatter/src/scatter_shape.gd" id="15_llp6r"]
[ext_resource type="Script" path="res://addons/proton_scatter/src/shapes/sphere_shape.gd" id="16_1c47g"]
+[ext_resource type="Script" path="res://scripts/build_info.gd" id="17_8hvvs"]
[ext_resource type="Script" path="res://addons/proton_scatter/src/modifiers/look_at.gd" id="17_o176y"]
[ext_resource type="PackedScene" uid="uid://b65hjj0ndnrnb" path="res://addons/ez-sfx-and-music/scenes/MusicPlayer/music_player.tscn" id="17_tb5q3"]
[ext_resource type="Script" path="res://addons/proton_scatter/src/cache/scatter_cache.gd" id="18_2gyad"]
[ext_resource type="PackedScene" uid="uid://dq6tvhqcy2aps" path="res://addons/EasyMenus/Scenes/main_menu.tscn" id="18_qnpgs"]
-[sub_resource type="Resource" id="Resource_6mw6x"]
+[sub_resource type="Resource" id="Resource_8cemp"]
script = ExtResource("10_i08vh")
spacing = 7.0
offset = 0.0
@@ -30,7 +31,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_y3m1d"]
+[sub_resource type="Resource" id="Resource_15dop"]
script = ExtResource("11_mxkfj")
position = Vector3(0.15, 0.15, 0.15)
rotation = Vector3(5, 360, 5)
@@ -41,7 +42,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 2
-[sub_resource type="Resource" id="Resource_hpwbu"]
+[sub_resource type="Resource" id="Resource_un21h"]
script = ExtResource("13_rxk03")
ray_direction = Vector3(0, -1, 0)
ray_length = 10.0
@@ -57,15 +58,15 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_sb831"]
+[sub_resource type="Resource" id="Resource_diktx"]
script = ExtResource("9_tjaot")
-stack = Array[Resource("res://addons/proton_scatter/src/modifiers/base_modifier.gd")]([SubResource("Resource_6mw6x"), SubResource("Resource_y3m1d"), SubResource("Resource_hpwbu")])
+stack = Array[Resource("res://addons/proton_scatter/src/modifiers/base_modifier.gd")]([SubResource("Resource_8cemp"), SubResource("Resource_15dop"), SubResource("Resource_un21h")])
[sub_resource type="Resource" id="Resource_d0x1d"]
script = ExtResource("16_1c47g")
radius = 95.0
-[sub_resource type="Resource" id="Resource_3fwg6"]
+[sub_resource type="Resource" id="Resource_tttis"]
script = ExtResource("10_i08vh")
spacing = 7.0
offset = 0.0
@@ -77,7 +78,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_aolk0"]
+[sub_resource type="Resource" id="Resource_15g1c"]
script = ExtResource("11_mxkfj")
position = Vector3(0.15, 0.15, 0.15)
rotation = Vector3(5, 360, 5)
@@ -88,7 +89,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 2
-[sub_resource type="Resource" id="Resource_wkgqx"]
+[sub_resource type="Resource" id="Resource_n66dv"]
script = ExtResource("13_rxk03")
ray_direction = Vector3(0, -1, 0)
ray_length = 10.0
@@ -104,15 +105,15 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_m72lk"]
+[sub_resource type="Resource" id="Resource_dyfhg"]
script = ExtResource("9_tjaot")
-stack = Array[Resource("res://addons/proton_scatter/src/modifiers/base_modifier.gd")]([SubResource("Resource_3fwg6"), SubResource("Resource_aolk0"), SubResource("Resource_wkgqx")])
+stack = Array[Resource("res://addons/proton_scatter/src/modifiers/base_modifier.gd")]([SubResource("Resource_tttis"), SubResource("Resource_15g1c"), SubResource("Resource_n66dv")])
[sub_resource type="Resource" id="Resource_cc1hy"]
script = ExtResource("16_1c47g")
radius = 75.0
-[sub_resource type="Resource" id="Resource_owwa0"]
+[sub_resource type="Resource" id="Resource_puh6s"]
script = ExtResource("10_i08vh")
spacing = 30.0
offset = 0.0
@@ -124,7 +125,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_ojrer"]
+[sub_resource type="Resource" id="Resource_2bmp6"]
script = ExtResource("13_rxk03")
ray_direction = Vector3(0, -1, 0)
ray_length = 10.0
@@ -140,7 +141,7 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_fj3tq"]
+[sub_resource type="Resource" id="Resource_nfyol"]
script = ExtResource("17_o176y")
target = Vector3(0, 0, 0)
up = Vector3(0, 1, 0)
@@ -150,9 +151,9 @@ custom_seed = 0
restrict_height = false
reference_frame = 0
-[sub_resource type="Resource" id="Resource_8f1j8"]
+[sub_resource type="Resource" id="Resource_nymur"]
script = ExtResource("9_tjaot")
-stack = Array[Resource("res://addons/proton_scatter/src/modifiers/base_modifier.gd")]([SubResource("Resource_owwa0"), SubResource("Resource_ojrer"), SubResource("Resource_fj3tq")])
+stack = Array[Resource("res://addons/proton_scatter/src/modifiers/base_modifier.gd")]([SubResource("Resource_puh6s"), SubResource("Resource_2bmp6"), SubResource("Resource_nfyol")])
[sub_resource type="Resource" id="Resource_ibgxc"]
script = ExtResource("16_1c47g")
@@ -181,7 +182,7 @@ speed = 0.1
[node name="Car" parent="." instance=ExtResource("4_qdrib")]
unique_name_in_owner = true
-transform = Transform3D(-0.049935, 0, -0.998752, 0, 1, 0, 0.998752, 0, -0.049935, -0.003733, 0.25, -85)
+transform = Transform3D(0.500549, 0, 0.865707, 0, 1, 0, -0.865707, 0, 0.500549, -38.8158, 0.25, 75.6197)
script = null
[node name="Camera3D" type="Camera3D" parent="Car"]
@@ -198,7 +199,7 @@ transform = Transform3D(7, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0)
[node name="Forest" type="Node3D" parent="Forest"]
script = ExtResource("8_k1uyb")
force_rebuild_on_load = false
-modifier_stack = SubResource("Resource_sb831")
+modifier_stack = SubResource("Resource_diktx")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
@@ -218,7 +219,7 @@ shape = SubResource("Resource_d0x1d")
[node name="Forest2" type="Node3D" parent="Forest"]
script = ExtResource("8_k1uyb")
force_rebuild_on_load = false
-modifier_stack = SubResource("Resource_m72lk")
+modifier_stack = SubResource("Resource_dyfhg")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
@@ -239,7 +240,7 @@ shape = SubResource("Resource_cc1hy")
script = ExtResource("8_k1uyb")
render_mode = 1
force_rebuild_on_load = false
-modifier_stack = SubResource("Resource_8f1j8")
+modifier_stack = SubResource("Resource_nymur")
Performance/use_chunks = true
Performance/chunk_dimensions = Vector3(15, 15, 15)
@@ -265,7 +266,15 @@ cache_file = "res://resources/caches/menu_cache.tres"
[node name="EasyMenu" parent="HUD" instance=ExtResource("18_qnpgs")]
unique_name_in_owner = true
+[node name="Label" type="Label" parent="HUD/EasyMenu/Content" index="5"]
+layout_mode = 2
+theme_override_colors/font_color = Color(0.717647, 0.717647, 0.717647, 1)
+horizontal_alignment = 1
+script = ExtResource("17_8hvvs")
+
[node name="MusicPlayer" parent="." instance=ExtResource("17_tb5q3")]
unique_name_in_owner = true
music_folder = "res://assets/music"
bus_name = "Music"
+
+[editable path="HUD/EasyMenu"]
diff --git a/scripts/build_info.gd b/scripts/build_info.gd
new file mode 100644
index 0000000..5942e9c
--- /dev/null
+++ b/scripts/build_info.gd
@@ -0,0 +1,11 @@
+@tool
+extends Label
+
+
+func _ready():
+ var build_version = ProjectSettings.get_setting("build_info/package/version")
+ var build_commit = ProjectSettings.get_setting("build_info/source/commit")
+ if build_version and build_commit:
+ set_text("v" + build_version + "@" + build_commit.left(7))
+ else:
+ set_text("")
diff --git a/scripts/framework/global_signal.gd b/scripts/framework/global_signal.gd
index d235deb..905a59e 100644
--- a/scripts/framework/global_signal.gd
+++ b/scripts/framework/global_signal.gd
@@ -12,7 +12,7 @@ func add_listener(signal_name: StringName, callable: Callable):
func trigger_signal(signal_name: StringName, arguments: Array = []):
if not _signals.has(signal_name):
- printerr("Unknown signal: '" + signal_name + "'")
+ Log.error("Unknown signal: '" + signal_name + "'")
return
for callable in _signals[signal_name]:
diff --git a/scripts/item/barrier.gd b/scripts/item/barrier.gd
index 0ce0e0a..64605fc 100644
--- a/scripts/item/barrier.gd
+++ b/scripts/item/barrier.gd
@@ -15,7 +15,7 @@ func toggle(receptacle_state: bool):
_activated_num_fuse -= 1
if _is_active():
- print_debug("Open the Barrier")
+ Log.debug("Open the Barrier")
collision_shape.set_disabled(true)
barrier1.hide()
barrier1.set_process_mode(PROCESS_MODE_DISABLED)
@@ -24,7 +24,7 @@ func toggle(receptacle_state: bool):
_is_interactable = false
else:
- print_debug("Close the Barrier")
+ Log.debug("Close the Barrier")
collision_shape.set_disabled(false)
barrier1.show()
barrier1.set_process_mode(PROCESS_MODE_INHERIT)
diff --git a/scripts/item/door_security_post.gd b/scripts/item/door_security_post.gd
index 246f617..2a08e5e 100644
--- a/scripts/item/door_security_post.gd
+++ b/scripts/item/door_security_post.gd
@@ -23,7 +23,7 @@ func toggle(receptacle_state: bool):
_activated_num_fuse -= 1
if _is_active():
- print_debug("Open the DoorSecurityPost")
+ Log.debug("Open the DoorSecurityPost")
tween.tween_property(self, "rotation_degrees:y", initial_rotation.y + 135, 1)
tween.set_trans(Tween.TRANS_SINE)
tween.play()
@@ -31,7 +31,7 @@ func toggle(receptacle_state: bool):
_is_interactable = false
elif _open:
- print_debug("Close the DoorSecurityPost")
+ Log.debug("Close the DoorSecurityPost")
tween.tween_property(self, "rotation_degrees:y", initial_rotation.y, 1)
tween.set_trans(Tween.TRANS_SINE)
tween.play()
diff --git a/scripts/item/fuse_box.gd b/scripts/item/fuse_box.gd
index 9d71505..860a5b1 100644
--- a/scripts/item/fuse_box.gd
+++ b/scripts/item/fuse_box.gd
@@ -6,7 +6,9 @@ enum ScopedColor { YELLOW, BLUE, RED, GREEN }
@export var color: ScopedColor
@onready var sfx := get_node(^"PickupSFX")
-@onready var mesh: MeshInstance3D = get_node(^"ControlBox_1/ControlBoxCircuit_1/ControlBoxSwitch_1")
+@onready var mesh: MeshInstance3D = get_node(
+ ^"ControlBox/ControlBoxMesh/ControlBox_1/ControlBoxCircuit_1/ControlBoxSwitch_1"
+)
@onready var fuse_box: Node3D = get_node(^"FuseMesh")
diff --git a/scripts/item/generic/item.gd b/scripts/item/generic/item.gd
index 2d599e7..138ef73 100644
--- a/scripts/item/generic/item.gd
+++ b/scripts/item/generic/item.gd
@@ -11,11 +11,11 @@ var _is_interactable: bool = true
func _ready():
if identifier.is_empty():
- printerr(self, " 'identifier' must be set")
+ Log.warn("%s 'identifier' must be set" % str(self))
if not is_instance_valid(icon):
- printerr(self, " 'icon' must be set")
+ Log.warn("%s 'icon' must be set" % str(self))
if not has_method("interact"):
- printerr(self, " 'interact' not implemented")
+ Log.warn("%s 'interact' not implemented" % str(self))
func _process(_delta):
diff --git a/scripts/item/generic/mechanism.gd b/scripts/item/generic/mechanism.gd
index 5d41ac6..6a17f6e 100644
--- a/scripts/item/generic/mechanism.gd
+++ b/scripts/item/generic/mechanism.gd
@@ -11,10 +11,9 @@ func _ready():
super._ready()
if receptacle.is_empty():
- printerr(self, " 'receptacle' must be set")
-
+ Log.warn("%s 'receptacle' must be set" % str(self))
if not has_method("toggle"):
- printerr(self, " 'toggle' not implemented")
+ Log.warn("%s 'toggle' not implemented" % str(self))
GlobalSignal.add_listener(signal_name, _on_Receptacle_state_updated)
diff --git a/scripts/item/generic/observable.gd b/scripts/item/generic/observable.gd
index 07d5930..2aa6ae9 100644
--- a/scripts/item/generic/observable.gd
+++ b/scripts/item/generic/observable.gd
@@ -9,13 +9,13 @@ const DialogueScene: PackedScene = preload("res://scenes/dialogue.tscn")
func _ready():
- icon = load("res://addons/goat/images/eye_icon.png")
+ icon = preload("res://addons/goat/images/eye_icon.png")
# gdlint:ignore = private-method-call
super._ready()
if translation_keys.is_empty():
- printerr(self, " 'translation_keys' must be set")
+ Log.warn("%s 'translation_keys' must be set" % str(self))
call_deferred("add_child", dialogue)
diff --git a/scripts/item/generic/receptacle.gd b/scripts/item/generic/receptacle.gd
index 61985aa..5715d66 100644
--- a/scripts/item/generic/receptacle.gd
+++ b/scripts/item/generic/receptacle.gd
@@ -19,9 +19,9 @@ func _ready():
super._ready()
if item_to_interact.is_empty():
- printerr(self, " 'item_to_interact' must be set")
+ Log.warn("%s 'item_to_interact' must be set" % str(self))
if translation_keys.is_empty():
- printerr(self, " 'translation_keys' must be set")
+ Log.warn("%s 'translation_keys' must be set" % str(self))
call_deferred("add_child", dialogue)
diff --git a/scripts/main.gd b/scripts/main.gd
index 28e355b..7790ded 100644
--- a/scripts/main.gd
+++ b/scripts/main.gd
@@ -1,6 +1,11 @@
extends Node3D
-@export var fast_close := true
+
+func _init():
+ if OS.is_debug_build():
+ Log.current_log_level = Log.LogLevel.DEBUG
+ else:
+ Log.current_log_level = Log.LogLevel.ERROR
# Called when the node enters the scene tree for the first time.
@@ -8,19 +13,10 @@ func _ready() -> void:
get_viewport().scaling_3d_scale = 0.25
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
- if !OS.is_debug_build():
- fast_close = false
-
- if fast_close:
- print_debug("** Fast Close enabled in the 'main.gd' script **")
- print_debug("** 'Esc' to close 'Shift + F1' to release mouse **")
-
- set_process_input(fast_close)
-
func _input(event: InputEvent) -> void:
if event.is_action_pressed(&"ui_cancel"):
- get_tree().quit() # Quits the game
+ get_tree().change_scene_to_file("res://scenes/menu.tscn")
if event.is_action_pressed(&"change_mouse_input"):
match Input.get_mouse_mode():
@@ -28,11 +24,3 @@ func _input(event: InputEvent) -> void:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
Input.MOUSE_MODE_VISIBLE:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
-
-
-# Capture mouse if clicked on the game, needed for HTML5
-# Called when an InputEvent hasn't been consumed by _input() or any GUI item
-func _unhandled_input(event: InputEvent) -> void:
- if event is InputEventMouseButton:
- if event.button_index == MOUSE_BUTTON_LEFT && event.pressed:
- Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
diff --git a/scripts/menu.gd b/scripts/menu.gd
index f9a847b..b497e6f 100644
--- a/scripts/menu.gd
+++ b/scripts/menu.gd
@@ -5,6 +5,13 @@ extends Node
@onready var music: MusicPlayer = get_node(^"%MusicPlayer")
+func _init():
+ if OS.is_debug_build():
+ Log.current_log_level = Log.LogLevel.DEBUG
+ else:
+ Log.current_log_level = Log.LogLevel.ERROR
+
+
func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)