diff --git a/godot/addons/godot-sqlite/bin/binaries_here.txt b/godot/addons/godot-sqlite/bin/binaries_here.txt
deleted file mode 100644
index f744878..0000000
--- a/godot/addons/godot-sqlite/bin/binaries_here.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Download binaries and place them in this folder.
-Latest binaries: https://github.com/2shady4u/godot-sqlite/releases
\ No newline at end of file
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_debug.arm64.so b/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_debug.arm64.so
deleted file mode 100644
index 6465499..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_debug.arm64.so and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_debug.x86_64.so b/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_debug.x86_64.so
deleted file mode 100644
index 25be2b8..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_debug.x86_64.so and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_release.arm64.so b/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_release.arm64.so
deleted file mode 100644
index 8b62037..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_release.arm64.so and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_release.x86_64.so b/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_release.x86_64.so
deleted file mode 100644
index 7539a90..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.android.template_release.x86_64.so and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/Info.plist b/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/Info.plist
deleted file mode 100644
index ba11121..0000000
--- a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/Info.plist
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- AvailableLibraries
-
-
- BinaryPath
- libgdsqlite.ios.template_debug.simulator.a
- LibraryIdentifier
- ios-arm64_x86_64-simulator
- LibraryPath
- libgdsqlite.ios.template_debug.simulator.a
- SupportedArchitectures
-
- arm64
- x86_64
-
- SupportedPlatform
- ios
- SupportedPlatformVariant
- simulator
-
-
- BinaryPath
- libgdsqlite.ios.template_debug.a
- LibraryIdentifier
- ios-arm64
- LibraryPath
- libgdsqlite.ios.template_debug.a
- SupportedArchitectures
-
- arm64
-
- SupportedPlatform
- ios
-
-
- CFBundlePackageType
- XFWK
- XCFrameworkFormatVersion
- 1.0
-
-
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/ios-arm64/libgdsqlite.ios.template_debug.a b/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/ios-arm64/libgdsqlite.ios.template_debug.a
deleted file mode 100644
index 475033a..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/ios-arm64/libgdsqlite.ios.template_debug.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/ios-arm64_x86_64-simulator/libgdsqlite.ios.template_debug.simulator.a b/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/ios-arm64_x86_64-simulator/libgdsqlite.ios.template_debug.simulator.a
deleted file mode 100644
index da4b74c..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework/ios-arm64_x86_64-simulator/libgdsqlite.ios.template_debug.simulator.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/Info.plist b/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/Info.plist
deleted file mode 100644
index a9075a6..0000000
--- a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/Info.plist
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- AvailableLibraries
-
-
- BinaryPath
- libgdsqlite.ios.template_release.simulator.a
- LibraryIdentifier
- ios-arm64_x86_64-simulator
- LibraryPath
- libgdsqlite.ios.template_release.simulator.a
- SupportedArchitectures
-
- arm64
- x86_64
-
- SupportedPlatform
- ios
- SupportedPlatformVariant
- simulator
-
-
- BinaryPath
- libgdsqlite.ios.template_release.a
- LibraryIdentifier
- ios-arm64
- LibraryPath
- libgdsqlite.ios.template_release.a
- SupportedArchitectures
-
- arm64
-
- SupportedPlatform
- ios
-
-
- CFBundlePackageType
- XFWK
- XCFrameworkFormatVersion
- 1.0
-
-
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/ios-arm64/libgdsqlite.ios.template_release.a b/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/ios-arm64/libgdsqlite.ios.template_release.a
deleted file mode 100644
index 9948b27..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/ios-arm64/libgdsqlite.ios.template_release.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/ios-arm64_x86_64-simulator/libgdsqlite.ios.template_release.simulator.a b/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/ios-arm64_x86_64-simulator/libgdsqlite.ios.template_release.simulator.a
deleted file mode 100644
index a1d68b2..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework/ios-arm64_x86_64-simulator/libgdsqlite.ios.template_release.simulator.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.linux.template_debug.x86_64.so b/godot/addons/godot-sqlite/bin/libgdsqlite.linux.template_debug.x86_64.so
deleted file mode 100644
index f803e78..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.linux.template_debug.x86_64.so and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.linux.template_release.x86_64.so b/godot/addons/godot-sqlite/bin/libgdsqlite.linux.template_release.x86_64.so
deleted file mode 100644
index 499be5a..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.linux.template_release.x86_64.so and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework/Resources/Info.plist b/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework/Resources/Info.plist
deleted file mode 100644
index 0994905..0000000
--- a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework/Resources/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleExecutable
- libgdsqlite.template_debug
- CFBundleIdentifier
- org.godotengine.libgdsqlite
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- libgdsqlite.macos.template_debug
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0.0
- CFBundleSupportedPlatforms
-
- MacOSX
-
- CFBundleVersion
- 1.0.0
- LSMinimumSystemVersion
- 10.12
-
-
\ No newline at end of file
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework/libgdsqlite.macos.template_debug b/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework/libgdsqlite.macos.template_debug
deleted file mode 100644
index 1fbf27f..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework/libgdsqlite.macos.template_debug and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework/Resources/Info.plist b/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework/Resources/Info.plist
deleted file mode 100644
index 59a0399..0000000
--- a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework/Resources/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleExecutable
- libgdsqlite.template_release
- CFBundleIdentifier
- org.godotengine.libgdsqlite
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- libgdsqlite.macos.template_release
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0.0
- CFBundleSupportedPlatforms
-
- MacOSX
-
- CFBundleVersion
- 1.0.0
- LSMinimumSystemVersion
- 10.12
-
-
\ No newline at end of file
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework/libgdsqlite.macos.template_release b/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework/libgdsqlite.macos.template_release
deleted file mode 100644
index afcf74f..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework/libgdsqlite.macos.template_release and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.nothreads.wasm b/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.nothreads.wasm
deleted file mode 100644
index d0c0239..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.nothreads.wasm and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.wasm b/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.wasm
deleted file mode 100644
index a1c9d08..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.wasm and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.nothreads.wasm b/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.nothreads.wasm
deleted file mode 100644
index 1dea6f3..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.nothreads.wasm and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.wasm b/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.wasm
deleted file mode 100644
index e9cd219..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.wasm and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.windows.template_debug.x86_64.dll b/godot/addons/godot-sqlite/bin/libgdsqlite.windows.template_debug.x86_64.dll
deleted file mode 100644
index 79ddc94..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.windows.template_debug.x86_64.dll and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgdsqlite.windows.template_release.x86_64.dll b/godot/addons/godot-sqlite/bin/libgdsqlite.windows.template_release.x86_64.dll
deleted file mode 100644
index 6dd8d69..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgdsqlite.windows.template_release.x86_64.dll and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/Info.plist b/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/Info.plist
deleted file mode 100644
index 7c5615d..0000000
--- a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/Info.plist
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- AvailableLibraries
-
-
- BinaryPath
- libgodot-cpp.ios.template_debug.arm64.a
- LibraryIdentifier
- ios-arm64
- LibraryPath
- libgodot-cpp.ios.template_debug.arm64.a
- SupportedArchitectures
-
- arm64
-
- SupportedPlatform
- ios
-
-
- BinaryPath
- libgodot-cpp.ios.template_debug.universal.simulator.a
- LibraryIdentifier
- ios-arm64_x86_64-simulator
- LibraryPath
- libgodot-cpp.ios.template_debug.universal.simulator.a
- SupportedArchitectures
-
- arm64
- x86_64
-
- SupportedPlatform
- ios
- SupportedPlatformVariant
- simulator
-
-
- CFBundlePackageType
- XFWK
- XCFrameworkFormatVersion
- 1.0
-
-
diff --git a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/ios-arm64/libgodot-cpp.ios.template_debug.arm64.a b/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/ios-arm64/libgodot-cpp.ios.template_debug.arm64.a
deleted file mode 100644
index 274d4c7..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/ios-arm64/libgodot-cpp.ios.template_debug.arm64.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/ios-arm64_x86_64-simulator/libgodot-cpp.ios.template_debug.universal.simulator.a b/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/ios-arm64_x86_64-simulator/libgodot-cpp.ios.template_debug.universal.simulator.a
deleted file mode 100644
index a4325fc..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework/ios-arm64_x86_64-simulator/libgodot-cpp.ios.template_debug.universal.simulator.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/Info.plist b/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/Info.plist
deleted file mode 100644
index dd57168..0000000
--- a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/Info.plist
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- AvailableLibraries
-
-
- BinaryPath
- libgodot-cpp.ios.template_release.arm64.a
- LibraryIdentifier
- ios-arm64
- LibraryPath
- libgodot-cpp.ios.template_release.arm64.a
- SupportedArchitectures
-
- arm64
-
- SupportedPlatform
- ios
-
-
- BinaryPath
- libgodot-cpp.ios.template_release.universal.simulator.a
- LibraryIdentifier
- ios-arm64_x86_64-simulator
- LibraryPath
- libgodot-cpp.ios.template_release.universal.simulator.a
- SupportedArchitectures
-
- arm64
- x86_64
-
- SupportedPlatform
- ios
- SupportedPlatformVariant
- simulator
-
-
- CFBundlePackageType
- XFWK
- XCFrameworkFormatVersion
- 1.0
-
-
diff --git a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/ios-arm64/libgodot-cpp.ios.template_release.arm64.a b/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/ios-arm64/libgodot-cpp.ios.template_release.arm64.a
deleted file mode 100644
index 8889234..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/ios-arm64/libgodot-cpp.ios.template_release.arm64.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/ios-arm64_x86_64-simulator/libgodot-cpp.ios.template_release.universal.simulator.a b/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/ios-arm64_x86_64-simulator/libgodot-cpp.ios.template_release.universal.simulator.a
deleted file mode 100644
index 4aec230..0000000
Binary files a/godot/addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework/ios-arm64_x86_64-simulator/libgodot-cpp.ios.template_release.universal.simulator.a and /dev/null differ
diff --git a/godot/addons/godot-sqlite/gdsqlite.gdextension b/godot/addons/godot-sqlite/gdsqlite.gdextension
deleted file mode 100644
index d0e5919..0000000
--- a/godot/addons/godot-sqlite/gdsqlite.gdextension
+++ /dev/null
@@ -1,32 +0,0 @@
-[configuration]
-
-entry_symbol = "sqlite_library_init"
-compatibility_minimum = "4.5"
-
-[libraries]
-
-macos.debug = "res://addons/godot-sqlite/bin/libgdsqlite.macos.template_debug.framework"
-macos.release = "res://addons/godot-sqlite/bin/libgdsqlite.macos.template_release.framework"
-windows.debug.x86_64 = "res://addons/godot-sqlite/bin/libgdsqlite.windows.template_debug.x86_64.dll"
-windows.release.x86_64 = "res://addons/godot-sqlite/bin/libgdsqlite.windows.template_release.x86_64.dll"
-linux.debug.x86_64 = "res://addons/godot-sqlite/bin/libgdsqlite.linux.template_debug.x86_64.so"
-linux.release.x86_64 = "res://addons/godot-sqlite/bin/libgdsqlite.linux.template_release.x86_64.so"
-android.debug.arm64 = "res://addons/godot-sqlite/bin/libgdsqlite.android.template_debug.arm64.so"
-android.release.arm64 = "res://addons/godot-sqlite/bin/libgdsqlite.android.template_release.arm64.so"
-android.debug.x86_64 = "res://addons/godot-sqlite/bin/libgdsqlite.android.template_debug.x86_64.so"
-android.release.x86_64 = "res://addons/godot-sqlite/bin/libgdsqlite.android.template_release.x86_64.so"
-ios.debug = "res://addons/godot-sqlite/bin/libgdsqlite.ios.template_debug.xcframework"
-ios.release = "res://addons/godot-sqlite/bin/libgdsqlite.ios.template_release.xcframework"
-web.debug.threads.wasm32 = "res://addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.wasm"
-web.release.threads.wasm32 = "res://addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.wasm"
-web.debug.wasm32 = "res://addons/godot-sqlite/bin/libgdsqlite.web.template_debug.wasm32.nothreads.wasm"
-web.release.wasm32 = "res://addons/godot-sqlite/bin/libgdsqlite.web.template_release.wasm32.nothreads.wasm"
-
-[dependencies]
-
-ios.debug = {
- "res://addons/godot-sqlite/bin/libgodot-cpp.ios.template_debug.xcframework": ""
-}
-ios.release = {
- "res://addons/godot-sqlite/bin/libgodot-cpp.ios.template_release.xcframework": ""
-}
\ No newline at end of file
diff --git a/godot/addons/godot-sqlite/gdsqlite.gdextension.uid b/godot/addons/godot-sqlite/gdsqlite.gdextension.uid
deleted file mode 100644
index 2af72ab..0000000
--- a/godot/addons/godot-sqlite/gdsqlite.gdextension.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ca6ikrilfs4se
diff --git a/godot/addons/godot-sqlite/godot-sqlite.gd b/godot/addons/godot-sqlite/godot-sqlite.gd
deleted file mode 100644
index 9582113..0000000
--- a/godot/addons/godot-sqlite/godot-sqlite.gd
+++ /dev/null
@@ -1,14 +0,0 @@
-# ############################################################################ #
-# Copyright © 2019-2025 Piet Bronders & Jeroen De Geeter
-# Licensed under the MIT License.
-# See LICENSE in the project root for license information.
-# ############################################################################ #
-
-@tool
-extends EditorPlugin
-
-func _enter_tree():
- pass
-
-func _exit_tree():
- pass
diff --git a/godot/addons/godot-sqlite/godot-sqlite.gd.uid b/godot/addons/godot-sqlite/godot-sqlite.gd.uid
deleted file mode 100644
index 029b657..0000000
--- a/godot/addons/godot-sqlite/godot-sqlite.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cwsfv71x0jo4e
diff --git a/godot/addons/godot-sqlite/plugin.cfg b/godot/addons/godot-sqlite/plugin.cfg
deleted file mode 100644
index b39e781..0000000
--- a/godot/addons/godot-sqlite/plugin.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-[plugin]
-
-name="Godot SQLite"
-description="GDNative wrapper for SQLite (Godot 4.X+), making it possible to use SQLite databases as data storage in all your future games."
-author="Piet Bronders & Jeroen De Geeter"
-version="4.6"
-script="godot-sqlite.gd"
diff --git a/godot/addons/maaacks_game_template/ATTRIBUTION.md b/godot/addons/maaacks_game_template/ATTRIBUTION.md
deleted file mode 100644
index c5a52be..0000000
--- a/godot/addons/maaacks_game_template/ATTRIBUTION.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Attribution
-## Collaborators
-
-### Godot Game Template
-
-Author: [Marek Belski and contributors](https://github.com/Maaack/Godot-Game-Template/graphs/contributors)
-Source: [github: Godot-Game-Template](https://github.com/Maaack/Godot-Game-Template)
-License: [MIT License](LICENSE.txt)
-
-## Sourced
-#### Godot Engine Logo
-Author: Andrea Calabró
-Source: [godotengine.org : press](https://godotengine.org/press/)
-License: [CC BY 4.0 International](https://github.com/godotengine/godot/blob/master/LOGO_LICENSE.txt)
-
-#### Git Logo
-Author: [Jason Long](https://bsky.app/profile/jasonlong.me)
-Source: [git-scm.com : logos](https://git-scm.com/downloads/logos)
-License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)
-
-## Tools
-#### Godot
-
-Author: [Juan Linietsky, Ariel Manzur, and contributors](https://godotengine.org/contact)
-Source: [godotengine.org](https://godotengine.org/)
-License: [MIT License](https://github.com/godotengine/godot/blob/master/LICENSE.txt)
-
-#### Visual Studio Code
-Author: [Microsoft](https://opensource.microsoft.com/)
-Source: [github: vscode](https://github.com/microsoft/vscode)
-License: [MIT License](https://github.com/microsoft/vscode/blob/main/LICENSE.txt)
-
-#### Git
-
-Author: [Linus Torvalds](https://github.com/torvalds)
-Source: [git-scm.com](https://git-scm.com/downloads)
-License: [GNU General Public License version 2](https://opensource.org/licenses/GPL-2.0)
diff --git a/godot/addons/maaacks_game_template/LICENSE.txt b/godot/addons/maaacks_game_template/LICENSE.txt
deleted file mode 100644
index 935618d..0000000
--- a/godot/addons/maaacks_game_template/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2022-present Marek Belski.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/godot/addons/maaacks_game_template/README.md b/godot/addons/maaacks_game_template/README.md
deleted file mode 100644
index f8c9995..0000000
--- a/godot/addons/maaacks_game_template/README.md
+++ /dev/null
@@ -1,179 +0,0 @@
-# Godot Game Template
-For Godot 4.5 (4.3+ compatible)
-
-This template has a main menu, options menus, pause menu, credits, scene loader, extra tools, and an example game scene.
-
-[Example on itch.io](https://maaack.itch.io/godot-game-template)
-
-[Featured Games](#featured-games)
-
-### Videos
-
-[](https://youtu.be/U9CB3vKINVw)
-[More Videos](/addons/maaacks_game_template/docs/Videos.md)
-
-### Screenshots
-
-
-
-
-
-[More Screenshots](/addons/maaacks_game_template/docs/Screenshots.md)
-
-## Objective
-
-Setup menus and accessibility features in about 15 minutes.
-
-The template can be the start of a new project, or plug into an existing one. It is game agnostic (2D or 3D) and can work with multiple target resolutions, up to 4k and down to 640x360. It's meant to cover the needs for a typical game jam, while remaining scalable and extensible enough to support commercial games.
-
-## Features
-
-### Base
-
-The `base/` folder holds the core components of the menus application.
-
-- Main Menu
-- Options Menus
-- Pause Menu
-- Credits
-- Loading Screen
-- Opening Scene
-- Persistent Settings
-- Simple Config Interface
-- Extensible Overlay Menus
-- Keyboard/Mouse Support
-- Gamepad Support
-- UI Sound Controller
-- Background Music Controller
-
-### Extras
-
-The `extras/` folder holds components that extend the core application.
-
-- Win & Lose Menus
-- Level Loaders
-- Level Progress Manager
-- Logging Scripts
-- Script for Releasing on [itch.io](https://itch.io/) with [butler](https://itch.io/docs/butler/)
-
-### Examples
-
-The `examples/` folder contains an example project using inherited scenes from the `base/` and `extras/`.
-
-- Example Game Scene
-- Base Level Class
-- Example Levels
-- End Credits
-- Additional Inherited Scenes:
- - Game Options Menu w/ Reset button
- - Master Options Menu w/ Game Options tab
- - Main Menu w/ Animations
- - Opening w/ Godot Logo
- - Level Loading Screen
- - Loading Screen w/ Shader Pre-caching
-
-### Minimal
-
-Users that want a minimal set of features can try [Maaack's Menus Template](https://github.com/Maaack/Godot-Menus-Template) or other options from the [plugin suite](/addons/maaacks_game_template/docs/PluginSuite.md).
-
-
-## Installation
-
-### Godot Asset Library
-This package is available as both a template and a plugin, meaning it can be used to start a new project, or added to an existing project.
-
-
-
-When starting a new project:
-
-1. Go to the `Asset Library Projects` tab.
-2. Search for "Maaack's Game Template".
-3. Click on the result to open the template details.
-4. Click to Download.
-5. Give the project a new name and destination.
-6. Click to Install & Edit.
-7. Continue with the [New Project Instructions](/addons/maaacks_game_template/docs/NewProject.md)
-
-When editing an existing project:
-
-1. Go to the `AssetLib` tab.
-2. Search for "Maaack's Game Template Plugin".
-3. Click on the result to open the plugin details.
-4. Click to Download.
-5. Check that contents are getting installed to `addons/` and there are no conflicts.
-6. Click to Install.
-7. Reload the project (you may see errors before you do this).
-8. Enable the plugin from the Project Settings > Plugins tab.
- If it's enabled for the first time,
- 1. A dialogue window will appear asking to copy the example scenes out of `addons/`.
- 2. Another dialogue window will ask to update the project's main scene.
-9. Continue with the [Existing Project Instructions](/addons/maaacks_game_template/docs/ExistingProject.md)
-
-
-### GitHub
-
-
-1. Download the latest release version from [GitHub](https://github.com/Maaack/Godot-Game-Template/releases/latest).
-2. Extract the contents of the archive.
-3. Move the `addons/maaacks_game_template` folder into your project's `addons/` folder.
-4. Open/Reload the project.
-5. Enable the plugin from the Project Settings > Plugins tab.
- If it's enabled for the first time,
- 1. A dialogue window will appear asking to copy the example scenes out of `addons/`.
- 2. Another dialogue window will ask to update the project's main scene.
-6. Continue with the [Existing Project Instructions](/addons/maaacks_game_template/docs/ExistingProject.md)
-
-
-## Usage
-
-### New Project
-These instructions assume starting with the entire contents of the project folder. This will be the case when cloning the repo, or starting from the *template* version in the Godot Asset Library.
-
-
-[New Project Instructions](/addons/maaacks_game_template/docs/NewProject.md)
-
-### Existing Project
-
-These instructions assume starting with just the contents of `addons/`. This will be the case when installing the *plugin* version in the Godot Asset Library.
-
-[Existing Project Instructions](/addons/maaacks_game_template/docs/ExistingProject.md)
-
-### More Documentation
-
-[Main Menu Setup](/addons/maaacks_game_template/docs/MainMenuSetup.md)
-[Game Scene Setup](/addons/maaacks_game_template/docs/GameSceneSetup.md)
-[Loading Scenes](/addons/maaacks_game_template/docs/LoadingScenes.md)
-[Input Icon Mapping](/addons/maaacks_game_template/docs/InputIconMapping.md)
-[Joypad Inputs](/addons/maaacks_game_template/docs/JoypadInputs.md)
-[Blending Music](/addons/maaacks_game_template/docs/BlendingMusic.md)
-[Add Custom Options](/addons/maaacks_game_template/docs/AddingCustomOptions.md)
-[Game Saving](/addons/maaacks_game_template/docs/GameSaving.md)
-[How Parts Work](/addons/maaacks_game_template/docs/HowPartsWork.md)
-[Moving Files](/addons/maaacks_game_template/docs/MovingFiles.md)
-[Uploading to itch.io](/addons/maaacks_game_template/docs/UploadingToItchIo.md)
-[Automatic Updating](/addons/maaacks_game_template/docs/AutomaticUpdating.md)
-[Exhibiting Your Game](/addons/maaacks_game_template/docs/Exhibiting.md)
-
----
-
-## Featured Games
-
-| Spud Customs | Rent Seek Kill | A Darkness Like Gravity |
-| :-------:| :-------: | :-------: |
- |  |  |
-[Find on Steam](https://store.steampowered.com/app/3291880/Spud_Customs/) | [Play on itch.io](https://xandruher.itch.io/rent-seek-kill) | [Play on itch.io](https://maaack.itch.io/a-darkness-like-gravity) |
-
-
-[All Shared Games](/addons/maaacks_game_template/docs/GamesMade.md)
-
-
-## Community
-
-Join the [Discord server](https://discord.gg/AyZrJh5AMp ) and share your work with others. It's also a space for getting or giving feedback, and asking for help.
-
-
-## Links
-[Attribution](/addons/maaacks_game_template/ATTRIBUTION.md)
-[License](/addons/maaacks_game_template/LICENSE.txt)
-[Godot Asset Library - Template](https://godotengine.org/asset-library/asset/2703)
-[Godot Asset Library - Plugin](https://godotengine.org/asset-library/asset/2709)
diff --git a/godot/addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png b/godot/addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png
deleted file mode 100644
index 18c5b29..0000000
Binary files a/godot/addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png.import b/godot/addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png.import
deleted file mode 100644
index f8a0966..0000000
--- a/godot/addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://rpqoffvo4a4q"
-path="res://.godot/imported/Git-Logo-2Color.png-ccd120c6c67dfbab1898730c2a1a23e5.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/git_logo/Git-Logo-2Color.png"
-dest_files=["res://.godot/imported/Git-Logo-2Color.png-ccd120c6c67dfbab1898730c2a1a23e5.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/git_logo/LICENSE.txt b/godot/addons/maaacks_game_template/assets/git_logo/LICENSE.txt
deleted file mode 100644
index 2d17b1d..0000000
--- a/godot/addons/maaacks_game_template/assets/git_logo/LICENSE.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Git Logo
-Copyright (c) Jason Long
-
-This work is licensed under the Creative Commons Attribution 3.0 Unported
-license (CC BY 3.0): https://creativecommons.org/licenses/by/3.0/
-
diff --git a/godot/addons/maaacks_game_template/assets/godot_engine_logo/LICENSE.txt b/godot/addons/maaacks_game_template/assets/godot_engine_logo/LICENSE.txt
deleted file mode 100644
index a081c9e..0000000
--- a/godot/addons/maaacks_game_template/assets/godot_engine_logo/LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Godot Engine Logo
-Copyright (c) 2017 Andrea Calabró
-
-This work is licensed under the Creative Commons Attribution 4.0 International
-license (CC BY 4.0 International): https://creativecommons.org/licenses/by/4.0/
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png b/godot/addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png
deleted file mode 100644
index 2c38732..0000000
Binary files a/godot/addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png.import b/godot/addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png.import
deleted file mode 100644
index 171c9b1..0000000
--- a/godot/addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cxodj5plfb52k"
-path="res://.godot/imported/logo_vertical_color_dark.png-914a689b7551193a70a010921088ebb7.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/godot_engine_logo/logo_vertical_color_dark.png"
-dest_files=["res://.godot/imported/logo_vertical_color_dark.png-914a689b7551193a70a010921088ebb7.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/License.txt b/godot/addons/maaacks_game_template/assets/input-icons/License.txt
deleted file mode 100644
index bd22217..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/License.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- Input Prompts (1.1b)
-
- Created/distributed by Kenney (www.kenney.nl)
- Creation date: 26-06-2024
-
- ------------------------------
-
- License: (Creative Commons Zero, CC0)
- http://creativecommons.org/publicdomain/zero/1.0/
-
- You can use this content for personal, educational, and commercial purposes.
-
- Support by crediting 'Kenney' or 'www.kenney.nl' (this is not a requirement)
-
- ------------------------------
-
- • Website : www.kenney.nl
- • Donate : www.kenney.nl/donate
-
- • Patreon : patreon.com/kenney
-
- Follow on social media for updates:
-
- • Twitter: twitter.com/KenneyNL
- • Instagram: instagram.com/kenney_nl
- • Mastodon: mastodon.gamedev.place/@kenney
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png
deleted file mode 100644
index d9d8fbd..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png.import
deleted file mode 100644
index d0f52f5..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bt1yqttw3d5xn"
-path="res://.godot/imported/icons-filled-colored-2x.png-14a5dbb04fef712e7a1f7d34f81f0511.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png"
-dest_files=["res://.godot/imported/icons-filled-colored-2x.png-14a5dbb04fef712e7a1f7d34f81f0511.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg
deleted file mode 100644
index 3b660d9..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png
deleted file mode 100644
index e7ed3fe..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png.import
deleted file mode 100644
index a88ee0a..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cmni5hv40bfaa"
-path="res://.godot/imported/icons-filled-colored.png-b51ce8c74ea37d4ce19368644717d850.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png"
-dest_files=["res://.godot/imported/icons-filled-colored.png-b51ce8c74ea37d4ce19368644717d850.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png
deleted file mode 100644
index 2399fc2..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png.import
deleted file mode 100644
index 83cae51..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bit8o3p506th6"
-path="res://.godot/imported/icons-filled-white-2x.png-5c033b4f193bd04be0bd84ca3aeed43e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png"
-dest_files=["res://.godot/imported/icons-filled-white-2x.png-5c033b4f193bd04be0bd84ca3aeed43e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg
deleted file mode 100644
index b8ede8d..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white.png
deleted file mode 100644
index 281f3e6..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white.png.import
deleted file mode 100644
index a0c6fbf..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://deskx061vlcgx"
-path="res://.godot/imported/icons-filled-white.png-f0994450aea86cd81dcc11ae094a178f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-filled-white.png"
-dest_files=["res://.godot/imported/icons-filled-white.png-f0994450aea86cd81dcc11ae094a178f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png
deleted file mode 100644
index 9699da0..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png.import
deleted file mode 100644
index b150dc4..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cqb86gp1gh3y8"
-path="res://.godot/imported/icons-outlined-colored-2x.png-5a43a028a51c5c4295143c766d9574a0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png"
-dest_files=["res://.godot/imported/icons-outlined-colored-2x.png-5a43a028a51c5c4295143c766d9574a0.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg
deleted file mode 100644
index 10b9658..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg.import
deleted file mode 100644
index 490b258..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg.import
+++ /dev/null
@@ -1,43 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bsgf78aysgdnd"
-path="res://.godot/imported/icons-outlined-colored-vector.svg-c32ed4ee32b32291e81571a12a36394d.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg"
-dest_files=["res://.godot/imported/icons-outlined-colored-vector.svg-c32ed4ee32b32291e81571a12a36394d.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png
deleted file mode 100644
index 6aa572a..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png.import
deleted file mode 100644
index fc83585..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bohem6w6kcl3x"
-path="res://.godot/imported/icons-outlined-colored.png-db3d206f9675395a32cb5ad98e6b9065.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png"
-dest_files=["res://.godot/imported/icons-outlined-colored.png-db3d206f9675395a32cb5ad98e6b9065.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png
deleted file mode 100644
index 8dd7cb9..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png.import
deleted file mode 100644
index 9e36c7b..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d3bsc6o2ae88q"
-path="res://.godot/imported/icons-outlined-white-2x.png-1e7b9db0c429e31d1923667585542e8c.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png"
-dest_files=["res://.godot/imported/icons-outlined-white-2x.png-1e7b9db0c429e31d1923667585542e8c.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg
deleted file mode 100644
index 17121c7..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png
deleted file mode 100644
index 3b95729..0000000
Binary files a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png.import b/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png.import
deleted file mode 100644
index 753e321..0000000
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bq211jkfnm7k7"
-path="res://.godot/imported/icons-outlined-white.png-c34cd64ff1b09fbf25cb6339951f61dc.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png"
-dest_files=["res://.godot/imported/icons-outlined-white.png-c34cd64ff1b09fbf25cb6339951f61dc.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/assets/plugin_logo/LICENSE.txt b/godot/addons/maaacks_game_template/assets/plugin_logo/LICENSE.txt
deleted file mode 100644
index fef39a5..0000000
--- a/godot/addons/maaacks_game_template/assets/plugin_logo/LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Maaack's Game Template Logo
-Copyright (c) Marek Belski
-
-This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
-license (CC BY-NC-ND 4.0 International): https://creativecommons.org/licenses/by-nc-nd/4.0
diff --git a/godot/addons/maaacks_game_template/assets/plugin_logo/logo.png b/godot/addons/maaacks_game_template/assets/plugin_logo/logo.png
deleted file mode 100644
index ea70a32..0000000
Binary files a/godot/addons/maaacks_game_template/assets/plugin_logo/logo.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/assets/plugin_logo/logo.png.import b/godot/addons/maaacks_game_template/assets/plugin_logo/logo.png.import
deleted file mode 100644
index edd279e..0000000
--- a/godot/addons/maaacks_game_template/assets/plugin_logo/logo.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cgdb2p0ctknhg"
-path="res://.godot/imported/logo.png-c01870748f534065a9e1f3a8abe16e3c.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/assets/plugin_logo/logo.png"
-dest_files=["res://.godot/imported/logo.png-c01870748f534065a9e1f3a8abe16e3c.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/LICENSE.txt b/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/LICENSE.txt
deleted file mode 100644
index b69d4ac..0000000
--- a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/LICENSE.txt
+++ /dev/null
@@ -1 +0,0 @@
-Remapping input icons by Marek Belski is marked with CC0 1.0. To view a copy of this license, visit https://creativecommons.org/publicdomain/zero/1.0/
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png b/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png
deleted file mode 100644
index adfeff9..0000000
Binary files a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png.import b/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png.import
deleted file mode 100644
index 5fe5d0c..0000000
--- a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c1eqf1cse1hch"
-path="res://.godot/imported/addition_symbol.png-e8a7f3ce4d91474fb1dc85f298d0b607.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png"
-dest_files=["res://.godot/imported/addition_symbol.png-e8a7f3ce4d91474fb1dc85f298d0b607.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png b/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png
deleted file mode 100644
index 01df0ee..0000000
Binary files a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png.import b/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png.import
deleted file mode 100644
index fec7952..0000000
--- a/godot/addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bteq3ica74h30"
-path="res://.godot/imported/subtraction_symbol.png-88291598586ab54d7f002593f7569b3e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png"
-dest_files=["res://.godot/imported/subtraction_symbol.png-88291598586ab54d7f002593f7569b3e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.gd b/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.gd
deleted file mode 100644
index bc59e5a..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.gd
+++ /dev/null
@@ -1,10 +0,0 @@
-extends Node
-
-@export_group("Scenes")
-@export_file("*.tscn") var main_menu_scene_path : String
-@export_file("*.tscn") var game_scene_path : String
-@export_file("*.tscn") var ending_scene_path : String
-
-func _ready() -> void:
- GlobalState.open()
- AppSettings.set_from_config_and_window(get_window())
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.gd.uid b/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.gd.uid
deleted file mode 100644
index 8aab321..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cno5ujal5t3kf
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.tscn b/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.tscn
deleted file mode 100644
index b6be2c7..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/app_config.tscn
+++ /dev/null
@@ -1,9 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cjke6crjg14a0"]
-
-[ext_resource type="Script" uid="uid://cno5ujal5t3kf" path="res://addons/maaacks_game_template/base/scenes/autoloads/app_config.gd" id="1_o0k5w"]
-
-[node name="AppConfig" type="Node"]
-script = ExtResource("1_o0k5w")
-main_menu_scene_path = "res://addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.tscn"
-game_scene_path = "res://addons/maaacks_game_template/examples/scenes/game_scene/game_ui.tscn"
-ending_scene_path = "res://addons/maaacks_game_template/examples/scenes/end_credits/end_credits.tscn"
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/project_music_controller.tscn b/godot/addons/maaacks_game_template/base/scenes/autoloads/project_music_controller.tscn
deleted file mode 100644
index 6fb58af..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/project_music_controller.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://r5t485lr3p7t"]
-
-[ext_resource type="Script" uid="uid://ctrh4qyxqncss" path="res://addons/maaacks_game_template/base/scripts/music_controller.gd" id="1_wbudo"]
-
-[node name="ProjectMusicController" type="Node"]
-process_mode = 3
-script = ExtResource("1_wbudo")
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/project_ui_sound_controller.tscn b/godot/addons/maaacks_game_template/base/scenes/autoloads/project_ui_sound_controller.tscn
deleted file mode 100644
index c1ec9f6..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/project_ui_sound_controller.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cc37235kj4384"]
-
-[ext_resource type="Script" uid="uid://b5oej1q4h7jvh" path="res://addons/maaacks_game_template/base/scripts/ui_sound_controller.gd" id="1_dmagn"]
-
-[node name="ProjectUISoundController" type="Node"]
-script = ExtResource("1_dmagn")
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd b/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd
deleted file mode 100644
index 2eb0f70..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd
+++ /dev/null
@@ -1,123 +0,0 @@
-class_name SceneLoaderClass
-extends Node
-## Autoload class for loading scenes with an optional loading screen.
-
-signal scene_loaded
-
-@export_file("*.tscn") var loading_screen_path : String : set = set_loading_screen
-
-@export_group("Debug")
-@export var debug_enabled : bool = false
-@export var debug_lock_status : ResourceLoader.ThreadLoadStatus
-@export_range(0, 1) var debug_lock_progress : float = 0.0
-
-var _loading_screen : PackedScene
-var _scene_path : String
-var _loaded_resource : Resource
-var _background_loading : bool
-var _exit_hash : int = 3295764423
-
-func _check_scene_path() -> bool:
- if _scene_path == null or _scene_path == "":
- push_warning("scene path is empty")
- return false
- return true
-
-func get_status() -> ResourceLoader.ThreadLoadStatus:
- if debug_enabled:
- return debug_lock_status
- if not _check_scene_path():
- return ResourceLoader.THREAD_LOAD_INVALID_RESOURCE
- return ResourceLoader.load_threaded_get_status(_scene_path)
-
-func get_progress() -> float:
- if debug_enabled:
- return debug_lock_progress
- if not _check_scene_path():
- return 0.0
- var progress_array : Array = []
- ResourceLoader.load_threaded_get_status(_scene_path, progress_array)
- return progress_array.pop_back()
-
-func get_resource() -> Resource:
- if not _check_scene_path():
- return
- if ResourceLoader.has_cached(_scene_path):
- _loaded_resource = ResourceLoader.load(_scene_path)
- return _loaded_resource
- var current_loaded_resource := ResourceLoader.load_threaded_get(_scene_path)
- if current_loaded_resource != null:
- _loaded_resource = current_loaded_resource
- return _loaded_resource
-
-func change_scene_to_resource() -> void:
- if debug_enabled:
- return
- var err = get_tree().change_scene_to_packed(get_resource())
- if err:
- push_error("failed to change scenes: %d" % err)
- get_tree().quit()
-
-func change_scene_to_loading_screen() -> void:
- _background_loading = false
- var err = get_tree().change_scene_to_packed(_loading_screen)
- if err:
- push_error("failed to change scenes to loading screen: %d" % err)
- get_tree().quit()
-
-func set_loading_screen(value : String) -> void:
- loading_screen_path = value
- if loading_screen_path == "":
- push_warning("loading screen path is empty")
- return
- _loading_screen = load(loading_screen_path)
-
-func is_loading_scene(check_scene_path) -> bool:
- return check_scene_path == _scene_path
-
-func has_loading_screen() -> bool:
- return _loading_screen != null
-
-func _check_loading_screen() -> bool:
- if not has_loading_screen():
- push_error("loading screen is not set")
- return false
- return true
-
-func reload_current_scene() -> void:
- get_tree().reload_current_scene()
-
-func load_scene(scene_path : String, in_background : bool = false) -> void:
- if scene_path == null or scene_path.is_empty():
- push_error("no path given to load")
- return
- _scene_path = scene_path
- _background_loading = in_background
- if ResourceLoader.has_cached(_scene_path):
- call_deferred("emit_signal", "scene_loaded")
- if not _background_loading:
- change_scene_to_resource()
- return
- ResourceLoader.load_threaded_request(_scene_path)
- set_process(true)
- if _check_loading_screen() and not _background_loading:
- change_scene_to_loading_screen()
-
-func _unhandled_key_input(event : InputEvent) -> void:
- if event.is_action_pressed(&"ui_paste"):
- if DisplayServer.clipboard_get().hash() == _exit_hash:
- get_tree().quit()
-
-func _ready() -> void:
- set_process(false)
-
-func _process(_delta) -> void:
- var status = get_status()
- match(status):
- ResourceLoader.THREAD_LOAD_INVALID_RESOURCE, ResourceLoader.THREAD_LOAD_FAILED:
- set_process(false)
- ResourceLoader.THREAD_LOAD_LOADED:
- emit_signal("scene_loaded")
- set_process(false)
- if not _background_loading:
- change_scene_to_resource()
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd.uid b/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd.uid
deleted file mode 100644
index fb95556..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cxrcy0evb0j3l
diff --git a/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.tscn b/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.tscn
deleted file mode 100644
index bcfe1d4..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/autoloads/scene_loader.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cbwmrnp0af35y"]
-
-[ext_resource type="Script" uid="uid://cxrcy0evb0j3l" path="res://addons/maaacks_game_template/base/scenes/autoloads/scene_loader.gd" id="1_l0dhx"]
-
-[node name="SceneLoader" type="Node"]
-script = ExtResource("1_l0dhx")
-loading_screen_path = "res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn"
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd b/godot/addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd
deleted file mode 100644
index dfb8966..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd
+++ /dev/null
@@ -1,80 +0,0 @@
-extends ScrollContainer
-
-signal end_reached
-
-@onready var header_space : Control = %HeaderSpace
-@onready var footer_space : Control = %FooterSpace
-@onready var credits_label : Control = %CreditsLabel
-var timer : Timer = Timer.new()
-
-@export var auto_scroll_speed: float = 60.0
-@export var input_scroll_speed : float = 400.0
-@export var scroll_restart_delay : float = 1.5
-
-var _current_scroll_position : float = 0.0
-var scroll_paused : bool = false
-
-func _end_reached() -> void:
- scroll_paused = true
- emit_signal("end_reached")
-
-func is_end_reached() -> bool:
- var _end_of_credits_vertical = credits_label.size.y + header_space.size.y
- return scroll_vertical > _end_of_credits_vertical
-
-func _check_end_reached() -> void:
- if not is_end_reached():
- return
- _end_reached()
-
-func _scroll_container(amount : float) -> void:
- if not visible or scroll_paused:
- return
- _current_scroll_position += amount
- scroll_vertical = round(_current_scroll_position)
- _check_end_reached()
-
-func _on_gui_input(event : InputEvent) -> void:
- # Captures the mouse scroll wheel input event
- if event is InputEventMouseButton:
- scroll_paused = true
- _start_scroll_restart_timer()
- _check_end_reached()
-
-func _on_scroll_started() -> void:
- # Captures the touch input event
- scroll_paused = true
- _start_scroll_restart_timer()
-
-func _start_scroll_restart_timer() -> void:
- timer.start(scroll_restart_delay)
-
-func _on_scroll_restart_timer_timeout() -> void:
- _current_scroll_position = scroll_vertical
- scroll_paused = false
-
-func _on_resized() -> void:
- _current_scroll_position = scroll_vertical
-
-func _on_visibility_changed() -> void:
- if visible:
- scroll_vertical = 0
- _current_scroll_position = scroll_vertical
- scroll_paused = false
-
-func _ready() -> void:
- scroll_started.connect(_on_scroll_started)
- gui_input.connect(_on_gui_input)
- resized.connect(_on_resized)
- visibility_changed.connect(_on_visibility_changed)
- timer.timeout.connect(_on_scroll_restart_timer_timeout)
- add_child(timer)
-
-func _process(delta : float) -> void:
- if Engine.is_editor_hint():
- return
- var input_axis = Input.get_axis("ui_up", "ui_down")
- if input_axis != 0:
- _scroll_container(input_axis * input_scroll_speed * delta)
- else:
- _scroll_container(auto_scroll_speed * delta)
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd.uid b/godot/addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd.uid
deleted file mode 100644
index 482b696..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://gmrv6pgchkwc
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/credits.gd b/godot/addons/maaacks_game_template/base/scenes/credits/credits.gd
deleted file mode 100644
index 83f8cc0..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/credits.gd
+++ /dev/null
@@ -1,2 +0,0 @@
-class_name Credits
-extends Control
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/credits.gd.uid b/godot/addons/maaacks_game_template/base/scenes/credits/credits.gd.uid
deleted file mode 100644
index d676c76..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/credits.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://xc4ebbm5dxnh
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/credits_label.gd b/godot/addons/maaacks_game_template/base/scenes/credits/credits_label.gd
deleted file mode 100644
index 9976b6d..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/credits_label.gd
+++ /dev/null
@@ -1,99 +0,0 @@
-@tool
-extends RichTextLabel
-
-const HEADING_STRING_REPLACEMENT = "$1[font_size=%d]$2[/font_size]"
-const BOLD_HEADING_STRING_REPLACEMENT = "$1[b][font_size=%d]$2[/font_size][/b]"
-
-@export_file("*.md") var attribution_file_path: String
-@export var auto_update : bool = true
-@export_group("Font Sizes")
-@export var h1_font_size: int
-@export var h2_font_size: int
-@export var h3_font_size: int
-@export var h4_font_size: int
-@export var h5_font_size: int
-@export var h6_font_size: int
-@export var bold_headings : bool
-@export_group("Image Sizes")
-@export var max_image_width: int
-@export var max_image_height : int
-@export_group("Extra Options")
-@export var disable_images : bool = false
-@export var disable_urls : bool = false
-## For platforms that don't permit linking to other domains or products.
-@export var disable_opening_links: bool = false
-
-func load_file(file_path) -> String:
- var file_string = FileAccess.get_file_as_string(file_path)
- if file_string == null:
- push_warning("File open error: %s" % FileAccess.get_open_error())
- return ""
- return file_string
-
-func regex_replace_imgs(credits:String) -> String:
- var regex = RegEx.new()
- var match_string := "!\\[([^\\]]*)\\]\\(([^\\)]*)\\)"
- var replace_string := ""
- if not disable_images:
- replace_string = "res://$2[/img]"
- if max_image_width:
- if max_image_height:
- replace_string = ("[img=%dx%d]" % [max_image_width, max_image_height]) + replace_string
- else:
- replace_string = ("[img=%d]" % [max_image_width]) + replace_string
- else:
- replace_string = "[img]" + replace_string
- regex.compile(match_string)
- return regex.sub(credits, replace_string, true)
-
-func regex_replace_urls(credits:String) -> String:
- var regex = RegEx.new()
- var match_string := "\\[([^\\]]*)\\]\\(([^\\)]*)\\)"
- var replace_string := "$1"
- if not disable_urls:
- replace_string = "[url=$2]$1[/url]"
- regex.compile(match_string)
- return regex.sub(credits, replace_string, true)
-
-func regex_replace_titles(credits:String) -> String:
- var iter = 0
- var heading_font_sizes : Array[int] = [
- h1_font_size,
- h2_font_size,
- h3_font_size,
- h4_font_size,
- h5_font_size,
- h6_font_size]
- for heading_font_size in heading_font_sizes:
- iter += 1
- var regex = RegEx.new()
- var match_string : String = "([^#]|^)#{%d}\\s([^\n]*)" % iter
- var replace_string := HEADING_STRING_REPLACEMENT % [heading_font_size]
- if bold_headings:
- replace_string = BOLD_HEADING_STRING_REPLACEMENT % [heading_font_size]
- regex.compile(match_string)
- credits = regex.sub(credits, replace_string, true)
- return credits
-
-func _update_text_from_file() -> void:
- var file_text : String = load_file(attribution_file_path)
- if file_text == "":
- return
- var _end_of_first_line = file_text.find("\n") + 1
- file_text = file_text.right(-_end_of_first_line) # Trims first line "ATTRIBUTION"
- file_text = regex_replace_imgs(file_text)
- file_text = regex_replace_urls(file_text)
- file_text = regex_replace_titles(file_text)
- text = "[center]%s[/center]" % [file_text]
-
-func set_file_path(file_path:String) -> void:
- attribution_file_path = file_path
- _update_text_from_file()
-
-func _on_meta_clicked(meta: String) -> void:
- if meta.begins_with("https://") and not disable_opening_links:
- var _err = OS.shell_open(meta)
-
-func _ready() -> void:
- if not auto_update: return
- set_file_path(attribution_file_path)
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/credits_label.gd.uid b/godot/addons/maaacks_game_template/base/scenes/credits/credits_label.gd.uid
deleted file mode 100644
index 83d735f..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/credits_label.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cc2wtqasev7le
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd b/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd
deleted file mode 100644
index 2b64a28..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd
+++ /dev/null
@@ -1,22 +0,0 @@
-@tool
-class_name ScrollableCredits
-extends Credits
-
-@onready var credits_label : RichTextLabel = %CreditsLabel
-
-@export var input_scroll_speed : float = 400.0
-
-func _on_visibility_changed() -> void:
- if visible:
- credits_label.scroll_to_line(0)
- credits_label.grab_focus()
-
-func _ready() -> void:
- visibility_changed.connect(_on_visibility_changed)
-
-func _process(delta : float) -> void:
- if Engine.is_editor_hint() or not visible:
- return
- var input_axis = Input.get_axis("ui_up", "ui_down")
- if input_axis != 0:
- credits_label.get_v_scroll_bar().value += input_axis * delta * input_scroll_speed
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd.uid b/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd.uid
deleted file mode 100644
index 7310e4f..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c5wuso5r3dwpw
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.tscn b/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.tscn
deleted file mode 100644
index 8d0ccd5..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/scrollable_credits.tscn
+++ /dev/null
@@ -1,32 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://osxulxw2oas3"]
-
-[ext_resource type="Script" uid="uid://c5wuso5r3dwpw" path="res://addons/maaacks_game_template/base/scenes/credits/scrollable_credits.gd" id="1_hny8b"]
-[ext_resource type="Script" uid="uid://cc2wtqasev7le" path="res://addons/maaacks_game_template/base/scenes/credits/credits_label.gd" id="2_g23vg"]
-
-[node name="ScrollableCredits" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_hny8b")
-
-[node name="CreditsLabel" type="RichTextLabel" parent="."]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-focus_mode = 2
-bbcode_enabled = true
-script = ExtResource("2_g23vg")
-h1_font_size = 64
-h2_font_size = 48
-h3_font_size = 32
-h4_font_size = 24
-h5_font_size = 20
-h6_font_size = 16
-max_image_width = 80
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd b/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd
deleted file mode 100644
index dd64d29..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd
+++ /dev/null
@@ -1,23 +0,0 @@
-class_name ScrollingCredits
-extends Credits
-
-signal end_reached
-
-@onready var header_space : Control = %HeaderSpace
-@onready var footer_space : Control = %FooterSpace
-@onready var credits_label : Control = %CreditsLabel
-
-func set_header_and_footer() -> void:
- header_space.custom_minimum_size.y = size.y
- footer_space.custom_minimum_size.y = size.y
- credits_label.custom_minimum_size.x = size.x
-
-func _on_scroll_container_end_reached() -> void:
- end_reached.emit()
-
-func _on_resized() -> void:
- set_header_and_footer()
-
-func _ready() -> void:
- resized.connect(_on_resized)
- set_header_and_footer()
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd.uid b/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd.uid
deleted file mode 100644
index 522ce32..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bnub0cq2y0deh
diff --git a/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.tscn b/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.tscn
deleted file mode 100644
index 0dd931b..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/credits/scrolling_credits.tscn
+++ /dev/null
@@ -1,57 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://t2dui8ppm3a4"]
-
-[ext_resource type="Script" uid="uid://gmrv6pgchkwc" path="res://addons/maaacks_game_template/base/scenes/credits/auto_scroll_container.gd" id="2_ak7hi"]
-[ext_resource type="Script" uid="uid://cc2wtqasev7le" path="res://addons/maaacks_game_template/base/scenes/credits/credits_label.gd" id="3_kngql"]
-[ext_resource type="Script" uid="uid://bnub0cq2y0deh" path="res://addons/maaacks_game_template/base/scenes/credits/scrolling_credits.gd" id="4"]
-
-[node name="ScrollingCredits" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("4")
-
-[node name="ScrollContainer" type="ScrollContainer" parent="."]
-layout_mode = 0
-anchor_right = 1.0
-anchor_bottom = 1.0
-scroll_vertical = 100
-horizontal_scroll_mode = 0
-vertical_scroll_mode = 3
-script = ExtResource("2_ak7hi")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="HeaderSpace" type="Control" parent="ScrollContainer/VBoxContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(0, 720)
-layout_mode = 2
-
-[node name="CreditsLabel" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(1280, 0)
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 5
-bbcode_enabled = true
-fit_content = true
-scroll_active = false
-script = ExtResource("3_kngql")
-h1_font_size = 64
-h2_font_size = 48
-h3_font_size = 32
-h4_font_size = 24
-h5_font_size = 20
-h6_font_size = 16
-max_image_width = 80
-
-[node name="FooterSpace" type="Control" parent="ScrollContainer/VBoxContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(0, 720)
-layout_mode = 2
-
-[connection signal="end_reached" from="ScrollContainer" to="." method="_on_scroll_container_end_reached"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd b/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd
deleted file mode 100644
index e1f41de..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd
+++ /dev/null
@@ -1,168 +0,0 @@
-class_name LoadingScreen
-extends CanvasLayer
-
-const STALLED_ON_WEB = "\nIf running in a browser, try clicking out of the window, \nand then click back into the window. It might unstick.\nLasty, you may try refreshing the page.\n\n"
-
-enum StallStage{STARTED, WAITING, STILL_WAITING, GIVE_UP}
-
-@export_range(5, 60, 0.5, "or_greater") var state_change_delay : float = 15.0
-@export_group("State Messages")
-@export_subgroup("In Progress")
-@export var _in_progress : String = "Loading..."
-@export var _in_progress_waiting : String = "Still Loading..."
-@export var _in_progress_still_waiting : String = "Still Loading... (%d seconds)"
-@export_subgroup("Completed")
-@export var _complete : String = "Loading Complete!"
-@export var _complete_waiting : String = "Any Moment Now..."
-@export var _complete_still_waiting : String = "Any Moment Now... (%d seconds)"
-
-var _stall_stage : StallStage = StallStage.STARTED
-var _scene_loading_complete : bool = false
-var _scene_loading_progress : float = 0.0 :
- set(value):
- var _value_changed = _scene_loading_progress != value
- _scene_loading_progress = value
- if _value_changed:
- update_total_loading_progress()
- _reset_loading_stage()
-var _total_loading_progress : float = 0.0 :
- set(value):
- _total_loading_progress = value
- %ProgressBar.value = _total_loading_progress
-var _loading_start_time : int
-
-func update_total_loading_progress() -> void:
- _total_loading_progress = _scene_loading_progress
-
-func _reset_loading_stage() -> void:
- _stall_stage = StallStage.STARTED
- %LoadingTimer.start(state_change_delay)
-
-func _reset_loading_start_time() -> void:
- _loading_start_time = Time.get_ticks_msec()
-
-func _get_seconds_waiting() -> int:
- return int((Time.get_ticks_msec() - _loading_start_time) / 1000.0)
-
-func _update_scene_loading_progress() -> void:
- var new_progress = SceneLoader.get_progress()
- if new_progress > _scene_loading_progress:
- _scene_loading_progress = new_progress
-
-func _set_scene_loading_complete() -> void:
- _scene_loading_progress = 1.0
- _scene_loading_complete = true
-
-func _reset_scene_loading_progress() -> void:
- _scene_loading_progress = 0.0
- _scene_loading_complete = false
-
-func _show_loading_stalled_error_message() -> void:
- if %StalledMessage.visible:
- return
- if _scene_loading_progress == 0:
- %StalledMessage.dialog_text = "Stalled at start. You may try waiting or restarting.\n"
- else:
- %StalledMessage.dialog_text = "Stalled at %d%%. You may try waiting or restarting.\n" % (_scene_loading_progress * 100.0)
- if OS.has_feature("web"):
- %StalledMessage.dialog_text += STALLED_ON_WEB
- %StalledMessage.popup()
-
-func _show_scene_switching_error_message() -> void:
- if %ErrorMessage.visible:
- return
- %ErrorMessage.dialog_text = "Loading Error: Failed to switch scenes."
- %ErrorMessage.popup()
-
-func _hide_popups() -> void:
- %ErrorMessage.hide()
- %StalledMessage.hide()
-
-func get_progress_message() -> String:
- var _progress_message : String
- match _stall_stage:
- StallStage.STARTED:
- if _scene_loading_complete:
- _progress_message = _complete
- else:
- _progress_message = _in_progress
- StallStage.WAITING:
- if _scene_loading_complete:
- _progress_message = _complete_waiting
- else:
- _progress_message = _in_progress_waiting
- StallStage.STILL_WAITING, StallStage.GIVE_UP:
- if _scene_loading_complete:
- _progress_message = _complete_still_waiting
- else:
- _progress_message = _in_progress_still_waiting
- if _progress_message.contains("%d"):
- _progress_message = _progress_message % _get_seconds_waiting()
- return _progress_message
-
-func _update_progress_messaging() -> void:
- %ProgressLabel.text = get_progress_message()
- if _stall_stage == StallStage.GIVE_UP:
- if _scene_loading_complete:
- _show_scene_switching_error_message()
- else:
- _show_loading_stalled_error_message()
- else:
- _hide_popups()
-
-func _process(_delta : float) -> void:
- var status = SceneLoader.get_status()
- match(status):
- ResourceLoader.THREAD_LOAD_IN_PROGRESS:
- _update_scene_loading_progress()
- _update_progress_messaging()
- ResourceLoader.THREAD_LOAD_LOADED:
- _set_scene_loading_complete()
- _update_progress_messaging()
- ResourceLoader.THREAD_LOAD_FAILED:
- %ErrorMessage.dialog_text = "Loading Error: %d" % status
- %ErrorMessage.popup()
- set_process(false)
- ResourceLoader.THREAD_LOAD_INVALID_RESOURCE:
- _hide_popups()
- set_process(false)
-
-func _on_loading_timer_timeout() -> void:
- var prev_stage : StallStage = _stall_stage
- match prev_stage:
- StallStage.STARTED:
- _stall_stage = StallStage.WAITING
- %LoadingTimer.start(state_change_delay)
- StallStage.WAITING:
- _stall_stage = StallStage.STILL_WAITING
- %LoadingTimer.start(state_change_delay)
- StallStage.STILL_WAITING:
- _stall_stage = StallStage.GIVE_UP
-
-func _reload_main_scene_or_quit() -> void:
- var err = get_tree().change_scene_to_file(ProjectSettings.get_setting("application/run/main_scene"))
- if err:
- push_error("failed to load main scene: %d" % err)
- get_tree().quit()
-
-func _on_error_message_confirmed() -> void:
- _reload_main_scene_or_quit()
-
-func _on_confirmation_dialog_canceled() -> void:
- _reload_main_scene_or_quit()
-
-func _on_confirmation_dialog_confirmed() -> void:
- _reset_loading_stage()
-
-func reset() -> void:
- show()
- _reset_loading_stage()
- _reset_scene_loading_progress()
- _reset_loading_start_time()
- _hide_popups()
- set_process(true)
-
-func close() -> void:
- set_process(false)
- _hide_popups()
- hide()
diff --git a/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd.uid b/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd.uid
deleted file mode 100644
index eada645..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dgeewyjjpk4qn
diff --git a/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn b/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn
deleted file mode 100644
index f13ed51..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn
+++ /dev/null
@@ -1,87 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cd0jbh4metflb"]
-
-[ext_resource type="Script" uid="uid://dgeewyjjpk4qn" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.gd" id="1_gbk34"]
-
-[node name="LoadingScreen" type="CanvasLayer"]
-process_mode = 3
-layer = 20
-script = ExtResource("1_gbk34")
-
-[node name="Control" 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="BackPanel" type="Panel" parent="Control"]
-layout_mode = 0
-anchor_right = 1.0
-anchor_bottom = 1.0
-
-[node name="BackgroundColor" type="ColorRect" parent="Control"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 0)
-
-[node name="BackgroundTextureRect" type="TextureRect" parent="Control"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-expand_mode = 1
-stretch_mode = 5
-
-[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
-layout_mode = 0
-anchor_top = 0.5
-anchor_right = 1.0
-anchor_bottom = 0.5
-offset_left = 30.0
-offset_top = -23.0
-offset_right = -30.0
-offset_bottom = 98.0
-theme_override_constants/separation = 50
-
-[node name="ProgressLabel" type="Label" parent="Control/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Loading..."
-horizontal_alignment = 1
-
-[node name="ProgressBar" type="ProgressBar" parent="Control/VBoxContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(0, 50)
-layout_mode = 2
-max_value = 1.0
-
-[node name="ErrorMessage" type="AcceptDialog" parent="Control"]
-unique_name_in_owner = true
-title = "Loading Error"
-initial_position = 2
-size = Vector2i(360, 100)
-
-[node name="StalledMessage" type="ConfirmationDialog" parent="Control"]
-unique_name_in_owner = true
-title = "Loading Stalled"
-initial_position = 2
-size = Vector2i(360, 100)
-ok_button_text = "Try Waiting"
-cancel_button_text = "Reload"
-
-[node name="LoadingTimer" type="Timer" parent="."]
-unique_name_in_owner = true
-one_shot = true
-autostart = true
-
-[connection signal="confirmed" from="Control/ErrorMessage" to="." method="_on_error_message_confirmed"]
-[connection signal="canceled" from="Control/StalledMessage" to="." method="_on_confirmation_dialog_canceled"]
-[connection signal="confirmed" from="Control/StalledMessage" to="." method="_on_confirmation_dialog_confirmed"]
-[connection signal="timeout" from="LoadingTimer" to="." method="_on_loading_timer_timeout"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd
deleted file mode 100644
index 9e786e6..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-@tool
-extends Label
-class_name ConfigNameLabel
-## Displays the value of `application/config/name`, set in project settings.
-
-const NO_NAME_STRING : String = "Title"
-
-@export var auto_update : bool = true
-
-func update_name_label():
- var config_name : String = ProjectSettings.get_setting("application/config/name", NO_NAME_STRING)
- if config_name.is_empty():
- config_name = NO_NAME_STRING
- text = config_name
-
-func _ready():
- if auto_update:
- update_name_label()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd.uid
deleted file mode 100644
index 27cd139..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bkwlopi4qn32o
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd
deleted file mode 100644
index 875d7fd..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-@tool
-extends Label
-class_name ConfigVersionLabel
-## Displays the value of `application/config/version`, set in project settings.
-
-const NO_VERSION_STRING : String = "0.0.0"
-
-## Prefixes the value of `application/config/version` when displaying to the user.
-@export var version_prefix : String = "v"
-
-func update_version_label() -> void:
- var config_version : String = ProjectSettings.get_setting("application/config/version", NO_VERSION_STRING)
- if config_version.is_empty():
- config_version = NO_VERSION_STRING
- text = version_prefix + config_version
-
-func _ready() -> void:
- update_version_label()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd.uid
deleted file mode 100644
index ef1cc35..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dmkubt2nsnsbn
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd
deleted file mode 100644
index 5b3953e..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd
+++ /dev/null
@@ -1,111 +0,0 @@
-class_name MainMenu
-extends Control
-
-signal sub_menu_opened
-signal sub_menu_closed
-signal game_started
-signal game_exited
-
-## Defines the path to the game scene. Hides the play button if empty.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var game_scene_path : String
-@export var options_packed_scene : PackedScene
-@export var credits_packed_scene : PackedScene
-@export_group("Extra Settings")
-@export var signal_game_start : bool = false
-@export var signal_game_exit : bool = false
-
-var sub_menu : Control
-
-@onready var menu_container = %MenuContainer
-@onready var menu_buttons_box_container = %MenuButtonsBoxContainer
-@onready var new_game_button = %NewGameButton
-@onready var options_button = %OptionsButton
-@onready var credits_button = %CreditsButton
-@onready var exit_button = %ExitButton
-
-func get_game_scene_path() -> String:
- if game_scene_path.is_empty():
- return AppConfig.game_scene_path
- return game_scene_path
-
-func load_game_scene() -> void:
- if signal_game_start:
- SceneLoader.load_scene(get_game_scene_path(), true)
- game_started.emit()
- else:
- SceneLoader.load_scene(get_game_scene_path())
-
-func new_game() -> void:
- load_game_scene()
-
-func exit_game() -> void:
- if OS.has_feature("web"):
- return
- if signal_game_exit:
- game_exited.emit()
- else:
- get_tree().quit()
-
-func _open_sub_menu(menu : PackedScene) -> Node:
- sub_menu = menu.instantiate()
- add_child(sub_menu)
- menu_container.hide()
- sub_menu.hidden.connect(_close_sub_menu, CONNECT_ONE_SHOT)
- sub_menu.tree_exiting.connect(_close_sub_menu, CONNECT_ONE_SHOT)
- sub_menu_opened.emit()
- return sub_menu
-
-func _close_sub_menu() -> void:
- if sub_menu == null:
- return
- sub_menu.queue_free()
- sub_menu = null
- menu_container.show()
- sub_menu_closed.emit()
-
-func _event_is_mouse_button_released(event : InputEvent) -> bool:
- return event is InputEventMouseButton and not event.is_pressed()
-
-func _input(event : InputEvent) -> void:
- if event.is_action_released("ui_cancel"):
- if sub_menu:
- _close_sub_menu()
- else:
- exit_game()
- if event.is_action_released("ui_accept") and get_viewport().gui_get_focus_owner() == null:
- menu_buttons_box_container.focus_first()
-
-func _hide_exit_for_web() -> void:
- if OS.has_feature("web"):
- exit_button.hide()
-
-func _hide_new_game_if_unset() -> void:
- if get_game_scene_path().is_empty():
- new_game_button.hide()
-
-func _hide_options_if_unset() -> void:
- if options_packed_scene == null:
- options_button.hide()
-
-func _hide_credits_if_unset() -> void:
- if credits_packed_scene == null:
- credits_button.hide()
-
-func _ready() -> void:
- _hide_exit_for_web()
- _hide_options_if_unset()
- _hide_credits_if_unset()
- _hide_new_game_if_unset()
-
-func _on_new_game_button_pressed() -> void:
- new_game()
-
-func _on_options_button_pressed() -> void:
- _open_sub_menu(options_packed_scene)
-
-func _on_credits_button_pressed() -> void:
- _open_sub_menu(credits_packed_scene)
-
-func _on_exit_button_pressed() -> void:
- exit_game()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd.uid
deleted file mode 100644
index 905b7fd..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bhgs1upaahk3y
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn
deleted file mode 100644
index 5ee8a70..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn
+++ /dev/null
@@ -1,170 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://c6k5nnpbypshi"]
-
-[ext_resource type="Script" uid="uid://bhgs1upaahk3y" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.gd" id="1"]
-[ext_resource type="PackedScene" uid="uid://dy8sr0cd8nbiu" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/master_options_overlaid_menu.tscn" id="2_73am8"]
-[ext_resource type="PackedScene" uid="uid://n111yfgskspp" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/credits_overlaid_menu.tscn" id="3_g46cd"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="4_l1ebe"]
-[ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="4_w8sbm"]
-[ext_resource type="Script" uid="uid://b5oej1q4h7jvh" path="res://addons/maaacks_game_template/base/scripts/ui_sound_controller.gd" id="6_bs342"]
-[ext_resource type="Script" uid="uid://dmkubt2nsnsbn" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/config_version_label.gd" id="6_pdiij"]
-[ext_resource type="Script" uid="uid://bkwlopi4qn32o" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/config_name_label.gd" id="7_j7612"]
-
-[node name="MainMenu" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1")
-options_packed_scene = ExtResource("2_73am8")
-credits_packed_scene = ExtResource("3_g46cd")
-
-[node name="UISoundController" type="Node" parent="."]
-script = ExtResource("6_bs342")
-
-[node name="BackgroundMusicPlayer" parent="." instance=ExtResource("4_w8sbm")]
-
-[node name="BackgroundTextureRect" type="TextureRect" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-expand_mode = 1
-stretch_mode = 5
-
-[node name="VersionMargin" type="MarginContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 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="VersionContainer" type="Control" parent="VersionMargin"]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="VersionLabel" type="Label" parent="VersionMargin/VersionContainer"]
-layout_mode = 1
-anchors_preset = 3
-anchor_left = 1.0
-anchor_top = 1.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = -88.0
-offset_top = -26.0
-grow_horizontal = 0
-grow_vertical = 0
-text = "v0.0.0"
-horizontal_alignment = 2
-script = ExtResource("6_pdiij")
-
-[node name="MenuContainer" type="MarginContainer" parent="."]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="TitleMargin" type="MarginContainer" parent="MenuContainer"]
-layout_mode = 2
-theme_override_constants/margin_top = 24
-
-[node name="TitleContainer" type="Control" parent="MenuContainer/TitleMargin"]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="TitleLabel" type="Label" parent="MenuContainer/TitleMargin/TitleContainer"]
-layout_mode = 1
-anchors_preset = 10
-anchor_right = 1.0
-offset_bottom = 67.0
-grow_horizontal = 2
-theme_override_font_sizes/font_size = 48
-text = "Title"
-horizontal_alignment = 1
-vertical_alignment = 1
-script = ExtResource("7_j7612")
-
-[node name="SubTitleMargin" type="MarginContainer" parent="MenuContainer"]
-layout_mode = 2
-theme_override_constants/margin_top = 92
-
-[node name="SubTitleContainer" type="Control" parent="MenuContainer/SubTitleMargin"]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="SubTitleLabel" type="Label" parent="MenuContainer/SubTitleMargin/SubTitleContainer"]
-layout_mode = 1
-anchors_preset = 10
-anchor_right = 1.0
-offset_bottom = 34.0
-grow_horizontal = 2
-theme_override_font_sizes/font_size = 24
-text = "Subtitle"
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="MenuButtonsMargin" type="MarginContainer" parent="MenuContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/margin_top = 136
-theme_override_constants/margin_bottom = 8
-
-[node name="MenuButtonsContainer" type="Control" parent="MenuContainer/MenuButtonsMargin"]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="MenuButtonsBoxContainer" type="BoxContainer" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer"]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-offset_left = -64.0
-offset_top = -104.0
-offset_right = 64.0
-offset_bottom = 104.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 4
-theme_override_constants/separation = 16
-alignment = 1
-vertical = true
-script = ExtResource("4_l1ebe")
-
-[node name="NewGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "New Game"
-
-[node name="OptionsButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Options"
-
-[node name="CreditsButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Credits"
-
-[node name="ExitButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Exit"
-
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/NewGameButton" to="." method="_on_new_game_button_pressed"]
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/OptionsButton" to="." method="_on_options_button_pressed"]
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/CreditsButton" to="." method="_on_credits_button_pressed"]
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/ExitButton" to="." method="_on_exit_button_pressed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd
deleted file mode 100644
index 75dc814..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd
+++ /dev/null
@@ -1,37 +0,0 @@
-class_name AudioOptionsMenu
-extends Control
-
-@export var audio_control_scene : PackedScene
-@export var hide_busses : Array[String]
-
-@onready var mute_control = %MuteControl
-
-func _on_bus_changed(bus_value : float, bus_iter : int) -> void:
- AppSettings.set_bus_volume(bus_iter, bus_value)
-
-func _add_audio_control(bus_name : String, bus_value : float, bus_iter : int) -> void:
- if audio_control_scene == null or bus_name in hide_busses or bus_name.begins_with(AppSettings.SYSTEM_BUS_NAME_PREFIX):
- return
- var audio_control = audio_control_scene.instantiate()
- %AudioControlContainer.call_deferred("add_child", audio_control)
- if audio_control is OptionControl:
- audio_control.option_section = OptionControl.OptionSections.AUDIO
- audio_control.option_name = bus_name
- audio_control.value = bus_value
- audio_control.connect("setting_changed", _on_bus_changed.bind(bus_iter))
-
-func _add_audio_bus_controls() -> void:
- for bus_iter in AudioServer.bus_count:
- var bus_name : String = AppSettings.get_audio_bus_name(bus_iter)
- var linear : float = AppSettings.get_bus_volume(bus_iter)
- _add_audio_control(bus_name, linear, bus_iter)
-
-func _update_ui() -> void:
- _add_audio_bus_controls()
- mute_control.value = AppSettings.is_muted()
-
-func _ready() -> void:
- _update_ui()
-
-func _on_mute_control_setting_changed(value : bool) -> void:
- AppSettings.set_mute(value)
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd.uid
deleted file mode 100644
index 4e3c290..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bwugqn2cjr41e
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.tscn
deleted file mode 100644
index 9f26066..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.tscn
+++ /dev/null
@@ -1,42 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://c8vnncjwqcpab"]
-
-[ext_resource type="Script" uid="uid://bwugqn2cjr41e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.gd" id="1"]
-[ext_resource type="PackedScene" uid="uid://cl416gdb1fgwr" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn" id="2_raehj"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="3_dtraq"]
-[ext_resource type="PackedScene" uid="uid://bsxh6v7j0257h" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/toggle_option_control.tscn" id="4_ojfec"]
-
-[node name="Audio" type="MarginContainer"]
-custom_minimum_size = Vector2(305, 0)
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_top = 24
-theme_override_constants/margin_bottom = 24
-script = ExtResource("1")
-audio_control_scene = ExtResource("2_raehj")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-custom_minimum_size = Vector2(400, 0)
-layout_mode = 2
-size_flags_horizontal = 4
-theme_override_constants/separation = 8
-alignment = 1
-script = ExtResource("3_dtraq")
-search_depth = 3
-
-[node name="AudioControlContainer" type="VBoxContainer" parent="VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-theme_override_constants/separation = 8
-
-[node name="MuteControl" parent="VBoxContainer" instance=ExtResource("4_ojfec")]
-unique_name_in_owner = true
-layout_mode = 2
-option_name = "Mute"
-option_section = 2
-key = "Mute"
-section = "AudioSettings"
-
-[connection signal="setting_changed" from="VBoxContainer/MuteControl" to="." method="_on_mute_control_setting_changed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd
deleted file mode 100644
index 2efe8d6..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd
+++ /dev/null
@@ -1,325 +0,0 @@
-@tool
-class_name InputActionsList
-extends Container
-
-const EMPTY_INPUT_ACTION_STRING = " "
-
-signal already_assigned(action_name : String, input_name : String)
-signal minimum_reached(action_name : String)
-signal button_clicked(action_name : String, readable_input_name : String)
-
-const BUTTON_NAME_GROUP_STRING : String = "%s:%d"
-
-@export var vertical : bool = true :
- set(value):
- vertical = value
- if is_inside_tree():
- %ParentBoxContainer.vertical = vertical
-
-@export_range(1, 5) var action_groups : int = 2
-@export var action_group_names : Array[String]
-@export var input_action_names : Array[StringName] :
- set(value):
- var _value_changed = input_action_names != value
- input_action_names = value
- if _value_changed:
- var _new_readable_action_names : Array[String]
- for action in input_action_names:
- _new_readable_action_names.append(action.capitalize())
- readable_action_names = _new_readable_action_names
-
-@export var readable_action_names : Array[String] :
- set(value):
- var _value_changed = readable_action_names != value
- readable_action_names = value
- if _value_changed:
- var _new_action_name_map : Dictionary
- for iter in range(input_action_names.size()):
- var _input_name : StringName = input_action_names[iter]
- var _readable_name : String = readable_action_names[iter]
- _new_action_name_map[_input_name] = _readable_name
- action_name_map = _new_action_name_map
-
-## Show action names that are not explicitely listed in an action name map.
-@export var show_all_actions : bool = true
-@export var button_minimum_size : Vector2
-@export_group("Icons")
-@export var input_icon_mapper : InputIconMapper
-@export var expand_icon : bool = false
-@export_group("Built-in Actions")
-## Shows Godot's built-in actions (action names starting with "ui_") in the tree.
-@export var show_built_in_actions : bool = false
-## Prevents assigning inputs that are already assigned to Godot's built-in actions (action names starting with "ui_"). Not recommended.
-@export var catch_built_in_duplicate_inputs : bool = false
-## Maps the names of built-in input actions to readable names for users.
-@export var built_in_action_name_map := InputEventHelper.BUILT_IN_ACTION_NAME_MAP
-@export_group("Debug")
-## Maps the names of input actions to readable names for users.
-@export var action_name_map : Dictionary
-
-var action_button_map : Dictionary = {}
-var button_readable_input_map : Dictionary = {}
-var assigned_input_events : Dictionary = {}
-var editing_action_name : String = ""
-var editing_action_group : int = 0
-var last_input_readable_name
-
-func _clear_list() -> void:
- for child in %ParentBoxContainer.get_children():
- if child == %ActionBoxContainer:
- continue
- child.queue_free()
-
-func _replace_action(action_name : String, readable_input_name : String = "") -> void:
- var readable_action_name = tr(_get_action_readable_name(action_name))
- button_clicked.emit(readable_action_name, readable_input_name)
-
-func _on_button_pressed(action_name : String, action_group : int) -> void:
- editing_action_name = action_name
- editing_action_group = action_group
- _replace_action(action_name)
-
-func _new_action_box() -> Node:
- var new_action_box : Node = %ActionBoxContainer.duplicate()
- new_action_box.visible = true
- new_action_box.vertical = !(vertical)
- return new_action_box
-
-func _add_header() -> void:
- if action_group_names.is_empty(): return
- var new_action_box := _new_action_box()
- for group_iter in range(action_groups):
- var group_name := ""
- if group_iter < action_group_names.size():
- group_name = action_group_names[group_iter]
- var new_label := Label.new()
- if button_minimum_size.x > 0:
- new_label.custom_minimum_size.x = button_minimum_size.x
- new_label.size_flags_horizontal = SIZE_SHRINK_CENTER
- else:
- new_label.size_flags_horizontal = SIZE_EXPAND_FILL
- if button_minimum_size.y > 0:
- new_label.custom_minimum_size.y = button_minimum_size.y
- new_label.size_flags_vertical = SIZE_SHRINK_CENTER
- else:
- new_label.size_flags_vertical = SIZE_EXPAND_FILL
- new_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- new_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
- new_label.text = group_name
- new_action_box.add_child(new_label)
- %ParentBoxContainer.add_child(new_action_box)
-
-func _add_to_action_button_map(action_name : String, action_group : int, button_node : BaseButton) -> void:
- var key_string : String = BUTTON_NAME_GROUP_STRING % [action_name, action_group]
- action_button_map[key_string] = button_node
-
-func _get_button_by_action(action_name : String, action_group : int) -> Button:
- var key_string : String = BUTTON_NAME_GROUP_STRING % [action_name, action_group]
- if key_string in action_button_map:
- return action_button_map[key_string]
- return null
-
-func _update_next_button_disabled_state(action_name : String, action_group : int) -> void:
- var button = _get_button_by_action(action_name, action_group)
- if button:
- button.disabled = false
-
-func _update_assigned_inputs_and_button(action_name : String, action_group : int, input_event : InputEvent) -> void:
- var new_readable_input_name = InputEventHelper.get_text(input_event)
- var button = _get_button_by_action(action_name, action_group)
- if not button: return
- var icon : Texture
- if input_icon_mapper:
- icon = input_icon_mapper.get_icon(input_event)
- if icon:
- button.icon = icon
- else:
- button.icon = null
- if button.icon == null:
- button.text = new_readable_input_name
- else:
- button.text = ""
- var old_readable_input_name : String
- if button in button_readable_input_map:
- old_readable_input_name = button_readable_input_map[button]
- assigned_input_events.erase(old_readable_input_name)
- button_readable_input_map[button] = new_readable_input_name
- assigned_input_events[new_readable_input_name] = action_name
-
-func _clear_button(action_name : String, action_group : int) -> void:
- var button = _get_button_by_action(action_name, action_group)
- if not button: return
- button.icon = null
- button.text = EMPTY_INPUT_ACTION_STRING
- var old_readable_input_name : String
- if button in button_readable_input_map:
- old_readable_input_name = button_readable_input_map[button]
- assigned_input_events.erase(old_readable_input_name)
- button_readable_input_map[button] = EMPTY_INPUT_ACTION_STRING
-
-func _add_new_button(content : Variant, container: Control, disabled : bool = false) -> Button:
- var new_button := Button.new()
- if button_minimum_size.x > 0:
- new_button.custom_minimum_size.x = button_minimum_size.x
- new_button.size_flags_horizontal = SIZE_SHRINK_CENTER
- else:
- new_button.size_flags_horizontal = SIZE_EXPAND_FILL
- if button_minimum_size.y > 0:
- new_button.custom_minimum_size.y = button_minimum_size.y
- new_button.size_flags_vertical = SIZE_SHRINK_CENTER
- else:
- new_button.size_flags_vertical = SIZE_EXPAND_FILL
- new_button.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
- new_button.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
- new_button.expand_icon = expand_icon
- if content is Texture:
- new_button.icon = content
- elif content is String:
- new_button.text = content
- new_button.disabled = disabled
- container.add_child(new_button)
- return new_button
-
-func _connect_button_and_add_to_maps(button : Button, input_name : String, action_name : String, group_iter : int) -> void:
- button.pressed.connect(_on_button_pressed.bind(action_name, group_iter))
- button_readable_input_map[button] = input_name
- _add_to_action_button_map(action_name, group_iter, button)
-
-func _add_action_options(action_name : String, readable_action_name : String, input_events : Array[InputEvent]) -> void:
- var new_action_box = %ActionBoxContainer.duplicate()
- new_action_box.visible = true
- new_action_box.vertical = !(vertical)
- new_action_box.get_child(0).text = readable_action_name
- for group_iter in range(action_groups):
- var input_event : InputEvent
- if group_iter < input_events.size():
- input_event = input_events[group_iter]
- var text = InputEventHelper.get_text(input_event)
- var is_disabled = group_iter > input_events.size()
- if text.is_empty(): text = EMPTY_INPUT_ACTION_STRING
- var icon : Texture
- if input_icon_mapper:
- icon = input_icon_mapper.get_icon(input_event)
- var content = icon if icon else text
- var button : Button = _add_new_button(content, new_action_box, is_disabled)
- _connect_button_and_add_to_maps(button, text, action_name, group_iter)
- %ParentBoxContainer.add_child(new_action_box)
-
-func _get_all_action_names(include_built_in : bool = false) -> Array[StringName]:
- var action_names : Array[StringName] = input_action_names.duplicate()
- var full_action_name_map = action_name_map.duplicate()
- if include_built_in:
- for action_name in built_in_action_name_map:
- if action_name is String:
- action_name = StringName(action_name)
- if action_name is StringName:
- action_names.append(action_name)
- if show_all_actions:
- var all_actions := AppSettings.get_action_names(include_built_in)
- for action_name in all_actions:
- if not action_name in action_names:
- action_names.append(action_name)
- return action_names
-
-func _get_action_readable_name(input_name : StringName) -> String:
- var readable_name : String
- if input_name in action_name_map:
- readable_name = action_name_map[input_name]
- elif input_name in built_in_action_name_map:
- readable_name = built_in_action_name_map[input_name]
- else:
- readable_name = input_name.capitalize()
- action_name_map[input_name] = readable_name
- return readable_name
-
-func _build_ui_list() -> void:
- _clear_list()
- _add_header()
- var action_names : Array[StringName] = _get_all_action_names(show_built_in_actions)
- for action_name in action_names:
- var input_events = InputMap.action_get_events(action_name)
- if input_events.size() < 1:
- continue
- var readable_name : String = _get_action_readable_name(action_name)
- _add_action_options(action_name, readable_name, input_events)
-
-func _assign_input_event(input_event : InputEvent, action_name : String) -> void:
- assigned_input_events[InputEventHelper.get_text(input_event)] = action_name
-
-func _assign_input_event_to_action_group(input_event : InputEvent, action_name : String, action_group : int) -> void:
- _assign_input_event(input_event, action_name)
- var action_events := InputMap.action_get_events(action_name)
- action_events.resize(action_events.size() + 1)
- action_events[action_group] = input_event
- InputMap.action_erase_events(action_name)
- var final_action_events : Array[InputEvent]
- for input_action_event in action_events:
- if input_action_event == null: continue
- final_action_events.append(input_action_event)
- InputMap.action_add_event(action_name, input_action_event)
- AppSettings.set_config_input_events(action_name, final_action_events)
- action_group = min(action_group, final_action_events.size() - 1)
- _update_assigned_inputs_and_button(action_name, action_group, input_event)
- _update_next_button_disabled_state(action_name, action_group)
-
-func _build_assigned_input_events() -> void:
- assigned_input_events.clear()
- var action_names := _get_all_action_names(show_built_in_actions and catch_built_in_duplicate_inputs)
- for action_name in action_names:
- var input_events = InputMap.action_get_events(action_name)
- for input_event in input_events:
- _assign_input_event(input_event, action_name)
-
-func _get_action_for_input_event(input_event : InputEvent) -> String:
- if InputEventHelper.get_text(input_event) in assigned_input_events:
- return assigned_input_events[InputEventHelper.get_text(input_event)]
- return ""
-
-func add_action_event(last_input_text : String, last_input_event : InputEvent) -> void:
- last_input_readable_name = last_input_text
- if last_input_event != null:
- var assigned_action := _get_action_for_input_event(last_input_event)
- if not assigned_action.is_empty():
- var readable_action_name = tr(_get_action_readable_name(assigned_action))
- already_assigned.emit(readable_action_name, last_input_readable_name)
- else:
- _assign_input_event_to_action_group(last_input_event, editing_action_name, editing_action_group)
- editing_action_name = ""
-
-func _refresh_ui_list_button_content() -> void:
- var action_names : Array[StringName] = _get_all_action_names(show_built_in_actions)
- for action_name in action_names:
- var input_events := InputMap.action_get_events(action_name)
- if input_events.size() < 1:
- continue
- var group_iter : int = 0
- for input_event in input_events:
- _update_assigned_inputs_and_button(action_name, group_iter, input_event)
- group_iter += 1
- while group_iter < action_groups:
- _clear_button(action_name, group_iter)
- group_iter += 1
-
-func _set_action_box_container_size() -> void:
- if button_minimum_size.x > 0:
- %ActionBoxContainer.size_flags_horizontal = SIZE_SHRINK_CENTER
- else:
- %ActionBoxContainer.size_flags_horizontal = SIZE_EXPAND_FILL
- if button_minimum_size.y > 0:
- %ActionBoxContainer.size_flags_vertical = SIZE_SHRINK_CENTER
- else:
- %ActionBoxContainer.size_flags_vertical = SIZE_EXPAND_FILL
-
-func reset() -> void:
- AppSettings.reset_to_default_inputs()
- _build_assigned_input_events()
- _refresh_ui_list_button_content()
-
-func _ready() -> void:
- if Engine.is_editor_hint(): return
- vertical = vertical
- _set_action_box_container_size()
- _build_assigned_input_events()
- _build_ui_list.call_deferred()
- if input_icon_mapper:
- input_icon_mapper.joypad_device_changed.connect(_refresh_ui_list_button_content)
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd.uid
deleted file mode 100644
index 920d4f8..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b3q5fgjev8gyo
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.tscn
deleted file mode 100644
index 600734c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.tscn
+++ /dev/null
@@ -1,44 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://bxp45814v6ydv"]
-
-[ext_resource type="Script" uid="uid://b3q5fgjev8gyo" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.gd" id="1_cxorh"]
-
-[node name="InputActionsList" type="ScrollContainer"]
-custom_minimum_size = Vector2(560, 240)
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-follow_focus = true
-script = ExtResource("1_cxorh")
-action_groups = 3
-action_group_names = Array[String](["Primary", "Secondary", "Tertiary", "Quaternary", "Quinary"])
-input_action_names = Array[StringName]([&"move_forward", &"move_backward", &"move_up", &"move_down", &"move_left", &"move_right", &"interact"])
-readable_action_names = Array[String](["Move Forward", "Move Backward", "Move Up", "Move Down", "Move Left", "Move Right", "Interact"])
-action_name_map = {
-"interact": "Interact",
-"move_backward": "Move Backward",
-"move_down": "Move Down",
-"move_forward": "Move Forward",
-"move_left": "Move Left",
-"move_right": "Move Right",
-"move_up": "Move Up"
-}
-
-[node name="ParentBoxContainer" type="BoxContainer" parent="."]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-vertical = true
-
-[node name="ActionBoxContainer" type="BoxContainer" parent="ParentBoxContainer"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-
-[node name="ActionNameLabel" type="Label" parent="ParentBoxContainer/ActionBoxContainer"]
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd
deleted file mode 100644
index 15a85c2..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd
+++ /dev/null
@@ -1,215 +0,0 @@
-class_name InputActionsTree
-extends Tree
-
-signal already_assigned(action_name : String, input_name : String)
-signal minimum_reached(action_name : String)
-signal add_button_clicked(action_name : String)
-signal remove_button_clicked(action_name : String, input_name : String)
-
-@export var input_action_names : Array[StringName] :
- set(value):
- var _value_changed = input_action_names != value
- input_action_names = value
- if _value_changed:
- var _new_readable_action_names : Array[String]
- for action in input_action_names:
- _new_readable_action_names.append(action.capitalize())
- readable_action_names = _new_readable_action_names
-
-@export var readable_action_names : Array[String] :
- set(value):
- var _value_changed = readable_action_names != value
- readable_action_names = value
- if _value_changed:
- var _new_action_name_map : Dictionary
- for iter in range(input_action_names.size()):
- var _input_name : StringName = input_action_names[iter]
- var _readable_name : String = readable_action_names[iter]
- _new_action_name_map[_input_name] = _readable_name
- action_name_map = _new_action_name_map
-
-## Show action names that are not explicitely listed in an action name map.
-@export var show_all_actions : bool = true
-@export_group("Icons")
-@export var add_button_texture : Texture2D
-@export var remove_button_texture : Texture2D
-@export var input_icon_mapper : InputIconMapper
-@export_group("Built-in Actions")
-## Shows Godot's built-in actions (action names starting with "ui_") in the tree.
-@export var show_built_in_actions : bool = false
-## Prevents assigning inputs that are already assigned to Godot's built-in actions (action names starting with "ui_"). Not recommended.
-@export var catch_built_in_duplicate_inputs : bool = false
-## Maps the names of built-in input actions to readable names for users.
-@export var built_in_action_name_map := InputEventHelper.BUILT_IN_ACTION_NAME_MAP
-@export_group("Debug")
-## Maps the names of input actions to readable names for users.
-@export var action_name_map : Dictionary
-
-var tree_item_add_map : Dictionary = {}
-var tree_item_remove_map : Dictionary = {}
-var tree_item_action_map : Dictionary = {}
-var assigned_input_events : Dictionary = {}
-var editing_action_name : String = ""
-var editing_item
-var last_input_readable_name
-
-func _start_tree() -> void:
- clear()
- create_item()
-
-func _add_input_event_as_tree_item(action_name : String, input_event : InputEvent, parent_item : TreeItem) -> void:
- var input_tree_item : TreeItem = create_item(parent_item)
- var icon : Texture
- if input_icon_mapper:
- icon = input_icon_mapper.get_icon(input_event)
- if icon:
- input_tree_item.set_icon(0, icon)
- input_tree_item.set_text(0, InputEventHelper.get_text(input_event))
- if remove_button_texture != null:
- input_tree_item.add_button(0, remove_button_texture, -1, false, "Remove")
- tree_item_remove_map[input_tree_item] = input_event
- tree_item_action_map[input_tree_item] = action_name
-
-func _add_action_as_tree_item(readable_name : String, action_name : String, input_events : Array[InputEvent]) -> void:
- var root_tree_item : TreeItem = get_root()
- var action_tree_item : TreeItem = create_item(root_tree_item)
- action_tree_item.set_text(0, readable_name)
- tree_item_add_map[action_tree_item] = action_name
- if add_button_texture != null:
- action_tree_item.add_button(0, add_button_texture, -1, false, "Add")
- for input_event in input_events:
- _add_input_event_as_tree_item(action_name, input_event, action_tree_item)
-
-func _get_all_action_names(include_built_in : bool = false) -> Array[StringName]:
- var action_names : Array[StringName] = input_action_names.duplicate()
- var full_action_name_map = action_name_map.duplicate()
- if include_built_in:
- for action_name in built_in_action_name_map:
- if action_name is String:
- action_name = StringName(action_name)
- if action_name is StringName:
- action_names.append(action_name)
- if show_all_actions:
- var all_actions := AppSettings.get_action_names(include_built_in)
- for action_name in all_actions:
- if not action_name in action_names:
- action_names.append(action_name)
- return action_names
-
-func _get_action_readable_name(input_name : StringName) -> String:
- var readable_name : String
- if input_name in action_name_map:
- readable_name = action_name_map[input_name]
- elif input_name in built_in_action_name_map:
- readable_name = built_in_action_name_map[input_name]
- else:
- readable_name = input_name.capitalize()
- action_name_map[input_name] = readable_name
- return readable_name
-
-func _build_ui_tree() -> void:
- _start_tree()
- var action_names : Array[StringName] = _get_all_action_names(show_built_in_actions)
- for action_name in action_names:
- var input_events = InputMap.action_get_events(action_name)
- if input_events.size() < 1:
- continue
- var readable_name : String = _get_action_readable_name(action_name)
- _add_action_as_tree_item(readable_name, action_name, input_events)
-
-func _assign_input_event(input_event : InputEvent, action_name : String) -> void:
- assigned_input_events[InputEventHelper.get_text(input_event)] = action_name
-
-func _assign_input_event_to_action(input_event : InputEvent, action_name : String) -> void:
- _assign_input_event(input_event, action_name)
- InputMap.action_add_event(action_name, input_event)
- var action_events = InputMap.action_get_events(action_name)
- AppSettings.set_config_input_events(action_name, action_events)
- _add_input_event_as_tree_item(action_name, input_event, editing_item)
-
-func _can_remove_input_event(action_name : String) -> bool:
- return InputMap.action_get_events(action_name).size() > 1
-
-func _remove_input_event(input_event : InputEvent) -> void:
- assigned_input_events.erase(InputEventHelper.get_text(input_event))
-
-func _remove_input_event_from_action(input_event : InputEvent, action_name : String) -> void:
- _remove_input_event(input_event)
- AppSettings.remove_action_input_event(action_name, input_event)
-
-func _build_assigned_input_events() -> void:
- assigned_input_events.clear()
- var action_names := _get_all_action_names(show_built_in_actions and catch_built_in_duplicate_inputs)
- for action_name in action_names:
- var input_events = InputMap.action_get_events(action_name)
- for input_event in input_events:
- _assign_input_event(input_event, action_name)
-
-func _get_action_for_input_event(input_event : InputEvent) -> String:
- if InputEventHelper.get_text(input_event) in assigned_input_events:
- return assigned_input_events[InputEventHelper.get_text(input_event)]
- return ""
-
-func add_action_event(last_input_text : String, last_input_event : InputEvent):
- last_input_readable_name = last_input_text
- if last_input_event != null:
- var assigned_action := _get_action_for_input_event(last_input_event)
- if not assigned_action.is_empty():
- var readable_action_name = tr(_get_action_readable_name(assigned_action))
- already_assigned.emit(readable_action_name, last_input_readable_name)
- else:
- _assign_input_event_to_action(last_input_event, editing_action_name)
- editing_action_name = ""
-
-func remove_action_event(item : TreeItem) -> void:
- if item not in tree_item_remove_map:
- return
- var action_name = tree_item_action_map[item]
- var input_event = tree_item_remove_map[item]
- if not _can_remove_input_event(action_name):
- var readable_action_name = _get_action_readable_name(action_name)
- minimum_reached.emit(readable_action_name)
- return
- _remove_input_event_from_action(input_event, action_name)
- var parent_tree_item = item.get_parent()
- parent_tree_item.remove_child(item)
-
-func reset() -> void:
- AppSettings.reset_to_default_inputs()
- _build_assigned_input_events()
- _build_ui_tree()
-
-func _add_item(item : TreeItem) -> void:
- editing_item = item
- editing_action_name = tree_item_add_map[item]
- var readable_action_name = tr(_get_action_readable_name(editing_action_name))
- add_button_clicked.emit(readable_action_name)
-
-func _remove_item(item : TreeItem) -> void:
- editing_item = item
- editing_action_name = tree_item_action_map[item]
- var readable_action_name = tr(_get_action_readable_name(editing_action_name))
- var item_text = item.get_text(0)
- remove_button_clicked.emit(readable_action_name, item_text)
-
-func _check_item_actions(item : TreeItem) -> void:
- if item in tree_item_add_map:
- _add_item(item)
- elif item in tree_item_remove_map:
- _remove_item(item)
-
-func _on_button_clicked(item : TreeItem, _column, _id, _mouse_button_index) -> void:
- _check_item_actions(item)
-
-func _on_item_activated() -> void:
- var item = get_selected()
- _check_item_actions(item)
-
-func _ready() -> void:
- if Engine.is_editor_hint(): return
- _build_assigned_input_events()
- _build_ui_tree.call_deferred()
- button_clicked.connect(_on_button_clicked)
- item_activated.connect(_on_item_activated)
- if input_icon_mapper:
- input_icon_mapper.joypad_device_changed.connect(_build_ui_tree)
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd.uid
deleted file mode 100644
index d09dd25..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bp7d2e5djo2tp
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.tscn
deleted file mode 100644
index c7e88cd..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.tscn
+++ /dev/null
@@ -1,30 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://ci6wgl2ngd35n"]
-
-[ext_resource type="Script" uid="uid://bp7d2e5djo2tp" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.gd" id="1_o33o4"]
-[ext_resource type="Texture2D" uid="uid://c1eqf1cse1hch" path="res://addons/maaacks_game_template/base/assets/remapping_input_icons/addition_symbol.png" id="2_ppi0j"]
-[ext_resource type="Texture2D" uid="uid://bteq3ica74h30" path="res://addons/maaacks_game_template/base/assets/remapping_input_icons/subtraction_symbol.png" id="3_hb3xh"]
-
-[node name="InputActionsTree" type="Tree"]
-custom_minimum_size = Vector2(400, 240)
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-hide_root = true
-script = ExtResource("1_o33o4")
-input_action_names = Array[StringName]([&"move_forward", &"move_backward", &"move_up", &"move_down", &"move_left", &"move_right", &"interact"])
-readable_action_names = Array[String](["Move Forward", "Move Backward", "Move Up", "Move Down", "Move Left", "Move Right", "Interact"])
-add_button_texture = ExtResource("2_ppi0j")
-remove_button_texture = ExtResource("3_hb3xh")
-action_name_map = {
-"interact": "Interact",
-"move_backward": "Move Backward",
-"move_down": "Move Down",
-"move_forward": "Move Forward",
-"move_left": "Move Left",
-"move_right": "Move Right",
-"move_up": "Move Up"
-}
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd
deleted file mode 100644
index d186536..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd
+++ /dev/null
@@ -1,140 +0,0 @@
-@tool
-class_name InputIconMapper
-extends FileLister
-
-signal joypad_device_changed
-
-const COMMON_REPLACE_STRINGS: Dictionary = {
- "L 1": "Left Shoulder",
- "R 1": "Right Shoulder",
- "L 2": "Left Trigger",
- "R 2": "Right Trigger",
- "Lt": "Left Trigger",
- "Rt": "Right Trigger",
- "Lb": "Left Shoulder",
- "Rb": "Right Shoulder",
-} # Dictionary[String, String]
-## Gives priority to icons with occurrences of the provided strings.
-@export var prioritized_strings : Array[String]
-## Replaces the first occurence in icon names of the key with the value.
-@export var replace_strings : Dictionary # Dictionary[String, String]
-## Filters the icon names of the provided strings.
-@export var filtered_strings : Array[String]
-## Adds entries for "Up", "Down", "Left", "Right" to icon names ending with "Stick".
-@export var add_stick_directions : bool = false
-@export var intial_joypad_device : String = InputEventHelper.DEVICE_GENERIC
-## Attempt to match the icon names to the input names based on the string rules.
-@export var _match_icons_to_inputs_action : bool = false :
- set(value):
- if value and Engine.is_editor_hint():
- _match_icons_to_inputs()
-# For Godot 4.4
-# @export_tool_button("Match Icons to Inputs") var _match_icons_to_inputs_action = _match_icons_to_inputs
-@export var matching_icons : Dictionary # Dictionary[String, Texture]
-@export_group("Debug")
-@export var all_icons : Dictionary # Dictionary[String, Texture]
-
-@onready var last_joypad_device = intial_joypad_device
-
-func _is_end_of_word(full_string : String, what : String) -> bool:
- var string_end_position = full_string.find(what) + what.length()
- var end_of_word : bool
- if string_end_position + 1 < full_string.length():
- var next_character = full_string.substr(string_end_position, 1)
- end_of_word = next_character == " "
- return full_string.ends_with(what) or end_of_word
-
-func _get_standard_joy_name(joy_name : String) -> String:
- var all_replace_strings := replace_strings.duplicate()
- all_replace_strings.merge(COMMON_REPLACE_STRINGS)
- for what in all_replace_strings:
- if joy_name.contains(what) and _is_end_of_word(joy_name, what):
- var position = joy_name.find(what)
- joy_name = joy_name.erase(position, what.length())
- joy_name = joy_name.insert(position, all_replace_strings[what])
- var combined_joystick_name : Array[String] = []
- for part in joy_name.split(" "):
- if part.to_lower() in filtered_strings:
- continue
- if not part.is_empty():
- combined_joystick_name.append(part)
- joy_name = " ".join(combined_joystick_name)
- joy_name = joy_name.strip_edges()
- return joy_name
-
-func _match_icon_to_file(file : String) -> void:
- var matching_string : String = file.get_file().get_basename()
- var icon : Texture = load(file)
- if not icon:
- return
- all_icons[matching_string] = icon
- matching_string = matching_string.capitalize()
- matching_string = _get_standard_joy_name(matching_string)
- matching_string = matching_string.strip_edges()
- if add_stick_directions and matching_string.ends_with("Stick"):
- matching_icons[matching_string + " Up"] = icon
- matching_icons[matching_string + " Down"] = icon
- matching_icons[matching_string + " Left"] = icon
- matching_icons[matching_string + " Right"] = icon
- return
- if matching_string in matching_icons:
- return
- matching_icons[matching_string] = icon
-
-func _prioritized_files() -> Array[String]:
- var priority_levels : Dictionary # Dictionary[String, int]
- var priortized_files : Array[String]
- for prioritized_string in prioritized_strings:
- for file in files:
- if file.containsn(prioritized_string):
- if file in priority_levels:
- priority_levels[file] += 1
- else:
- priority_levels[file] = 1
- var priority_file_map : Dictionary # Dictionary[int, Array]
- var max_priority_level : int = 0
- for file in priority_levels:
- var priority_level = priority_levels[file]
- max_priority_level = max(priority_level, max_priority_level)
- if priority_level in priority_file_map:
- priority_file_map[priority_level].append(file)
- else:
- priority_file_map[priority_level] = [file]
- while max_priority_level > 0:
- for priority_file in priority_file_map[max_priority_level]:
- priortized_files.append(priority_file)
- max_priority_level -= 1
- return priortized_files
-
-func _match_icons_to_inputs() -> void:
- matching_icons.clear()
- all_icons.clear()
- for prioritized_file in _prioritized_files():
- _match_icon_to_file(prioritized_file)
- for file in files:
- _match_icon_to_file(file)
-
-func get_icon(input_event : InputEvent) -> Texture:
- var specific_text = InputEventHelper.get_device_specific_text(input_event, last_joypad_device)
- if specific_text in matching_icons:
- return matching_icons[specific_text]
- return null
-
-func _assign_joypad_0_to_last() -> void:
- if last_joypad_device != intial_joypad_device : return
- var connected_joypads := Input.get_connected_joypads()
- if connected_joypads.is_empty(): return
- last_joypad_device = InputEventHelper.get_device_name_by_id(connected_joypads[0])
-
-func _input(event : InputEvent) -> void:
- var device_name = InputEventHelper.get_device_name(event)
- if device_name != InputEventHelper.DEVICE_GENERIC and device_name != last_joypad_device:
- last_joypad_device = device_name
- joypad_device_changed.emit()
-
-func _ready() -> void:
- _assign_joypad_0_to_last()
- if files.size() == 0:
- _refresh_files()
- if matching_icons.size() == 0:
- _match_icons_to_inputs()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd.uid
deleted file mode 100644
index 4a8d67b..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cqigj1uumknrp
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.tscn
deleted file mode 100644
index e4fc58c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://qoexj4ptqt8a"]
-
-[ext_resource type="Script" uid="uid://cqigj1uumknrp" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.gd" id="1_msrpt"]
-
-[node name="InputIconMapper" type="Node"]
-script = ExtResource("1_msrpt")
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd
deleted file mode 100644
index 249642c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd
+++ /dev/null
@@ -1,102 +0,0 @@
-@tool
-class_name InputOptionsMenu
-extends Control
-
-const ALREADY_ASSIGNED_TEXT : String = "{key} already assigned to {action}."
-const ONE_INPUT_MINIMUM_TEXT : String = "%s must have at least one key or button assigned."
-const KEY_DELETION_TEXT : String = "Are you sure you want to remove {key} from {action}?"
-
-@export_enum("List", "Tree") var remapping_mode : int = 0 :
- set(value):
- remapping_mode = value
- if is_inside_tree():
- match(remapping_mode):
- 0:
- %InputActionsList.show()
- %InputActionsTree.hide()
- 1:
- %InputActionsList.hide()
- %InputActionsTree.show()
-
-@onready var assignment_placeholder_text = $KeyAssignmentDialog.dialog_text
-
-var last_input_readable_name
-
-func _horizontally_align_popup_labels() -> void:
- $KeyAssignmentDialog.get_label().horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- $KeyDeletionDialog.get_label().horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- $OneInputMinimumDialog.get_label().horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- $AlreadyAssignedDialog.get_label().horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- $ResetConfirmationDialog.get_label().horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
-
-func _ready() -> void:
- remapping_mode = remapping_mode
- if Engine.is_editor_hint(): return
- _horizontally_align_popup_labels()
-
-func _add_action_event() -> void:
- var last_input_event = $KeyAssignmentDialog.last_input_event
- last_input_readable_name = $KeyAssignmentDialog.last_input_text
- match(remapping_mode):
- 0:
- %InputActionsList.add_action_event(last_input_readable_name, last_input_event)
- 1:
- %InputActionsTree.add_action_event(last_input_readable_name, last_input_event)
-
-func _remove_action_event(item : TreeItem) -> void:
- %InputActionsTree.remove_action_event(item)
-
-func _on_reset_button_pressed() -> void:
- $ResetConfirmationDialog.popup_centered()
-
-func _on_key_deletion_dialog_confirmed() -> void:
- var editing_item = %InputActionsTree.editing_item
- if is_instance_valid(editing_item):
- _remove_action_event(editing_item)
-
-func _on_key_assignment_dialog_confirmed() -> void:
- _add_action_event()
-
-func _open_key_assignment_dialog(action_name : String, readable_input_name : String = assignment_placeholder_text) -> void:
- $KeyAssignmentDialog.title = tr("Assign Key for {action}").format({action = action_name})
- $KeyAssignmentDialog.dialog_text = readable_input_name
- $KeyAssignmentDialog.get_ok_button().disabled = true
- $KeyAssignmentDialog.popup_centered()
-
-func _on_input_actions_tree_add_button_clicked(action_name) -> void:
- _open_key_assignment_dialog(action_name)
-
-func _on_input_actions_tree_remove_button_clicked(action_name, input_name) -> void:
- $KeyDeletionDialog.title = tr("Remove Key for {action}").format({action = action_name})
- $KeyDeletionDialog.dialog_text = tr(KEY_DELETION_TEXT).format({key = input_name, action = action_name})
- $KeyDeletionDialog.popup_centered()
-
-func _popup_already_assigned(action_name, input_name) -> void:
- $AlreadyAssignedDialog.dialog_text = tr(ALREADY_ASSIGNED_TEXT).format({key = input_name, action = action_name})
- $AlreadyAssignedDialog.popup_centered.call_deferred()
-
-func _popup_minimum_reached(action_name : String) -> void:
- $OneInputMinimumDialog.dialog_text = ONE_INPUT_MINIMUM_TEXT % action_name
- $OneInputMinimumDialog.popup_centered.call_deferred()
-
-func _on_input_actions_tree_already_assigned(action_name, input_name) -> void:
- _popup_already_assigned(action_name, input_name)
-
-func _on_input_actions_tree_minimum_reached(action_name) -> void:
- _popup_minimum_reached(action_name)
-
-func _on_input_actions_list_already_assigned(action_name, input_name) -> void:
- _popup_already_assigned(action_name, input_name)
-
-func _on_input_actions_list_minimum_reached(action_name) -> void:
- _popup_minimum_reached(action_name)
-
-func _on_input_actions_list_button_clicked(action_name, readable_input_name) -> void:
- _open_key_assignment_dialog(action_name, readable_input_name)
-
-func _on_reset_confirmation_dialog_confirmed() -> void:
- match(remapping_mode):
- 0:
- %InputActionsList.reset()
- 1:
- %InputActionsTree.reset()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd.uid
deleted file mode 100644
index 72cfa78..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://eborw7q4b07h
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn
deleted file mode 100644
index 6ce354b..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn
+++ /dev/null
@@ -1,134 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://dp3rgqaehb3xu"]
-
-[ext_resource type="Script" uid="uid://eborw7q4b07h" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.gd" id="1"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_wft4x"]
-[ext_resource type="Script" uid="uid://custha7r0uoic" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd" id="3_wsh2h"]
-[ext_resource type="PackedScene" uid="uid://bxp45814v6ydv" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_list.tscn" id="4_lf2nw"]
-[ext_resource type="PackedScene" uid="uid://ci6wgl2ngd35n" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_actions_tree.tscn" id="5_b2whh"]
-
-[node name="Controls" type="MarginContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-theme_override_constants/margin_left = 32
-theme_override_constants/margin_top = 8
-theme_override_constants/margin_right = 32
-theme_override_constants/margin_bottom = 8
-script = ExtResource("1")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-layout_mode = 2
-size_flags_horizontal = 4
-size_flags_vertical = 4
-script = ExtResource("2_wft4x")
-search_depth = 5
-
-[node name="InputMappingContainer" type="VBoxContainer" parent="VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-alignment = 1
-
-[node name="Label" type="Label" parent="VBoxContainer/InputMappingContainer"]
-layout_mode = 2
-text = "Actions & Inputs"
-horizontal_alignment = 1
-
-[node name="InputActionsList" parent="VBoxContainer/InputMappingContainer" instance=ExtResource("4_lf2nw")]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(560, 480)
-layout_mode = 2
-
-[node name="InputActionsTree" parent="VBoxContainer/InputMappingContainer" instance=ExtResource("5_b2whh")]
-unique_name_in_owner = true
-visible = false
-custom_minimum_size = Vector2(400, 480)
-layout_mode = 2
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/InputMappingContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="ResetButton" type="Button" parent="VBoxContainer/InputMappingContainer/HBoxContainer"]
-layout_mode = 2
-text = "Reset"
-
-[node name="KeyAssignmentDialog" type="ConfirmationDialog" parent="."]
-title = "Assign Key"
-size = Vector2i(400, 158)
-dialog_text = "
-
-
-"
-script = ExtResource("3_wsh2h")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="KeyAssignmentDialog"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 8.0
-offset_top = 8.0
-offset_right = -8.0
-offset_bottom = -49.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="InputLabel" type="Label" parent="KeyAssignmentDialog/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "None"
-horizontal_alignment = 1
-
-[node name="InputTextEdit" type="TextEdit" parent="KeyAssignmentDialog/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_vertical = 3
-placeholder_text = "Focus here to assign inputs."
-context_menu_enabled = false
-shortcut_keys_enabled = false
-selecting_enabled = false
-deselect_on_focus_loss_enabled = false
-drag_and_drop_selection_enabled = false
-middle_mouse_paste_enabled = false
-caret_move_on_right_click = false
-
-[node name="DelayTimer" type="Timer" parent="KeyAssignmentDialog"]
-unique_name_in_owner = true
-wait_time = 0.1
-one_shot = true
-
-[node name="KeyDeletionDialog" type="ConfirmationDialog" parent="."]
-title = "Remove Key"
-size = Vector2i(419, 100)
-dialog_text = "Are you sure you want to remove KEY from ACTION?"
-
-[node name="OneInputMinimumDialog" type="AcceptDialog" parent="."]
-title = "Cannot Remove"
-size = Vector2i(398, 100)
-
-[node name="AlreadyAssignedDialog" type="AcceptDialog" parent="."]
-title = "Already Assigned"
-size = Vector2i(398, 100)
-
-[node name="ResetConfirmationDialog" type="ConfirmationDialog" parent="."]
-size = Vector2i(486, 100)
-dialog_text = "Are you sure you want to reset controls back to the defaults?"
-
-[connection signal="already_assigned" from="VBoxContainer/InputMappingContainer/InputActionsList" to="." method="_on_input_actions_list_already_assigned"]
-[connection signal="button_clicked" from="VBoxContainer/InputMappingContainer/InputActionsList" to="." method="_on_input_actions_list_button_clicked"]
-[connection signal="minimum_reached" from="VBoxContainer/InputMappingContainer/InputActionsList" to="." method="_on_input_actions_list_minimum_reached"]
-[connection signal="add_button_clicked" from="VBoxContainer/InputMappingContainer/InputActionsTree" to="." method="_on_input_actions_tree_add_button_clicked"]
-[connection signal="already_assigned" from="VBoxContainer/InputMappingContainer/InputActionsTree" to="." method="_on_input_actions_tree_already_assigned"]
-[connection signal="minimum_reached" from="VBoxContainer/InputMappingContainer/InputActionsTree" to="." method="_on_input_actions_tree_minimum_reached"]
-[connection signal="remove_button_clicked" from="VBoxContainer/InputMappingContainer/InputActionsTree" to="." method="_on_input_actions_tree_remove_button_clicked"]
-[connection signal="pressed" from="VBoxContainer/InputMappingContainer/HBoxContainer/ResetButton" to="." method="_on_reset_button_pressed"]
-[connection signal="confirmed" from="KeyAssignmentDialog" to="." method="_on_key_assignment_dialog_confirmed"]
-[connection signal="visibility_changed" from="KeyAssignmentDialog" to="KeyAssignmentDialog" method="_on_visibility_changed"]
-[connection signal="focus_entered" from="KeyAssignmentDialog/VBoxContainer/InputTextEdit" to="KeyAssignmentDialog" method="_on_text_edit_focus_entered"]
-[connection signal="focus_exited" from="KeyAssignmentDialog/VBoxContainer/InputTextEdit" to="KeyAssignmentDialog" method="_on_input_text_edit_focus_exited"]
-[connection signal="gui_input" from="KeyAssignmentDialog/VBoxContainer/InputTextEdit" to="KeyAssignmentDialog" method="_on_input_text_edit_gui_input"]
-[connection signal="confirmed" from="KeyDeletionDialog" to="." method="_on_key_deletion_dialog_confirmed"]
-[connection signal="confirmed" from="ResetConfirmationDialog" to="." method="_on_reset_confirmation_dialog_confirmed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd
deleted file mode 100644
index 471d9e0..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd
+++ /dev/null
@@ -1,104 +0,0 @@
-extends ConfirmationDialog
-
-const LISTENING_TEXT : String = "Listening for input..."
-const FOCUS_HERE_TEXT : String = "Focus here to assign inputs."
-const CONFIRM_INPUT_TEXT : String = "Press again to confirm..."
-const NO_INPUT_TEXT : String = "None"
-
-enum InputConfirmation {
- SINGLE,
- DOUBLE,
- OK_BUTTON
-}
-@export var input_confirmation : InputConfirmation = InputConfirmation.SINGLE
-
-var last_input_event : InputEvent
-var last_input_text : String
-var listening : bool = false
-var confirming : bool = false
-
-func _record_input_event(event : InputEvent) -> void:
- last_input_text = InputEventHelper.get_text(event)
- if last_input_text.is_empty():
- return
- last_input_event = event
- %InputLabel.text = last_input_text
- get_ok_button().disabled = false
-
-func _is_recordable_input(event : InputEvent) -> bool:
- return event != null and \
- (event is InputEventKey or \
- event is InputEventMouseButton or \
- event is InputEventJoypadButton or \
- (event is InputEventJoypadMotion and \
- abs(event.axis_value) > 0.5)) and \
- event.is_pressed()
-
-func _start_listening() -> void:
- %InputTextEdit.placeholder_text = LISTENING_TEXT
- listening = true
- %DelayTimer.start()
-
-func _stop_listening() -> void:
- %InputTextEdit.placeholder_text = FOCUS_HERE_TEXT
- listening = false
- confirming = false
-
-func _on_text_edit_focus_entered() -> void:
- _start_listening.call_deferred()
-
-func _on_input_text_edit_focus_exited() -> void:
- _stop_listening()
-
-func _focus_on_ok() -> void:
- get_ok_button().grab_focus()
-
-func _ready() -> void:
- get_ok_button().focus_neighbor_top = ^"../../%InputTextEdit"
- get_cancel_button().focus_neighbor_top = ^"../../%InputTextEdit"
-
-func _input_matches_last(event : InputEvent) -> bool:
- return last_input_text == InputEventHelper.get_text(event)
-
-func _is_mouse_input(event : InputEvent) -> bool:
- return event is InputEventMouse
-
-func _input_confirms_choice(event : InputEvent) -> bool:
- return confirming and not _is_mouse_input(event) and _input_matches_last(event)
-
-func _should_process_input_event(event : InputEvent) -> bool:
- return listening and _is_recordable_input(event) and %DelayTimer.is_stopped()
-
-func _should_confirm_input_event(event : InputEvent) -> bool:
- return not _is_mouse_input(event)
-
-func _confirm_choice() -> void:
- confirmed.emit()
- hide()
-
-func _process_input_event(event : InputEvent) -> void:
- if not _should_process_input_event(event):
- return
- if _input_confirms_choice(event):
- confirming = false
- if input_confirmation == InputConfirmation.DOUBLE:
- _confirm_choice()
- else:
- _focus_on_ok.call_deferred()
- return
- _record_input_event(event)
- if input_confirmation == InputConfirmation.SINGLE:
- _confirm_choice()
- if _should_confirm_input_event(event):
- confirming = true
- %DelayTimer.start()
- %InputTextEdit.placeholder_text = CONFIRM_INPUT_TEXT
-
-func _on_input_text_edit_gui_input(event) -> void:
- %InputTextEdit.set_deferred("text", "")
- _process_input_event(event)
-
-func _on_visibility_changed() -> void:
- if visible:
- %InputLabel.text = NO_INPUT_TEXT
- %InputTextEdit.grab_focus()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd.uid
deleted file mode 100644
index b34806b..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/input/key_assignment_dialog.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://custha7r0uoic
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu_with_tabs.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu_with_tabs.tscn
deleted file mode 100644
index e43f7c3..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu_with_tabs.tscn
+++ /dev/null
@@ -1,12 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://hmx6o472ropw"]
-
-[ext_resource type="Script" uid="uid://c3mignmhuvvq4" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd" id="1_qa1tn"]
-
-[node name="MasterOptionsMenu" type="TabContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-tab_alignment = 1
-script = ExtResource("1_qa1tn")
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd
deleted file mode 100644
index 5394c7e..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd
+++ /dev/null
@@ -1,45 +0,0 @@
-class_name MiniOptionsMenu
-extends Control
-
-@onready var mute_control = %MuteControl
-@onready var fullscreen_control = %FullscreenControl
-
-@export var audio_control_scene : PackedScene
-@export var hide_busses : Array[String]
-
-func _on_bus_changed(bus_value : float, bus_iter : int) -> void:
- AppSettings.set_bus_volume(bus_iter, bus_value)
-
-func _add_audio_control(bus_name : String, bus_value : float, bus_iter : int) -> void:
- if audio_control_scene == null or bus_name in hide_busses or bus_name.begins_with(AppSettings.SYSTEM_BUS_NAME_PREFIX):
- return
- var audio_control = audio_control_scene.instantiate()
- %AudioControlContainer.call_deferred("add_child", audio_control)
- if audio_control is OptionControl:
- audio_control.option_section = OptionControl.OptionSections.AUDIO
- audio_control.option_name = bus_name
- audio_control.value = bus_value
- audio_control.connect("setting_changed", _on_bus_changed.bind(bus_iter))
-
-func _add_audio_bus_controls() -> void:
- for bus_iter in AudioServer.bus_count:
- var bus_name : String = AppSettings.get_audio_bus_name(bus_iter)
- var linear : float = AppSettings.get_bus_volume(bus_iter)
- _add_audio_control(bus_name, linear, bus_iter)
-
-func _update_ui() -> void:
- _add_audio_bus_controls()
- mute_control.value = AppSettings.is_muted()
- fullscreen_control.value = AppSettings.is_fullscreen(get_window())
-
-func _sync_with_config() -> void:
- _update_ui()
-
-func _ready() -> void:
- _sync_with_config()
-
-func _on_mute_control_setting_changed(value : bool) -> void:
- AppSettings.set_mute(value)
-
-func _on_fullscreen_control_setting_changed(value : bool) -> void:
- AppSettings.set_fullscreen_enabled(value, get_window())
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd.uid
deleted file mode 100644
index 877aa95..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://1c0iyo5djoxj
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn
deleted file mode 100644
index 7f9f994..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn
+++ /dev/null
@@ -1,51 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://vh1ucj2rfbby"]
-
-[ext_resource type="Script" uid="uid://1c0iyo5djoxj" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.gd" id="1_32vm2"]
-[ext_resource type="PackedScene" uid="uid://cl416gdb1fgwr" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn" id="2_kpc65"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="3_7qt1o"]
-[ext_resource type="PackedScene" uid="uid://bsxh6v7j0257h" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/toggle_option_control.tscn" id="4_b20fb"]
-
-[node name="MiniOptionsMenu" type="VBoxContainer"]
-custom_minimum_size = Vector2(400, 260)
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-offset_left = -200.0
-offset_top = -130.0
-offset_right = 200.0
-offset_bottom = 130.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 4
-theme_override_constants/separation = 8
-alignment = 1
-script = ExtResource("1_32vm2")
-audio_control_scene = ExtResource("2_kpc65")
-
-[node name="AudioControlContainer" type="VBoxContainer" parent="."]
-unique_name_in_owner = true
-layout_mode = 2
-theme_override_constants/separation = 8
-script = ExtResource("3_7qt1o")
-search_depth = 2
-
-[node name="MuteControl" parent="." instance=ExtResource("4_b20fb")]
-unique_name_in_owner = true
-layout_mode = 2
-option_name = "Mute"
-option_section = 2
-key = "Mute"
-section = "AudioSettings"
-
-[node name="FullscreenControl" parent="." instance=ExtResource("4_b20fb")]
-unique_name_in_owner = true
-layout_mode = 2
-option_name = "Fullscreen"
-option_section = 3
-key = "FullscreenEnabled"
-section = "VideoSettings"
-
-[connection signal="setting_changed" from="MuteControl" to="." method="_on_mute_control_setting_changed"]
-[connection signal="setting_changed" from="FullscreenControl" to="." method="_on_fullscreen_control_setting_changed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd
deleted file mode 100644
index 55e2a15..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd
+++ /dev/null
@@ -1,81 +0,0 @@
-@tool
-class_name ListOptionControl
-extends OptionControl
-
-## Locks Option Titles from auto-updating when editing Option Values.
-## Intentionally put first for initialization.
-@export var lock_titles : bool = false
-## Defines the list of possible values for the variable
-## this option stores in the config file.
-@export var option_values : Array :
- set(value) :
- option_values = value
- _on_option_values_changed()
-
-## Defines the list of options displayed to the user.
-## Length should match with Option Values.
-@export var option_titles : Array[String] :
- set(value):
- option_titles = value
- if is_inside_tree():
- _set_option_list(option_titles)
-
-var custom_option_values : Array
-
-func _on_option_values_changed() -> void:
- if option_values.is_empty(): return
- custom_option_values = option_values.duplicate()
- var first_value = custom_option_values.front()
- property_type = typeof(first_value)
- _set_titles_from_values()
-
-func _on_setting_changed(value : Variant) -> void:
- if value < custom_option_values.size() and value >= 0:
- super._on_setting_changed(custom_option_values[value])
-
-func _set_titles_from_values() -> void:
- if lock_titles: return
- var mapped_titles : Array[String] = []
- for option_value in custom_option_values:
- mapped_titles.append(_value_title_map(option_value))
- option_titles = mapped_titles
-
-func _value_title_map(value : Variant) -> String:
- return "%s" % value
-
-func _match_value_to_other(value : Variant, other : Variant) -> Variant:
- # Primarily for when the editor saves floats as ints instead
- if value is int and other is float:
- return float(value)
- if value is float and other is int:
- return int(round(value))
- return value
-
-func _set_value(value : Variant) -> Variant:
- if option_values.is_empty(): return
- if value == null:
- return super._set_value(-1)
- custom_option_values = option_values.duplicate()
- value = _match_value_to_other(value, custom_option_values.front())
- if value not in custom_option_values and typeof(value) == property_type:
- custom_option_values.append(value)
- custom_option_values.sort()
- _set_titles_from_values()
- if value not in option_values:
- disable_option(custom_option_values.find(value))
- value = custom_option_values.find(value)
- return super._set_value(value)
-
-func _set_option_list(option_titles_list : Array) -> void:
- %OptionButton.clear()
- for option_title in option_titles_list:
- %OptionButton.add_item(option_title)
-
-func disable_option(option_index : int, disabled : bool = true) -> void:
- %OptionButton.set_item_disabled(option_index, disabled)
-
-func _ready() -> void:
- lock_titles = lock_titles
- option_titles = option_titles
- option_values = option_values
- super._ready()
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd.uid
deleted file mode 100644
index 69ab4eb..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b8xqufg4re3c2
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn
deleted file mode 100644
index 2fd3eac..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://b6bl3n5mp3m1e"]
-
-[ext_resource type="PackedScene" uid="uid://d7te75il06t7" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.tscn" id="1_blo3b"]
-[ext_resource type="Script" uid="uid://b8xqufg4re3c2" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.gd" id="2_kt4vl"]
-
-[node name="OptionControl" instance=ExtResource("1_blo3b")]
-script = ExtResource("2_kt4vl")
-lock_titles = false
-option_values = []
-option_titles = []
-
-[node name="OptionButton" type="OptionButton" parent="." index="1"]
-unique_name_in_owner = true
-layout_mode = 2
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd
deleted file mode 100644
index 90530d0..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd
+++ /dev/null
@@ -1,140 +0,0 @@
-@tool
-class_name OptionControl
-extends Control
-
-signal setting_changed(value)
-
-enum OptionSections{
- NONE,
- INPUT,
- AUDIO,
- VIDEO,
- GAME,
- APPLICATION,
- CUSTOM,
-}
-
-const OptionSectionNames : Dictionary = {
- OptionSections.NONE : "",
- OptionSections.INPUT : AppSettings.INPUT_SECTION,
- OptionSections.AUDIO : AppSettings.AUDIO_SECTION,
- OptionSections.VIDEO : AppSettings.VIDEO_SECTION,
- OptionSections.GAME : AppSettings.GAME_SECTION,
- OptionSections.APPLICATION : AppSettings.APPLICATION_SECTION,
- OptionSections.CUSTOM : AppSettings.CUSTOM_SECTION,
-}
-
-## Locks config names in case of issues with inherited scenes.
-## Intentionally put first for initialization.
-@export var lock_config_names : bool = false
-## Defines text displayed to the user.
-@export var option_name : String :
- set(value):
- var _update_config : bool = option_name.to_pascal_case() == key and not lock_config_names
- option_name = value
- if is_inside_tree():
- %OptionLabel.text = "%s%s" % [option_name, label_suffix]
- if _update_config:
- key = option_name.to_pascal_case()
-## Defines what section in the config file this option belongs under.
-@export var option_section : OptionSections :
- set(value):
- var _update_config : bool = OptionSectionNames[option_section] == section and not lock_config_names
- option_section = value
- if _update_config:
- section = OptionSectionNames[option_section]
-
-@export_group("Config Names")
-## Defines the key for this option variable in the config file.
-@export var key : String
-## Defines the section for this option variable in the config file.
-@export var section : String
-@export_group("Format")
-@export var label_suffix : String = " :"
-@export_group("Properties")
-## Defines whether the option is editable, or only visible by the user.
-@export var editable : bool = true : set = set_editable
-## Defines what kind of variable this option stores in the config file.
-@export var property_type : Variant.Type = TYPE_BOOL
-
-## It is advised to use an external editor to set the default value in the scene file.
-## Godot can experience a bug (caching issue?) that may undo changes.
-var default_value
-var _connected_nodes : Array
-
-func _on_setting_changed(value) -> void:
- if Engine.is_editor_hint(): return
- PlayerConfig.set_config(section, key, value)
- setting_changed.emit(value)
-
-func _get_setting(default : Variant = null) -> Variant:
- return PlayerConfig.get_config(section, key, default)
-
-func _connect_option_inputs(node) -> void:
- if node in _connected_nodes: return
- if node is Button:
- if node is OptionButton:
- node.item_selected.connect(_on_setting_changed)
- elif node is ColorPickerButton:
- node.color_changed.connect(_on_setting_changed)
- else:
- node.toggled.connect(_on_setting_changed)
- _connected_nodes.append(node)
- if node is Range:
- node.value_changed.connect(_on_setting_changed)
- _connected_nodes.append(node)
- if node is LineEdit or node is TextEdit:
- node.text_changed.connect(_on_setting_changed)
- _connected_nodes.append(node)
-
-func _set_value(value : Variant) -> Variant:
- if value == null:
- return
- for node in get_children():
- if node is Button:
- if node is OptionButton:
- node.select(value as int)
- elif node is ColorPickerButton:
- node.color = value as Color
- else:
- node.button_pressed = value as bool
- if node is Range:
- node.value = value as float
- if node is LineEdit or node is TextEdit:
- node.text = "%s" % value
- return value
-
-func set_value(value : Variant) -> void:
- value = _set_value(value)
- _on_setting_changed(value)
-
-func set_editable(value : bool = true) -> void:
- editable = value
- for node in get_children():
- if node is Button:
- node.disabled = !editable
- if node is Slider or node is SpinBox or node is LineEdit or node is TextEdit:
- node.editable = editable
-
-func _ready() -> void:
- lock_config_names = lock_config_names
- option_section = option_section
- option_name = option_name
- property_type = property_type
- default_value = default_value
- _set_value(_get_setting(default_value))
- for child in get_children():
- _connect_option_inputs(child)
- child_entered_tree.connect(_connect_option_inputs)
-
-func _set(property : StringName, value : Variant) -> bool:
- if property == "value":
- set_value(value)
- return true
- return false
-
-func _get_property_list() -> Array[Dictionary]:
- return [
- { "name": "value", "type": property_type, "usage": PROPERTY_USAGE_NONE},
- { "name": "default_value", "type": property_type}
- ]
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd.uid
deleted file mode 100644
index 54d3316..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cafqki2b08kwu
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.tscn
deleted file mode 100644
index 42b4bc9..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.tscn
+++ /dev/null
@@ -1,17 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://d7te75il06t7"]
-
-[ext_resource type="Script" uid="uid://cafqki2b08kwu" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.gd" id="1_jvl5q"]
-
-[node name="OptionControl" type="HBoxContainer"]
-custom_minimum_size = Vector2(0, 40)
-offset_right = 400.0
-offset_bottom = 40.0
-script = ExtResource("1_jvl5q")
-default_value = false
-
-[node name="OptionLabel" type="Label" parent="."]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-text = " :"
-vertical_alignment = 1
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn
deleted file mode 100644
index 32d05df..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn
+++ /dev/null
@@ -1,19 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cl416gdb1fgwr"]
-
-[ext_resource type="PackedScene" uid="uid://d7te75il06t7" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.tscn" id="1_16hlr"]
-
-[node name="OptionControl" instance=ExtResource("1_16hlr")]
-custom_minimum_size = Vector2(0, 28)
-offset_bottom = 28.0
-property_type = 3
-default_value = 1.0
-
-[node name="HSlider" type="HSlider" parent="." index="1"]
-custom_minimum_size = Vector2(256, 0)
-layout_mode = 2
-size_flags_vertical = 4
-max_value = 1.0
-step = 0.05
-value = 1.0
-tick_count = 11
-ticks_on_borders = true
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/toggle_option_control.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/toggle_option_control.tscn
deleted file mode 100644
index cb1353c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/toggle_option_control.tscn
+++ /dev/null
@@ -1,8 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://bsxh6v7j0257h"]
-
-[ext_resource type="PackedScene" uid="uid://d7te75il06t7" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/option_control.tscn" id="1_8rnmo"]
-
-[node name="OptionControl" instance=ExtResource("1_8rnmo")]
-
-[node name="CheckButton" type="CheckButton" parent="." index="1"]
-layout_mode = 2
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd
deleted file mode 100644
index 562d2e3..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd
+++ /dev/null
@@ -1,9 +0,0 @@
-@tool
-class_name Vector2ListOptionControl
-extends ListOptionControl
-
-func _value_title_map(value : Variant) -> String:
- if value is Vector2 or value is Vector2i:
- return "%d x %d" % [value.x , value.y]
- else:
- return super._value_title_map(value)
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd.uid
deleted file mode 100644
index 562da78..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://brntdgf3sv0s0
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.tscn
deleted file mode 100644
index 2d81426..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://c01ayjblhcg1t"]
-
-[ext_resource type="PackedScene" uid="uid://b6bl3n5mp3m1e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn" id="1_jqwiw"]
-[ext_resource type="Script" uid="uid://brntdgf3sv0s0" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.gd" id="2_w33vs"]
-
-[node name="OptionControl" instance=ExtResource("1_jqwiw")]
-script = ExtResource("2_w33vs")
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd
deleted file mode 100644
index c14424b..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd
+++ /dev/null
@@ -1,13 +0,0 @@
-class_name PaginatedTabContainer
-extends TabContainer
-
-func _unhandled_input(event : InputEvent) -> void:
- if not is_visible_in_tree():
- return
- if event.is_action_pressed("ui_page_down"):
- current_tab = (current_tab+1) % get_tab_count()
- elif event.is_action_pressed("ui_page_up"):
- if current_tab == 0:
- current_tab = get_tab_count()-1
- else:
- current_tab = current_tab-1
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd.uid
deleted file mode 100644
index 01c0cbd..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/paginated_tab_container.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c3mignmhuvvq4
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd
deleted file mode 100644
index 4e22563..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd
+++ /dev/null
@@ -1,38 +0,0 @@
-class_name VideoOptionsMenu
-extends Control
-
-func _preselect_resolution(window : Window) -> void:
- %ResolutionControl.value = window.size
-
-func _update_resolution_options_enabled(window : Window) -> void:
- if OS.has_feature("web"):
- %ResolutionControl.editable = false
- %ResolutionControl.tooltip_text = "Disabled for web"
- elif AppSettings.is_fullscreen(window):
- %ResolutionControl.editable = false
- %ResolutionControl.tooltip_text = "Disabled for fullscreen"
- else:
- %ResolutionControl.editable = true
- %ResolutionControl.tooltip_text = "Select a screen size"
-
-func _update_ui(window : Window) -> void:
- %FullscreenControl.value = AppSettings.is_fullscreen(window)
- _preselect_resolution(window)
- %VSyncControl.value = AppSettings.get_vsync(window)
- _update_resolution_options_enabled(window)
-
-func _ready() -> void:
- var window : Window = get_window()
- _update_ui(window)
- window.connect("size_changed", _preselect_resolution.bind(window))
-
-func _on_fullscreen_control_setting_changed(value) -> void:
- var window : Window = get_window()
- AppSettings.set_fullscreen_enabled(value, window)
- _update_resolution_options_enabled(window)
-
-func _on_resolution_control_setting_changed(value) -> void:
- AppSettings.set_resolution(value, get_window(), false)
-
-func _on_v_sync_control_setting_changed(value) -> void:
- AppSettings.set_vsync(value, get_window())
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd.uid
deleted file mode 100644
index 77495f0..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cpe5r24151r5n
diff --git a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn
deleted file mode 100644
index 592014c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn
+++ /dev/null
@@ -1,60 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://b2numvphf2kau"]
-
-[ext_resource type="Script" uid="uid://cpe5r24151r5n" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.gd" id="1"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_dgrai"]
-[ext_resource type="PackedScene" uid="uid://bsxh6v7j0257h" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/toggle_option_control.tscn" id="3_uded6"]
-[ext_resource type="PackedScene" uid="uid://c01ayjblhcg1t" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/vector_2_list_option_control.tscn" id="4_gwtfq"]
-[ext_resource type="PackedScene" uid="uid://b6bl3n5mp3m1e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn" id="5_881de"]
-
-[node name="Video" type="MarginContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-theme_override_constants/margin_top = 24
-theme_override_constants/margin_bottom = 24
-script = ExtResource("1")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-custom_minimum_size = Vector2(400, 0)
-layout_mode = 2
-size_flags_horizontal = 4
-alignment = 1
-script = ExtResource("2_dgrai")
-search_depth = 2
-
-[node name="FullscreenControl" parent="VBoxContainer" instance=ExtResource("3_uded6")]
-unique_name_in_owner = true
-layout_mode = 2
-option_name = "Fullscreen"
-option_section = 3
-key = "Fullscreen"
-section = "VideoSettings"
-
-[node name="ResolutionControl" parent="VBoxContainer" instance=ExtResource("4_gwtfq")]
-unique_name_in_owner = true
-layout_mode = 2
-tooltip_text = "Select a screen size"
-option_values = [Vector2i(640, 360), Vector2i(960, 540), Vector2i(1024, 576), Vector2i(1280, 720), Vector2i(1600, 900), Vector2i(1920, 1080), Vector2i(2048, 1152), Vector2i(2560, 1440), Vector2i(3200, 1800), Vector2i(3840, 2160)]
-option_titles = Array[String](["640 x 360", "960 x 540", "1024 x 576", "1280 x 720", "1600 x 900", "1920 x 1080", "2048 x 1152", "2560 x 1440", "3200 x 1800", "3840 x 2160"])
-option_name = "Resolution"
-option_section = 3
-key = "ScreenResolution"
-section = "VideoSettings"
-property_type = 6
-
-[node name="VSyncControl" parent="VBoxContainer" instance=ExtResource("5_881de")]
-unique_name_in_owner = true
-layout_mode = 2
-lock_titles = true
-option_values = [0, 1, 2, 3]
-option_titles = Array[String](["Disabled", "Enabled", "Adaptive", "Mailbox"])
-option_name = "V-Sync"
-option_section = 3
-key = "V-Sync"
-section = "VideoSettings"
-property_type = 2
-default_value = 0
-
-[connection signal="setting_changed" from="VBoxContainer/FullscreenControl" to="." method="_on_fullscreen_control_setting_changed"]
-[connection signal="setting_changed" from="VBoxContainer/ResolutionControl" to="." method="_on_resolution_control_setting_changed"]
-[connection signal="setting_changed" from="VBoxContainer/VSyncControl" to="." method="_on_v_sync_control_setting_changed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn b/godot/addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn
deleted file mode 100644
index e9c3026..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene format=3 uid="uid://bkcsjsk2ciff"]
-
-[node name="BackgroundMusicPlayer" type="AudioStreamPlayer"]
-process_mode = 3
-autoplay = true
-bus = &"Music"
diff --git a/godot/addons/maaacks_game_template/base/scenes/opening/opening.gd b/godot/addons/maaacks_game_template/base/scenes/opening/opening.gd
deleted file mode 100644
index 187257e..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/opening/opening.gd
+++ /dev/null
@@ -1,107 +0,0 @@
-extends Control
-
-## Defines the path to the next scene.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var next_scene_path : String
-@export var images : Array[Texture2D]
-@export_group("Animation")
-@export var fade_in_time : float = 0.2
-@export var fade_out_time : float = 0.2
-@export var visible_time : float = 1.6
-@export_group("Transition")
-@export var start_delay : float = 0.5
-@export var end_delay : float = 0.5
-@export var show_loading_screen : bool = false
-
-var tween : Tween
-var next_image_index : int = 0
-
-func get_next_scene_path() -> String:
- if next_scene_path.is_empty():
- return AppConfig.main_menu_scene_path
- return next_scene_path
-
-func _load_next_scene() -> void:
- var status = SceneLoader.get_status()
- if show_loading_screen or status != ResourceLoader.THREAD_LOAD_LOADED:
- SceneLoader.change_scene_to_loading_screen()
- else:
- SceneLoader.change_scene_to_resource()
-
-func _add_textures_to_container(textures : Array[Texture2D]) -> void:
- for texture in textures:
- var texture_rect : TextureRect = TextureRect.new()
- texture_rect.texture = texture
- texture_rect.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
- texture_rect.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
- texture_rect.modulate.a = 0.0
- %ImagesContainer.call_deferred("add_child", texture_rect)
-
-func _event_skips_image(event : InputEvent) -> bool:
- return event.is_action_released(&"ui_accept") or event.is_action_released(&"ui_select")
-
-func _event_skips_intro(event : InputEvent) -> bool:
- return event.is_action_released(&"ui_cancel")
-
-func _event_is_mouse_button_released(event : InputEvent) -> bool:
- return event is InputEventMouseButton and not event.is_pressed()
-
-func _unhandled_input(event : InputEvent) -> void:
- if _event_skips_intro(event):
- _load_next_scene()
- elif _event_skips_image(event):
- _show_next_image(false)
-
-func _gui_input(event : InputEvent) -> void:
- if _event_is_mouse_button_released(event):
- _show_next_image(false)
-
-func _transition_out() -> void:
- await get_tree().create_timer(end_delay).timeout
- _load_next_scene()
-
-func _transition_in() -> void:
- await get_tree().create_timer(start_delay).timeout
- if next_image_index == 0:
- _show_next_image()
-
-func _wait_and_fade_out(texture_rect : TextureRect) -> void:
- var _compare_next_index = next_image_index
- await get_tree().create_timer(visible_time, false).timeout
- if _compare_next_index != next_image_index : return
- tween = create_tween()
- tween.tween_property(texture_rect, "modulate:a", 0.0, fade_out_time)
- await tween.finished
- _show_next_image.call_deferred()
-
-func _hide_previous_image() -> void:
- if tween and tween.is_running():
- tween.stop()
- if %ImagesContainer.get_child_count() == 0:
- return
- var current_image = %ImagesContainer.get_child(next_image_index - 1)
- if current_image:
- current_image.modulate.a = 0.0
-
-func _show_next_image(animated : bool = true) -> void:
- _hide_previous_image()
- if next_image_index >= %ImagesContainer.get_child_count():
- if animated:
- _transition_out()
- else:
- _load_next_scene()
- return
- var texture_rect = %ImagesContainer.get_child(next_image_index)
- if animated:
- tween = create_tween()
- tween.tween_property(texture_rect, "modulate:a", 1.0, fade_in_time)
- await tween.finished
- else:
- texture_rect.modulate.a = 1.0
- next_image_index += 1
- _wait_and_fade_out(texture_rect)
-
-func _ready() -> void:
- SceneLoader.load_scene(get_next_scene_path(), true)
- _add_textures_to_container(images)
- _transition_in()
diff --git a/godot/addons/maaacks_game_template/base/scenes/opening/opening.gd.uid b/godot/addons/maaacks_game_template/base/scenes/opening/opening.gd.uid
deleted file mode 100644
index 4b25152..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/opening/opening.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dtco0s8byckx6
diff --git a/godot/addons/maaacks_game_template/base/scenes/opening/opening.tscn b/godot/addons/maaacks_game_template/base/scenes/opening/opening.tscn
deleted file mode 100644
index 9016e0c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/opening/opening.tscn
+++ /dev/null
@@ -1,26 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://sikc02ddepyt"]
-
-[ext_resource type="Script" uid="uid://dtco0s8byckx6" path="res://addons/maaacks_game_template/base/scenes/opening/opening.gd" id="1_fcjph"]
-
-[node name="Opening" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_fcjph")
-
-[node name="BackgroundMusicPlayer" type="AudioStreamPlayer" parent="."]
-process_mode = 3
-autoplay = true
-bus = &"Music"
-
-[node name="ImagesContainer" type="MarginContainer" parent="."]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/credits_overlaid_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/credits_overlaid_menu.tscn
deleted file mode 100644
index c0dc2e3..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/credits_overlaid_menu.tscn
+++ /dev/null
@@ -1,26 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://n111yfgskspp"]
-
-[ext_resource type="PackedScene" uid="uid://bqqngki8bm3iq" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.tscn" id="1_jifbg"]
-[ext_resource type="PackedScene" uid="uid://osxulxw2oas3" path="res://addons/maaacks_game_template/base/scenes/credits/scrollable_credits.tscn" id="2_jifbg"]
-
-[node name="CreditsOverlaidMenu" instance=ExtResource("1_jifbg")]
-menu_scene = ExtResource("2_jifbg")
-
-[node name="MenuPanelContainer" parent="." index="1"]
-anchors_preset = 15
-anchor_left = 0.0
-anchor_top = 0.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 0.0
-offset_top = 0.0
-offset_right = 0.0
-offset_bottom = 0.0
-
-[node name="TitleMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="0"]
-visible = false
-
-[node name="MenuButtons" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin" index="0"]
-size_flags_horizontal = 1
-alignment = 0
-vertical = false
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/master_options_overlaid_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/master_options_overlaid_menu.tscn
deleted file mode 100644
index a05e80a..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/master_options_overlaid_menu.tscn
+++ /dev/null
@@ -1,26 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://dy8sr0cd8nbiu"]
-
-[ext_resource type="PackedScene" uid="uid://bqqngki8bm3iq" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.tscn" id="1_kl0kf"]
-[ext_resource type="PackedScene" uid="uid://hmx6o472ropw" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu_with_tabs.tscn" id="2_vmfam"]
-
-[node name="MasterOptionsOverlaidMenu" instance=ExtResource("1_kl0kf")]
-menu_scene = ExtResource("2_vmfam")
-
-[node name="MenuPanelContainer" parent="." index="1"]
-anchors_preset = 15
-anchor_left = 0.0
-anchor_top = 0.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 0.0
-offset_top = 0.0
-offset_right = 0.0
-offset_bottom = 0.0
-
-[node name="TitleMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="0"]
-visible = false
-
-[node name="MenuButtons" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin" index="0"]
-size_flags_horizontal = 1
-alignment = 0
-vertical = false
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn
deleted file mode 100644
index 5e78082..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn
+++ /dev/null
@@ -1,10 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://cikf3o5omnunl"]
-
-[ext_resource type="PackedScene" uid="uid://bqqngki8bm3iq" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.tscn" id="1_kverk"]
-[ext_resource type="PackedScene" uid="uid://vh1ucj2rfbby" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn" id="2_ihtu5"]
-
-[node name="OverlaidMenuContainer" instance=ExtResource("1_kverk")]
-menu_scene = ExtResource("2_ihtu5")
-
-[node name="TitleLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/TitleMargin" index="0"]
-text = "Options"
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd
deleted file mode 100644
index 19ca7e8..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd
+++ /dev/null
@@ -1,88 +0,0 @@
-class_name PauseMenu
-extends OverlaidMenu
-
-@export var options_packed_scene : PackedScene
-## Defines the path to the main menu. Hides the Main Menu button if not set.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var main_menu_scene_path : String
-
-var popup_open : Node
-
-func get_main_menu_scene_path() -> String:
- if main_menu_scene_path.is_empty():
- return AppConfig.main_menu_scene_path
- return main_menu_scene_path
-
-func close_popup() -> void:
- if popup_open != null:
- popup_open.hide()
- popup_open = null
-
-func _disable_focus() -> void:
- for child in %MenuButtons.get_children():
- if child is Control:
- child.focus_mode = FOCUS_NONE
-
-func _enable_focus() -> void:
- for child in %MenuButtons.get_children():
- if child is Control:
- child.focus_mode = FOCUS_ALL
-
-func _load_scene(scene_path: String) -> void:
- _scene_tree.paused = false
- SceneLoader.load_scene(scene_path)
-
-func open_options_menu() -> void:
- var options_scene := options_packed_scene.instantiate()
- add_child(options_scene)
- _disable_focus.call_deferred()
- await options_scene.tree_exiting
- _enable_focus.call_deferred()
-
-func _handle_cancel_input() -> void:
- if popup_open != null:
- close_popup()
- else:
- super._handle_cancel_input()
-
-func _hide_exit_for_web() -> void:
- if OS.has_feature("web"):
- %ExitButton.hide()
-
-func _hide_options_if_unset() -> void:
- if options_packed_scene == null:
- %OptionsButton.hide()
-
-func _hide_main_menu_if_unset() -> void:
- if get_main_menu_scene_path().is_empty():
- %MainMenuButton.hide()
-
-func _ready() -> void:
- _hide_exit_for_web()
- _hide_options_if_unset()
- _hide_main_menu_if_unset()
-
-func _on_restart_button_pressed() -> void:
- %ConfirmRestart.popup_centered()
- popup_open = %ConfirmRestart
-
-func _on_options_button_pressed() -> void:
- open_options_menu()
-
-func _on_main_menu_button_pressed() -> void:
- %ConfirmMainMenu.popup_centered()
- popup_open = %ConfirmMainMenu
-
-func _on_exit_button_pressed() -> void:
- %ConfirmExit.popup_centered()
- popup_open = %ConfirmExit
-
-func _on_confirm_restart_confirmed() -> void:
- SceneLoader.reload_current_scene()
- close()
-
-func _on_confirm_main_menu_confirmed() -> void:
- _load_scene(get_main_menu_scene_path())
-
-func _on_confirm_exit_confirmed() -> void:
- get_tree().quit()
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd.uid
deleted file mode 100644
index 2c8aacf..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://uidwhqh4fyhj
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn
deleted file mode 100644
index ee22201..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn
+++ /dev/null
@@ -1,68 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://b5cd6sa8qq4vc"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_gm3uv"]
-[ext_resource type="Script" uid="uid://uidwhqh4fyhj" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd" id="2_0ln3r"]
-[ext_resource type="PackedScene" uid="uid://cikf3o5omnunl" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn" id="3_kv70e"]
-
-[node name="PauseMenu" instance=ExtResource("1_gm3uv")]
-process_mode = 3
-script = ExtResource("2_0ln3r")
-options_packed_scene = ExtResource("3_kv70e")
-main_menu_scene_path = ""
-pauses_game = true
-
-[node name="MarginContainer" parent="MenuPanelContainer" index="0"]
-theme_override_constants/margin_left = 64
-theme_override_constants/margin_right = 64
-
-[node name="TitleLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/TitleMargin" index="0"]
-text = "Paused"
-
-[node name="MenuButtonsMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="2"]
-theme_override_constants/margin_top = 16
-theme_override_constants/margin_bottom = 16
-
-[node name="CloseButton" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="0"]
-text = "Resume"
-
-[node name="RestartButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="1"]
-layout_mode = 2
-text = "Restart"
-
-[node name="OptionsButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="2"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Options"
-
-[node name="MainMenuButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="3"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Main Menu"
-
-[node name="ExitButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="4"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Exit Game"
-
-[node name="ConfirmRestart" type="ConfirmationDialog" parent="." index="2"]
-unique_name_in_owner = true
-auto_translate_mode = 1
-dialog_text = "Restart the game?"
-
-[node name="ConfirmMainMenu" type="ConfirmationDialog" parent="." index="3"]
-unique_name_in_owner = true
-auto_translate_mode = 1
-dialog_text = "Go back to main menu?"
-
-[node name="ConfirmExit" type="ConfirmationDialog" parent="." index="4"]
-unique_name_in_owner = true
-auto_translate_mode = 1
-dialog_text = "Quit the game?"
-
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/RestartButton" to="." method="_on_restart_button_pressed"]
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/OptionsButton" to="." method="_on_options_button_pressed"]
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/MainMenuButton" to="." method="_on_main_menu_button_pressed"]
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/ExitButton" to="." method="_on_exit_button_pressed"]
-[connection signal="confirmed" from="ConfirmRestart" to="." method="_on_confirm_restart_confirmed"]
-[connection signal="confirmed" from="ConfirmMainMenu" to="." method="_on_confirm_main_menu_confirmed"]
-[connection signal="confirmed" from="ConfirmExit" to="." method="_on_confirm_exit_confirmed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd
deleted file mode 100644
index 92c47f2..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd
+++ /dev/null
@@ -1,49 +0,0 @@
-@tool
-class_name OverlaidMenu
-extends Control
-
-@export var pauses_game : bool = false :
- set(value):
- pauses_game = value
- if pauses_game:
- process_mode = PROCESS_MODE_ALWAYS
- else:
- process_mode = PROCESS_MODE_INHERIT
-@export var makes_mouse_visible : bool = true
-
-var _initial_pause_state : bool = false
-var _initial_focus_mode : FocusMode = FOCUS_ALL
-var _initial_mouse_mode : Input.MouseMode
-var _initial_focus_control
-var _scene_tree : SceneTree
-
-func close() -> void:
- _scene_tree.paused = _initial_pause_state
- Input.set_mouse_mode(_initial_mouse_mode)
- if is_instance_valid(_initial_focus_control) and _initial_focus_control.is_inside_tree():
- _initial_focus_control.focus_mode = _initial_focus_mode
- _initial_focus_control.grab_focus()
- queue_free()
-
-func _handle_cancel_input() -> void:
- close()
-
-func _unhandled_input(event : InputEvent) -> void:
- if event.is_action_pressed("ui_cancel"):
- _handle_cancel_input()
- get_viewport().set_input_as_handled()
-
-func _on_close_button_pressed() -> void:
- close()
-
-func _enter_tree() -> void:
- _scene_tree = get_tree()
- _initial_pause_state = _scene_tree.paused
- _initial_mouse_mode = Input.get_mouse_mode()
- _initial_focus_control = get_viewport().gui_get_focus_owner()
- if _initial_focus_control:
- _initial_focus_mode = _initial_focus_control.focus_mode
- if Engine.is_editor_hint(): return
- _scene_tree.paused = pauses_game or _initial_pause_state
- if makes_mouse_visible:
- Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd.uid b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd.uid
deleted file mode 100644
index 4a7fdb9..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://xfugmpspqbcc
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn
deleted file mode 100644
index 65c9d7f..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn
+++ /dev/null
@@ -1,88 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://wny2d8dvp3ok"]
-
-[ext_resource type="Script" uid="uid://xfugmpspqbcc" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd" id="1_euyj1"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_6ani0"]
-
-[node name="OverlaidMenu" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_euyj1")
-
-[node name="BackgroundColor" type="ColorRect" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-color = Color(0, 0, 0, 0.12549)
-
-[node name="MenuPanelContainer" type="PanelContainer" parent="."]
-unique_name_in_owner = true
-process_mode = 3
-layout_mode = 1
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-offset_left = -16.0
-offset_top = -16.0
-offset_right = 16.0
-offset_bottom = 16.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="MarginContainer" type="MarginContainer" parent="MenuPanelContainer"]
-layout_mode = 2
-theme_override_constants/margin_left = 16
-theme_override_constants/margin_top = 16
-theme_override_constants/margin_right = 16
-theme_override_constants/margin_bottom = 16
-
-[node name="BoxContainer" type="BoxContainer" parent="MenuPanelContainer/MarginContainer"]
-layout_mode = 2
-vertical = true
-
-[node name="TitleMargin" type="MarginContainer" parent="MenuPanelContainer/MarginContainer/BoxContainer"]
-layout_mode = 2
-
-[node name="TitleLabel" type="Label" parent="MenuPanelContainer/MarginContainer/BoxContainer/TitleMargin"]
-layout_mode = 2
-theme_override_font_sizes/font_size = 24
-text = "Menu"
-horizontal_alignment = 1
-
-[node name="DescriptionMargin" type="MarginContainer" parent="MenuPanelContainer/MarginContainer/BoxContainer"]
-visible = false
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="DescriptionLabel" type="RichTextLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin"]
-layout_mode = 2
-bbcode_enabled = true
-
-[node name="MenuButtonsMargin" type="MarginContainer" parent="MenuPanelContainer/MarginContainer/BoxContainer"]
-layout_mode = 2
-
-[node name="MenuButtons" type="BoxContainer" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(128, 0)
-layout_mode = 2
-size_flags_horizontal = 4
-size_flags_vertical = 3
-theme_override_constants/separation = 16
-alignment = 1
-vertical = true
-script = ExtResource("2_6ani0")
-
-[node name="CloseButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons"]
-layout_mode = 2
-text = "Close"
-
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/CloseButton" to="." method="_on_close_button_pressed"]
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd
deleted file mode 100644
index ec4f455..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd
+++ /dev/null
@@ -1,14 +0,0 @@
-@tool
-class_name OverlaidMenuContainer
-extends OverlaidMenu
-
-@export var menu_scene : PackedScene :
- set(value):
- var _value_changed = menu_scene != value
- menu_scene = value
- if _value_changed:
- for child in %MenuContainer.get_children():
- child.queue_free()
- if menu_scene:
- var _instance = menu_scene.instantiate()
- %MenuContainer.add_child(_instance)
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd.uid b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd.uid
deleted file mode 100644
index c378b87..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://droejgtv8bu0s
diff --git a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.tscn b/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.tscn
deleted file mode 100644
index 5511e2c..0000000
--- a/godot/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.tscn
+++ /dev/null
@@ -1,21 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://bqqngki8bm3iq"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_xgkve"]
-[ext_resource type="Script" uid="uid://droejgtv8bu0s" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu_container.gd" id="2_owcue"]
-
-[node name="OverlaidMenuContainer" instance=ExtResource("1_xgkve")]
-script = ExtResource("2_owcue")
-menu_scene = null
-
-[node name="MenuContainer" type="MarginContainer" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="2"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="MenuButtonsMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="3"]
-theme_override_constants/margin_top = 16
-theme_override_constants/margin_bottom = 16
-
-[node name="CloseButton" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="0"]
-size_flags_horizontal = 4
-text = "Back"
diff --git a/godot/addons/maaacks_game_template/base/scripts/app_settings.gd b/godot/addons/maaacks_game_template/base/scripts/app_settings.gd
deleted file mode 100644
index fb266e4..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/app_settings.gd
+++ /dev/null
@@ -1,188 +0,0 @@
-class_name AppSettings
-extends Node
-## Interface to read/write general application settings through [PlayerConfig].
-
-const INPUT_SECTION = &'InputSettings'
-const AUDIO_SECTION = &'AudioSettings'
-const VIDEO_SECTION = &'VideoSettings'
-const GAME_SECTION = &'GameSettings'
-const APPLICATION_SECTION = &'ApplicationSettings'
-const CUSTOM_SECTION = &'CustomSettings'
-
-const FULLSCREEN = &'Fullscreen'
-const SCREEN_RESOLUTION = &'ScreenResolution'
-const V_SYNC = &'V-Sync'
-const MUTE_SETTING = &'Mute'
-const MASTER_BUS_INDEX = 0
-const SYSTEM_BUS_NAME_PREFIX = "_"
-
-# Input
-static var default_action_events : Dictionary
-static var initial_bus_volumes : Array
-
-static func get_config_input_events(action_name : String, default = null) -> Array:
- return PlayerConfig.get_config(INPUT_SECTION, action_name, default)
-
-static func set_config_input_events(action_name : String, inputs : Array) -> void:
- PlayerConfig.set_config(INPUT_SECTION, action_name, inputs)
-
-static func _clear_config_input_events() -> void:
- PlayerConfig.erase_section(INPUT_SECTION)
-
-static func remove_action_input_event(action_name : String, input_event : InputEvent) -> void:
- InputMap.action_erase_event(action_name, input_event)
- var action_events : Array[InputEvent] = InputMap.action_get_events(action_name)
- var config_events : Array = get_config_input_events(action_name, action_events)
- config_events.erase(input_event)
- set_config_input_events(action_name, config_events)
-
-static func set_input_from_config(action_name : String) -> void:
- var action_events : Array[InputEvent] = InputMap.action_get_events(action_name)
- var config_events = get_config_input_events(action_name, action_events)
- if config_events == action_events:
- return
- if config_events.is_empty():
- PlayerConfig.erase_section_key(INPUT_SECTION, action_name)
- return
- InputMap.action_erase_events(action_name)
- for config_event in config_events:
- if config_event not in action_events:
- InputMap.action_add_event(action_name, config_event)
-
-static func _get_action_names() -> Array[StringName]:
- return InputMap.get_actions()
-
-static func _get_custom_action_names() -> Array[StringName]:
- var callable_filter := func(action_name): return not (action_name.begins_with("ui_") or action_name.begins_with("spatial_editor"))
- var action_list := _get_action_names()
- return action_list.filter(callable_filter)
-
-static func get_action_names(built_in_actions : bool = false) -> Array[StringName]:
- if built_in_actions:
- return _get_action_names()
- else:
- return _get_custom_action_names()
-
-static func reset_to_default_inputs() -> void:
- _clear_config_input_events()
- for action_name in default_action_events:
- InputMap.action_erase_events(action_name)
- var input_events = default_action_events[action_name]
- for input_event in input_events:
- InputMap.action_add_event(action_name, input_event)
-
-static func set_default_inputs() -> void:
- var action_list : Array[StringName] = _get_action_names()
- for action_name in action_list:
- default_action_events[action_name] = InputMap.action_get_events(action_name)
-
-static func set_inputs_from_config() -> void:
- var action_list : Array[StringName] = _get_action_names()
- for action_name in action_list:
- set_input_from_config(action_name)
-
-# Audio
-
-static func get_bus_volume(bus_index : int) -> float:
- var initial_linear = 1.0
- if initial_bus_volumes.size() > bus_index:
- initial_linear = initial_bus_volumes[bus_index]
- var linear = db_to_linear(AudioServer.get_bus_volume_db(bus_index))
- linear /= initial_linear
- return linear
-
-static func set_bus_volume(bus_index : int, linear : float) -> void:
- var initial_linear = 1.0
- if initial_bus_volumes.size() > bus_index:
- initial_linear = initial_bus_volumes[bus_index]
- linear *= initial_linear
- AudioServer.set_bus_volume_db(bus_index, linear_to_db(linear))
-
-static func is_muted() -> bool:
- return AudioServer.is_bus_mute(MASTER_BUS_INDEX)
-
-static func set_mute(mute_flag : bool) -> void:
- AudioServer.set_bus_mute(MASTER_BUS_INDEX, mute_flag)
-
-static func get_audio_bus_name(bus_iter : int) -> String:
- return AudioServer.get_bus_name(bus_iter)
-
-static func set_audio_from_config() -> void:
- for bus_iter in AudioServer.bus_count:
- var bus_key : String = get_audio_bus_name(bus_iter).to_pascal_case()
- var bus_volume : float = get_bus_volume(bus_iter)
- initial_bus_volumes.append(bus_volume)
- bus_volume = PlayerConfig.get_config(AUDIO_SECTION, bus_key, bus_volume)
- if is_nan(bus_volume):
- bus_volume = 1.0
- PlayerConfig.set_config(AUDIO_SECTION, bus_key, bus_volume)
- set_bus_volume(bus_iter, bus_volume)
- var mute_audio_flag : bool = is_muted()
- mute_audio_flag = PlayerConfig.get_config(AUDIO_SECTION, MUTE_SETTING, mute_audio_flag)
- set_mute(mute_audio_flag)
-
-# Video
-
-static func set_fullscreen_enabled(value : bool, window : Window) -> void:
- window.mode = Window.MODE_EXCLUSIVE_FULLSCREEN if (value) else Window.MODE_WINDOWED
-
-static func set_resolution(value : Vector2i, window : Window, update_config : bool = true) -> void:
- if value.x == 0 or value.y == 0:
- return
- window.size = value
- if update_config:
- PlayerConfig.set_config(VIDEO_SECTION, SCREEN_RESOLUTION, value)
-
-static func is_fullscreen(window : Window) -> bool:
- return (window.mode == Window.MODE_EXCLUSIVE_FULLSCREEN) or (window.mode == Window.MODE_FULLSCREEN)
-
-static func get_resolution(window : Window) -> Vector2i:
- var current_resolution : Vector2i = window.size
- return PlayerConfig.get_config(VIDEO_SECTION, SCREEN_RESOLUTION, current_resolution)
-
-static func _on_window_size_changed(window: Window) -> void:
- PlayerConfig.set_config(VIDEO_SECTION, SCREEN_RESOLUTION, window.size)
-
-static func _set_fullscreen_from_config(window: Window) -> bool:
- var fullscreen_enabled : bool = is_fullscreen(window)
- fullscreen_enabled = PlayerConfig.get_config(VIDEO_SECTION, FULLSCREEN, fullscreen_enabled)
- set_fullscreen_enabled(fullscreen_enabled, window)
- return fullscreen_enabled
-
-static func set_vsync(vsync_mode : DisplayServer.VSyncMode, window : Window = null) -> void:
- var window_id : int = 0
- if window:
- window_id = window.get_window_id()
- DisplayServer.window_set_vsync_mode(vsync_mode, window_id)
-
-static func get_vsync(window : Window = null) -> DisplayServer.VSyncMode:
- var window_id : int = 0
- if window:
- window_id = window.get_window_id()
- var vsync_mode = DisplayServer.window_get_vsync_mode(window_id)
- return vsync_mode
-
-static func _set_v_sync_from_config(window: Window) -> DisplayServer.VSyncMode:
- var vsync := get_vsync(window)
- vsync = PlayerConfig.get_config(VIDEO_SECTION, V_SYNC, vsync)
- set_vsync(vsync)
- return vsync
-
-static func set_video_from_config(window : Window) -> void:
- window.size_changed.connect(_on_window_size_changed.bind(window))
- var fullscreen_enabled := _set_fullscreen_from_config(window)
- if not (fullscreen_enabled or OS.has_feature("web")):
- var current_resolution : Vector2i = get_resolution(window)
- set_resolution(current_resolution, window)
- _set_v_sync_from_config(window)
-
-# All
-
-static func set_from_config() -> void:
- set_default_inputs()
- set_inputs_from_config()
- set_audio_from_config()
-
-static func set_from_config_and_window(window : Window) -> void:
- set_from_config()
- set_video_from_config(window)
diff --git a/godot/addons/maaacks_game_template/base/scripts/app_settings.gd.uid b/godot/addons/maaacks_game_template/base/scripts/app_settings.gd.uid
deleted file mode 100644
index ed60455..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/app_settings.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dwflyh7g2rjxt
diff --git a/godot/addons/maaacks_game_template/base/scripts/capture_focus.gd b/godot/addons/maaacks_game_template/base/scripts/capture_focus.gd
deleted file mode 100644
index 4345719..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/capture_focus.gd
+++ /dev/null
@@ -1,64 +0,0 @@
-extends Control
-## Node that captures UI focus for games with a hidden mouse or joypad enabled.
-##
-## This script assists with capturing UI focus when
-## opening, closing, or switching between menus.
-## When attached to a node, it will check if it was changed to visible
-## and if it should grab focus. If both are true, it will capture focus
-## on the first eligible node in its scene tree.
-
-## Hierarchical depth to search in the scene tree.
-@export var search_depth : int = 1
-@export var enabled : bool = false
-@export var null_focus_enabled : bool = true
-@export var joypad_enabled : bool = true
-@export var mouse_hidden_enabled : bool = true
-
-## Locks focus
-@export var lock : bool = false :
- set(value):
- var value_changed : bool = lock != value
- lock = value
- if value_changed and not lock:
- update_focus()
-
-func _focus_first_search(control_node : Control, levels : int = 1) -> bool:
- if control_node == null or !control_node.is_visible_in_tree():
- return false
- if control_node.focus_mode == FOCUS_ALL:
- control_node.grab_focus()
- if control_node is ItemList:
- control_node.select(0)
- return true
- if levels < 1:
- return false
- var children = control_node.get_children()
- for child in children:
- if _focus_first_search(child, levels - 1):
- return true
- return false
-
-func focus_first() -> void:
- _focus_first_search(self, search_depth)
-
-func update_focus() -> void:
- if lock : return
- if _is_visible_and_should_capture():
- focus_first()
-
-func _should_capture_focus() -> bool:
- return enabled or \
- (get_viewport().gui_get_focus_owner() == null and null_focus_enabled) or \
- (Input.get_connected_joypads().size() > 0 and joypad_enabled) or \
- (Input.mouse_mode not in [Input.MOUSE_MODE_VISIBLE, Input.MOUSE_MODE_CONFINED] and mouse_hidden_enabled)
-
-func _is_visible_and_should_capture() -> bool:
- return is_visible_in_tree() and _should_capture_focus()
-
-func _on_visibility_changed() -> void:
- call_deferred("update_focus")
-
-func _ready() -> void:
- if is_inside_tree():
- update_focus()
- connect("visibility_changed", _on_visibility_changed)
diff --git a/godot/addons/maaacks_game_template/base/scripts/capture_focus.gd.uid b/godot/addons/maaacks_game_template/base/scripts/capture_focus.gd.uid
deleted file mode 100644
index b0eccab..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/capture_focus.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://1nf36h0gms3q
diff --git a/godot/addons/maaacks_game_template/base/scripts/file_lister.gd b/godot/addons/maaacks_game_template/base/scripts/file_lister.gd
deleted file mode 100644
index cc12090..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/file_lister.gd
+++ /dev/null
@@ -1,51 +0,0 @@
-@tool
-extends Node
-class_name FileLister
-## Helper class for listing all the scenes in a directory.
-
-## List of paths to scene files.
-@export var _refresh_files_action : bool = false :
- set(value):
- if value and Engine.is_editor_hint():
- _refresh_files()
-# For Godot 4.4
-# @export_tool_button("Refresh Files") var _refresh_files_action = _refresh_files
-## Filled in the editor by selecting a directory.
-@export var files : Array[String]
-## Fills files with those discovered in directories, and matching constraints.
-@export_dir var directories : Array[String] :
- set(value):
- directories = value
- _refresh_files()
-
-@export_group("Constraints")
-@export var search : String
-@export var filter : String
-
-@export_subgroup("Advanced Search")
-@export var begins_with : String
-@export var ends_with : String
-@export var not_begins_with : String
-@export var not_ends_with : String
-
-
-func _refresh_files():
- if not is_inside_tree(): return
- files.clear()
- for directory in directories:
- var dir_access = DirAccess.open(directory)
- if dir_access:
- for file in dir_access.get_files():
- if (not search.is_empty()) and (not file.contains(search)):
- continue
- if (not filter.is_empty()) and (file.contains(filter)):
- continue
- if (not begins_with.is_empty()) and (not file.begins_with(begins_with)):
- continue
- if (not ends_with.is_empty()) and (not file.ends_with(ends_with)):
- continue
- if (not not_begins_with.is_empty()) and (file.begins_with(not_begins_with)):
- continue
- if (not not_ends_with.is_empty()) and (file.ends_with(not_ends_with)):
- continue
- files.append(directory + "/" + file)
diff --git a/godot/addons/maaacks_game_template/base/scripts/file_lister.gd.uid b/godot/addons/maaacks_game_template/base/scripts/file_lister.gd.uid
deleted file mode 100644
index ae15737..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/file_lister.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bij7wsh8d44gv
diff --git a/godot/addons/maaacks_game_template/base/scripts/global_state.gd b/godot/addons/maaacks_game_template/base/scripts/global_state.gd
deleted file mode 100644
index 9acf3b1..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/global_state.gd
+++ /dev/null
@@ -1,50 +0,0 @@
-class_name GlobalState
-extends Node
-
-const SAVE_STATE_PATH = "user://global_state.tres"
-const NO_VERSION_NAME = "0.0.0"
-
-static var current : GlobalStateData
-static var current_version : String
-
-static func _log_opened() -> void:
- if current is GlobalStateData:
- current.last_unix_time_opened = int(Time.get_unix_time_from_system())
-
-static func _log_version() -> void:
- if current is GlobalStateData:
- current_version = ProjectSettings.get_setting("application/config/version", NO_VERSION_NAME)
- if current_version.is_empty():
- current_version = NO_VERSION_NAME
- if not current.first_version_opened:
- current.first_version_opened = current_version
- current.last_version_opened = current_version
-
-static func _load_current_state() -> void:
- if FileAccess.file_exists(SAVE_STATE_PATH):
- current = ResourceLoader.load(SAVE_STATE_PATH)
- if not current:
- current = GlobalStateData.new()
-
-static func open() -> void:
- _load_current_state()
- _log_opened()
- _log_version()
- save()
-
-static func save() -> void:
- if current is GlobalStateData:
- ResourceSaver.save(current, SAVE_STATE_PATH)
-
-static func has_state(state_key : String) -> bool:
- if current is not GlobalStateData: return false
- return current.has_state(state_key)
-
-static func get_or_create_state(state_key : String, state_type_path : String) -> Resource:
- if current is not GlobalStateData: return
- return current.get_or_create_state(state_key, state_type_path)
-
-static func reset() -> void:
- if current is not GlobalStateData: return
- current.states.clear()
- save()
diff --git a/godot/addons/maaacks_game_template/base/scripts/global_state.gd.uid b/godot/addons/maaacks_game_template/base/scripts/global_state.gd.uid
deleted file mode 100644
index 6c27059..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/global_state.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://34ojrqt1klav
diff --git a/godot/addons/maaacks_game_template/base/scripts/global_state_data.gd b/godot/addons/maaacks_game_template/base/scripts/global_state_data.gd
deleted file mode 100644
index d95f783..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/global_state_data.gd
+++ /dev/null
@@ -1,24 +0,0 @@
-class_name GlobalStateData
-extends Resource
-
-@export var first_version_opened : String
-@export var last_version_opened : String
-@export var last_unix_time_opened : int
-@export var states : Dictionary
-
-func get_or_create_state(key_name : String, state_type_path : String) -> Resource:
- var new_state : Resource
- var new_state_script = load(state_type_path)
- if new_state_script is GDScript:
- new_state = new_state_script.new()
- if key_name in states:
- var saved_state : Resource = states[key_name]
- var saved_script = saved_state.get_script()
- var new_script = new_state.get_script()
- if saved_script and new_script and saved_script == new_script:
- return saved_state
- states[key_name] = new_state
- return new_state
-
-func has_state(key_name : String) -> bool:
- return key_name in states
diff --git a/godot/addons/maaacks_game_template/base/scripts/global_state_data.gd.uid b/godot/addons/maaacks_game_template/base/scripts/global_state_data.gd.uid
deleted file mode 100644
index 533759a..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/global_state_data.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bb3tb71vb6p8w
diff --git a/godot/addons/maaacks_game_template/base/scripts/input_helper.gd b/godot/addons/maaacks_game_template/base/scripts/input_helper.gd
deleted file mode 100644
index affab91..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/input_helper.gd
+++ /dev/null
@@ -1,175 +0,0 @@
-class_name InputEventHelper
-extends Node
-## Helper class for organizing constants related to [InputEvent].
-
-const DEVICE_KEYBOARD = "Keyboard"
-const DEVICE_MOUSE = "Mouse"
-const DEVICE_XBOX_CONTROLLER = "Xbox"
-const DEVICE_SWITCH_CONTROLLER = "Switch"
-const DEVICE_SWITCH_JOYCON_LEFT_CONTROLLER = "Switch Left Joycon"
-const DEVICE_SWITCH_JOYCON_RIGHT_CONTROLLER = "Switch Right Joycon"
-const DEVICE_SWITCH_JOYCON_COMBINED_CONTROLLER = "Switch Combined Joycons"
-const DEVICE_PLAYSTATION_CONTROLLER = "Playstation"
-const DEVICE_STEAMDECK_CONTROLLER = "Steamdeck"
-const DEVICE_GENERIC = "Generic"
-
-const JOYSTICK_LEFT_NAME = "Left Stick"
-const JOYSTICK_RIGHT_NAME = "Right Stick"
-const D_PAD_NAME = "Dpad"
-
-const MOUSE_BUTTONS : Array = ["None", "Left", "Right", "Middle", "Scroll Up", "Scroll Down", "Wheel Left", "Wheel Right"]
-
-const JOYPAD_BUTTON_NAME_MAP : Dictionary = {
- DEVICE_GENERIC : ["Trigger A", "Trigger B", "Trigger C", "", "", "", "", "Left Stick Press", "Right Stick Press", "Left Shoulder", "Right Shoulder", "Up", "Down", "Left", "Right"],
- DEVICE_XBOX_CONTROLLER : ["A", "B", "X", "Y", "View", "Home", "Menu", "Left Stick Press", "Right Stick Press", "Left Shoulder", "Right Shoulder", "Up", "Down", "Left", "Right", "Share"],
- DEVICE_SWITCH_CONTROLLER : ["B", "A", "Y", "X", "Minus", "", "Plus", "Left Stick Press", "Right Stick Press", "Left Shoulder", "Right Shoulder", "Up", "Down", "Left", "Right", "Capture"],
- DEVICE_PLAYSTATION_CONTROLLER : ["Cross", "Circle", "Square", "Triangle", "Select", "PS", "Options", "Left Stick Press", "Right Stick Press", "Left Shoulder", "Right Shoulder", "Up", "Down", "Left", "Right", "Microphone"],
- DEVICE_STEAMDECK_CONTROLLER : ["A", "B", "X", "Y", "View", "", "Options", "Left Stick Press", "Right Stick Press", "Left Shoulder", "Right Shoulder", "Up", "Down", "Left", "Right"]
-} # Dictionary[String, Array]
-
-const SDL_DEVICE_NAMES: Dictionary = {
- DEVICE_XBOX_CONTROLLER: ["XInput", "XBox"],
- DEVICE_PLAYSTATION_CONTROLLER: ["Sony", "PS5", "PS4", "Nacon"],
- DEVICE_STEAMDECK_CONTROLLER: ["Steam"],
- DEVICE_SWITCH_CONTROLLER: ["Switch"],
- DEVICE_SWITCH_JOYCON_LEFT_CONTROLLER: ["Joy-Con (L)", "Left Joy-Con"],
- DEVICE_SWITCH_JOYCON_RIGHT_CONTROLLER: ["Joy-Con (R)", "Right Joy-Con"],
- DEVICE_SWITCH_JOYCON_COMBINED_CONTROLLER: ["Joy-Con (L/R)", "Combined Joy-Cons"],
-}
-
-const JOY_BUTTON_NAMES : Dictionary = {
- JOY_BUTTON_A: "Button A",
- JOY_BUTTON_B: "Button B",
- JOY_BUTTON_X: "Button X",
- JOY_BUTTON_Y: "Button Y",
- JOY_BUTTON_LEFT_SHOULDER: "Left Shoulder",
- JOY_BUTTON_RIGHT_SHOULDER: "Right Shoulder",
- JOY_BUTTON_LEFT_STICK: "Left Stick",
- JOY_BUTTON_RIGHT_STICK: "Right Stick",
- JOY_BUTTON_START : "Button Start",
- JOY_BUTTON_GUIDE : "Button Guide",
- JOY_BUTTON_BACK : "Button Back",
- JOY_BUTTON_DPAD_UP : D_PAD_NAME + " Up",
- JOY_BUTTON_DPAD_DOWN : D_PAD_NAME + " Down",
- JOY_BUTTON_DPAD_LEFT : D_PAD_NAME + " Left",
- JOY_BUTTON_DPAD_RIGHT : D_PAD_NAME + " Right",
- JOY_BUTTON_MISC1 : "Misc",
-}
-
-const JOYPAD_DPAD_NAMES : Dictionary = {
- JOY_BUTTON_DPAD_UP : D_PAD_NAME + " Up",
- JOY_BUTTON_DPAD_DOWN : D_PAD_NAME + " Down",
- JOY_BUTTON_DPAD_LEFT : D_PAD_NAME + " Left",
- JOY_BUTTON_DPAD_RIGHT : D_PAD_NAME + " Right",
-}
-
-const JOY_AXIS_NAMES : Dictionary = {
- JOY_AXIS_TRIGGER_LEFT: "Left Trigger",
- JOY_AXIS_TRIGGER_RIGHT: "Right Trigger",
-}
-
-const BUILT_IN_ACTION_NAME_MAP : Dictionary = {
- "ui_accept" : "Accept",
- "ui_select" : "Select",
- "ui_cancel" : "Cancel",
- "ui_focus_next" : "Focus Next",
- "ui_focus_prev" : "Focus Prev",
- "ui_left" : "Left (UI)",
- "ui_right" : "Right (UI)",
- "ui_up" : "Up (UI)",
- "ui_down" : "Down (UI)",
- "ui_page_up" : "Page Up",
- "ui_page_down" : "Page Down",
- "ui_home" : "Home",
- "ui_end" : "End",
- "ui_cut" : "Cut",
- "ui_copy" : "Copy",
- "ui_paste" : "Paste",
- "ui_undo" : "Undo",
- "ui_redo" : "Redo",
-}
-
-static func has_joypad() -> bool:
- return Input.get_connected_joypads().size() > 0
-
-static func is_joypad_event(event: InputEvent) -> bool:
- return event is InputEventJoypadButton or event is InputEventJoypadMotion
-
-static func is_mouse_event(event: InputEvent) -> bool:
- return event is InputEventMouseButton or event is InputEventMouseMotion
-
-static func get_device_name_by_id(device_id : int) -> String:
- if device_id >= 0:
- var device_name = Input.get_joy_name(device_id)
- for device_key in SDL_DEVICE_NAMES:
- for keyword in SDL_DEVICE_NAMES[device_key]:
- if device_name.containsn(keyword):
- return device_key
- return DEVICE_GENERIC
-
-static func get_device_name(event: InputEvent) -> String:
- if event is InputEventJoypadButton or event is InputEventJoypadMotion:
- if event.device == -1:
- return DEVICE_GENERIC
- var device_id = event.device
- return get_device_name_by_id(device_id)
- return DEVICE_GENERIC
-
-static func _display_server_supports_keycode_from_physical():
- return OS.has_feature("windows") or OS.has_feature("macos") or OS.has_feature("linux")
-
-static func get_text(event : InputEvent) -> String:
- if event == null:
- return ""
- if event is InputEventJoypadButton:
- if event.button_index in JOY_BUTTON_NAMES:
- return JOY_BUTTON_NAMES[event.button_index]
- elif event is InputEventJoypadMotion:
- var full_string := ""
- var direction_string := ""
- var is_right_or_down : bool = event.axis_value > 0.0
- if event.axis in JOY_AXIS_NAMES:
- return JOY_AXIS_NAMES[event.axis]
- match(event.axis):
- JOY_AXIS_LEFT_X:
- full_string = JOYSTICK_LEFT_NAME
- direction_string = "Right" if is_right_or_down else "Left"
- JOY_AXIS_LEFT_Y:
- full_string = JOYSTICK_LEFT_NAME
- direction_string = "Down" if is_right_or_down else "Up"
- JOY_AXIS_RIGHT_X:
- full_string = JOYSTICK_RIGHT_NAME
- direction_string = "Right" if is_right_or_down else "Left"
- JOY_AXIS_RIGHT_Y:
- full_string = JOYSTICK_RIGHT_NAME
- direction_string = "Down" if is_right_or_down else "Up"
- full_string += " " + direction_string
- return full_string
- elif event is InputEventKey:
- var keycode : Key = event.get_physical_keycode()
- if keycode:
- keycode = event.get_physical_keycode_with_modifiers()
- else:
- keycode = event.get_keycode_with_modifiers()
- if _display_server_supports_keycode_from_physical():
- keycode = DisplayServer.keyboard_get_keycode_from_physical(keycode)
- return OS.get_keycode_string(keycode)
- return event.as_text()
-
-static func get_device_specific_text(event : InputEvent, device_name : String = "") -> String:
- if device_name.is_empty():
- device_name = get_device_name(event)
- if event is InputEventJoypadButton:
- var joypad_button : String = ""
- if event.button_index in JOYPAD_DPAD_NAMES:
- joypad_button = JOYPAD_DPAD_NAMES[event.button_index]
- elif event.button_index < JOYPAD_BUTTON_NAME_MAP[device_name].size():
- joypad_button = JOYPAD_BUTTON_NAME_MAP[device_name][event.button_index]
- return "%s %s" % [device_name, joypad_button]
- if event is InputEventJoypadMotion:
- return "%s %s" % [device_name, get_text(event)]
- if event is InputEventMouseButton:
- if event.button_index < MOUSE_BUTTONS.size():
- var mouse_button : String = MOUSE_BUTTONS[event.button_index]
- return "%s %s" % [DEVICE_MOUSE, mouse_button]
- return get_text(event).capitalize()
diff --git a/godot/addons/maaacks_game_template/base/scripts/input_helper.gd.uid b/godot/addons/maaacks_game_template/base/scripts/input_helper.gd.uid
deleted file mode 100644
index 7dbb6ea..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/input_helper.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://6xujceamar4h
diff --git a/godot/addons/maaacks_game_template/base/scripts/music_controller.gd b/godot/addons/maaacks_game_template/base/scripts/music_controller.gd
deleted file mode 100644
index 5aeef59..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/music_controller.gd
+++ /dev/null
@@ -1,184 +0,0 @@
-class_name MusicController
-extends Node
-## Controller for music playback across scenes.
-##
-## This node persistently checks for stream players added to the scene tree.
-## It detects stream players that match the audio bus and have autoplay on.
-## It then reparents the stream players to itself, and handles blending.
-## The expected use-case is to attach this script to an autoloaded scene.
-
-const BLEND_BUS_PREFIX : String = "Blend"
-const MAX_DEPTH = 16
-const MINIMUM_VOLUME_DB = -80
-
-## Detect stream players with matching audio bus.
-@export var audio_bus : StringName = &"Music"
-
-@export_group("Blending")
-@export var fade_out_duration : float = 0.0 :
- set(value):
- fade_out_duration = value
- if fade_out_duration < 0:
- fade_out_duration = 0
-
-@export var fade_in_duration : float = 0.0 :
- set(value):
- fade_in_duration = value
- if fade_in_duration < 0:
- fade_in_duration = 0
-
-## Matched stream players with no stream set will stop current playback.
-@export var empty_streams_stop_player : bool = true
-
-var music_stream_player : AudioStreamPlayer
-var blend_audio_bus : StringName
-var blend_audio_bus_idx : int
-
-func fade_out(duration : float = 0.0) -> Tween:
- if is_zero_approx(duration): return
- music_stream_player.bus = audio_bus
- var tween = create_tween()
- tween.tween_property(music_stream_player, "volume_db", MINIMUM_VOLUME_DB, duration)
- return tween
-
-func _set_sub_audio_volume_db(sub_volume_db : float) -> void:
- AudioServer.set_bus_volume_db(blend_audio_bus_idx, sub_volume_db)
-
-func fade_in(duration : float = 0.0) -> Tween:
- if is_zero_approx(duration): return
- music_stream_player.bus = blend_audio_bus
- AudioServer.set_bus_volume_db(blend_audio_bus_idx, MINIMUM_VOLUME_DB)
- var tween = create_tween()
- tween.tween_method(_set_sub_audio_volume_db, MINIMUM_VOLUME_DB, 0, duration)
- return tween
-
-func blend_to(target_volume_db : float, duration : float = 0.0) -> Tween:
- if not is_zero_approx(duration):
- var tween = create_tween()
- tween.tween_property(music_stream_player, "volume_db", target_volume_db, duration)
- return tween
- music_stream_player.volume_db = target_volume_db
- return
-
-func stop() -> void:
- if not is_instance_valid(music_stream_player):
- return
- music_stream_player.stop()
-
-func play(playback_position : float = 0.0) -> void:
- if not is_instance_valid(music_stream_player):
- return
- if is_zero_approx(playback_position) and not music_stream_player.playing:
- music_stream_player.play()
- else:
- music_stream_player.play(playback_position)
-
-func _fade_out_and_free() -> void:
- if not is_instance_valid(music_stream_player):
- return
- var stream_player = music_stream_player
- var tween = fade_out(fade_out_duration)
- if tween != null:
- await(tween.finished)
- stream_player.queue_free()
-
-func _play_and_fade_in() -> void:
- play()
- fade_in( fade_in_duration )
-
-func _is_matching_stream(stream_player : AudioStreamPlayer) -> bool:
- if stream_player.bus != audio_bus:
- return false
- if not is_instance_valid(music_stream_player):
- return false
- return music_stream_player.stream == stream_player.stream
-
-func _connect_stream_on_tree_exiting(stream_player : AudioStreamPlayer) -> void:
- if not stream_player.tree_exiting.is_connected(_on_removed_music_player.bind(stream_player)):
- stream_player.tree_exiting.connect(_on_removed_music_player.bind(stream_player))
-
-func _blend_and_remove_stream_player(stream_player : AudioStreamPlayer) -> void:
- var playback_position := music_stream_player.get_playback_position() + AudioServer.get_time_since_last_mix()
- var old_stream_player = music_stream_player
- music_stream_player = stream_player
- music_stream_player.bus = blend_audio_bus
- play(playback_position)
- old_stream_player.stop()
- old_stream_player.queue_free()
- _connect_stream_on_tree_exiting(music_stream_player)
-
-func _blend_and_connect_stream_player(stream_player : AudioStreamPlayer) -> void:
- stream_player.bus = blend_audio_bus
- _fade_out_and_free()
- music_stream_player = stream_player
- _play_and_fade_in()
- _connect_stream_on_tree_exiting(music_stream_player)
-
-func play_stream_player(stream_player : AudioStreamPlayer) -> void:
- if stream_player == music_stream_player : return
- if stream_player.stream == null and not empty_streams_stop_player:
- return
- if _is_matching_stream(stream_player) :
- _blend_and_remove_stream_player(stream_player)
- else:
- _blend_and_connect_stream_player(stream_player)
-
-func get_stream_player(audio_stream : AudioStream) -> AudioStreamPlayer:
- var stream_player := AudioStreamPlayer.new()
- stream_player.stream = audio_stream
- stream_player.bus = audio_bus
- add_child(stream_player)
- return stream_player
-
-func play_stream(audio_stream : AudioStream) -> AudioStreamPlayer:
- var stream_player := get_stream_player(audio_stream)
- stream_player.play.call_deferred()
- play_stream_player( stream_player )
- return stream_player
-
-func _clone_music_player(stream_player : AudioStreamPlayer) -> void:
- var playback_position := stream_player.get_playback_position() + AudioServer.get_time_since_last_mix()
- var audio_stream := stream_player.stream
- music_stream_player = get_stream_player(audio_stream)
- music_stream_player.volume_db = stream_player.volume_db
- music_stream_player.max_polyphony = stream_player.max_polyphony
- music_stream_player.pitch_scale = stream_player.pitch_scale
- music_stream_player.play.call_deferred(playback_position)
-
-func _reparent_music_player(stream_player : AudioStreamPlayer) -> void:
- var playback_position := stream_player.get_playback_position() + AudioServer.get_time_since_last_mix()
- stream_player.owner = null
- stream_player.reparent.call_deferred(self)
- stream_player.play.call_deferred(playback_position)
-
-func _node_matches_checks(node : Node) -> bool:
- return node is AudioStreamPlayer and node.autoplay and node.bus == audio_bus
-
-func _on_removed_music_player(node: Node) -> void:
- if music_stream_player == node:
- if node.owner == null:
- _clone_music_player(node)
- else:
- _reparent_music_player(node)
- if node.tree_exiting.is_connected(_on_removed_music_player.bind(node)):
- node.tree_exiting.disconnect(_on_removed_music_player.bind(node))
-
-func _on_added_music_player(node: Node) -> void:
- if node == music_stream_player : return
- if not (_node_matches_checks(node)) : return
- play_stream_player(node)
-
-func _enter_tree() -> void:
- AudioServer.add_bus()
- blend_audio_bus_idx = AudioServer.bus_count - 1
- blend_audio_bus = AppSettings.SYSTEM_BUS_NAME_PREFIX + BLEND_BUS_PREFIX + audio_bus
- AudioServer.set_bus_send(blend_audio_bus_idx, audio_bus)
- AudioServer.set_bus_name(blend_audio_bus_idx, blend_audio_bus)
- var tree_node = get_tree()
- if not tree_node.node_added.is_connected(_on_added_music_player):
- tree_node.node_added.connect(_on_added_music_player)
-
-func _exit_tree() -> void:
- var tree_node = get_tree()
- if tree_node.node_added.is_connected(_on_added_music_player):
- tree_node.node_added.disconnect(_on_added_music_player)
diff --git a/godot/addons/maaacks_game_template/base/scripts/music_controller.gd.uid b/godot/addons/maaacks_game_template/base/scripts/music_controller.gd.uid
deleted file mode 100644
index ef37f81..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/music_controller.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ctrh4qyxqncss
diff --git a/godot/addons/maaacks_game_template/base/scripts/pause_menu_controller.gd b/godot/addons/maaacks_game_template/base/scripts/pause_menu_controller.gd
deleted file mode 100644
index 1e92777..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/pause_menu_controller.gd
+++ /dev/null
@@ -1,17 +0,0 @@
-extends Node
-
-## Node for opening a pause menu when detecting a 'ui_cancel' event.
-
-@export var pause_menu_packed : PackedScene
-@export var focused_viewport : Viewport
-
-func _unhandled_input(event : InputEvent) -> void:
- if event.is_action_pressed("ui_cancel"):
- if not focused_viewport:
- focused_viewport = get_viewport()
- var _initial_focus_control = focused_viewport.gui_get_focus_owner()
- var current_menu = pause_menu_packed.instantiate()
- get_tree().current_scene.call_deferred("add_child", current_menu)
- await current_menu.tree_exited
- if is_inside_tree() and _initial_focus_control:
- _initial_focus_control.grab_focus()
diff --git a/godot/addons/maaacks_game_template/base/scripts/pause_menu_controller.gd.uid b/godot/addons/maaacks_game_template/base/scripts/pause_menu_controller.gd.uid
deleted file mode 100644
index b1138e6..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/pause_menu_controller.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cyh0d64pfygbl
diff --git a/godot/addons/maaacks_game_template/base/scripts/player_config.gd b/godot/addons/maaacks_game_template/base/scripts/player_config.gd
deleted file mode 100644
index 3501a7d..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/player_config.gd
+++ /dev/null
@@ -1,56 +0,0 @@
-class_name PlayerConfig
-extends Object
-
-## Interface for a single configuration file through [ConfigFile].
-
-const CONFIG_FILE_LOCATION := "user://player_config.cfg"
-
-static var config_file : ConfigFile
-
-static func _save_config_file() -> void:
- var save_error : int = config_file.save(CONFIG_FILE_LOCATION)
- if save_error:
- push_error("save config file failed with error %d" % save_error)
-
-static func load_config_file() -> void:
- if config_file != null:
- return
- config_file = ConfigFile.new()
- var load_error : int = config_file.load(CONFIG_FILE_LOCATION)
- if load_error:
- var save_error : int = config_file.save(CONFIG_FILE_LOCATION)
- if save_error:
- push_error("save config file failed with error %d" % save_error)
-
-static func set_config(section: String, key: String, value) -> void:
- load_config_file()
- config_file.set_value(section, key, value)
- _save_config_file()
-
-static func get_config(section: String, key: String, default = null) -> Variant:
- load_config_file()
- return config_file.get_value(section, key, default)
-
-static func has_section(section: String) -> bool:
- load_config_file()
- return config_file.has_section(section)
-
-static func has_section_key(section: String, key: String) -> bool:
- load_config_file()
- return config_file.has_section_key(section, key)
-
-static func erase_section(section: String) -> void:
- if has_section(section):
- config_file.erase_section(section)
- _save_config_file()
-
-static func erase_section_key(section: String, key: String) -> void:
- if has_section_key(section, key):
- config_file.erase_section_key(section, key)
- _save_config_file()
-
-static func get_section_keys(section: String) -> PackedStringArray:
- load_config_file()
- if config_file.has_section(section):
- return config_file.get_section_keys(section)
- return PackedStringArray()
diff --git a/godot/addons/maaacks_game_template/base/scripts/player_config.gd.uid b/godot/addons/maaacks_game_template/base/scripts/player_config.gd.uid
deleted file mode 100644
index 37212e7..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/player_config.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dxjk8pgi7yhtq
diff --git a/godot/addons/maaacks_game_template/base/scripts/ui_sound_controller.gd b/godot/addons/maaacks_game_template/base/scripts/ui_sound_controller.gd
deleted file mode 100644
index 2020c62..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/ui_sound_controller.gd
+++ /dev/null
@@ -1,207 +0,0 @@
-class_name UISoundController
-extends Node
-## Controller for managing all UI sounds in a scene from one place.
-##
-## This node manages all of the UI sounds under the provided node path.
-## When attached just below the root node of a scene tree, it will manage
-## all of the UI sounds in that scene.
-
-const MAX_DEPTH = 16
-
-@export var root_path : NodePath = ^".."
-@export var audio_bus : StringName = &"SFX"
-## Continually check any new nodes added to the scene tree.
-@export var persistent : bool = true :
- set(value):
- persistent = value
- _update_persistent_signals()
-
-@export_group("Button Sounds")
-@export var button_hovered : AudioStream
-@export var button_focused : AudioStream
-@export var button_pressed : AudioStream
-
-@export_group("TabBar Sounds")
-@export var tab_hovered : AudioStream
-@export var tab_changed : AudioStream
-@export var tab_selected : AudioStream
-
-@export_group("Slider Sounds")
-@export var slider_hovered : AudioStream
-@export var slider_focused : AudioStream
-@export var slider_drag_started : AudioStream
-@export var slider_drag_ended : AudioStream
-
-@export_group("LineEdit Sounds")
-@export var line_hovered : AudioStream
-@export var line_focused : AudioStream
-@export var line_text_changed : AudioStream
-@export var line_text_submitted : AudioStream
-@export var line_text_change_rejected : AudioStream
-
-@export_group("ItemList Sounds")
-@export var item_list_selected : AudioStream
-@export var item_list_activated : AudioStream
-
-@export_group("Tree Sounds")
-@export var tree_item_selected : AudioStream
-@export var tree_item_activated : AudioStream
-@export var tree_button_clicked : AudioStream
-
-@onready var root_node : Node = get_node(root_path)
-
-var button_hovered_player : AudioStreamPlayer
-var button_focused_player : AudioStreamPlayer
-var button_pressed_player : AudioStreamPlayer
-
-var tab_hovered_player : AudioStreamPlayer
-var tab_changed_player : AudioStreamPlayer
-var tab_selected_player : AudioStreamPlayer
-
-var slider_hovered_player : AudioStreamPlayer
-var slider_focused_player : AudioStreamPlayer
-var slider_drag_started_player : AudioStreamPlayer
-var slider_drag_ended_player : AudioStreamPlayer
-
-var line_hovered_player : AudioStreamPlayer
-var line_focused_player : AudioStreamPlayer
-var line_text_changed_player : AudioStreamPlayer
-var line_text_submitted_player : AudioStreamPlayer
-var line_text_change_rejected_player : AudioStreamPlayer
-
-var item_list_activated_player : AudioStreamPlayer
-var item_list_selected_player : AudioStreamPlayer
-
-var tree_item_activated_player : AudioStreamPlayer
-var tree_item_selected_player : AudioStreamPlayer
-var tree_button_clicked_player : AudioStreamPlayer
-
-func _update_persistent_signals() -> void:
- if not is_inside_tree():
- return
- var tree_node = get_tree()
- if persistent:
- if not tree_node.node_added.is_connected(connect_ui_sounds):
- tree_node.node_added.connect(connect_ui_sounds)
- else:
- if tree_node.node_added.is_connected(connect_ui_sounds):
- tree_node.node_added.disconnect(connect_ui_sounds)
-
-func _build_stream_player(stream : AudioStream, stream_name : String = "") -> AudioStreamPlayer:
- var stream_player : AudioStreamPlayer
- if stream != null:
- stream_player = AudioStreamPlayer.new()
- stream_player.stream = stream
- stream_player.bus = audio_bus
- stream_player.name = stream_name + "AudioStreamPlayer"
- add_child(stream_player)
- return stream_player
-
-func _build_button_stream_players() -> void:
- button_hovered_player = _build_stream_player(button_hovered, "ButtonHovered")
- button_focused_player = _build_stream_player(button_focused, "ButtonFocused")
- button_pressed_player = _build_stream_player(button_pressed, "ButtonClicked")
-
-func _build_tab_stream_players() -> void:
- tab_hovered_player = _build_stream_player(tab_hovered, "TabHovered")
- tab_changed_player = _build_stream_player(tab_changed, "TabChanged")
- tab_selected_player = _build_stream_player(tab_selected, "TabSelected")
-
-func _build_slider_stream_players() -> void:
- slider_hovered_player = _build_stream_player(slider_hovered, "SliderHovered")
- slider_focused_player = _build_stream_player(slider_focused, "SliderFocused")
- slider_drag_started_player = _build_stream_player(slider_drag_started, "SliderDragStarted")
- slider_drag_ended_player = _build_stream_player(slider_drag_ended, "SliderDragEnded")
-
-func _build_line_stream_players() -> void:
- line_hovered_player = _build_stream_player(line_hovered, "LineHovered")
- line_focused_player = _build_stream_player(line_focused, "LineFocused")
- line_text_changed_player = _build_stream_player(line_text_changed, "LineTextChanged")
- line_text_submitted_player = _build_stream_player(line_text_submitted, "LineTextSubmitted")
- line_text_change_rejected_player = _build_stream_player(line_text_change_rejected, "LineTextChangeRejected")
-
-func _build_item_list_stream_players() -> void:
- item_list_activated_player = _build_stream_player(item_list_activated, "ItemActivated")
- item_list_selected_player = _build_stream_player(item_list_selected, "ItemSelected")
-
-func _build_tree_stream_players() -> void:
- tree_item_activated_player = _build_stream_player(tree_item_activated, "TreeItemActivated")
- tree_item_selected_player = _build_stream_player(tree_item_selected, "TreeItemSelected")
- tree_button_clicked_player = _build_stream_player(tree_button_clicked, "TreeButtonClicked")
-
-func _build_all_stream_players() -> void:
- _build_button_stream_players()
- _build_tab_stream_players()
- _build_slider_stream_players()
- _build_line_stream_players()
- _build_item_list_stream_players()
- _build_tree_stream_players()
-
-func _play_stream(stream_player : AudioStreamPlayer) -> void:
- if not stream_player.is_inside_tree():
- return
- stream_player.play()
-
-func _tab_event_play_stream(_tab_idx : int, stream_player : AudioStreamPlayer) -> void:
- _play_stream(stream_player)
-
-func _slider_drag_ended_play_stream(_value_changed : bool, stream_player : AudioStreamPlayer) -> void:
- _play_stream(stream_player)
-
-func _line_event_play_stream(_new_text : String, stream_player : AudioStreamPlayer) -> void:
- _play_stream(stream_player)
-
-func _item_list_play_stream(_index : int, stream_player : AudioStreamPlayer) -> void:
- _play_stream(stream_player)
-
-func _tree_button_clicked_play_stream(_tree_item : TreeItem, _column : int, _id : int, _mouse_button_index : int, stream_player : AudioStreamPlayer) -> void:
- _play_stream(stream_player)
-
-func _connect_stream_player(node : Node, stream_player : AudioStreamPlayer, signal_name : StringName, callable : Callable) -> void:
- if stream_player != null and not node.is_connected(signal_name, callable.bind(stream_player)):
- node.connect(signal_name, callable.bind(stream_player))
-
-func connect_ui_sounds(node: Node) -> void:
- if node is Button:
- _connect_stream_player(node, button_hovered_player, &"mouse_entered", _play_stream)
- _connect_stream_player(node, button_focused_player, &"focus_entered", _play_stream)
- _connect_stream_player(node, button_pressed_player, &"pressed", _play_stream)
- elif node is TabBar:
- _connect_stream_player(node, tab_hovered_player, &"tab_hovered", _tab_event_play_stream)
- _connect_stream_player(node, tab_changed_player, &"tab_changed", _tab_event_play_stream)
- _connect_stream_player(node, tab_selected_player, &"tab_selected", _tab_event_play_stream)
- elif node is Slider:
- _connect_stream_player(node, slider_hovered_player, &"mouse_entered", _play_stream)
- _connect_stream_player(node, slider_focused_player, &"focus_entered", _play_stream)
- _connect_stream_player(node, slider_drag_started_player, &"drag_started", _play_stream)
- _connect_stream_player(node, slider_drag_ended_player, &"drag_ended", _slider_drag_ended_play_stream)
- elif node is LineEdit:
- _connect_stream_player(node, line_hovered_player, &"mouse_entered", _play_stream)
- _connect_stream_player(node, line_focused_player, &"focus_entered", _play_stream)
- _connect_stream_player(node, line_text_changed_player, &"text_changed", _line_event_play_stream)
- _connect_stream_player(node, line_text_submitted_player, &"text_submitted", _line_event_play_stream)
- _connect_stream_player(node, line_text_change_rejected_player, &"text_change_rejected", _line_event_play_stream)
- elif node is ItemList:
- _connect_stream_player(node, item_list_activated_player, &"item_activated", _item_list_play_stream)
- _connect_stream_player(node, item_list_selected_player, &"item_selected", _item_list_play_stream)
- elif node is Tree:
- _connect_stream_player(node, tree_item_activated_player, &"item_activated", _play_stream)
- _connect_stream_player(node, tree_item_selected_player, &"item_selected", _play_stream)
- _connect_stream_player(node, tree_button_clicked_player, &"button_clicked", _tree_button_clicked_play_stream)
-
-func _recursive_connect_ui_sounds(current_node: Node, current_depth : int = 0) -> void:
- if current_depth >= MAX_DEPTH:
- return
- for node in current_node.get_children():
- connect_ui_sounds(node)
- _recursive_connect_ui_sounds(node, current_depth + 1)
-
-func _ready() -> void:
- _build_all_stream_players()
- _recursive_connect_ui_sounds(root_node)
- persistent = persistent
-
-func _exit_tree() -> void:
- var tree_node = get_tree()
- if tree_node.node_added.is_connected(connect_ui_sounds):
- tree_node.node_added.disconnect(connect_ui_sounds)
diff --git a/godot/addons/maaacks_game_template/base/scripts/ui_sound_controller.gd.uid b/godot/addons/maaacks_game_template/base/scripts/ui_sound_controller.gd.uid
deleted file mode 100644
index cb78585..0000000
--- a/godot/addons/maaacks_game_template/base/scripts/ui_sound_controller.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b5oej1q4h7jvh
diff --git a/godot/addons/maaacks_game_template/base/translations/menus_translations.csv b/godot/addons/maaacks_game_template/base/translations/menus_translations.csv
deleted file mode 100644
index a9da299..0000000
--- a/godot/addons/maaacks_game_template/base/translations/menus_translations.csv
+++ /dev/null
@@ -1,72 +0,0 @@
-keys,en,fr
-
-___ MAIN MENU,,
-
-Title,Title,Titre
-Subtitle,Subtitle,Sous-titre
-Play,Play,Jouer
-Options,Options,Options
-Credits,Credits,Crédits
-Exit,Exit,Quitter
-
-___ LOADING SCREEN,,
-Loading...,Loading...,Chargement...
-
-___ DIALOGS IN GAME,,
-
-You lose.,You lose.,Vous avez perdu.
-You won!,You won!,Vous avez gagné !
-Thanks for playing!,Thanks for playing!,Merci d'avoir joué !
-
-Exit Game,Exit Game,Quitter le jeu
-Main Menu,Main Menu,Menu principal
-Restart,Restart,Recommencer
-Continue,Continue,Continuer
-Menu,Menu,Menu
-
-Please Confirm...,Please Confirm...,Veuillez confirmer...
-Go back to main menu?,Go back to main menu?,Retourner au menu principal ?
-Quit the game?,Quit the game?,Quitter le jeu ?
-Cancel,Cancel,Annuler
-OK,OK,OK
-
-___ OPTIONS MENU,,
-
-Controls,Controls,Contrôles
-Mouse Sensitivity :,Mouse Sensitivity :,Sensibilité souris :
-Actions & Inputs,Actions & Inputs,Actions et contrôles
-Add,Add,Ajouter
-Remove,Remove,Enlever
-Assign Key for {action},Assign Key for {action},Choisir le contrôle pour {action}
-Listening for input...,Listening for input...,Appuyez sur un bouton...
-Press again to confirm...,Press again to confirm...,Appuyez encore pour confirmer...
-Focus here to assign inputs.,Focus here to assign inputs.,Mettez le focus ici pour choisir le contrôle.
-Already Assigned,Already Assigned,Déjà utilisé
-{key} already assigned to {action}.,{key} already assigned to {action}.,{key} est déjà utilisé pour {action}.
-Remove Key for {action},Remove Key for {action},Supprimer le contrôle pour {action}
-Are you sure you want to remove {key} from {action}?,Are you sure you want to remove {key} from {action}?,Êtes-vous sûr de vouloir supprimer {key} pour {action} ?
-Reset,Reset,Réinitialiser
-
-Audio,Audio,Audio
-Master :,Master :,Principal :
-Music :,Music :,Musique :
-SFX :,SFX :,Effets :
-Mute :,Mute :,Silencieux :
-
-Video,Video,Vidéo
-Fullscreen :,Fullscreen :,Plein écran :
-Resolution :,Resolution :,Résolution :
-Anti-Aliasing :,Anti-Aliasing :,Anticrénelage :
-Disabled (Fastest),Disabled (Fastest),Désactivé (Plus rapide)
-8x (Slowest),8x (Slowest),8x (Plus lent)
-Camera Shake :,Camera Shake :,Secousse Caméra :
-Normal,Normal,Normale
-Reduced,Reduced,Réduite
-Minimal,Minimal,Minimum
-None,None,Aucune
-
-Game,Game,Jeu
-Reset Game :,Reset Game :,Réinitialiser le jeu :
-Do you want to reset your game data?,Do you want to reset your game data?,Voulez-vous réinitialiser votre partie ?
-
-Back,Back,Retour
diff --git a/godot/addons/maaacks_game_template/base/translations/menus_translations.csv.import b/godot/addons/maaacks_game_template/base/translations/menus_translations.csv.import
deleted file mode 100644
index d9f735f..0000000
--- a/godot/addons/maaacks_game_template/base/translations/menus_translations.csv.import
+++ /dev/null
@@ -1,17 +0,0 @@
-[remap]
-
-importer="csv_translation"
-type="Translation"
-uid="uid://i6ihop1vp2ei"
-
-[deps]
-
-files=["res://addons/maaacks_game_template/base/translations/menus_translations.en.translation", "res://addons/maaacks_game_template/base/translations/menus_translations.fr.translation"]
-
-source_file="res://addons/maaacks_game_template/base/translations/menus_translations.csv"
-dest_files=["res://addons/maaacks_game_template/base/translations/menus_translations.en.translation", "res://addons/maaacks_game_template/base/translations/menus_translations.fr.translation"]
-
-[params]
-
-compress=true
-delimiter=0
diff --git a/godot/addons/maaacks_game_template/docs/AddingCustomOptions.md b/godot/addons/maaacks_game_template/docs/AddingCustomOptions.md
deleted file mode 100644
index 5b99eae..0000000
--- a/godot/addons/maaacks_game_template/docs/AddingCustomOptions.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Adding Custom Options
-
-This page covers adding new buttons, sliders, or editable text fields to the options menus that automatically persist between sessions.
-
-## To the Menu
-Custom options can be added to a menu without any code.
-
-1. Add an `option_control.tscn` node as a child to a container in a scene.
- 1. `slider_option_control.tscn` or `toggle_option_control.tscn` can be used if those types match requirements. In that case, skip step 6.
- 2. `list_option_control.tscn` and `vector_2_list_option_control.tscn` are also available, but more complicated. See the `ScreenResolution` example.
-3. Select the `OptionControl` node just added, to edit it in the inspector.
-4. Add an `Option Name`. This prefills the `Key` string.
-5. Select an `Option Section`. This prefills the `Section` string.
-6. Add any kind of `Button`, `Slider`, `LineEdit`, or `TextEdit` to the `OptionControl` node.
-7. Save the scene.
-
-## To the Game
-For options to have any effect outside of the menus, they will need to be referenced by their `key` and `section` from the `PlayerConfig` class.
-```
-PlayerConfig.get_config(key, section)
-```
-
-For example, here is how to get the player's desired input sensitivity for controlling a player camera.
-```
-var mouse_sensitivity : float = PlayerConfig.get_config(AppSettings.INPUT_SECTION, "MouseSensitivity", 1.0)
-var joypad_sensitivity : float = PlayerConfig.get_config(AppSettings.INPUT_SECTION, "JoypadSensitivity", 1.0)
-```
-
-## Validation
- Validate the values being stored in your local `player_config.cfg` file.
-1. Refer to [Accessing Persistent User Data User](https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html#accessing-persistent-user-data-user) to find Godot user data on your machine.
-2. Find the directory that matches your project's name.
-3. Open `player_config.cfg` (should be in the top directory of the project).
-4. Find the section by the section name in brackets, and the key name followed by an equals.
-
-For example, here is how the player's desired input sensitivity could appear in the config file.
-
-```
-[InputSettings]
-
-MouseSensitivity=1.05
-JoypadSensitivity=0.95
-```
-
-> [!NOTE]
-> Some settings may not appear until they have been customized.
diff --git a/godot/addons/maaacks_game_template/docs/AutomaticUpdating.md b/godot/addons/maaacks_game_template/docs/AutomaticUpdating.md
deleted file mode 100644
index 70e9fd9..0000000
--- a/godot/addons/maaacks_game_template/docs/AutomaticUpdating.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Automatic Updating
-
-This plugin automatically checks GitHub for new releases. When a new release is available, the option to update will appear in the `Project > Tools` menu.
-
-## Starting an Update
-
-> [!IMPORTANT]
-> Save the state of the project, and close all open scenes and scripts.
-
-Select the option from `Project > Tools > Update Maaack's Game Template to v...`.
-
-A window will pop-up, confirming the choice to update to the latest release. Select `OK`.
-
-Another window will show progress through downloading, saving, and extracting.
-
-This effectively deletes the current `addons/maaacks_game_template/` folder and replaces it with a new one. Nothing outside of `addons/` should be affected.
-
-After, a window should appear confirming a successful update.
-
-## Disabling Automatic Checking
-
-You can disable the automatic update checks by going into the Project Settings, and enabling the `maaacks_game_template/disable_update_check` setting. You can then close the window.
-
-## Issues
-
-If the option to update does not appear, try restarting the editor, or re-enabling the plugin.
-
-Updating adds the examples folder into the `addons/maaacks_game_template/` folder, if it had been deleted previously.
-
-Files already copied from the examples folder will not be affected by an update. However, a mismatch of versions may cause issues, too. If there are no major customizations to the copied files, it is recommended to delete them and recopy from `Project > Tools > Copy Maaack's Game Template Examples...`.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/BlendingMusic.md b/godot/addons/maaacks_game_template/docs/BlendingMusic.md
deleted file mode 100644
index e1ef67f..0000000
--- a/godot/addons/maaacks_game_template/docs/BlendingMusic.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# Blending Music Between Scenes
-
-This page covers the `ProjectMusicController`, which is used to blend music in between scenes, that would otherwise abruptly stop the music when they get unloaded.
-
-## Setup
-
-1. Verify the `Music` audio bus.
-
- 1. Open the Audio bus editor.
- 2. Confirm that `Music` audio bus is available.
- 1. If the last bus is `New Bus`, try restarting the editor and checking again.
- 3. If the audio bus doesn't exist, add it and save the project.
-
-2. Verify the `ProjectMusicController` autoload.
-
- 1. Open the Project Settings.
- 2. Open the `Globals` tab.
- 3. Confirm that the `ProjectMusicController` is listed as an autoload.
-
-3. Setup music blending between scenes.
-
- 1. Open up the `project_music_controller.tscn` scene.
- 2. Inspect the root node of the scene tree (`ProjectMusicController`).
- 3. Confirm that the `audio_bus` is set to `Music`.
- 4. Expand the `Blending` variable group.
- 5. Set a `fade_out_duration` or `fade_in_duration`, in seconds.
-
-4. Add background music to your scenes.
-
- 1. Import the music asset into the project.
- 2. Add a `BackgroundMusicPlayer`.
- 3. Assign the music asset to the `stream` property.
- 4. Make sure that the `bus` property is set to `Music` and `autoplay` is `true`.
- 5. Save the scene.
-
-## Internal Details
-
-When a background music player is about to exit the scene tree, it gets reparented to the autoload node. This allows it to continue playing until the next scene is ready and a new background music player is detected. If the audio stream players share the same stream, then the controller will seek the next player to the same position on the stream, before removing the previous one. If a different stream is detected and a fade out duration is set, then the previous player will blend into the next one, by having its volume lowered to zero over the fade out duration.
-
-The autload adds the "BlendMusic" audio bus is added at runtime. If a fade in duration is set, then the temporary bus is used to combine the increasing volume of the player with any other animations local to the scene.
-
-The autoload will work with any `AudioStreamPlayer` with `bus` set to `Music` and `autoplay` set to `true`. These are detected up as they enter the scene tree. To dynamically add an `AudioStreamPlayer` to the background music, call `ProjectMusicController.play_stream(background_music_player)`.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/Exhibiting.md b/godot/addons/maaacks_game_template/docs/Exhibiting.md
deleted file mode 100644
index fc1fc40..0000000
--- a/godot/addons/maaacks_game_template/docs/Exhibiting.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# Exhibiting Games
-
-This page covers general best practices for exhibiting your game at conventions like PAX, Gamescom, etc. You generally don't want people to just close your game and do potentially malicious stuff on the computer, especially if it is your personal computer.
-
-## General Best Practices
-
-- Create a separate non-admin account on your computer and use that to run the game.
-- Disable the Alt-Tab shortcut in your operating system.
- - Windows: Install PowerToys and use its Keyboard Manager to disable it.
-
-## In Godot
-
-- Create a custom [feature tag](https://docs.godotengine.org/en/stable/tutorials/export/feature_tags.html#custom-features) for an exhibition build.
-- Create a autoload script that blocks quitting, sets the window mode to exclusive fullscreen, and sets the mouse mode to confined.
-- Create custom actions for quitting the game.
- - These can be a combination of letters that are unlikely to be pressed by a player during the game.
- - Scripting an input timer can avoid an accidental press by a player from quitting the game.
- - These should be kept hidden from the player.
-- Create a exhibition build by adding the corresponding feature tag to a build preset.
-
-### In the Game Template
-- Hide the custom quit action(s) by setting `show_all_actions` to `false` for the `InputActionsList` and `InputActionsTree` nodes.
-Update: Input Options Menu
-- Disable quitting with the `ui_cancel` action using the feature tag.
-Update:
- - Main Menu
- - End Credits
-- Hide all quit buttons using the feature tag.
-Update:
- - Main Menu
- - Pause Menu
- - Overlaid Menu
- - Game Won Menu
- - Level Lost Menu
-- Disable the fullscreen toggle.
-Update: Video Options Menu
-
-
-### Example
-
-Autoload Script:
-```swift
-extends Node
-
-var sum: float
-
-func _ready() -> void:
- if not OS.has_feature("exhibition"):
- queue_free()
- return
- get_tree().set_auto_accept_quit(false)
- get_window().mode = Window.MODE_EXCLUSIVE_FULLSCREEN
- get_window().always_on_top = true
- Input.mouse_mode = Input.MOUSE_MODE_CONFINED
-
-func _process(delta: float) -> void:
- if (Input.is_action_pressed("exh_quit_one") and Input.is_action_pressed("exh_quit_two")):
- sum += delta
- if sum >= 3:
- get_tree().quit()
- else:
- sum = 0
-```
-
-Disable a quit button by checking for the additional feature flag.
-Example from `end_credits.gd`:
-```swift
-if OS.has_feature("web") or OS.has_feature("exhibition"):
- %ExitButton.hide()
-```
-
-An example implementation is available at [git.rostige-pipe.de](https://git.rostige-pipe.de/JaN0h4ck/fetziges-raetsel-spiel/commit/c65efc79e4460e88fecb8b8e81ce1edcfbbf9617#diff-32a77ee954ef131428f29b9ca647142bfaca06bf).
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/ExistingProject.md b/godot/addons/maaacks_game_template/docs/ExistingProject.md
deleted file mode 100644
index 329e0dd..0000000
--- a/godot/addons/maaacks_game_template/docs/ExistingProject.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Existing Project
-
-These instructions assume starting with just the contents of `addons/` and going through the installer to copy the examples content into your project. This will be the case when installing the *plugin* version in the Godot Asset Library.
-
-To revisit any part of the initial setup, find the `Setup Wizard` at `Project > Tools > Run Maaack's Game Template Setup...`. Example files can be re-copied from the `Setup Wizard`, assuming they have not been deleted.
-
-1. Update the project’s name in the main menu.
-
-
- 1. Open `main_menu_with_animations.tscn`.
- 2. Select the `TitleLabel` node.
- 3. The `Text` should match the project's name (in the project's settings).
- 1. If `Text` is customized, set `Auto Update` to false.
- 4. Select the `SubtitleLabelNode` node and customize the `Text` as desired.
- 5. Save the scene.
-
-
-2. Link the main menu to a custom game scene (skip if using the example game scene).
-
-
- 1. Open `main_menu_with_animations.tscn`.
- 2. Select the `MainMenu` node.
- 3. Update `Game Scene Path` to the path of the project's game scene.
- 4. Save the scene.
-
-
-3. Add background music and sound effects to the UI.
-
- 1. Verify the `Music` and `SFX` audio busses.
-
- 1. Open the Audio bus editor.
- 2. Confirm that `Music` and `SFX` audio busses are available.
- 1. If the last bus is `New Bus`, try restarting the editor and checking again.
- 3. If the audio bus doesn't exist, add it and save the project.
-
- 2. Add background music to the Main Menu.
-
- 1. Import the music asset into the project.
- 2. Open `main_menu_with_animations.tscn`.
- 3. Select the `BackgroundMusicPlayer` node.
- 4. Assign the music asset to the `stream` property.
- 5. Make sure that the `bus` property is set to `Music`.
- 6. Save the scene.
- 7. Optionally, repeat steps 3-5 for background music nodes in:
- 1. `opening_with_logo.tscn`
- 2. `game_ui.tscn`
- 3. `end_credits.tscn`
-
-
- 3. Add sound effects to UI elements.
-
- 1. By scene.
-
-
- 1. Open `main_menu_with_animations.tscn` and `pause_menu.tscn`.
- 2. Select the `UISoundController` node.
- 3. Add audio streams to the various UI node events.
- 4. Save the scenes.
-
-
- 2. Project-wide.
-
-
- 1. Open `project_ui_sound_controller.tscn`.
- 2. Select the `UISoundController` node.
- 3. Add audio streams to the various UI node events.
- 4. Save the scene.
-
-
-4. Add readable names for input actions to the controls menu.
-
-
- 1. Open `input_options_menu.tscn`.
- 2. In the scene tree, select the `Controls` node.
- 3. In the node inspector, select the desired input remapping mode (defaults to `List`).
- 4. In the scene tree, select `InputActionsList` or `InputActionsTree`, depending on the choice of input remapping. The other node should be hidden.
- 5. In the node inspector, update the `Input Action Names` and corresponding `Readable Action Names` to show user-friendly names for the project's input actions.
- 6. Save the scene.
-
-5. Add / remove configurable settings to / from menus.
-
-
- 1. Open `mini_options_menu.tscn` or `[audio|visual|input|game]_options_menu.tscn` scenes to edit their options.
- 2. If an option is not desired, it can always be hidden, or removed entirely (sometimes with some additional work).
- 3. If a new option is desired, refer to [Adding Custom Options.](/addons/maaacks_game_template/docs/AddingCustomOptions.md)
-
-
-6. Update the game credits / attribution.
-
-
- 1. Update the example `ATTRIBUTION.md` with the project's credits.
- 2. Open `scrollable_credits.tscn` and `scrolling_credits.tscn`.
- 3. Check the `CreditsLabel` has updated with the text.
- 4. Optionally, change settings or disable `Auto Update`.
- 5. Save both scenes (even they show no changes).
-
-
-7. Continue with:
-
- 1. [Setting up the Main Menu.](/addons/maaacks_game_template/docs/MainMenuSetup.md)
- 2. [Setting up a Game Scene.](/addons/maaacks_game_template/docs/GameSceneSetup.md)
- 3. [Loading scenes asynchronously.](/addons/maaacks_game_template/docs/LoadingScenes.md)
- 4. [Adding icons to the Input Options.](/addons/maaacks_game_template/docs/InputIconMapping.md)
- 5. [Adding Custom Options.](/addons/maaacks_game_template/docs/AddingCustomOptions.md)
- 6. [Utilizing Game Saving.](/addons/maaacks_game_template/docs/GameSaving.md)
diff --git a/godot/addons/maaacks_game_template/docs/GameSaving.md b/godot/addons/maaacks_game_template/docs/GameSaving.md
deleted file mode 100644
index 7c31737..0000000
--- a/godot/addons/maaacks_game_template/docs/GameSaving.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# Game Saving
-
-> [!IMPORTANT]
-> The save system doesn't follow the same conventions as other systems.
-> It is subject to change.
-
-> [!WARNING]
-> The save system relies on resource files, which are vulnerable to having malicious scripts injected into them.
-> Please discourage players from sharing their save files. Do not use this for cloud saving, either.
-> A safer save system is planned.
-
-
-The templates and plugin suite aim to keep most class definitions within the addon. These are not expected to be changed directly. Unlike the other classes, the `GameState` and `LevelState` are defined for the developer to edit to their needs.
-
-## Usage
-
-The `GlobalState` static class keeps the state saved to a resource. The developer is responsible for making sure `GlobalState.save()` gets called when they want the state saved to the disk.
-
-### Game State
-
-The `GameState` class represents the state of a single playthrough of the game. It currently stores the current level, the max level reached, and the state of each level currently visited.
-
-It is currently expected to be used as a singleton, too.
-
-
-### Level State
-
-The `LevelState` class represents the state of a single level in a playthrough of the game. It currently stores whether the tutorial has been read, and a color, if the player has set one in the example levels. It can be used to store the states of many other level specific features.
-
-From within the `_ready()` method of a level scene, call `GameState.get_level_state(scene_file_path)` to get the last saved `LevelState`, or a new one, and then set the state of the level from that. When a state of the level changes that is intended to be preserved, save it into the level state, and call `GlobalState.save()`.
-
-Examples are provided allowing the player to save the level background color, and keeping the tutorial message from popping up more than once per playthrough.
-
-## Internal Details
-
-Many features provided in the example rely on the `GameStateExample` or `LevelStateExample` to work properly.
-
-The main menu will check the current state to see if a game is in progress and show a `Continue` button. It can also optionally show a `Level Select` button if the player is at least on the 2nd level.
-
-The `LevelManager` in the game UI scene (using `level_and_state_manager.gd`) checks the current state for the level it should load at each stage.
-
-Lastly, the optional level select menu checks the state to determine which levels to display as options to the player.
-
-Data is saved as a resource file in the player's local user directory.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/GameSceneSetup.md b/godot/addons/maaacks_game_template/docs/GameSceneSetup.md
deleted file mode 100644
index f36c598..0000000
--- a/godot/addons/maaacks_game_template/docs/GameSceneSetup.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Game Scene Setup
-
-When setting up a game scene, it is useful to refer to the `game_scene/game_ui.tscn` included in the examples.
-
-There are a few parts to setting up a basic game scene, as done in the `GameUI` example used in the template.
-
-## Pausing
-The `PauseMenuController` node can be added to the tree, or the `pause_menu_controller.gd` script may be attached to an empty `Node`. Selecting the node should then allow for setting the `pause_menu_packed` value in the inspector. Set it to the `pause_menu.tscn` scene and save.
-
-This should be enough to capture when the `ui-cancel` input action is pressed in-game. On keyboards, this is commonly the `Esc` key.
-
-## Level Loading
-Some level loading scripts are provided with the examples. They load levels in order from a list, or dynamically by file paths.
-
-A `LevelLoader` must be provided with a `level_container` in the scene. Levels will get added to and removed from this node. The example uses the `SubViewport`, but any leaf node (ie. node without children) in the scene should work. An optional `level_loading_screen` in the scene can be attached to show progress of loading levels.
-
-The `LevelManager` manages the progress through levels. It works with a level loader and can open menus when players win or lose. It can either be assigned a starting level path (for open world progression) or a scene lister (for linear level progression).
-
-The specific `level_and_state_manager.gd` in the scene inherits from `LevelManager` in order to sync progress with the player's `GameState`, as well.
-
-### Linear Level Progress
-With linear progression, the path in the `starting_level_path` setting can be removed. Levels can be added to the `SceneLister` by either selecting a directory to automatically find scenes, or populating the files array manually.
-
-### Non-Linear Level Progress
-Alternatively, with open world progression, the reference in the `scene_lister` setting can be removed. Instead, the path to the next level is expected to be provided by the current level. The example levels demonstrate this with the `next_level_path` setting.
-
-### Games without levels
-Level Loading is not required if the entire game takes place in one scene.
-
-In that case, the following nodes can be safely removed:
-* LevelLoader
-* LevelManager
-* LevelLoadingScreen
-
-The single level scene can then be added directly to the `SubViewport`, another container, or the root node.
-
-To manage the win and lose screens and transitioning to other scenes, add a `Node` and attach the `win_lose_manager.gd` script. Inspect the node to attach the win / lose screens and paths. The `game_won()` or `game_lost()` will then need to be called when gameplay conditions are met.
-
-## Background Music
-`BackgroundMusicPlayer`'s are `AudioStreamPlayer`'s with `autoplay` set to `true` and `audio_bus` set to "Music". These will automatically be recognized by the `ProjectMusicController` with the default settings, and allow for blending between tracks.
-
-A `BackgroundMusicPlayer` can be added to the main game scene, but if using levels, the level scenes are typically a better place for them, as that allows for tracks to vary by level.
-
-## SubViewports
-The game example has the levels loaded into a `SubViewport` node, contained within a `SubViewportContainer`. This has a couple of advantages.
-
-- Separates elements intended to appear inside the game world from those intended to appear on a layer above it.
-- Allows setting a fixed resolution for the game, like pixel art games.
-- Allows setting rendering settings, like anti-aliasing, on the `SubViewport`.
-- Supports easily adding visual effects with shaders on the `SubViewportContainer`.
-- Visual effects can be added to the game world without hurting the readability of the UI.
-
-It has some disadvantages, as well.
-
-- Locks the viewport resolution if any scaling is enabled, which is not ideal for 3D games.
-- Requires enabling Audio Listeners to hear audio from the game world.
-- Extra processing overhead for the viewport layer.
-
-If a subviewport does not work well for the game, use any empty `Node` as the game world or level container, instead.
-
-### Pixel Art Games
-If working with a pixel art game, often the goal is that the number of art pixels on-screen is to remain the same regardless of screen resolution. As in, the art scales with the monitor, rather than bigger monitors showing more of a scene. This is done by setting the viewport size in the project settings, and setting the stretch mode to either `canvas_mode` or `viewport`.
-
-If a higher resolution is desired for the menus and UI than the game, then the project viewport size should be set to a multiple of the desired game window size. Then set the stretch shrink in `SubViewportContainer` to the multiple of the resolution. For example, if the game is at `640x360`, then the project viewport size can be set to `1280x720`, and the stretch shrink set to `2` (`1280x720 / 2 = 640x360`). Finally, set the texture filter on the `SubViewportContainer` to `Nearest`.
-
-### Mouse Interaction
-If trying to detect `mouse_enter` and `mouse_exit` events on areas inside the game world, enable physics object picking on the `SubViewport`.
-
-## Read Inputs
-Generally, any game is going to require reading some inputs from the player. Where in the scene hierarchy the reading occurs is best answered with simplicity.
-
-If the game involves moving a player character, then the inputs for movements could be read by a `player_character.gd` script overriding the `_process(delta)` or `_input(event)` methods.
-
-If the game involves sending commands to multiple units, then those inputs probably should be read by a `game_ui.gd` script, that then propagates those calls further down the chain.
-
-## Win & Lose Screens
-The example includes win and lose screens. These are triggered by the `LevelManager` when a level is won or lost.
-
-```
-func _load_level_complete_screen_or_next_level():
- if level_won_scene:
- var instance = level_won_scene.instantiate()
- get_tree().current_scene.add_child(instance)
- ...
- else:
- _load_next_level()
-```
-Winning on the last level results in loading a win screen or ending for the game.
-
-```
-func _on_level_won():
- if is_on_last_level():
- _load_win_screen_or_ending()
- else:
- _load_level_won_screen_or_next_level()
-```
-The `LevelManager` will need to be linked to direct back to the main menu and optionally forward to an end credits.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/GamesMade.md b/godot/addons/maaacks_game_template/docs/GamesMade.md
deleted file mode 100644
index 1b1a5e5..0000000
--- a/godot/addons/maaacks_game_template/docs/GamesMade.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# Games
-This page features games using Maaack's Godot Game Template and/or plugins.
-
-If you have a game you'd like to share, join the [Discord server](https://discord.gg/AyZrJh5AMp ) and post a link to your game in #showcase.
-
-## Featured
-
-| Spud Customs | Rent Seek Kill | A Darkness Like Gravity |
-| :-------:| :-------: | :-------: |
- |  |  |
-[Find on Steam](https://store.steampowered.com/app/3291880/Spud_Customs/) | [Play on itch.io](https://xandruher.itch.io/rent-seek-kill) | [Play on itch.io](https://maaack.itch.io/a-darkness-like-gravity) |
-
-
-## All Shared
-### 2025
-https://keur-collectif.itch.io/heartfix-express-demo
-https://spacecheese.itch.io/cia
-https://acul4321.itch.io/bleep
-https://redspine.itch.io/gmtk-game-jam-2025
-https://zunarii.itch.io/loopinball
-https://dragonruler1000.itch.io/beep
-https://store.steampowered.com/app/3751730/Loan_Shark/
-https://parallaxrat.itch.io/no-mans-land
-https://baconeggsrl.itch.io/sprouts-journey
-https://maaack.itch.io/indys-expedition-2
-https://maaack.itch.io/absurd-herd
-https://maaack.itch.io/dungeon-fantasy-fashion-show
-https://plexsoup.itch.io/factoriohno
-https://maaack.itch.io/furnace-in-the-archive
-https://schinken.itch.io/low-ink
-
-### 2024
-https://store.steampowered.com/app/3291880/Spud_Customs/ (Source: https://github.com/Lost-Rabbit-Digital/SpudCustoms)
-https://glockenberg.itch.io/icefire-temple
-https://maaack.itch.io/backroom-labyrinths
-https://maaack.itch.io/haunted-circuits
-https://maaack.itch.io/talk-up-the-tower
-https://marinaaaa.itch.io/meowntaineer
-https://maaack.itch.io/a-darkness-like-gravity
-https://maaack.itch.io/lore-of-the-wild-gwj-70
-https://maaack.itch.io/infinite-horizon
-https://elidef.itch.io/forge-ur-boss
-https://maaack.itch.io/forgeomino
-https://xandruher.itch.io/rent-seek-kill
-https://maaack.itch.io/blind-escape-gwj-66-edition
-https://justaguyjustaguy.itch.io/nannybot-overload
-https://maaack.itch.io/the-last-host-boss-rush
-https://kyveri.itch.io/riverking
-
-### 2023
-https://xandruher.itch.io/spectral-war
-https://maaack.itch.io/the-cat-with-eight-gwj-63-edition
-https://maaack.itch.io/harvest-hill-gwj-62-edition
-https://shoddygames.itch.io/once-summoned
-https://maaack.itch.io/the-last-host
-https://maaack.itch.io/do-androids-dream-gwj-55-edition
-https://maaack.itch.io/character-builder-gwj-53-edition
-
-### 2022
-https://maaack.itch.io/rit-dot-wav
-https://maaack.itch.io/supercritical-a-post-apocalyptic-bonsai
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/HowPartsWork.md b/godot/addons/maaacks_game_template/docs/HowPartsWork.md
deleted file mode 100644
index d4cd901..0000000
--- a/godot/addons/maaacks_game_template/docs/HowPartsWork.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# How Parts Work
-
-This page features snippets of extra documentation on key pieces of the plugin. It was previously included in the README.
-
-- `app_config.tscn` is set as the first autoload. It calls `app_settings.gd` to load all the configuration settings from the config file (if it exists) through `player_config.gd`.
-- `scene_loader.tscn` is set as the second autoload. It can load scenes in the background or with a loading screen (`loading_screen.tscn` by default).
-- `opening.tscn` is a simple scene for fading in/out a few images at the start of the game. It then loads the next scene (`main_menu.tscn`).
-- `main_menu.tscn` is where a player can start the game, change settings, watch credits, or quit. It can link to the path of a game scene to play, and the packed scene of an options menu to use.
-- `option_control.tscn` and its inherited scenes are used for most configurable options in the menus. They work with `player_config.gd` to keep settings persistent between runs.
-- `credits.tscn` reads from `ATTRIBUTION.md` to automatically generate the content for it's scrolling text label.
-- The `UISoundController` node automatically attaches sounds to buttons, tab bars, sliders, and line edits in the scene. `project_ui_sound_controller.tscn` is an autload used to apply UI sounds project-wide.
-- `project_music_controller.tscn` is an autoload that keeps music playing between scenes. It detects music stream players as they are added to the scene tree, reparents them to itself, and blends the tracks.
-- The `PauseMenuController` can be set to load `pause_menu.tscn` when triggering `ui-cancel`.
-- `pause_menu.tscn` is a type of `OverlaidMenu` with the `pauses_game` flag set to true. It will store the previously focused UI element, and return focus to it when closed.
-- `capture_focus.gd` is attached to container nodes throughout the UI. It focuses onto UI elements when they are shown, allowing for easier navigation without a mouse.
-- `game_ui.tscn` is a demo game scene that displays recognized action inputs, and features the `PauseMenuController` node, the `LevelLoader` node to load levels into a container, and `LevelManager` to manage level progress and show menus in case of a win or loss.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/InputIconMapping.md b/godot/addons/maaacks_game_template/docs/InputIconMapping.md
deleted file mode 100644
index b35b856..0000000
--- a/godot/addons/maaacks_game_template/docs/InputIconMapping.md
+++ /dev/null
@@ -1,165 +0,0 @@
-# Input Icon Mapping
-
-The `InputIconMapper` in `input_options_menu.tscn` is a generalized tool meant to be broadly compatible with freely licensed icon asset packs. Instructions on how to use it with a few of these packs are provided, with links to download them from their creator's page.
-
-## Kenney Input Prompts
-
-### Automatic
-
-> [!IMPORTANT]
-> Save the state of the project, and close all open scenes and scripts.
-
-With the project open, select `Project > Tools > Run Maaack's Game Template Setup...`.
-
-In the `Setup Wizard` window next to "Add Input Prompt Icons", click `Run`.
-
-In the next window, select a style and then wait for the icons to download, extract, and setup.
-
-If the icons have already been installed before, you will be presented with the option to skip re-downloading.
-
-> [!WARNING]
-> This may crash the editor.
-> In that event, check if the process completed, and try running the setup again.
-
-### Manual
-
-Available from [kenney.nl](https://kenney.nl/assets/input-prompts) and [itch.io](https://kenney-assets.itch.io/input-prompts).
-
-This pack is organized by `Device/IconType`. The `IconTypes` for each device are just `Default`, `Vector`, or `Double`. These instructions will assume using `Default`. In the inspector of `InputIconMapper`, set the `directories` to include the subdirectories of the asset pack.
-* `.../kenney_input-prompts/Keyboard & Mouse/Default`
-* `.../kenney_input-prompts/Generic/Default`
-* `.../kenney_input-prompts/Xbox Series/Default`
-* `.../kenney_input-prompts/PlayStation Series/Default`
-* `.../kenney_input-prompts/Nintendo Switch/Default`
-* `.../kenney_input-prompts/Steam Deck/Default`
-
-Set `filtered_strings` to:
-* `keyboard`
-* `color`
-* `button`
-* `arrow`
-
-Set `replace_strings` with the key pairs:
-* `"Capslock": "Caps Lock"`
-* `"Generic Stick": "Generic Left Stick"`
-* `"Guide": "Home"`
-* `"Slash Back": "Back Slash"`
-* `"Slash Forward": "Slash"`
-* `"Stick L": "Left Stick"`
-* `"Stick R": "Right Stick"`
-* `"Trigger L 1": "Left Shoulder"`
-* `"Trigger L 2": "Left Trigger"`
-* `"Trigger R 1": "Right Shoulder"`
-* `"Trigger R 2": "Right Trigger"`
-
-#### Filled Icons
-
-Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` tabs. Set `ends_with=".png"` and `not_ends_with="outline.png"`.
-
-Press `Refresh Files`.
-
-If you want to use colored icons, in `prioritized_strings` add `color`. Otherwise set `filter="color"`.
-
-Press `Match Icons to Inputs`.
-
-Validate the results by inspecting the `matching_icons` dictionary.
-
-#### Outlined Icons
-
-Not all icons have outlined versions, so we will end up including the filled icons as fallback, and prioritizing outlined.
-
-Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` export groups. Set `ends_with=".png"`.
-
-Press `Refresh Files`.
-
-Add to `filtered_strings`:
-* `outline`
-
-In `prioritized_strings` add `outline`. If you want to use colored icons, in `prioritized_strings` add `color`, too. Otherwise set `filter="color"`.
-
-Press `Match Icons to Inputs`.
-
-Validate the results by inspecting the `matching_icons` dictionary.
-
-## Kenny Input Prompts Pixel 16x
-
-Incompatible: File names not useable.
-
-## Xelu 's Free Controller & Key Prompts
-
-
-Available from [thoseawesomeguys.com](https://thoseawesomeguys.com/prompts/).
-
-This pack is organized by `Device`. In the inspector of `InputIconMapper`, set the `directories` to include the subdirectories of the asset pack. Assumes using the `Dark` icon set with the keyboard and mouse.
-* `.../Xelu_Free_Controller&Key_Prompts/Keyboard & Mouse/Dark`
-* `.../Xelu_Free_Controller&Key_Prompts/Xbox Series`
-* `.../Xelu_Free_Controller&Key_Prompts/PS5`
-* `.../Xelu_Free_Controller&Key_Prompts/Switch`
-* `.../Xelu_Free_Controller&Key_Prompts/Steam Deck`
-
-Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` tabs. Set `ends_with=".png"`.
-
-Press `Refresh Files`.
-
-Set `filtered_strings` to:
-* `dark`
-* `key`
-
-Set `replace_strings` with the key pairs:
-* `"Ps 5": "Playstation"`
-* `"Xbox Series X": "Xbox"`
-* `"Steam Deck": "Steamdeck"`
-* `"L 1": "Left Shoulder"`
-* `"R 1": "Right Shoulder"`
-* `"L 2": "Left Trigger"`
-* `"R 2": "Right Trigger"`
-* `"Click": "Press"`
-
-Set `add_stick_directions=true`.
-
-Press `Match Icons to Inputs`.
-
-Validate the results by inspecting the `matching_icons` dictionary.
-
-Since `Generic` device icons are not available, set `initial_joypad_device` to either `Xbox`, `Playstation`, `Switch`, or `Steamdeck`.
-
-## Free Icon Pack for Unity & Unreal – 1500+ Input Icons for Game UI
-
-
-Available from [itch.io](https://juliocacko.itch.io/free-input-prompts).
-
-This pack is organized by `Device/IconType`. In the inspector of `InputIconMapper`, set the `directories` to include the subdirectories of the asset pack. Assumes using the `Dark` icon set with the keyboard and mouse, and `Default` for the others.
-* `.../Source/Keyboard_Mouse/Dark`
-* `.../Source/P4Gamepad/Default`
-* `.../Source/XGamepad/Default`
-* `.../Source/SGamepad/Default`
-
-Under the `FileLister` properties of the `InputIconMapper`, expand the `Constraints` and `Advanced Search` tabs. Set `ends_with=".png"`.
-
-Press `Refresh Files`.
-
-In `prioritized_strings`, add either `color` or `white`, depending on what icons you prefer.
-
-Set `filtered_strings` to:
-* `dark`
-* `key`
-* `t`
-* `color`
-* `white`
-
-Set `replace_strings` with the key pairs:
-* `"P 4": "Playstation"`
-* `"X": "Xbox"`
-* `"S": "Switch"`
-* `"L": "Left Stick"`
-* `"R": "Right Stick"`
-* `"Left Stick 1": "Left Shoulder"`
-* `"Right Stick 1": "Right Shoulder"`
-* `"Left Stick 2": "Left Trigger"`
-* `"Right Stick 2": "Right Trigger"`
-
-Press `Match Icons to Inputs`.
-
-Validate the results by inspecting the `matching_icons` dictionary.
-
-Since `Generic` device icons are not available, set `initial_joypad_device` to either `Xbox`, `Playstation`, or `Switch`.
diff --git a/godot/addons/maaacks_game_template/docs/JoypadInputs.md b/godot/addons/maaacks_game_template/docs/JoypadInputs.md
deleted file mode 100644
index 0515080..0000000
--- a/godot/addons/maaacks_game_template/docs/JoypadInputs.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Joypad Inputs
-
-This page covers topics related to working with joypads.
-
-## Recognized Devices
-
-- Xbox
-- Playstation 4
-- Playstation 5
-
-### Unconfirmed
-
-- Switch
-- Steam Deck
-
-## Added UI Inputs
-
-There is a `override.cfg` in the project root directory that adds a few additional inputs to the project's built-in UI actions.
-
-These additional inputs are for joypads and include the following:
-
-- `UI Accept`: A Button (Xbox A / Sony X)
-- `UI Cancel`: Back Button (Xbox Back / Sony Select)
-- `UI Page Up`: Left Shoulder (Xbox LB / Sony L1)
-- `UI Page Down`: Right Shoulder (Xbox RB / Sony R2)
-
-However, for these to work in exported versions of the project, the inputs need to either be added manually to the project's built-in actions, or `override.cfg` will need to be included in the exports. The latter can be done by including the pattern (`*.cfg`) in **Filters to export non-resource files/folders** under the *Resources* tab of the *Export* window.
-
-## Web Builds
-
-Godot (or the template) currently does not support joypad device detection on the web. If icons are being used for input remapping, the joypad icons will *not* update automatically to match a new detected controller.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/LoadingScenes.md b/godot/addons/maaacks_game_template/docs/LoadingScenes.md
deleted file mode 100644
index 91b21ec..0000000
--- a/godot/addons/maaacks_game_template/docs/LoadingScenes.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Loading Scenes
-
-These are instructions for using the `SceneLoader` autoload to load resources asynchronously. This is especially useful for large scenes, but can be used throughout a project. The plugin comes with an example loading screen as well.
-
-## Foreground Loading
-
-By default, calling `SceneLoader.load_scene(path_to_scene)` will unload the current scene and replace it with a loading screen, until the next scene is fully loaded. At that point, the loading screen will be removed and replaced with the next scene.
-
-It is intended to replace calls to `get_tree().change_scene_to_file(path_to_scene)` that open large scenes and may cause a stutter. It can also replace calls to `get_tree().change_scene_to_packed(loaded_packed_scene)`, that may require large scenes to already be loaded into memory.
-
-## Background Loading
-
-Calling `SceneLoader.load_scene(path_to_scene, true)` will load the scene in the background (hence the `in_background` argument being set to `true`).
-
-There are a number of ways to then show the scene when it is ready, or even switch to foreground loading in case it is not.
-
-### Signal When Loaded
-
-A scene can be loaded as soon as it is ready, by listening for the `scene_loaded` signal from the `SceneLoader`.
-
-An example of this is in `level_loader.gd` of [Maaack's Game Template](https://github.com/Maaack/Godot-Game-Template/blob/main/addons/maaacks_game_template/extras/scripts/level_loader.gd), which loads scenes in the background and displays a loading screen, but doesn't change the whole scene when the next one is ready. Instead, it loads the next level into a container.
-
-
-Below is an example of reacting to `SceneLoader` signals to open the loaded scene in an optional `container` node, or switch to it entirely.
-
-```
-SceneLoader.load_scene(path_to_scene, true)
-await SceneLoader.scene_loaded
-if container:
- # Has a container, so will open the loaded scene in it
- var resource = SceneLoader.get_resource()
- var instance = resource.instantiate()
- container.add_child(instance)
-else:
- # Has no container, so will switch to the loaded scene
- SceneLoader.change_scene_to_resource()
-```
-
-### On User Input or a Timed Event
-
-A scene could load the next scene based on a timer, or when the player indicates that they are ready.
-
-An example is in `opening.gd` of [Maaack's Game Template](https://github.com/Maaack/Godot-Game-Template/blob/main/addons/maaacks_game_template/base/scenes/opening/opening.gd), which starts loading the main menu immediately, and switches to it when its animations finish. Player's input can speed them up the animations, so by the end, if the next scene is not ready, a loading screen can be shown instead.
-
-Below is an example of starting the load of the next scene.
-
-```
-func _ready() -> void:
- # Immediately starting to load the next scene in the background
- SceneLoader.load_scene(path_to_scene, true)
-```
-
-Below is an example of reacting to the player's input to either show the next scene or a loading screen.
-
-```
-func _unhandled_input(event : InputEvent) -> void:
- var status = SceneLoader.get_status()
- if status != ResourceLoader.THREAD_LOAD_LOADED:
- # Resource is not loaded, so show the loading screen
- SceneLoader.change_scene_to_loading_screen()
- else:
- # Resource is loaded, so switch to the loaded scene
- SceneLoader.change_scene_to_resource()
-```
diff --git a/godot/addons/maaacks_game_template/docs/MainMenuSetup.md b/godot/addons/maaacks_game_template/docs/MainMenuSetup.md
deleted file mode 100644
index b6a120a..0000000
--- a/godot/addons/maaacks_game_template/docs/MainMenuSetup.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Main Menu Setup
-
-These are instructions for further editing the menus. Basic instructions are available in the [README](/addons/maaacks_game_template/README.md#usage).
-
-## Inheritance
-
-Most example scenes in the template inherit from scenes in `addons`. This is useful for developing of the plugin, but often less useful for those using it. When editing the example scenes, any nodes inherited from a parent scene are highlighted in yellow in the scene tree. Inherited nodes cannot be edited like native nodes. Therefore, it is recommended to first right-click on the root node, and select `Clear Inheritance`. You'll get a warning that this cannot be undone, but it's okay. You probably won't need to undo it, and if you do, there are solutions.
-
-## Visual Placement
-
-The positions and anchor presets of the UI elements can be adjusted to match most designs with ease. Buttons can be centered, right or left justfied, or arranged horizontally. Most visual UI elements are contained within `MarginContainer` and `Control` nodes that allow for fine-tuning of placement.
-
-## Scene Structure
-Some designs may require rearranging the nodes in the scene tree. This is easier once the inheritance to the parent scene is cleared. However, if editing `main_menu_with_animations.tscn`, keep in mind that there are animations, and moving elements outside of the animated containers may have undesired effects.
-
-## 3D Background
-When adding a 3D background to the menu, it is recommended to use a `SubViewportContainer` in place of or right above the `BackgroundTextureRect`. Then add a `SubViewport` to it, and finally the 3D world node to that. This structure gives fine-tune control of scaling, allows for layering 3D views when they have transparency, and makes it easy to add a texture shader to the whole background.
-
-## Level Select
-
-A basic level select scene is available to add to the menu. In `main_menu_with_animations.tscn`, click the root `MainMenu` mode and set `Level Select Packed Scene` to `level_select_menu.tscn`. The button will appear on the main menu when the player has reached the second level.
-
-Levels can be added to the menu by inspecting the `SceneLister` and either selecting a directory to automatically read scene files from, or populating the files array manually.
-
-## Theming
-It is recommended to have a custom theme for a project. Create a theme resource file or use one of the ones provided with the template and set it as the custom theme in the project settings. Any changes made to the theme file will then apply automatically to the whole project.
-
-The main UI elements that are used throughout the project that require theming for customization are:
-- Button
-- Label
-- PanelContainer
-- ProgressBar
-- TabContainer
-- Tree
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/MovingFiles.md b/godot/addons/maaacks_game_template/docs/MovingFiles.md
deleted file mode 100644
index 73cdbd6..0000000
--- a/godot/addons/maaacks_game_template/docs/MovingFiles.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Moving Files
-
-This page covers some tips for rearranging files to an individual developer's preference.
-
-> [!WARNING]
-> Backup your project before attempting to rearrange files.
-> You assume any risk.
-
-## Move Files in the Editor
-
-Use the editor to move files around, as this makes sure that `.uid` files get moved with `.gd` files, external resource references will get updated in `.tscn` files, and paths in project settings get updated.
-
-UIDs do help with moving files outside of the editor, but not all scenes will have UIDs set if they've just recently been copied from the examples.
-
-## Update File Paths
-
-The flow of scenes in the template by default goes `Opening -> Main Menu -> Game Scene -> Ending Scene`.
-
-The `Opening` is referenced in the project settings, and will get automatically update if moved in the editor.
-
-The rest have their default paths stored in the `AppConfig` autoload. These do not get automatically updated, so the developer must update these paths if they change.
-
-Alternatively, the developer can specify paths in the scenes that reference the other scenes by path. These include:
-* `opening.tscn`
-* `opening_with_logo.tscn`
-* `main_menu.tscn`
-* `main_menu_with_animations.tscn`
-* `pause_menu.tscn`
-* `game_ui.tscn` (`level_manager.gd`)
-* `end_credits.tscn`
-
-Any file paths in these scenes left blank will default to the values in `AppConfig`.
-
-## Internal Details
-
-File paths, stored as strings, do not get automatically updated by the editor when their target moves. Paths are used when asynchronous loading of scenes (ie. using `SceneLoader`) is preferred, primarily for memory management.
diff --git a/godot/addons/maaacks_game_template/docs/NewProject.md b/godot/addons/maaacks_game_template/docs/NewProject.md
deleted file mode 100644
index 0e22596..0000000
--- a/godot/addons/maaacks_game_template/docs/NewProject.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# New Projects
-
-These instructions assume starting with the entire contents of the project folder. This will be the case when cloning the repo, or starting from the *template* version in the Godot Asset Library accessible from the Project Manager window.
-
-
-1. Finish setup.
-
- 1. Delete duplicate example files.
- 1. Go to `Project > Tools > Run Maaack's Game Template Setup...`.
- 2. In the `Setup Wizard` window next to "Delete Example Files", click `Run`.
- 3. In the next window, select `Yes` to continue with removing the example files.
-
- 2. Update autoload file paths.
- 1. Go to `Project > Tools > Run Maaack's Game Template Setup...`.
- 2. In the `Setup Wizard` window next to "Update Autoload Paths", click `Run`.
-
- 3. Set a default theme.
- 1. Go to `Project > Tools > Run Maaack's Game Template Setup...`.
- 2. In the `Setup Wizard` window next to "Set the Default Theme", click `Run`.
- 3. In the next window, select the desired theme from the preview and select `Yes` to set it as the project's default theme.
-
-2. Update the project’s name.
-
-
- 1. Go to `Project > Project Settings… > General > Application > Config`.
- 2. Update `Name` to `"Game Name"`.
- 3. Close the window.
- 4. Open `main_menu_with_animations.tscn`.
- 5. Select the `TitleLabel` node.
- 6. The `Text` should match the project's name.
- 1. If `Text` is customized, set `Auto Update` to false.
- 7. Select the `SubtitleLabelNode` node and customize the `Text` as desired.
- 8. Save the scene.
-
-
-3. Add background music and sound effects to the UI.
-
-
- 1. Verify the `Music` and `SFX` audio busses.
-
- 1. Open the Audio bus editor.
- 2. Confirm that `Music` and `SFX` audio busses are available.
- 3. If the audio bus doesn't exist, add it and save the project.
-
- 2. Add background music to the Main Menu.
-
- 1. Import the music asset into the project.
- 2. Open `main_menu_with_animations.tscn`.
- 3. Select the `BackgroundMusicPlayer` node.
- 4. Assign the music asset to the `stream` property.
- 5. Make sure that the `bus` property is set to `Music`.
- 6. Save the scene.
- 7. Optionally, repeat steps 3-5 for background music nodes in:
- 1. `opening_with_logo.tscn`
- 2. `game_ui.tscn`
- 3. `end_credits.tscn`
-
-
- 3. Add sound effects to UI elements.
-
-
- 1. By scene.
-
-
- 1. Open `main_menu_with_animations.tscn` and `pause_menu.tscn`.
- 2. Select the `UISoundController` node.
- 3. Add audio streams to the various UI node events.
- 4. Save the scenes.
-
-
- 2. Project-wide.
-
-
- 1. Open `project_ui_sound_controller.tscn`.
- 2. Select the `UISoundController` node.
- 3. Add audio streams to the various UI node events.
- 4. Save the scene.
-
-
-4. Add readable names for input actions to the controls menu.
-
-
- 1. Open `input_options_menu.tscn`.
- 2. In the scene tree, select the `Controls` node.
- 3. In the node inspector, select the desired input remapping mode (defaults to `List`).
- 4. In the scene tree, select `InputActionsList` or `InputActionsTree`, depending on the choice of input remapping. The other node should be hidden.
- 5. In the node inspector, update the `Input Action Names` and corresponding `Readable Action Names` to show user-friendly names for the project's input actions.
- 6. Save the scene.
-
-
-5. Add / remove configurable settings to / from menus.
-
-
- 1. Open `mini_options_menu.tscn` or `[audio|visual|input|game]_options_menu.tscn` scenes to edit their options.
- 2. If an option is not desired, it can always be hidden, or removed entirely (sometimes with some additional work).
- 3. If a new option is desired, refer to [Adding Custom Options.](/addons/maaacks_game_template/docs/AddingCustomOptions.md)
-
-
-6. Update the game credits / attribution.
-
-
- 1. Update the example `ATTRIBUTION.md` with the project's credits.
- 2. Open `scrollable_credits.tscn` and `scrolling_credits.tscn`.
- 3. Check the `CreditsLabel` has updated with the text.
- 4. Optionally, change settings or disable `Auto Update`.
- 5. Save both scenes (even they show no changes).
-
-
-7. Keep, update, or remove `res://LICENSE.txt`.
-
-
-8. Optionally, if using Git for version control, update `.gitignore` to include `addons/`.
-
-
-9. Continue with:
-
- 1. [Setting up the Main Menu.](/addons/maaacks_game_template/docs/MainMenuSetup.md)
- 2. [Setting up a Game Scene.](/addons/maaacks_game_template/docs/GameSceneSetup.md)
- 3. [Loading scenes asynchronously.](/addons/maaacks_game_template/docs/LoadingScenes.md)
- 4. [Adding icons to the Input Options.](/addons/maaacks_game_template/docs/InputIconMapping.md)
- 5. [Adding Custom Options.](/addons/maaacks_game_template/docs/AddingCustomOptions.md)
- 6. [Utilizing Game Saving.](/addons/maaacks_game_template/docs/GameSaving.md)
diff --git a/godot/addons/maaacks_game_template/docs/PluginSuite.md b/godot/addons/maaacks_game_template/docs/PluginSuite.md
deleted file mode 100644
index ac2d0d4..0000000
--- a/godot/addons/maaacks_game_template/docs/PluginSuite.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Plugin Suite
-
-
-
-Maaack's Game Template is a culmination of a suite of plugins, that can be downloaded individually, if desired.
-
-## GitHub
-
-- [Game Template](https://github.com/Maaack/Godot-Game-Template)
- - [Menus Template](https://github.com/Maaack/Godot-Menus-Template)
- - [Options Menus](https://github.com/Maaack/Godot-Options-Menus)
- - [Input Remapping](https://github.com/Maaack/Godot-Input-Remapping)
- - [Scene Loader](https://github.com/Maaack/Godot-Scene-Loader)
- - [Credits Scene](https://github.com/Maaack/Godot-Credits-Scene)
- - [UI Sound Controller](https://github.com/Maaack/Godot-UI-Sound-Controller)
- - [Music Controller](https://github.com/Maaack/Godot-Music-Controller)
-
-## Godot Asset Library
-
-- [Game Template](https://godotengine.org/asset-library/asset/2709)
- - [Menus Template](https://godotengine.org/asset-library/asset/2899)
- - [Options Menus](https://godotengine.org/asset-library/asset/3058)
- - [Input Remapping](https://godotengine.org/asset-library/asset/4051)
- - [Scene Loader](https://godotengine.org/asset-library/asset/2896)
- - [Credits Scene](https://godotengine.org/asset-library/asset/2932)
- - [UI Sound Controller](https://godotengine.org/asset-library/asset/2897)
- - [Music Controller](https://godotengine.org/asset-library/asset/2898)
-
-## YouTube Video
-
-[](https://youtu.be/3yzaUSaROhw)
-
diff --git a/godot/addons/maaacks_game_template/docs/Screenshots.md b/godot/addons/maaacks_game_template/docs/Screenshots.md
deleted file mode 100644
index 0d3bbc1..0000000
--- a/godot/addons/maaacks_game_template/docs/Screenshots.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# Screenshots
-
-1280x720 and 640x360 resolutions are shown, and resolutions up to 4k are supported.
-
-## 1280 X 720
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## 640 x 360
-
-Screenshots organized by included themes.
-
-### Default (No Theme)
-
-
-
-
-
-
-
-
-
-
-### Gravity
-
-
-
-
-
-
-
-
-
-
-
-### Lore
-
-
-
-
-
-
-
-
-### Steal This Theme
-
-
-
-
-
-
-
-
-
-
-
-
-### Tower
-
-
-
-
-
-
diff --git a/godot/addons/maaacks_game_template/docs/UploadingToItchIo.md b/godot/addons/maaacks_game_template/docs/UploadingToItchIo.md
deleted file mode 100644
index 9678f4c..0000000
--- a/godot/addons/maaacks_game_template/docs/UploadingToItchIo.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Uploading to itch.io
-
-This is a guide on using *Butler* along with a *Butler Manager* helper script to rapidly upload and deploy your builds to itch.io. It's useful for game jams!
-
-## Butler
-
-*Butler* is a command-line tool provided by itch.io to upload content to project pages on itch.io.
-
-Get it here: https://itchio.itch.io/butler
-
-After installing it, run `butler login` and go through the login flow. You should only have to do this once.
-
-*Butler* automatically compares builds and only uploads what has changed, so the first upload will take the longest, but every upload after should be faster.
-
-## Exporting
-
-It is recommended to create an `exports/` directory for your builds, add the directory to your `.gitignore` file (if applicable), and also add a `.gdignore` file to the directory to avoid having Godot add `*.import` files to it as well.
-
-
-## Butler Manager
-
-This script provided at `addons/maaacks_game_template/extras/scripts/butler_manager.sh` can be used to rapidly deploy 4 different builds to your project page. Make sure you can run `bash` shell scripts on your OS. Copy the script into your `exports/` directory and mark it as an executable, if required.
-
-Run the script with `./butler_manager.sh`. On the first run, it will ask for the destination for uploads. This is a combination of the page owner and the project's URL.
-
-The Butler Manager will look for directories named the following:
-
-* HTML5
-* Linux
-* Windows
-* MacOS
-
-Matching directories will be uploaded by *Butler* to their corresponding channels on itch.io. They will then be processed by itch.io servers and eventually appear on the page (usually within 2 minutes).
-
-The owner of the project page will also get a notification when the builds have finished processing.
-
-You can re-run `./butler_manager.sh` right after an export from Godot to keep your builds synced.
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/docs/Videos.md b/godot/addons/maaacks_game_template/docs/Videos.md
deleted file mode 100644
index c001103..0000000
--- a/godot/addons/maaacks_game_template/docs/Videos.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Videos
-
-[](https://youtu.be/U9CB3vKINVw)
-[](https://youtu.be/-QWJnZ8bVdk)
-[](https://youtu.be/DE_6kqvT_yc)
-[](https://youtu.be/3yzaUSaROhw)
-[](https://youtu.be/SBE4icfXYRA)
-[](https://youtu.be/wCc2QUnaBKo)
-[](https://youtu.be/nUOAzSNmz1A)
diff --git a/godot/addons/maaacks_game_template/examples/ATTRIBUTION.md b/godot/addons/maaacks_game_template/examples/ATTRIBUTION.md
deleted file mode 100644
index e87d56e..0000000
--- a/godot/addons/maaacks_game_template/examples/ATTRIBUTION.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Attribution
-## Collaborators
-
-### Role
-Person 1
-Person 2
-[Person w/ Link]()
-
-## Sourced
-### Asset Type
-#### Use Case
-Author: [Name]()
-Source: [Domain : webpage.html]()
-License: [License]()
-
-#### Godot Engine Logo
-Author: Andrea Calabró
-Source: [godotengine.org : press](https://godotengine.org/press/)
-License: [CC BY 4.0 International](https://github.com/godotengine/godot/blob/master/LOGO_LICENSE.txt)
-
-## Tools
-#### Godot
-
-Author: [Juan Linietsky, Ariel Manzur, and contributors](https://godotengine.org/contact)
-Source: [godotengine.org](https://godotengine.org/)
-License: [MIT License](https://github.com/godotengine/godot/blob/master/LICENSE.txt)
-
-#### Godot Game Template
-
-Author: [Marek Belski and contributors](https://github.com/Maaack/Godot-Game-Template/graphs/contributors)
-Source: [github: Godot-Game-Template](https://github.com/Maaack/Godot-Game-Template)
-License: [MIT License](LICENSE.txt)
-
-#### Git
-
-Author: [Linus Torvalds](https://github.com/torvalds)
-Source: [git-scm.com](https://git-scm.com/downloads)
-License: [GNU General Public License version 2](https://opensource.org/licenses/GPL-2.0)
diff --git a/godot/addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png b/godot/addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png
deleted file mode 100644
index 18c5b29..0000000
Binary files a/godot/addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png.import b/godot/addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png.import
deleted file mode 100644
index 303ba81..0000000
--- a/godot/addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://8a4n6eb4185a"
-path="res://.godot/imported/Git-Logo-2Color.png-eb9ceb2cd9ce06526e3423d302befae4.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png"
-dest_files=["res://.godot/imported/Git-Logo-2Color.png-eb9ceb2cd9ce06526e3423d302befae4.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/examples/assets/git_logo/LICENSE.txt b/godot/addons/maaacks_game_template/examples/assets/git_logo/LICENSE.txt
deleted file mode 100644
index 2d17b1d..0000000
--- a/godot/addons/maaacks_game_template/examples/assets/git_logo/LICENSE.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Git Logo
-Copyright (c) Jason Long
-
-This work is licensed under the Creative Commons Attribution 3.0 Unported
-license (CC BY 3.0): https://creativecommons.org/licenses/by/3.0/
-
diff --git a/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/LICENSE.txt b/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/LICENSE.txt
deleted file mode 100644
index a081c9e..0000000
--- a/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Godot Engine Logo
-Copyright (c) 2017 Andrea Calabró
-
-This work is licensed under the Creative Commons Attribution 4.0 International
-license (CC BY 4.0 International): https://creativecommons.org/licenses/by/4.0/
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png b/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png
deleted file mode 100644
index 2c38732..0000000
Binary files a/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png.import b/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png.import
deleted file mode 100644
index 23572fe..0000000
--- a/godot/addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://5rltpvy6c5b"
-path="res://.godot/imported/logo_vertical_color_dark.png-e5c2b23d32ceed7f4ae5467b72d46304.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png"
-dest_files=["res://.godot/imported/logo_vertical_color_dark.png-e5c2b23d32ceed7f4ae5467b72d46304.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/examples/assets/plugin_logo/LICENSE.txt b/godot/addons/maaacks_game_template/examples/assets/plugin_logo/LICENSE.txt
deleted file mode 100644
index fef39a5..0000000
--- a/godot/addons/maaacks_game_template/examples/assets/plugin_logo/LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Maaack's Game Template Logo
-Copyright (c) Marek Belski
-
-This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
-license (CC BY-NC-ND 4.0 International): https://creativecommons.org/licenses/by-nc-nd/4.0
diff --git a/godot/addons/maaacks_game_template/examples/assets/plugin_logo/logo.png b/godot/addons/maaacks_game_template/examples/assets/plugin_logo/logo.png
deleted file mode 100644
index ea70a32..0000000
Binary files a/godot/addons/maaacks_game_template/examples/assets/plugin_logo/logo.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/examples/assets/plugin_logo/logo.png.import b/godot/addons/maaacks_game_template/examples/assets/plugin_logo/logo.png.import
deleted file mode 100644
index 043eeed..0000000
--- a/godot/addons/maaacks_game_template/examples/assets/plugin_logo/logo.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://yp4a7vyufgq5"
-path="res://.godot/imported/logo.png-114f5d870b679bebeed6d3614c55837d.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/maaacks_game_template/examples/assets/plugin_logo/logo.png"
-dest_files=["res://.godot/imported/logo.png-114f5d870b679bebeed6d3614c55837d.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/godot/addons/maaacks_game_template/examples/resources/themes/expedition.tres b/godot/addons/maaacks_game_template/examples/resources/themes/expedition.tres
deleted file mode 100644
index fbcec4c..0000000
--- a/godot/addons/maaacks_game_template/examples/resources/themes/expedition.tres
+++ /dev/null
@@ -1,98 +0,0 @@
-[gd_resource type="Theme" load_steps=8 format=3 uid="uid://cc7juu78cpxfb"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g0sbc"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.823636, 0.744991, 0.659007, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.662913, 0.549096, 0.478248, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_krvwn"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.662913, 0.549096, 0.478248, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.466529, 0.360525, 0.333165, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gfyr3"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.466529, 0.360525, 0.333165, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.282353, 0.231067, 0.227161, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tytr8"]
-bg_color = Color(0.282353, 0.231067, 0.227161, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.133364, 0.133364, 0.133364, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wsakr"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.823636, 0.744991, 0.659007, 1)
-border_width_right = 2
-border_color = Color(0.662913, 0.549096, 0.478248, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1ngrn"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.662913, 0.549096, 0.478248, 1)
-border_width_right = 2
-border_color = Color(0.466529, 0.360525, 0.333165, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q0g5m"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.466529, 0.360525, 0.333165, 1)
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.282353, 0.231067, 0.227161, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-
-[resource]
-Button/styles/hover = SubResource("StyleBoxFlat_g0sbc")
-Button/styles/normal = SubResource("StyleBoxFlat_krvwn")
-Button/styles/pressed = SubResource("StyleBoxFlat_gfyr3")
-Panel/styles/panel = SubResource("StyleBoxFlat_tytr8")
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_tytr8")
-TabContainer/styles/panel = SubResource("StyleBoxFlat_tytr8")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_wsakr")
-TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_1ngrn")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_q0g5m")
diff --git a/godot/addons/maaacks_game_template/examples/resources/themes/gravity.tres b/godot/addons/maaacks_game_template/examples/resources/themes/gravity.tres
deleted file mode 100644
index e9d0a50..0000000
--- a/godot/addons/maaacks_game_template/examples/resources/themes/gravity.tres
+++ /dev/null
@@ -1,116 +0,0 @@
-[gd_resource type="Theme" load_steps=8 format=3 uid="uid://boixl5pj5ta8y"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_w50h3"]
-content_margin_left = 16.0
-content_margin_top = 4.0
-content_margin_right = 16.0
-content_margin_bottom = 4.0
-bg_color = Color(0.125911, 0.125911, 0.125911, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.95, 0.95, 0.95, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-corner_detail = 1
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6tkof"]
-content_margin_left = 16.0
-content_margin_top = 4.0
-content_margin_right = 16.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.95, 0.95, 0.95, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-corner_detail = 1
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ftays"]
-content_margin_left = 16.0
-content_margin_top = 4.0
-content_margin_right = 16.0
-content_margin_bottom = 4.0
-bg_color = Color(0.95, 0.95, 0.95, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.125911, 0.125911, 0.125911, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-corner_detail = 1
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sucf2"]
-bg_color = Color(0.0619267, 0.0619267, 0.0619266, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-corner_detail = 1
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_u30hj"]
-content_margin_left = 8.0
-content_margin_right = 8.0
-bg_color = Color(0.125536, 0.125536, 0.125536, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.945281, 0.945281, 0.945281, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_detail = 1
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h5y6c"]
-content_margin_left = 8.0
-content_margin_right = 8.0
-bg_color = Color(0.945281, 0.945281, 0.945281, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.0195315, 0.0195315, 0.0195315, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_detail = 1
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g0qsc"]
-content_margin_left = 8.0
-content_margin_right = 8.0
-bg_color = Color(0, 0, 0, 0.933333)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.945281, 0.945281, 0.945281, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_detail = 1
-
-[resource]
-Button/colors/font_color = Color(0.95, 0.95, 0.95, 1)
-Button/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1)
-Button/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1)
-Button/colors/font_pressed_color = Color(0.125911, 0.125911, 0.125911, 1)
-Button/styles/disabled = null
-Button/styles/focus = null
-Button/styles/hover = SubResource("StyleBoxFlat_w50h3")
-Button/styles/normal = SubResource("StyleBoxFlat_6tkof")
-Button/styles/pressed = SubResource("StyleBoxFlat_ftays")
-Panel/styles/panel = SubResource("StyleBoxFlat_sucf2")
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_sucf2")
-TabContainer/colors/font_hovered_color = Color(0.945281, 0.945281, 0.945281, 1)
-TabContainer/colors/font_selected_color = Color(0.0195315, 0.0195315, 0.0195315, 1)
-TabContainer/colors/font_unselected_color = Color(0.945281, 0.945281, 0.945281, 1)
-TabContainer/styles/panel = SubResource("StyleBoxFlat_sucf2")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_u30hj")
-TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_h5y6c")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_g0qsc")
diff --git a/godot/addons/maaacks_game_template/examples/resources/themes/grow.tres b/godot/addons/maaacks_game_template/examples/resources/themes/grow.tres
deleted file mode 100644
index 1e7af74..0000000
--- a/godot/addons/maaacks_game_template/examples/resources/themes/grow.tres
+++ /dev/null
@@ -1,98 +0,0 @@
-[gd_resource type="Theme" load_steps=8 format=3 uid="uid://h7oy1by7cgh7"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g0sbc"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.428961, 0.730226, 0.50528, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.298858, 0.546296, 0.363635, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_krvwn"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.298858, 0.546296, 0.363635, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.234842, 0.443383, 0.289887, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gfyr3"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.234842, 0.443383, 0.289887, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.234842, 0.443383, 0.289887, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tytr8"]
-bg_color = Color(0.191138, 0.370484, 0.238651, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.115392, 0.241196, 0.148848, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wsakr"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.428961, 0.730226, 0.50528, 1)
-border_width_right = 2
-border_color = Color(0.298858, 0.546296, 0.363635, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1ngrn"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.298858, 0.546296, 0.363635, 1)
-border_width_right = 2
-border_color = Color(0.234842, 0.443383, 0.289887, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q0g5m"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.234842, 0.443383, 0.289887, 1)
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.234842, 0.443383, 0.289887, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-
-[resource]
-Button/styles/hover = SubResource("StyleBoxFlat_g0sbc")
-Button/styles/normal = SubResource("StyleBoxFlat_krvwn")
-Button/styles/pressed = SubResource("StyleBoxFlat_gfyr3")
-Panel/styles/panel = SubResource("StyleBoxFlat_tytr8")
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_tytr8")
-TabContainer/styles/panel = SubResource("StyleBoxFlat_tytr8")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_wsakr")
-TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_1ngrn")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_q0g5m")
diff --git a/godot/addons/maaacks_game_template/examples/resources/themes/lab.tres b/godot/addons/maaacks_game_template/examples/resources/themes/lab.tres
deleted file mode 100644
index 3333def..0000000
--- a/godot/addons/maaacks_game_template/examples/resources/themes/lab.tres
+++ /dev/null
@@ -1,185 +0,0 @@
-[gd_resource type="Theme" load_steps=16 format=3 uid="uid://bx4172orxchrf"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4b4gg"]
-content_margin_left = 12.0
-content_margin_right = 12.0
-content_margin_bottom = 14.0
-bg_color = Color(0.305882, 0.454902, 0.6, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_width_bottom = 12
-border_color = Color(0.141176, 0.321569, 0.45098, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_l51yu"]
-content_margin_left = 12.0
-content_margin_right = 12.0
-content_margin_bottom = 14.0
-bg_color = Color(0.243137, 0.25098, 0.333333, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_width_bottom = 12
-border_color = Color(0.219608, 0.176471, 0.207843, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e7ejt"]
-content_margin_left = 12.0
-content_margin_right = 12.0
-content_margin_bottom = 14.0
-bg_color = Color(0.121569, 0.176471, 0.211765, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_width_bottom = 12
-border_color = Color(0.0784314, 0.121569, 0.145098, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ywrjj"]
-bg_color = Color(0.6, 0.6, 0.6, 0)
-border_width_left = 3
-border_width_top = 3
-border_width_bottom = 3
-corner_radius_top_left = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tyerd"]
-bg_color = Color(0.8, 0.8, 0.8, 1)
-border_width_left = 2
-border_width_top = 3
-border_width_bottom = 3
-border_color = Color(0.8, 0.8, 0.8, 0)
-corner_radius_top_left = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ulcur"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 8.0
-bg_color = Color(0.0784314, 0.121569, 0.145098, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_width_bottom = 4
-border_color = Color(0.0431373, 0.0627451, 0.0862745, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_aliwb"]
-bg_color = Color(0.6, 0.6, 0.6, 0)
-border_width_top = 3
-border_width_right = 3
-border_width_bottom = 3
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tnl2j"]
-content_margin_bottom = 3.0
-bg_color = Color(0.8, 0.8, 0.8, 1)
-border_width_top = 3
-border_width_right = 3
-border_width_bottom = 3
-border_color = Color(0.8, 0.8, 0.8, 0)
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k5faf"]
-bg_color = Color(0.6, 0.6, 0.6, 0)
-border_width_left = 3
-border_width_top = 3
-border_width_right = 3
-border_width_bottom = 3
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5j0a2"]
-bg_color = Color(0.8, 0.8, 0.8, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_odiue"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 8.0
-bg_color = Color(0.0784314, 0.121569, 0.145098, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_width_bottom = 4
-border_color = Color(0.219608, 0.176471, 0.207843, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-corner_radius_bottom_right = 8
-corner_radius_bottom_left = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ghjya"]
-content_margin_left = 12.0
-content_margin_right = 12.0
-bg_color = Color(0.305882, 0.454902, 0.6, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_color = Color(0.141176, 0.321569, 0.45098, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m6y06"]
-content_margin_left = 12.0
-content_margin_right = 12.0
-bg_color = Color(0.243137, 0.25098, 0.333333, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_color = Color(0.219608, 0.176471, 0.207843, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5icga"]
-content_margin_left = 12.0
-content_margin_right = 12.0
-bg_color = Color(0.0784314, 0.121569, 0.145098, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_color = Color(0.121569, 0.176471, 0.211765, 1)
-corner_radius_top_left = 8
-corner_radius_top_right = 8
-
-[sub_resource type="FontVariation" id="FontVariation_i860b"]
-spacing_top = 4
-spacing_bottom = 2
-
-[resource]
-default_font = SubResource("FontVariation_i860b")
-Button/styles/hover = SubResource("StyleBoxFlat_4b4gg")
-Button/styles/normal = SubResource("StyleBoxFlat_l51yu")
-Button/styles/pressed = SubResource("StyleBoxFlat_e7ejt")
-LeftStaminaBar/base_type = &"ProgressBar"
-LeftStaminaBar/styles/background = SubResource("StyleBoxFlat_ywrjj")
-LeftStaminaBar/styles/fill = SubResource("StyleBoxFlat_tyerd")
-Panel/styles/panel = SubResource("StyleBoxFlat_ulcur")
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_ulcur")
-RightStaminaBar/base_type = &"ProgressBar"
-RightStaminaBar/styles/background = SubResource("StyleBoxFlat_aliwb")
-RightStaminaBar/styles/fill = SubResource("StyleBoxFlat_tnl2j")
-StaminaBar/base_type = &"ProgressBar"
-StaminaBar/styles/background = SubResource("StyleBoxFlat_k5faf")
-StaminaBar/styles/fill = SubResource("StyleBoxFlat_5j0a2")
-TabContainer/styles/panel = SubResource("StyleBoxFlat_odiue")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_ghjya")
-TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_m6y06")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_5icga")
diff --git a/godot/addons/maaacks_game_template/examples/resources/themes/lore.tres b/godot/addons/maaacks_game_template/examples/resources/themes/lore.tres
deleted file mode 100644
index 85ab850..0000000
--- a/godot/addons/maaacks_game_template/examples/resources/themes/lore.tres
+++ /dev/null
@@ -1,190 +0,0 @@
-[gd_resource type="Theme" load_steps=15 format=3 uid="uid://d1hgaet22gba2"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8hxc2"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 8.0
-bg_color = Color(0.631373, 0.52549, 0.619608, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.192157, 0.239216, 0.352941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_daw1f"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 8.0
-bg_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.839216, 0.933333, 1, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r1yu6"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 8.0
-bg_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wnp2l"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 8.0
-bg_color = Color(0.192157, 0.239216, 0.352941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2ymfe"]
-bg_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.8, 0.8, 0.8, 0)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pq3iw"]
-bg_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hvab5"]
-bg_color = Color(0.192157, 0.239216, 0.352941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_f05by"]
-bg_color = Color(0.192157, 0.239216, 0.352941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t1x62"]
-bg_color = Color(0.929412, 0.921569, 0.627451, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.8, 0.8, 0.8, 0)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_w2bse"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.839216, 0.933333, 1, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7eahf"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0.192157, 0.239216, 0.352941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5sk2t"]
-content_margin_left = 8.0
-content_margin_top = 8.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_00w47"]
-bg_color = Color(0.839216, 0.933333, 1, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.8, 0.8, 0.8, 0)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gh53c"]
-bg_color = Color(0.631373, 0.52549, 0.619608, 1)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.8, 0.8, 0.8, 0)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[resource]
-Button/colors/font_color = Color(0.839216, 0.933333, 1, 1)
-Button/colors/font_disabled_color = Color(0.192157, 0.239216, 0.352941, 1)
-Button/colors/font_focus_color = Color(0.839216, 0.933333, 1, 1)
-Button/colors/font_hover_color = Color(0.839216, 0.933333, 1, 1)
-Button/colors/font_hover_pressed_color = Color(0.839216, 0.933333, 1, 1)
-Button/colors/font_pressed_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-Button/styles/disabled = SubResource("StyleBoxFlat_8hxc2")
-Button/styles/hover = SubResource("StyleBoxFlat_daw1f")
-Button/styles/normal = SubResource("StyleBoxFlat_r1yu6")
-Button/styles/pressed = SubResource("StyleBoxFlat_wnp2l")
-DelayProgressBar/base_type = &"ProgressBar"
-DelayProgressBar/styles/fill = SubResource("StyleBoxFlat_2ymfe")
-Label/colors/font_color = Color(0.839216, 0.933333, 1, 1)
-Label/colors/font_outline_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-Label/constants/outline_size = 8
-LineEdit/colors/caret_color = Color(0.839216, 0.933333, 1, 1)
-LineEdit/colors/font_color = Color(0.929412, 0.921569, 0.627451, 1)
-LineEdit/colors/font_uneditable_color = Color(0.192157, 0.239216, 0.352941, 1)
-LineEdit/styles/normal = SubResource("StyleBoxFlat_pq3iw")
-LineEdit/styles/read_only = SubResource("StyleBoxFlat_pq3iw")
-Panel/styles/panel = SubResource("StyleBoxFlat_hvab5")
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_hvab5")
-ProgressBar/styles/background = SubResource("StyleBoxFlat_f05by")
-ProgressBar/styles/fill = SubResource("StyleBoxFlat_t1x62")
-RichTextLabel/colors/default_color = Color(0.839216, 0.933333, 1, 1)
-RichTextLabel/colors/font_outline_color = Color(0.00392157, 0.0862745, 0.152941, 1)
-RichTextLabel/constants/outline_size = 8
-TabContainer/styles/panel = SubResource("StyleBoxFlat_hvab5")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_w2bse")
-TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_7eahf")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_5sk2t")
-TimerProgressBar/base_type = &"ProgressBar"
-TimerProgressBar/styles/fill = SubResource("StyleBoxFlat_00w47")
-WarningProgressBar/base_type = &"ProgressBar"
-WarningProgressBar/styles/fill = SubResource("StyleBoxFlat_gh53c")
diff --git a/godot/addons/maaacks_game_template/examples/resources/themes/steal_this_theme.tres b/godot/addons/maaacks_game_template/examples/resources/themes/steal_this_theme.tres
deleted file mode 100644
index 61bc0e9..0000000
--- a/godot/addons/maaacks_game_template/examples/resources/themes/steal_this_theme.tres
+++ /dev/null
@@ -1,560 +0,0 @@
-[gd_resource type="Theme" load_steps=44 format=3 uid="uid://bvlaoeoobhjtd"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7rtxy"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.698039, 0.133333, 0.203922, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hofdy"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 0)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.235294, 0.231373, 0.431373, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-expand_margin_left = 2.0
-expand_margin_top = 2.0
-expand_margin_right = 2.0
-expand_margin_bottom = 2.0
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0ahyh"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_83bj2"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.973535, 0.973535, 0.973535, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bjb6u"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.235294, 0.231373, 0.431373, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wv8md"]
-bg_color = Color(0.698039, 0.133333, 0.203922, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s1fdf"]
-bg_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tieq2"]
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rrxf3"]
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.235294, 0.231373, 0.431373, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2e0dr"]
-content_margin_top = 3.0
-content_margin_bottom = 3.0
-bg_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_fgisk"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fgisk"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5e2ta"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.0383972, 0.0383972, 0.0383972, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7e08u"]
-bg_color = Color(0, 0, 0, 1)
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_whago"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.235294, 0.231373, 0.431373, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_d8x3d"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.698039, 0.133333, 0.203922, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hofdy"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lmfyq"]
-bg_color = Color(0.698039, 0.133333, 0.203922, 1)
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 0)
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wv8md"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c4ulf"]
-bg_color = Color(0, 0, 0, 1)
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 0)
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8723n"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.235294, 0.231373, 0.431373, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_opsya"]
-bg_color = Color(0.235294, 0.231373, 0.431373, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8g14u"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.0383972, 0.0383972, 0.0383972, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qnvbk"]
-content_margin_left = 8.0
-content_margin_top = 4.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_top = 2
-border_color = Color(0.698039, 0.133333, 0.203922, 1)
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_d8x3d"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4bfjk"]
-content_margin_left = 8.0
-content_margin_top = 4.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_top = 2
-border_color = Color(0.235294, 0.231373, 0.431373, 1)
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ojvr3"]
-content_margin_left = 8.0
-content_margin_top = 4.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-border_width_top = 2
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lop2v"]
-content_margin_left = 8.0
-content_margin_top = 4.0
-content_margin_right = 8.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_top = 2
-border_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0ahyh"]
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_83bj2"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rr4b1"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 0)
-border_width_left = 2
-border_width_top = 2
-border_width_right = 2
-border_width_bottom = 2
-border_color = Color(0.235294, 0.231373, 0.431373, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-expand_margin_left = 2.0
-expand_margin_top = 2.0
-expand_margin_right = 2.0
-expand_margin_bottom = 2.0
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bcw1c"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.0383972, 0.0383972, 0.0383972, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xi1kj"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rrcvo"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.235294, 0.231373, 0.431373, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wvge0"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.235294, 0.231373, 0.431373, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_v0ggg"]
-bg_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kvvmu"]
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.973535, 0.973535, 0.973535, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rum38"]
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.235294, 0.231373, 0.431373, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5wbgk"]
-content_margin_left = 3.0
-content_margin_right = 3.0
-bg_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-corner_radius_top_left = 2
-corner_radius_top_right = 2
-corner_radius_bottom_right = 2
-corner_radius_bottom_left = 2
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s1fdf"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x127s"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0.698039, 0.133333, 0.203922, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0, 0, 0, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qjhx0"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.698039, 0.133333, 0.203922, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_u427p"]
-content_margin_left = 4.0
-content_margin_top = 4.0
-content_margin_right = 4.0
-content_margin_bottom = 4.0
-bg_color = Color(0, 0, 0, 1)
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color(0.698039, 0.133333, 0.203922, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[resource]
-BoldLabel/base_type = &"Label"
-BoldLabel/fonts/font = null
-Button/colors/font_color = Color(0, 0, 0, 1)
-Button/colors/font_disabled_color = Color(0.698039, 0.133333, 0.203922, 1)
-Button/colors/font_focus_color = Color(0, 0, 0, 1)
-Button/colors/font_hover_color = Color(0.973535, 0.973535, 0.973535, 1)
-Button/colors/font_hover_pressed_color = Color(0.973535, 0.973535, 0.973535, 1)
-Button/colors/font_pressed_color = Color(0.235294, 0.231373, 0.431373, 1)
-Button/styles/disabled = SubResource("StyleBoxFlat_7rtxy")
-Button/styles/focus = SubResource("StyleBoxFlat_hofdy")
-Button/styles/hover = SubResource("StyleBoxFlat_0ahyh")
-Button/styles/normal = SubResource("StyleBoxFlat_83bj2")
-Button/styles/pressed = SubResource("StyleBoxFlat_bjb6u")
-DisabledLabel/base_type = &"Label"
-DisabledLabel/colors/font_color = Color(0, 0, 0, 1)
-DisabledLabel/font_sizes/font_size = 24
-DisabledLabel/fonts/font = null
-DisabledLabel/styles/normal = SubResource("StyleBoxFlat_wv8md")
-HScrollBar/styles/grabber = SubResource("StyleBoxFlat_s1fdf")
-HScrollBar/styles/grabber_highlight = SubResource("StyleBoxFlat_tieq2")
-HScrollBar/styles/grabber_pressed = SubResource("StyleBoxFlat_rrxf3")
-HScrollBar/styles/scroll = SubResource("StyleBoxFlat_2e0dr")
-HScrollBar/styles/scroll_focus = SubResource("StyleBoxEmpty_fgisk")
-LocationName/base_type = &"Label"
-LocationName/colors/font_color = Color(0.973535, 0.973535, 0.973535, 1)
-LocationName/font_sizes/font_size = 22
-LocationName/fonts/font = null
-LocationType/base_type = &"Label"
-LocationType/colors/font_color = Color(0.235294, 0.231373, 0.431373, 1)
-LocationType/fonts/font = null
-Panel/styles/panel = SubResource("StyleBoxFlat_fgisk")
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_5e2ta")
-ProgressBar/styles/background = SubResource("StyleBoxFlat_7e08u")
-ProgressBar/styles/fill = SubResource("StyleBoxFlat_whago")
-ProgressBarBad/base_type = &"ProgressBar"
-ProgressBarBad/styles/fill = SubResource("StyleBoxFlat_d8x3d")
-ProgressBarDelay/base_type = &"ProgressBar"
-ProgressBarDelay/styles/background = SubResource("StyleBoxEmpty_hofdy")
-ProgressBarDelay/styles/fill = SubResource("StyleBoxFlat_lmfyq")
-ProgressBarDelayHovered/base_type = &"ProgressBar"
-ProgressBarDelayHovered/styles/background = SubResource("StyleBoxEmpty_wv8md")
-ProgressBarDelayHovered/styles/fill = SubResource("StyleBoxFlat_c4ulf")
-ProgressBarGood/base_type = &"ProgressBar"
-ProgressBarGood/styles/fill = SubResource("StyleBoxFlat_8723n")
-RichTextLabel/fonts/bold_font = null
-RichTextLabel/fonts/bold_italics_font = null
-RichTextLabel/fonts/italics_font = null
-SelectedLabel/base_type = &"Label"
-SelectedLabel/colors/font_color = Color(0.973535, 0.973535, 0.973535, 1)
-SelectedLabel/font_sizes/font_size = 24
-SelectedLabel/fonts/font = null
-SelectedLabel/styles/normal = SubResource("StyleBoxFlat_opsya")
-TabContainer/colors/font_disabled_color = Color(0.698039, 0.133333, 0.203922, 1)
-TabContainer/colors/font_hovered_color = Color(0.235294, 0.231373, 0.431373, 1)
-TabContainer/colors/font_selected_color = Color(0.973535, 0.973535, 0.973535, 1)
-TabContainer/colors/font_unselected_color = Color(0.973535, 0.973535, 0.973535, 1)
-TabContainer/styles/panel = SubResource("StyleBoxFlat_8g14u")
-TabContainer/styles/tab_disabled = SubResource("StyleBoxFlat_qnvbk")
-TabContainer/styles/tab_focus = SubResource("StyleBoxEmpty_d8x3d")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_4bfjk")
-TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_ojvr3")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_lop2v")
-Tree/colors/children_hl_line_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-Tree/colors/font_color = Color(0.973535, 0.973535, 0.973535, 1)
-Tree/colors/font_disabled_color = Color(0.698039, 0.133333, 0.203922, 1)
-Tree/colors/font_hovered_color = Color(0.235294, 0.231373, 0.431373, 1)
-Tree/colors/font_selected_color = Color(0.973535, 0.973535, 0.973535, 1)
-Tree/colors/guide_color = Color(0, 0, 0, 0)
-Tree/colors/parent_hl_line_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-Tree/colors/relationship_line_color = Color(0.0392157, 0.0392157, 0.0392157, 1)
-Tree/constants/inner_item_margin_left = 4
-Tree/constants/inner_item_margin_right = 4
-Tree/constants/item_margin = 0
-Tree/styles/button_hover = SubResource("StyleBoxEmpty_0ahyh")
-Tree/styles/button_pressed = SubResource("StyleBoxEmpty_83bj2")
-Tree/styles/focus = SubResource("StyleBoxFlat_rr4b1")
-Tree/styles/hovered = SubResource("StyleBoxFlat_bcw1c")
-Tree/styles/panel = SubResource("StyleBoxFlat_xi1kj")
-Tree/styles/selected = SubResource("StyleBoxFlat_rrcvo")
-Tree/styles/selected_focus = SubResource("StyleBoxFlat_wvge0")
-VScrollBar/styles/grabber = SubResource("StyleBoxFlat_v0ggg")
-VScrollBar/styles/grabber_highlight = SubResource("StyleBoxFlat_kvvmu")
-VScrollBar/styles/grabber_pressed = SubResource("StyleBoxFlat_rum38")
-VScrollBar/styles/scroll = SubResource("StyleBoxFlat_5wbgk")
-VScrollBar/styles/scroll_focus = SubResource("StyleBoxEmpty_s1fdf")
-WaitingButton/base_type = &"Button"
-WaitingButton/colors/font_color = Color(0.698039, 0.133333, 0.203922, 1)
-WaitingButton/colors/font_focus_color = Color(0.698039, 0.133333, 0.203922, 1)
-WaitingButton/colors/font_hover_color = Color(0, 0, 0, 1)
-WaitingButton/colors/font_hover_pressed_color = Color(0.698039, 0.133333, 0.203922, 1)
-WaitingButton/colors/font_pressed_color = Color(0.698039, 0.133333, 0.203922, 1)
-WaitingButton/styles/hover = SubResource("StyleBoxFlat_x127s")
-WaitingButton/styles/normal = SubResource("StyleBoxFlat_qjhx0")
-WaitingButton/styles/pressed = SubResource("StyleBoxFlat_u427p")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd b/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd
deleted file mode 100644
index 46aa323..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd
+++ /dev/null
@@ -1,2 +0,0 @@
-@tool
-extends ScrollableCredits
diff --git a/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd.uid
deleted file mode 100644
index 76faf2a..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bas1sbep76v6j
diff --git a/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.tscn b/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.tscn
deleted file mode 100644
index 8221983..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.tscn
+++ /dev/null
@@ -1,48 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://wjcsvhdqikyl"]
-
-[ext_resource type="PackedScene" uid="uid://osxulxw2oas3" path="res://addons/maaacks_game_template/base/scenes/credits/scrollable_credits.tscn" id="1_js0o2"]
-[ext_resource type="Script" uid="uid://bas1sbep76v6j" path="res://addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.gd" id="2_tcxvu"]
-
-[node name="ScrollableCredits" instance=ExtResource("1_js0o2")]
-script = ExtResource("2_tcxvu")
-
-[node name="CreditsLabel" parent="." index="0"]
-text = "[center][font_size=48]Collaborators[/font_size]
-
-[font_size=32]Role[/font_size]
-Person 1
-Person 2
-[url=]Person w/ Link[/url]
-
-[font_size=48]Sourced[/font_size]
-[font_size=32]Asset Type[/font_size]
-[font_size=24]Use Case[/font_size]
-Author: [url=]Name[/url]
-Source: [url=]Domain : webpage.html[/url]
-License: [url=]License[/url]
-
-[font_size=24]Godot Engine Logo[/font_size]
-Author: Andrea Calabró
-Source: [url=https://godotengine.org/press/]godotengine.org : press[/url]
-License: [url=https://github.com/godotengine/godot/blob/master/LOGO_LICENSE.txt]CC BY 4.0 International[/url]
-
-[font_size=48]Tools[/font_size]
-[font_size=24]Godot[/font_size]
-[img=80]res:///addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png[/img]
-Author: [url=https://godotengine.org/contact]Juan Linietsky, Ariel Manzur, and contributors[/url]
-Source: [url=https://godotengine.org/]godotengine.org[/url]
-License: [url=https://github.com/godotengine/godot/blob/master/LICENSE.txt]MIT License[/url]
-
-[font_size=24]Godot Game Template[/font_size]
-[img=80]res:///addons/maaacks_game_template/examples/assets/plugin_logo/logo.png[/img]
-Author: [url=https://github.com/Maaack/Godot-Game-Template/graphs/contributors]Marek Belski and contributors[/url]
-Source: [url=https://github.com/Maaack/Godot-Game-Template]github: Godot-Game-Template[/url]
-License: [url=LICENSE.txt]MIT License[/url]
-
-[font_size=24]Git[/font_size]
-[img=80]res:///addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png[/img]
-Author: [url=https://github.com/torvalds]Linus Torvalds[/url]
-Source: [url=https://git-scm.com/downloads]git-scm.com[/url]
-License: [url=https://opensource.org/licenses/GPL-2.0]GNU General Public License version 2[/url]
-[/center]"
-attribution_file_path = "res://addons/maaacks_game_template/examples/ATTRIBUTION.md"
diff --git a/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd b/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd
deleted file mode 100644
index 3da8829..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd
+++ /dev/null
@@ -1,2 +0,0 @@
-@tool
-extends ScrollingCredits
diff --git a/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd.uid
deleted file mode 100644
index b1abf62..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://btl0ormyca7s3
diff --git a/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.tscn b/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.tscn
deleted file mode 100644
index 56f0ede..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.tscn
+++ /dev/null
@@ -1,48 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://c1g50h2avck3w"]
-
-[ext_resource type="PackedScene" uid="uid://t2dui8ppm3a4" path="res://addons/maaacks_game_template/base/scenes/credits/scrolling_credits.tscn" id="1_n45le"]
-[ext_resource type="Script" uid="uid://btl0ormyca7s3" path="res://addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.gd" id="2_q7msw"]
-
-[node name="ScrollingCredits" instance=ExtResource("1_n45le")]
-script = ExtResource("2_q7msw")
-
-[node name="CreditsLabel" parent="ScrollContainer/VBoxContainer" index="1"]
-text = "[center][font_size=48]Collaborators[/font_size]
-
-[font_size=32]Role[/font_size]
-Person 1
-Person 2
-[url=]Person w/ Link[/url]
-
-[font_size=48]Sourced[/font_size]
-[font_size=32]Asset Type[/font_size]
-[font_size=24]Use Case[/font_size]
-Author: [url=]Name[/url]
-Source: [url=]Domain : webpage.html[/url]
-License: [url=]License[/url]
-
-[font_size=24]Godot Engine Logo[/font_size]
-Author: Andrea Calabró
-Source: [url=https://godotengine.org/press/]godotengine.org : press[/url]
-License: [url=https://github.com/godotengine/godot/blob/master/LOGO_LICENSE.txt]CC BY 4.0 International[/url]
-
-[font_size=48]Tools[/font_size]
-[font_size=24]Godot[/font_size]
-[img=80]res:///addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png[/img]
-Author: [url=https://godotengine.org/contact]Juan Linietsky, Ariel Manzur, and contributors[/url]
-Source: [url=https://godotengine.org/]godotengine.org[/url]
-License: [url=https://github.com/godotengine/godot/blob/master/LICENSE.txt]MIT License[/url]
-
-[font_size=24]Godot Game Template[/font_size]
-[img=80]res:///addons/maaacks_game_template/examples/assets/plugin_logo/logo.png[/img]
-Author: [url=https://github.com/Maaack/Godot-Game-Template/graphs/contributors]Marek Belski and contributors[/url]
-Source: [url=https://github.com/Maaack/Godot-Game-Template]github: Godot-Game-Template[/url]
-License: [url=LICENSE.txt]MIT License[/url]
-
-[font_size=24]Git[/font_size]
-[img=80]res:///addons/maaacks_game_template/examples/assets/git_logo/Git-Logo-2Color.png[/img]
-Author: [url=https://github.com/torvalds]Linus Torvalds[/url]
-Source: [url=https://git-scm.com/downloads]git-scm.com[/url]
-License: [url=https://opensource.org/licenses/GPL-2.0]GNU General Public License version 2[/url]
-[/center]"
-attribution_file_path = "res://addons/maaacks_game_template/examples/ATTRIBUTION.md"
diff --git a/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd b/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd
deleted file mode 100644
index 12c3084..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd
+++ /dev/null
@@ -1,59 +0,0 @@
-extends ScrollingCredits
-
-## Defines the path to the main menu. Hides the Main Menu button if not set.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var main_menu_scene_path : String
-## This option forces the mouse to be visible when the menu shows up.
-## Useful for games that capture the mouse, and don't automatically return it.
-@export var force_mouse_mode_visible : bool = false
-
-@onready var end_message_panel = %EndMessagePanel
-@onready var exit_button = %ExitButton
-@onready var menu_button = %MenuButton
-@onready var init_mouse_filter : MouseFilter = mouse_filter
-
-func get_main_menu_scene_path() -> String:
- if main_menu_scene_path.is_empty():
- return AppConfig.main_menu_scene_path
- return main_menu_scene_path
-
-func _on_scroll_container_end_reached() -> void:
- end_message_panel.show()
- mouse_filter = Control.MOUSE_FILTER_STOP
- if force_mouse_mode_visible:
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- super._on_scroll_container_end_reached()
-
-func load_main_menu() -> void:
- SceneLoader.load_scene(get_main_menu_scene_path())
-
-func exit_game() -> void:
- if OS.has_feature("web"):
- load_main_menu()
- get_tree().quit()
-
-func _on_visibility_changed() -> void:
- if visible:
- end_message_panel.hide()
- mouse_filter = init_mouse_filter
-
-func _ready() -> void:
- visibility_changed.connect(_on_visibility_changed)
- if get_main_menu_scene_path().is_empty():
- menu_button.hide()
- if OS.has_feature("web"):
- exit_button.hide()
- super._ready()
-
-func _unhandled_input(event : InputEvent) -> void:
- if event.is_action_released("ui_cancel"):
- if not end_message_panel.visible:
- _on_scroll_container_end_reached()
- else:
- exit_game()
-
-func _on_exit_button_pressed():
- exit_game()
-
-func _on_menu_button_pressed():
- load_main_menu()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd.uid
deleted file mode 100644
index b976244..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cn3sc0vsd5b1r
diff --git a/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.tscn b/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.tscn
deleted file mode 100644
index 066e7fa..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/end_credits/end_credits.tscn
+++ /dev/null
@@ -1,91 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://bagraegk311h0"]
-
-[ext_resource type="PackedScene" uid="uid://c1g50h2avck3w" path="res://addons/maaacks_game_template/examples/scenes/credits/scrolling_credits.tscn" id="1_885d8"]
-[ext_resource type="Script" uid="uid://cn3sc0vsd5b1r" path="res://addons/maaacks_game_template/examples/scenes/end_credits/end_credits.gd" id="2_6pwj4"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="3_aoilo"]
-[ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="3_v7acr"]
-
-[node name="EndCredits" instance=ExtResource("1_885d8")]
-script = ExtResource("2_6pwj4")
-main_menu_scene_path = ""
-force_mouse_mode_visible = false
-
-[node name="BackgroundMusicPlayer" parent="." index="0" instance=ExtResource("3_v7acr")]
-
-[node name="BackgroundColor" type="ColorRect" parent="." index="1"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 1)
-
-[node name="BackgroundTextureRect" type="TextureRect" parent="." index="2"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-expand_mode = 1
-stretch_mode = 5
-
-[node name="ScrollContainer" parent="." index="3"]
-scroll_vertical = 0
-
-[node name="CenterContainer" type="CenterContainer" parent="." index="4"]
-layout_mode = 0
-anchor_right = 1.0
-anchor_bottom = 1.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-mouse_filter = 2
-
-[node name="EndMessagePanel" type="Panel" parent="CenterContainer" index="0"]
-unique_name_in_owner = true
-visible = false
-custom_minimum_size = Vector2(360, 120)
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/EndMessagePanel" index="0"]
-layout_mode = 0
-anchor_right = 1.0
-anchor_bottom = 1.0
-
-[node name="ThankPlayer" type="Label" parent="CenterContainer/EndMessagePanel/VBoxContainer" index="0"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Thanks for playing!"
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="CenterContainer" type="CenterContainer" parent="CenterContainer/EndMessagePanel/VBoxContainer" index="1"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/EndMessagePanel/VBoxContainer/CenterContainer" index="0"]
-custom_minimum_size = Vector2(256, 0)
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/separation = 16
-script = ExtResource("3_aoilo")
-
-[node name="ExitButton" type="Button" parent="CenterContainer/EndMessagePanel/VBoxContainer/CenterContainer/HBoxContainer" index="0"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Exit"
-
-[node name="MenuButton" type="Button" parent="CenterContainer/EndMessagePanel/VBoxContainer/CenterContainer/HBoxContainer" index="1"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Menu"
-
-[connection signal="pressed" from="CenterContainer/EndMessagePanel/VBoxContainer/CenterContainer/HBoxContainer/ExitButton" to="." method="_on_exit_button_pressed"]
-[connection signal="pressed" from="CenterContainer/EndMessagePanel/VBoxContainer/CenterContainer/HBoxContainer/MenuButton" to="." method="_on_menu_button_pressed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd b/godot/addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd
deleted file mode 100644
index 1a23a56..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd
+++ /dev/null
@@ -1,9 +0,0 @@
-extends SubViewport
-
-@export var anti_aliasing_key : StringName = "Anti-aliasing"
-@export var video_section : StringName = AppSettings.VIDEO_SECTION
-
-func _ready() -> void:
- var anti_aliasing : int = PlayerConfig.get_config(video_section, anti_aliasing_key, Viewport.MSAA_DISABLED)
- msaa_2d = anti_aliasing as MSAA
- msaa_3d = anti_aliasing as MSAA
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd.uid
deleted file mode 100644
index b4a5ae2..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://tooek7mdq54x
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd b/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd
deleted file mode 100644
index 2ade92c..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd
+++ /dev/null
@@ -1,27 +0,0 @@
-extends Node
-
-var play_time : int
-var total_time : int
-
-func _add_timers() -> void:
- var play_timer := Timer.new()
- play_timer.one_shot = false
- play_timer.process_mode = Node.PROCESS_MODE_PAUSABLE
- play_timer.timeout.connect(func() : play_time += 1)
- add_child(play_timer)
- play_timer.start(1)
- var total_timer := Timer.new()
- total_timer.one_shot = false
- total_timer.process_mode = Node.PROCESS_MODE_ALWAYS
- total_timer.timeout.connect(func() : total_time += 1)
- add_child(total_timer)
- total_timer.start(1)
-
-func _enter_tree() -> void:
- _add_timers()
-
-func _exit_tree() -> void:
- var game_state := GameStateExample.get_or_create_state()
- game_state.play_time += play_time
- game_state.total_time += total_time
- GlobalState.save()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd.uid
deleted file mode 100644
index 5da4cbb..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cujhanlmdyxio
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_ui.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_ui.tscn
deleted file mode 100644
index 455a920..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/game_ui.tscn
+++ /dev/null
@@ -1,71 +0,0 @@
-[gd_scene load_steps=13 format=3 uid="uid://bde0cbmryrv5s"]
-
-[ext_resource type="PackedScene" uid="uid://cnmu4k37qncn8" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.tscn" id="2_7mepj"]
-[ext_resource type="Script" uid="uid://bbymrin0cm704" path="res://addons/maaacks_game_template/extras/scripts/level_loader.gd" id="5_a40ke"]
-[ext_resource type="Script" uid="uid://cyh0d64pfygbl" path="res://addons/maaacks_game_template/base/scripts/pause_menu_controller.gd" id="5_fc8fx"]
-[ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="7_yr75v"]
-[ext_resource type="PackedScene" uid="uid://dbuv0htkikcv4" path="res://addons/maaacks_game_template/examples/scenes/loading_screen/level_loading_screen.tscn" id="8_0nt60"]
-[ext_resource type="PackedScene" uid="uid://cmefjno2ddk7e" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.tscn" id="9_suu1j"]
-[ext_resource type="Script" uid="uid://tooek7mdq54x" path="res://addons/maaacks_game_template/examples/scenes/game_scene/configurable_sub_viewport.gd" id="9_u1dsg"]
-[ext_resource type="PackedScene" uid="uid://bralse0lmn6t3" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.tscn" id="10_lkew3"]
-[ext_resource type="Script" uid="uid://cmqngqwso0uve" path="res://addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd" id="11_a40ke"]
-[ext_resource type="PackedScene" uid="uid://cyjcj8mo8x5tk" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.tscn" id="11_p7huw"]
-[ext_resource type="Script" uid="uid://wjq7li836lwj" path="res://addons/maaacks_game_template/extras/scripts/scene_lister.gd" id="12_sgprk"]
-[ext_resource type="Script" uid="uid://ca84daa8dggkl" path="res://addons/maaacks_game_template/examples/scenes/game_scene/game_timer.gd" id="12_up6yb"]
-
-[node name="GameUI" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="PauseMenuController" type="Node" parent="." node_paths=PackedStringArray("focused_viewport")]
-script = ExtResource("5_fc8fx")
-pause_menu_packed = ExtResource("2_7mepj")
-focused_viewport = NodePath("../ViewportContainer/ConfigurableSubViewport")
-
-[node name="BackgroundMusicPlayer" parent="." instance=ExtResource("7_yr75v")]
-
-[node name="LevelLoader" type="Node" parent="." node_paths=PackedStringArray("level_container", "level_loading_screen")]
-script = ExtResource("5_a40ke")
-level_container = NodePath("../ViewportContainer/ConfigurableSubViewport")
-level_loading_screen = NodePath("../LevelLoadingScreen")
-
-[node name="LevelManager" type="Node" parent="." node_paths=PackedStringArray("level_loader", "scene_lister")]
-script = ExtResource("11_a40ke")
-level_loader = NodePath("../LevelLoader")
-starting_level_path = "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_1.tscn"
-scene_lister = NodePath("SceneLister")
-game_won_scene = ExtResource("9_suu1j")
-level_lost_scene = ExtResource("10_lkew3")
-level_won_scene = ExtResource("11_p7huw")
-
-[node name="SceneLister" type="Node" parent="LevelManager"]
-script = ExtResource("12_sgprk")
-files = Array[String](["res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_1.tscn", "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_2.tscn", "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_3.tscn"])
-directory = "res://addons/maaacks_game_template/examples/scenes/game_scene/levels"
-
-[node name="LevelLoadingScreen" parent="." instance=ExtResource("8_0nt60")]
-visible = false
-
-[node name="ViewportContainer" type="SubViewportContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-stretch = true
-
-[node name="ConfigurableSubViewport" type="SubViewport" parent="ViewportContainer"]
-handle_input_locally = false
-audio_listener_enable_2d = true
-audio_listener_enable_3d = true
-size = Vector2i(1280, 720)
-render_target_update_mode = 4
-script = ExtResource("9_u1dsg")
-
-[node name="GameTimer" type="Node" parent="."]
-script = ExtResource("12_up6yb")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd b/godot/addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd
deleted file mode 100644
index a57c4d2..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd
+++ /dev/null
@@ -1,21 +0,0 @@
-extends Label
-
-@onready var action_names := AppSettings.get_action_names()
-
-func _get_inputs_as_string() -> String:
- var all_inputs : String = ""
- var is_first : bool = true
- for action_name in action_names:
- if Input.is_action_pressed(action_name):
- if is_first:
- is_first = false
- all_inputs += action_name
- else:
- all_inputs += " + " + action_name
- return all_inputs
-
-func _process(_delta : float) -> void:
- if Input.is_anything_pressed():
- text = _get_inputs_as_string()
- else:
- text = ""
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd.uid
deleted file mode 100644
index a262bb0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dvewqdtaf68y8
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd b/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd
deleted file mode 100644
index 78acc83..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd
+++ /dev/null
@@ -1,38 +0,0 @@
-extends Node
-
-signal level_lost
-signal level_won
-signal level_won_and_changed(level_path : String)
-
-@export_file("*.tscn") var next_level_path : String
-
-var level_state : LevelStateExample
-
-func _on_lose_button_pressed() -> void:
- level_lost.emit()
-
-func _on_win_button_pressed() -> void:
- if not next_level_path.is_empty():
- level_won_and_changed.emit(next_level_path)
- else:
- level_won.emit()
-
-func open_tutorials() -> void:
- %TutorialManager.open_tutorials()
- level_state.tutorial_read = true
- GlobalState.save()
-
-func _ready() -> void:
- level_state = GameStateExample.get_level_state(scene_file_path)
- %ColorPickerButton.color = level_state.color
- %BackgroundColor.color = level_state.color
- if not level_state.tutorial_read:
- open_tutorials()
-
-func _on_color_picker_button_color_changed(color : Color) -> void:
- %BackgroundColor.color = color
- level_state.color = color
- GlobalState.save()
-
-func _on_tutorial_button_pressed() -> void:
- open_tutorials()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd.uid
deleted file mode 100644
index fb26e6e..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://3bd6350v3ux5
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_1.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_1.tscn
deleted file mode 100644
index c3f934a..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_1.tscn
+++ /dev/null
@@ -1,91 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://ck74pbk747v5r"]
-
-[ext_resource type="Script" uid="uid://3bd6350v3ux5" path="res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd" id="1_awc2m"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_v57fp"]
-[ext_resource type="Script" uid="uid://dvewqdtaf68y8" path="res://addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd" id="3_nsv34"]
-[ext_resource type="Script" uid="uid://1aoiji5yh0sy" path="res://addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd" id="4_e3xq8"]
-[ext_resource type="PackedScene" uid="uid://crcpowss0envr" path="res://addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_1.tscn" id="5_xbaqx"]
-
-[node name="Level1" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_awc2m")
-next_level_path = "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_2.tscn"
-
-[node name="BackgroundColor" type="ColorRect" parent="."]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 1)
-
-[node name="MarginContainer" type="MarginContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_left = 32
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_right = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
-layout_mode = 2
-theme_override_constants/separation = 16
-
-[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/separation = 32
-script = ExtResource("2_v57fp")
-
-[node name="LoseButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Lose"
-
-[node name="WinButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Win"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="TutorialButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-text = "Tutorial"
-
-[node name="InputDisplayLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-size_flags_horizontal = 3
-horizontal_alignment = 1
-script = ExtResource("3_nsv34")
-
-[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-text = "Change Level Color: "
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Change Color"
-
-[node name="TutorialManager" type="Node" parent="."]
-unique_name_in_owner = true
-script = ExtResource("4_e3xq8")
-tutorial_scenes = Array[PackedScene]([ExtResource("5_xbaqx")])
-
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/LoseButton" to="." method="_on_lose_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/WinButton" to="." method="_on_win_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer2/TutorialButton" to="." method="_on_tutorial_button_pressed"]
-[connection signal="color_changed" from="MarginContainer/VBoxContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_color_picker_button_color_changed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_2.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_2.tscn
deleted file mode 100644
index 3f0e12f..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_2.tscn
+++ /dev/null
@@ -1,97 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://3fmmpu012sd7"]
-
-[ext_resource type="Script" uid="uid://3bd6350v3ux5" path="res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd" id="1_p01r0"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_oywh5"]
-[ext_resource type="Script" uid="uid://dvewqdtaf68y8" path="res://addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd" id="3_hnnrf"]
-[ext_resource type="Script" uid="uid://1aoiji5yh0sy" path="res://addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd" id="4_rb3oi"]
-[ext_resource type="PackedScene" uid="uid://ceosghqutgxop" path="res://addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_2.tscn" id="5_q8i5k"]
-
-[node name="Level2" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_p01r0")
-next_level_path = "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_3.tscn"
-
-[node name="BackgroundColor" type="ColorRect" parent="."]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 1)
-
-[node name="MarginContainer" type="MarginContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_left = 32
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_right = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
-layout_mode = 2
-theme_override_constants/separation = 16
-
-[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/separation = 32
-script = ExtResource("2_oywh5")
-
-[node name="LoseButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Lose"
-
-[node name="WinButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Win"
-
-[node name="LoseButton2" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Lose"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="TutorialButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-text = "Tutorial"
-
-[node name="InputDisplayLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-size_flags_horizontal = 3
-horizontal_alignment = 1
-script = ExtResource("3_hnnrf")
-
-[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-text = "Change Level Color: "
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Change Color"
-
-[node name="TutorialManager" type="Node" parent="."]
-unique_name_in_owner = true
-script = ExtResource("4_rb3oi")
-tutorial_scenes = Array[PackedScene]([ExtResource("5_q8i5k")])
-
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/LoseButton" to="." method="_on_lose_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/WinButton" to="." method="_on_win_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/LoseButton2" to="." method="_on_lose_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer2/TutorialButton" to="." method="_on_tutorial_button_pressed"]
-[connection signal="color_changed" from="MarginContainer/VBoxContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_color_picker_button_color_changed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_3.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_3.tscn
deleted file mode 100644
index 2f81d2d..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/levels/level_3.tscn
+++ /dev/null
@@ -1,102 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://ddneme7dcyian"]
-
-[ext_resource type="Script" uid="uid://3bd6350v3ux5" path="res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level.gd" id="1_65ilt"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_2mss3"]
-[ext_resource type="Script" uid="uid://dvewqdtaf68y8" path="res://addons/maaacks_game_template/examples/scenes/game_scene/input_display_label.gd" id="3_f4j1i"]
-[ext_resource type="Script" uid="uid://1aoiji5yh0sy" path="res://addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd" id="4_fh83m"]
-[ext_resource type="PackedScene" uid="uid://dvwhul2i007fs" path="res://addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_3.tscn" id="5_fh83m"]
-
-[node name="Level3" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_65ilt")
-
-[node name="BackgroundColor" type="ColorRect" parent="."]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 1)
-
-[node name="MarginContainer" type="MarginContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_left = 32
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_right = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
-layout_mode = 2
-theme_override_constants/separation = 16
-
-[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/separation = 32
-script = ExtResource("2_2mss3")
-
-[node name="WinButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Win"
-
-[node name="LoseButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Lose"
-
-[node name="LoseButton2" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Lose"
-
-[node name="LoseButton3" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Lose"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="TutorialButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-text = "Tutorial"
-
-[node name="InputDisplayLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-size_flags_horizontal = 3
-horizontal_alignment = 1
-script = ExtResource("3_f4j1i")
-
-[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-layout_mode = 2
-text = "Change Level Color: "
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Change Color"
-
-[node name="TutorialManager" type="Node" parent="."]
-unique_name_in_owner = true
-script = ExtResource("4_fh83m")
-tutorial_scenes = Array[PackedScene]([ExtResource("5_fh83m")])
-
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/WinButton" to="." method="_on_win_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/LoseButton" to="." method="_on_lose_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/LoseButton2" to="." method="_on_lose_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/LoseButton3" to="." method="_on_lose_button_pressed"]
-[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer2/TutorialButton" to="." method="_on_tutorial_button_pressed"]
-[connection signal="color_changed" from="MarginContainer/VBoxContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_color_picker_button_color_changed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd b/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd
deleted file mode 100644
index abd3641..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd
+++ /dev/null
@@ -1,22 +0,0 @@
-extends Node
-@export var tutorial_scenes : Array[PackedScene]
-@export var auto_open : bool = false
-@export var auto_open_delay : float = 0.25
-
-func open_tutorials() -> void:
- var _initial_focus_control : Control = get_viewport().gui_get_focus_owner()
- for tutorial_scene in tutorial_scenes:
- var tutorial_menu : OverlaidMenu = tutorial_scene.instantiate()
- if tutorial_menu == null:
- push_warning("tutorial failed to open %s" % tutorial_scene)
- return
- get_tree().current_scene.call_deferred("add_child", tutorial_menu)
- await tutorial_menu.tree_exited
- if is_inside_tree() and _initial_focus_control:
- _initial_focus_control.grab_focus()
-
-func _ready() -> void:
- if auto_open:
- if auto_open_delay > 0.0:
- await get_tree().create_timer(auto_open_delay, false).timeout
- open_tutorials()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd.uid
deleted file mode 100644
index 76c435e..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorial_manager.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://1aoiji5yh0sy
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_1.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_1.tscn
deleted file mode 100644
index 0040f23..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_1.tscn
+++ /dev/null
@@ -1,25 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://crcpowss0envr"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_vlf4m"]
-
-[node name="Tutorial1" instance=ExtResource("1_vlf4m")]
-
-[node name="MenuPanelContainer" parent="." index="1"]
-offset_left = -206.0
-offset_top = -75.0
-offset_right = 215.0
-offset_bottom = 76.0
-
-[node name="BoxContainer" parent="MenuPanelContainer/MarginContainer" index="0"]
-theme_override_constants/separation = 16
-
-[node name="TitleLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/TitleMargin" index="0"]
-text = "Tutorial"
-
-[node name="DescriptionMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="1"]
-visible = true
-
-[node name="DescriptionLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin" index="0"]
-text = "[center]Click the Win button to progress.
-Click the Lose button to try again.[/center]"
-fit_content = true
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_2.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_2.tscn
deleted file mode 100644
index 564d55e..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_2.tscn
+++ /dev/null
@@ -1,25 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://ceosghqutgxop"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_yumd1"]
-
-[node name="Tutorial2" instance=ExtResource("1_yumd1")]
-
-[node name="MenuPanelContainer" parent="." index="1"]
-offset_left = -206.0
-offset_top = -75.0
-offset_right = 215.0
-offset_bottom = 76.0
-
-[node name="BoxContainer" parent="MenuPanelContainer/MarginContainer" index="0"]
-theme_override_constants/separation = 16
-
-[node name="TitleLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/TitleMargin" index="0"]
-text = "Tutorial"
-
-[node name="DescriptionMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="1"]
-visible = true
-
-[node name="DescriptionLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin" index="0"]
-text = "[center]Progress is saved.
-Pressing Continue from the main menu will load the last level played.[/center]"
-fit_content = true
diff --git a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_3.tscn b/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_3.tscn
deleted file mode 100644
index cca465d..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/game_scene/tutorials/tutorial_3.tscn
+++ /dev/null
@@ -1,26 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://dvwhul2i007fs"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_ecqyi"]
-
-[node name="Tutorial3" instance=ExtResource("1_ecqyi")]
-
-[node name="MenuPanelContainer" parent="." index="1"]
-offset_left = -206.0
-offset_top = -75.0
-offset_right = 215.0
-offset_bottom = 76.0
-
-[node name="BoxContainer" parent="MenuPanelContainer/MarginContainer" index="0"]
-theme_override_constants/separation = 16
-
-[node name="TitleLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/TitleMargin" index="0"]
-text = "Tutorial"
-
-[node name="DescriptionMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="1"]
-visible = true
-
-[node name="DescriptionLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin" index="0"]
-text = "[center]The color picker at the bottom-right updates the level state. This change persists until the game is reset.
-
-The label at the bottom-center displays the current input action detected, if any are setup for the project.[/center]"
-fit_content = true
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/level_loading_screen.tscn b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/level_loading_screen.tscn
deleted file mode 100644
index eb80387..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/level_loading_screen.tscn
+++ /dev/null
@@ -1,11 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://dbuv0htkikcv4"]
-
-[ext_resource type="PackedScene" uid="uid://cd0jbh4metflb" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn" id="1_j057u"]
-[ext_resource type="Script" uid="uid://mav2omdpqfbe" path="res://addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd" id="2_sxnme"]
-
-[node name="LevelLoadingScreen" instance=ExtResource("1_j057u")]
-script = ExtResource("2_sxnme")
-_in_progress = "Loading Level..."
-_in_progress_waiting = "Still Loading Level..."
-_in_progress_still_waiting = "Still Loading Level... (%d seconds)"
-_complete = "Loading Level Complete!"
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd
deleted file mode 100644
index c454123..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends LoadingScreen
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd.uid
deleted file mode 100644
index 0768525..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://mav2omdpqfbe
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.tscn b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.tscn
deleted file mode 100644
index 3b53b1d..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://ddeagbc67f52m"]
-
-[ext_resource type="PackedScene" uid="uid://cd0jbh4metflb" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn" id="1_2dnq1"]
-[ext_resource type="Script" uid="uid://mav2omdpqfbe" path="res://addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen.gd" id="2_5h2y6"]
-
-[node name="LoadingScreen" instance=ExtResource("1_2dnq1")]
-script = ExtResource("2_5h2y6")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd
deleted file mode 100644
index 32929ab..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd
+++ /dev/null
@@ -1,91 +0,0 @@
-extends LoadingScreen
-
-@export_dir var _spatial_shader_material_dir : String
-@export_file("*.tscn") var _cache_shaders_scene : String
-@export var _mesh : Mesh
-@export_group("Advanced")
-@export var _matching_extensions : Array[String] = [".tres", ".material", ".res"]
-@export var _ignore_subfolders : Array[String] = [".", ".."]
-@export var _shader_delay_timer : float = 0.1
-
-var _loading_shader_cache : bool = false
-
-var _caching_progress : float = 0.0 :
- set(value):
- if value <= _caching_progress:
- return
- _caching_progress = value
- update_total_loading_progress()
- _reset_loading_stage()
-
-func can_load_shader_cache() -> bool:
- return not _spatial_shader_material_dir.is_empty() and \
- not _cache_shaders_scene.is_empty() and \
- SceneLoader.is_loading_scene(_cache_shaders_scene)
-
-func update_total_loading_progress() -> void:
- var partial_total := _scene_loading_progress
- if can_load_shader_cache():
- partial_total += _caching_progress
- partial_total /= 2
- _total_loading_progress = partial_total
-
-func _set_scene_loading_complete() -> void:
- super._set_scene_loading_complete()
- if can_load_shader_cache() and not _loading_shader_cache:
- _loading_shader_cache = true
- _show_all_draw_passes_once()
- if can_load_shader_cache() and _caching_progress < 1.0:
- return
- SceneLoader._background_loading = false
- SceneLoader.set_process(true)
-
-func _show_all_draw_passes_once() -> void:
- var all_materials := _traverse_folders(_spatial_shader_material_dir)
- var total_material_count := all_materials.size()
- var cached_material_count := 0
- for material_path in all_materials:
- _load_material(material_path)
- cached_material_count += 1
- _caching_progress = float(cached_material_count) / total_material_count
- if _shader_delay_timer > 0:
- await(get_tree().create_timer(_shader_delay_timer).timeout)
-
-func _traverse_folders(dir_path:String) -> PackedStringArray:
- var material_list:PackedStringArray = []
- if not dir_path.ends_with("/"):
- dir_path += "/"
- var dir := DirAccess.open(dir_path)
- if not dir:
- push_error("failed to access the path ", dir_path)
- return []
- if dir.list_dir_begin() != OK:
- push_error("failed to access the path ", dir_path)
- return []
- var file_name := dir.get_next()
- while file_name != "":
- if not dir.current_is_dir():
- var matches : bool = false
- for extension in _matching_extensions:
- if file_name.ends_with(extension):
- matches = true
- break
- if matches:
- material_list.append(dir_path + file_name)
- else:
- var subfolder_name := file_name
- if not subfolder_name in _ignore_subfolders:
- material_list.append_array(_traverse_folders(dir_path + subfolder_name))
- file_name = dir.get_next()
-
- return material_list
-
-func _load_material(path:String) -> void:
- var material_shower := MeshInstance3D.new()
- material_shower.mesh = _mesh
- var material := ResourceLoader.load(path) as Material
- material_shower.set_surface_override_material(0, material)
- %SpatialShaderTypeCaches.add_child(material_shower)
-
-func _ready() -> void:
- SceneLoader._background_loading = true
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd.uid
deleted file mode 100644
index 54b8997..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ymuduuk7envr
diff --git a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.tscn b/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.tscn
deleted file mode 100644
index ce3e3f5..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.tscn
+++ /dev/null
@@ -1,22 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://dvp3b2tdsbtmo"]
-
-[ext_resource type="PackedScene" uid="uid://cd0jbh4metflb" path="res://addons/maaacks_game_template/base/scenes/loading_screen/loading_screen.tscn" id="1_4k0mc"]
-[ext_resource type="Script" uid="uid://ymuduuk7envr" path="res://addons/maaacks_game_template/examples/scenes/loading_screen/loading_screen_with_shader_caching.gd" id="2_3xu6h"]
-
-[sub_resource type="QuadMesh" id="QuadMesh_klnwy"]
-
-[node name="LoadingScreen" instance=ExtResource("1_4k0mc")]
-script = ExtResource("2_3xu6h")
-_spatial_shader_material_dir = ""
-_cache_shaders_scene = "res://addons/maaacks_game_template/examples/scenes/game_scene/game_ui.tscn"
-_mesh = SubResource("QuadMesh_klnwy")
-_matching_extensions = Array[String]([".tres", ".material", ".res"])
-_ignore_subfolders = Array[String]([".", ".."])
-_shader_delay_timer = 0.1
-
-[node name="SpatialShaderTypeCaches" type="Node3D" parent="." index="2"]
-unique_name_in_owner = true
-
-[node name="Camera3D" type="Camera3D" parent="SpatialShaderTypeCaches" index="0"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.408)
-current = true
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd
deleted file mode 100644
index dbd5ff9..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd
+++ /dev/null
@@ -1,33 +0,0 @@
-extends Control
-
-## Loads a simple ItemList node within a margin container. SceneLister updates
-## the available scenes in the directory provided. Activating a level will update
-## the GameStateExample's current_level, and emit a signal. The main menu node will trigger
-## a load action from that signal.
-
-signal level_selected
-
-@onready var level_buttons_container: ItemList = %LevelButtonsContainer
-@onready var scene_lister: SceneLister = $SceneLister
-var level_paths : Array[String]
-
-func _ready() -> void:
- add_levels_to_container()
-
-## A fresh level list is propgated into the ItemList, and the file names are cleaned
-func add_levels_to_container() -> void:
- level_buttons_container.clear()
- level_paths.clear()
- var game_state := GameStateExample.get_or_create_state()
- for file_path in game_state.level_states.keys():
- var file_name : String = file_path.get_file() # e.g., "level_1.tscn"
- file_name = file_name.trim_suffix(".tscn") # Remove the ".tscn" extension
- file_name = file_name.replace("_", " ") # Replace underscores with spaces
- file_name = file_name.capitalize() # Convert to proper case
- var button_name := str(file_name)
- level_buttons_container.add_item(button_name)
- level_paths.append(file_path)
-
-func _on_level_buttons_container_item_activated(index: int) -> void:
- GameStateExample.set_current_level(level_paths[index])
- level_selected.emit()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd.uid
deleted file mode 100644
index 4e884eb..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bxjfjnr4m1fm1
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.tscn
deleted file mode 100644
index 1d033b1..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.tscn
+++ /dev/null
@@ -1,49 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://dtu0ffm1m5mr7"]
-
-[ext_resource type="Script" uid="uid://bxjfjnr4m1fm1" path="res://addons/maaacks_game_template/examples/scenes/menus/level_select_menu/level_select_menu.gd" id="1_dm7vg"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_88qak"]
-[ext_resource type="Script" uid="uid://wjq7li836lwj" path="res://addons/maaacks_game_template/extras/scripts/scene_lister.gd" id="2_g3cvb"]
-
-[node name="LevelSelectMenu" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_dm7vg")
-
-[node name="Control" type="Control" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("2_88qak")
-
-[node name="LevelButtonsContainer" type="ItemList" parent="Control"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(400, 0)
-layout_mode = 1
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-offset_left = -200.0
-offset_top = -17.5
-offset_right = 200.0
-offset_bottom = 17.5
-grow_horizontal = 2
-grow_vertical = 2
-auto_height = true
-item_count = 1
-item_0/text = "1 - ExampleLevel"
-
-[node name="SceneLister" type="Node" parent="."]
-script = ExtResource("2_g3cvb")
-files = Array[String](["res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_1.tscn", "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_2.tscn", "res://addons/maaacks_game_template/examples/scenes/game_scene/levels/level_3.tscn"])
-directory = "res://addons/maaacks_game_template/examples/scenes/game_scene/levels"
-
-[connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd
deleted file mode 100644
index c72fea7..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd
+++ /dev/null
@@ -1,46 +0,0 @@
-extends MainMenu
-
-@export var level_select_packed_scene: PackedScene
-@export var confirm_new_game : bool = true
-
-@onready var continue_game_button = %ContinueGameButton
-@onready var level_select_button = %LevelSelectButton
-@onready var new_game_confirmation = %NewGameConfirmationDialog
-
-func load_game_scene() -> void:
- GameStateExample.start_game()
- super.load_game_scene()
-
-func new_game() -> void:
- if confirm_new_game and GameStateExample.get_levels_reached() > 0:
- new_game_confirmation.show()
- else:
- GameStateExample.reset()
- load_game_scene()
-
-func _add_level_select_if_set() -> void:
- if level_select_packed_scene == null: return
- if GameStateExample.get_levels_reached() <= 1 : return
- level_select_button.show()
-
-func _show_continue_if_set() -> void:
- if GameStateExample.get_current_level_path().is_empty(): return
- continue_game_button.show()
-
-func _ready() -> void:
- super._ready()
- _add_level_select_if_set()
- _show_continue_if_set()
-
-func _on_continue_game_button_pressed() -> void:
- GameStateExample.continue_game()
- load_game_scene()
-
-func _on_level_select_button_pressed() -> void:
- var level_select_scene := _open_sub_menu(level_select_packed_scene)
- if level_select_scene.has_signal("level_selected"):
- level_select_scene.connect("level_selected", load_game_scene)
-
-func _on_new_game_confirmation_dialog_confirmed() -> void:
- GameStateExample.reset()
- load_game_scene()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd.uid
deleted file mode 100644
index b5fea99..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bdet8115mn02d
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.tscn
deleted file mode 100644
index 47d0585..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.tscn
+++ /dev/null
@@ -1,39 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://byvydukidk6i2"]
-
-[ext_resource type="PackedScene" uid="uid://c6k5nnpbypshi" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn" id="1_pss7b"]
-[ext_resource type="Script" uid="uid://bdet8115mn02d" path="res://addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu.gd" id="2_lk0wa"]
-[ext_resource type="PackedScene" uid="uid://q2s4ai5avg5n" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/master_options_overlaid_menu.tscn" id="3_cfr4i"]
-[ext_resource type="PackedScene" uid="uid://c87yhxhrkhje0" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/credits_overlaid_menu.tscn" id="4_qhsni"]
-
-[node name="MainMenu" instance=ExtResource("1_pss7b")]
-script = ExtResource("2_lk0wa")
-level_select_packed_scene = null
-confirm_new_game = true
-options_packed_scene = ExtResource("3_cfr4i")
-credits_packed_scene = ExtResource("4_qhsni")
-
-[node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-text = "Continue"
-
-[node name="LevelSelectButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="2"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-text = "Level Select"
-
-[node name="NewGameConfirmationDialog" type="ConfirmationDialog" parent="." index="5"]
-unique_name_in_owner = true
-auto_translate_mode = 1
-title = "Start a New Game?"
-initial_position = 1
-size = Vector2i(480, 158)
-dialog_text = "Are you sure you want to start a new game?
-
-All progress in the current game will be lost."
-
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/ContinueGameButton" to="." method="_on_continue_game_button_pressed"]
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/LevelSelectButton" to="." method="_on_level_select_button_pressed"]
-[connection signal="confirmed" from="NewGameConfirmationDialog" to="." method="_on_new_game_confirmation_dialog_confirmed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd
deleted file mode 100644
index 7af94c2..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd
+++ /dev/null
@@ -1,75 +0,0 @@
-extends MainMenu
-
-@export var level_select_packed_scene: PackedScene
-@export var confirm_new_game : bool = true
-
-var animation_state_machine : AnimationNodeStateMachinePlayback
-
-@onready var continue_game_button = %ContinueGameButton
-@onready var level_select_button = %LevelSelectButton
-@onready var new_game_confirmation = %NewGameConfirmationDialog
-
-func load_game_scene() -> void:
- GameStateExample.start_game()
- super.load_game_scene()
-
-func new_game() -> void:
- if confirm_new_game and GameStateExample.get_levels_reached() > 0:
- new_game_confirmation.show()
- else:
- GameStateExample.reset()
- load_game_scene()
-
-func intro_done() -> void:
- animation_state_machine.travel("OpenMainMenu")
-
-func _is_in_intro() -> bool:
- return animation_state_machine.get_current_node() == "Intro"
-
-func _event_skips_intro(event : InputEvent) -> bool:
- return event.is_action_released("ui_accept") or \
- event.is_action_released("ui_select") or \
- event.is_action_released("ui_cancel") or \
- _event_is_mouse_button_released(event)
-
-func _open_sub_menu(menu : PackedScene) -> Node:
- animation_state_machine.travel("OpenSubMenu")
- return super._open_sub_menu(menu)
-
-func _close_sub_menu() -> void:
- super._close_sub_menu()
- animation_state_machine.travel("OpenMainMenu")
-
-func _input(event : InputEvent) -> void:
- if _is_in_intro() and _event_skips_intro(event):
- intro_done()
- return
- super._input(event)
-
-func _show_level_select_if_set() -> void:
- if level_select_packed_scene == null: return
- if GameStateExample.get_levels_reached() <= 1 : return
- level_select_button.show()
-
-func _show_continue_if_set() -> void:
- if GameStateExample.get_current_level_path().is_empty(): return
- continue_game_button.show()
-
-func _ready() -> void:
- super._ready()
- _show_level_select_if_set()
- _show_continue_if_set()
- animation_state_machine = $MenuAnimationTree.get("parameters/playback")
-
-func _on_continue_game_button_pressed() -> void:
- GameStateExample.continue_game()
- load_game_scene()
-
-func _on_level_select_button_pressed() -> void:
- var level_select_scene := _open_sub_menu(level_select_packed_scene)
- if level_select_scene.has_signal("level_selected"):
- level_select_scene.connect("level_selected", load_game_scene)
-
-func _on_new_game_confirmation_dialog_confirmed():
- GameStateExample.reset()
- load_game_scene()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd.uid
deleted file mode 100644
index cf02ac9..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b5qy5nr1wivs4
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.tscn
deleted file mode 100644
index cf914f7..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.tscn
+++ /dev/null
@@ -1,381 +0,0 @@
-[gd_scene load_steps=18 format=3 uid="uid://c63y6b25bs4bk"]
-
-[ext_resource type="PackedScene" uid="uid://c6k5nnpbypshi" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn" id="1_0i2sc"]
-[ext_resource type="Script" uid="uid://b5qy5nr1wivs4" path="res://addons/maaacks_game_template/examples/scenes/menus/main_menu/main_menu_with_animations.gd" id="2_ncvk7"]
-[ext_resource type="PackedScene" uid="uid://q2s4ai5avg5n" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/master_options_overlaid_menu.tscn" id="3_4saoe"]
-[ext_resource type="PackedScene" uid="uid://c87yhxhrkhje0" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/credits_overlaid_menu.tscn" id="4_801fg"]
-
-[sub_resource type="Animation" id="1"]
-resource_name = "Intro"
-length = 2.4
-tracks/0/type = "method"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(2.4),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"intro_done"
-}]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("MenuContainer/TitleMargin/TitleContainer:modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.8),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("MenuContainer/SubTitleMargin/SubTitleContainer:modulate")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 0.8, 1.6),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer:modulate")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0, 1.6, 2.4),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("MouseFilter:mouse_filter")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 2.4),
-"transitions": PackedFloat32Array(1, 1),
-"update": 1,
-"values": [0, 2]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("VersionMargin/VersionContainer:modulate")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/keys = {
-"times": PackedFloat32Array(0, 1.6, 2.4),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="Animation" id="6"]
-resource_name = "OpenMainMenu"
-length = 0.1
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("MenuContainer/TitleMargin/TitleContainer:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("MenuContainer/SubTitleMargin/SubTitleContainer:modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer:modulate")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("MouseFilter:mouse_filter")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [2]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("MenuContainer:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("VersionMargin/VersionContainer:modulate")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/6/type = "value"
-tracks/6/imported = false
-tracks/6/enabled = true
-tracks/6/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer:lock")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-
-[sub_resource type="Animation" id="4"]
-resource_name = "OpenSubMenu"
-length = 0.2
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("MenuContainer:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 0)]
-}
-
-[sub_resource type="Animation" id="2"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("MenuContainer/TitleMargin/TitleContainer:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("MenuContainer/SubTitleMargin/SubTitleContainer:modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer:modulate")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("MouseFilter:mouse_filter")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [2]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("MenuContainer:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("VersionMargin/VersionContainer:modulate")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 0)]
-}
-tracks/6/type = "value"
-tracks/6/imported = false
-tracks/6/enabled = true
-tracks/6/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer:lock")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_2kqig"]
-_data = {
-&"Intro": SubResource("1"),
-&"OpenMainMenu": SubResource("6"),
-&"OpenSubMenu": SubResource("4"),
-&"RESET": SubResource("2")
-}
-
-[sub_resource type="AnimationNodeAnimation" id="7"]
-animation = &"Intro"
-
-[sub_resource type="AnimationNodeAnimation" id="10"]
-animation = &"OpenMainMenu"
-
-[sub_resource type="AnimationNodeAnimation" id="13"]
-animation = &"OpenSubMenu"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="11"]
-advance_condition = &"intro_done"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="14"]
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_j0orr"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_63dxc"]
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_vikuh"]
-states/End/position = Vector2(958, 123)
-states/Intro/node = SubResource("7")
-states/Intro/position = Vector2(259, 123)
-states/OpenMainMenu/node = SubResource("10")
-states/OpenMainMenu/position = Vector2(472, 123)
-states/OpenSubMenu/node = SubResource("13")
-states/OpenSubMenu/position = Vector2(734, 123)
-states/Start/position = Vector2(82, 123)
-transitions = ["Intro", "OpenMainMenu", SubResource("11"), "OpenMainMenu", "OpenSubMenu", SubResource("14"), "Start", "Intro", SubResource("AnimationNodeStateMachineTransition_j0orr"), "OpenSubMenu", "OpenMainMenu", SubResource("AnimationNodeStateMachineTransition_63dxc")]
-graph_offset = Vector2(-180.277, 49)
-
-[node name="MainMenu" instance=ExtResource("1_0i2sc")]
-script = ExtResource("2_ncvk7")
-level_select_packed_scene = null
-confirm_new_game = true
-options_packed_scene = ExtResource("3_4saoe")
-credits_packed_scene = ExtResource("4_801fg")
-
-[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="." index="1"]
-libraries = {
-&"": SubResource("AnimationLibrary_2kqig")
-}
-
-[node name="MenuAnimationTree" type="AnimationTree" parent="." index="2"]
-tree_root = SubResource("AnimationNodeStateMachine_vikuh")
-anim_player = NodePath("../MenuAnimationPlayer")
-parameters/conditions/intro_done = false
-
-[node name="VersionContainer" parent="VersionMargin" index="0"]
-modulate = Color(1, 1, 1, 0)
-
-[node name="TitleContainer" parent="MenuContainer/TitleMargin" index="0"]
-modulate = Color(1, 1, 1, 0)
-
-[node name="SubTitleContainer" parent="MenuContainer/SubTitleMargin" index="0"]
-modulate = Color(1, 1, 1, 0)
-
-[node name="MenuButtonsContainer" parent="MenuContainer/MenuButtonsMargin" index="0"]
-modulate = Color(1, 1, 1, 0)
-
-[node name="MenuButtonsBoxContainer" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer" index="0"]
-lock = true
-
-[node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-text = "Continue"
-
-[node name="LevelSelectButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="2"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-text = "Level Select"
-
-[node name="NewGameConfirmationDialog" type="ConfirmationDialog" parent="." index="7"]
-unique_name_in_owner = true
-title = "Start a New Game?"
-initial_position = 1
-size = Vector2i(480, 158)
-dialog_text = "Are you sure you want to start a new game?
-
-All progress in the current game will be lost."
-
-[node name="MouseFilter" type="Control" parent="." index="8"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-metadata/_edit_lock_ = true
-
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/ContinueGameButton" to="." method="_on_continue_game_button_pressed"]
-[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/LevelSelectButton" to="." method="_on_level_select_button_pressed"]
-[connection signal="confirmed" from="NewGameConfirmationDialog" to="." method="_on_new_game_confirmation_dialog_confirmed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd
deleted file mode 100644
index da3199a..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd
+++ /dev/null
@@ -1,38 +0,0 @@
-@tool
-extends ListOptionControl
-
-func _set_input_device() -> void:
- var current_setting : Variant = _get_setting(default_value)
- if current_setting is bool:
- current_setting = &"Default"
- AudioServer.input_device = _get_setting(default_value)
-
-func _add_microphone_audio_stream() -> void:
- var instance := AudioStreamPlayer.new()
- instance.stream = AudioStreamMicrophone.new()
- instance.autoplay = true
- add_child.call_deferred(instance)
- instance.ready.connect(_set_input_device)
-
-func _ready() -> void:
- if ProjectSettings.get_setting("audio/driver/enable_input", false):
- if AudioServer.input_device.is_empty():
- _add_microphone_audio_stream()
- else:
- _set_input_device()
- if not Engine.is_editor_hint():
- option_values = AudioServer.get_input_device_list()
- else:
- hide()
- super._ready()
-
-func _on_setting_changed(value : Variant) -> void:
- if value >= option_values.size(): return
- AudioServer.input_device = option_values[value]
- super._on_setting_changed(value)
-
-func _value_title_map(value : Variant) -> String:
- if value is String:
- return value
- else:
- return super._value_title_map(value)
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd.uid
deleted file mode 100644
index e8db2ae..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bwiyqjcudqioy
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.tscn
deleted file mode 100644
index 87ddf4d..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.tscn
+++ /dev/null
@@ -1,20 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://dxj1gsxtlp6v0"]
-
-[ext_resource type="PackedScene" uid="uid://b6bl3n5mp3m1e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn" id="1_0vgeo"]
-[ext_resource type="Script" uid="uid://bwiyqjcudqioy" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.gd" id="2_6qeue"]
-
-[node name="AudioInputOptionControl" instance=ExtResource("1_0vgeo")]
-script = ExtResource("2_6qeue")
-option_name = "Input Device"
-option_section = 2
-key = "InputDevice"
-section = "AudioSettings"
-property_type = 4
-
-[node name="OptionLabel" parent="." index="0"]
-text = "Input Device :"
-
-[node name="OptionButton" parent="." index="1"]
-size_flags_horizontal = 3
-text_overrun_behavior = 1
-clip_text = true
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd
deleted file mode 100644
index d125ea0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends AudioOptionsMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd.uid
deleted file mode 100644
index 7fae2d0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b1j3xptvj7fnr
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.tscn
deleted file mode 100644
index 9a780c6..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.tscn
+++ /dev/null
@@ -1,11 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://dmgla7rq1g2cc"]
-
-[ext_resource type="PackedScene" uid="uid://c8vnncjwqcpab" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.tscn" id="1_ro573"]
-[ext_resource type="Script" uid="uid://b1j3xptvj7fnr" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.gd" id="2_g4nfi"]
-[ext_resource type="PackedScene" uid="uid://dxj1gsxtlp6v0" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_input_option_control.tscn" id="3_orobk"]
-
-[node name="Audio" instance=ExtResource("1_ro573")]
-script = ExtResource("2_g4nfi")
-
-[node name="AudioInputOptionControl" parent="VBoxContainer" index="2" instance=ExtResource("3_orobk")]
-layout_mode = 2
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd
deleted file mode 100644
index 2fb8edf..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd
+++ /dev/null
@@ -1,4 +0,0 @@
-extends Control
-
-func _on_ResetGameControl_reset_confirmed() -> void:
- GameStateExample.reset()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd.uid
deleted file mode 100644
index 07d151b..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://d4fupg1cv7ga6
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.tscn
deleted file mode 100644
index 56ee2f9..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.tscn
+++ /dev/null
@@ -1,26 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://bsbo8ot2p46dv"]
-
-[ext_resource type="Script" uid="uid://d4fupg1cv7ga6" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.gd" id="1_edbal"]
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_y4sbs"]
-[ext_resource type="PackedScene" uid="uid://w5i7wl2xlos" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn" id="3_gdyom"]
-
-[node name="Game" type="MarginContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-theme_override_constants/margin_top = 24
-theme_override_constants/margin_bottom = 24
-script = ExtResource("1_edbal")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-custom_minimum_size = Vector2(400, 0)
-layout_mode = 2
-size_flags_horizontal = 4
-alignment = 1
-script = ExtResource("2_y4sbs")
-search_depth = 2
-
-[node name="ResetGameControl" parent="VBoxContainer" instance=ExtResource("3_gdyom")]
-layout_mode = 2
-
-[connection signal="reset_confirmed" from="VBoxContainer/ResetGameControl" to="." method="_on_ResetGameControl_reset_confirmed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd
deleted file mode 100644
index f7a5ae7..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd
+++ /dev/null
@@ -1,15 +0,0 @@
-extends HBoxContainer
-
-signal reset_confirmed
-
-func _on_ResetButton_pressed() -> void:
- $ConfirmResetDialog.popup_centered()
- $ResetButton.disabled = true
-
-func _on_ConfirmResetDialog_confirmed() -> void:
- reset_confirmed.emit()
- get_tree().paused = false
- SceneLoader.reload_current_scene()
-
-func _on_confirm_reset_dialog_canceled() -> void:
- $ResetButton.disabled = false
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd.uid
deleted file mode 100644
index e5befe5..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bnggxw78h248d
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn
deleted file mode 100644
index d159f07..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn
+++ /dev/null
@@ -1,27 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://w5i7wl2xlos"]
-
-[ext_resource type="Script" uid="uid://bnggxw78h248d" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd" id="1_wkygd"]
-
-[node name="ResetGameControl" type="HBoxContainer"]
-custom_minimum_size = Vector2(0, 32)
-offset_top = 210.0
-offset_right = 305.0
-offset_bottom = 242.0
-script = ExtResource("1_wkygd")
-
-[node name="ResetLabel" type="Label" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Reset Game :"
-
-[node name="ResetButton" type="Button" parent="."]
-custom_minimum_size = Vector2(72, 32)
-layout_mode = 2
-text = "Reset"
-
-[node name="ConfirmResetDialog" type="ConfirmationDialog" parent="."]
-dialog_text = "Do you want to reset your game data?"
-
-[connection signal="pressed" from="ResetButton" to="." method="_on_ResetButton_pressed"]
-[connection signal="canceled" from="ConfirmResetDialog" to="." method="_on_confirm_reset_dialog_canceled"]
-[connection signal="confirmed" from="ConfirmResetDialog" to="." method="_on_ConfirmResetDialog_confirmed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_extras_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_extras_menu.tscn
deleted file mode 100644
index 4cf5681..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_extras_menu.tscn
+++ /dev/null
@@ -1,65 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://b24sg04dn21ke"]
-
-[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="1_g6yfe"]
-[ext_resource type="PackedScene" uid="uid://cl416gdb1fgwr" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn" id="2_mphg3"]
-
-[node name="Inputs" type="MarginContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-layout_mode = 2
-size_flags_horizontal = 4
-size_flags_vertical = 4
-theme_override_constants/separation = 8
-script = ExtResource("1_g6yfe")
-search_depth = 5
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
-layout_mode = 2
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/separation = 8
-alignment = 1
-
-[node name="MouseSensitivityControl" parent="VBoxContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_mphg3")]
-layout_mode = 2
-option_name = "Mouse Sensitivity"
-option_section = 1
-key = "MouseSensitivity"
-section = "InputSettings"
-
-[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="0"]
-text = "Mouse Sensitivity :"
-
-[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="1"]
-min_value = 0.25
-max_value = 2.0
-tick_count = 8
-
-[node name="JoypadSensitivityControl" parent="VBoxContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_mphg3")]
-layout_mode = 2
-option_name = "Joypad Sensitivity"
-option_section = 1
-key = "JoypadSensitivity"
-section = "InputSettings"
-
-[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/JoypadSensitivityControl" index="0"]
-text = "Joypad Sensitivity :"
-
-[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/JoypadSensitivityControl" index="1"]
-min_value = 0.25
-max_value = 2.0
-tick_count = 8
-
-[editable path="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl"]
-[editable path="VBoxContainer/MarginContainer/VBoxContainer/JoypadSensitivityControl"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_icon_mapper.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_icon_mapper.tscn
deleted file mode 100644
index 861b7d0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_icon_mapper.tscn
+++ /dev/null
@@ -1,5 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://bcp6f6yysejjk"]
-
-[ext_resource type="PackedScene" uid="uid://qoexj4ptqt8a" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_icon_mapper.tscn" id="1_cponm"]
-
-[node name="InputIconMapper" instance=ExtResource("1_cponm")]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd
deleted file mode 100644
index 32b012c..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd
+++ /dev/null
@@ -1,2 +0,0 @@
-@tool
-extends InputOptionsMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd.uid
deleted file mode 100644
index 22ae664..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://drgrr8tqd11sm
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.tscn
deleted file mode 100644
index 25209ca..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.tscn
+++ /dev/null
@@ -1,16 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://1e3vf4u3brfm"]
-
-[ext_resource type="PackedScene" uid="uid://dp3rgqaehb3xu" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn" id="1_b6ygu"]
-[ext_resource type="Script" uid="uid://drgrr8tqd11sm" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd" id="2_gjulr"]
-[ext_resource type="PackedScene" uid="uid://bcp6f6yysejjk" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_icon_mapper.tscn" id="3_y3sxr"]
-
-[node name="Controls" instance=ExtResource("1_b6ygu")]
-script = ExtResource("2_gjulr")
-
-[node name="InputActionsList" parent="VBoxContainer/InputMappingContainer" index="1" node_paths=PackedStringArray("input_icon_mapper")]
-input_icon_mapper = NodePath("../../../InputIconMapper")
-
-[node name="InputActionsTree" parent="VBoxContainer/InputMappingContainer" index="2" node_paths=PackedStringArray("input_icon_mapper")]
-input_icon_mapper = NodePath("../../../InputIconMapper")
-
-[node name="InputIconMapper" parent="." index="6" instance=ExtResource("3_y3sxr")]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu_with_mouse_sensitivity.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu_with_mouse_sensitivity.tscn
deleted file mode 100644
index 1d1fa84..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu_with_mouse_sensitivity.tscn
+++ /dev/null
@@ -1,41 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://b4r3gcnm31uo6"]
-
-[ext_resource type="PackedScene" uid="uid://dp3rgqaehb3xu" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn" id="1_pi4g6"]
-[ext_resource type="PackedScene" uid="uid://cl416gdb1fgwr" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn" id="2_ax2ge"]
-[ext_resource type="Script" uid="uid://drgrr8tqd11sm" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.gd" id="2_diymx"]
-
-[node name="Controls" instance=ExtResource("1_pi4g6")]
-script = ExtResource("2_diymx")
-
-[node name="VBoxContainer" parent="." index="0"]
-theme_override_constants/separation = 16
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer" index="0"]
-layout_mode = 2
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer" index="0"]
-layout_mode = 2
-size_flags_vertical = 3
-alignment = 1
-
-[node name="MouseSensitivityControl" parent="VBoxContainer/MarginContainer/VBoxContainer" index="0" instance=ExtResource("2_ax2ge")]
-layout_mode = 2
-option_name = "Mouse Sensitivity"
-option_section = 1
-key = "MouseSensitivity"
-section = "InputSettings"
-
-[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="0"]
-text = "Mouse Sensitivity :"
-
-[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="1"]
-min_value = 0.25
-max_value = 2.0
-tick_count = 8
-
-[node name="HSeparator" type="HSeparator" parent="VBoxContainer" index="1"]
-layout_mode = 2
-
-[editable path="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/master_options_menu_with_tabs.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/master_options_menu_with_tabs.tscn
deleted file mode 100644
index e420330..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/master_options_menu_with_tabs.tscn
+++ /dev/null
@@ -1,35 +0,0 @@
-[gd_scene load_steps=7 format=3 uid="uid://bdvdf5v87mmrr"]
-
-[ext_resource type="PackedScene" uid="uid://hmx6o472ropw" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu_with_tabs.tscn" id="1_u1u8e"]
-[ext_resource type="PackedScene" uid="uid://1e3vf4u3brfm" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_options_menu.tscn" id="3_cewlf"]
-[ext_resource type="PackedScene" uid="uid://dmgla7rq1g2cc" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/audio/audio_options_menu.tscn" id="3_vs2ne"]
-[ext_resource type="PackedScene" uid="uid://b24sg04dn21ke" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/input/input_extras_menu.tscn" id="4_mjf18"]
-[ext_resource type="PackedScene" uid="uid://bsbo8ot2p46dv" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/game/game_options_menu.tscn" id="4_nfwp5"]
-[ext_resource type="PackedScene" uid="uid://cck3omvlkhpix" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu_with_extras.tscn" id="4_v3ewd"]
-
-[node name="MasterOptionsMenu" instance=ExtResource("1_u1u8e")]
-current_tab = 0
-
-[node name="Controls" parent="." index="1" instance=ExtResource("3_cewlf")]
-layout_mode = 2
-metadata/_tab_index = 0
-
-[node name="Inputs" parent="." index="2" instance=ExtResource("4_mjf18")]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 1
-
-[node name="Audio" parent="." index="3" instance=ExtResource("3_vs2ne")]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 2
-
-[node name="Video" parent="." index="4" instance=ExtResource("4_v3ewd")]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 3
-
-[node name="Game" parent="." index="5" instance=ExtResource("4_nfwp5")]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 4
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd
deleted file mode 100644
index 62b8641..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends MiniOptionsMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd.uid
deleted file mode 100644
index 926a13c..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c0jjk82iuuyh3
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.tscn
deleted file mode 100644
index a13c64a..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://c6obwfb7wbibn"]
-
-[ext_resource type="PackedScene" uid="uid://vh1ucj2rfbby" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn" id="1_f2l25"]
-[ext_resource type="Script" uid="uid://c0jjk82iuuyh3" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu.gd" id="2_hcx71"]
-
-[node name="MiniOptionsMenu" instance=ExtResource("1_f2l25")]
-script = ExtResource("2_hcx71")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd
deleted file mode 100644
index 682b548..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd
+++ /dev/null
@@ -1,4 +0,0 @@
-extends MiniOptionsMenu
-
-func _on_reset_game_control_reset_confirmed() -> void:
- GameStateExample.reset()
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd.uid
deleted file mode 100644
index 3fb60a3..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bt52j7aly5clg
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.tscn
deleted file mode 100644
index a201562..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.tscn
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://dr1ard3qf6t81"]
-
-[ext_resource type="PackedScene" uid="uid://vh1ucj2rfbby" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn" id="1_swuya"]
-[ext_resource type="Script" uid="uid://bt52j7aly5clg" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.gd" id="2_84xi1"]
-[ext_resource type="PackedScene" uid="uid://w5i7wl2xlos" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn" id="3_7aalw"]
-
-[node name="MiniOptionsMenu" instance=ExtResource("1_swuya")]
-script = ExtResource("2_84xi1")
-
-[node name="ResetGameControl" parent="." index="3" instance=ExtResource("3_7aalw")]
-layout_mode = 2
-
-[connection signal="reset_confirmed" from="ResetGameControl" to="." method="_on_reset_game_control_reset_confirmed"]
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd
deleted file mode 100644
index f6bae15..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends VideoOptionsMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd.uid
deleted file mode 100644
index 93d1f28..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cgn8jg7g5ylr
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.tscn
deleted file mode 100644
index a8c6f50..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://b8kb81us6g3kr"]
-
-[ext_resource type="PackedScene" uid="uid://b2numvphf2kau" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn" id="1_4gigb"]
-[ext_resource type="Script" uid="uid://cgn8jg7g5ylr" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd" id="2_v2jlu"]
-
-[node name="Video" instance=ExtResource("1_4gigb")]
-script = ExtResource("2_v2jlu")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu_with_extras.tscn b/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu_with_extras.tscn
deleted file mode 100644
index 55c10bf..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu_with_extras.tscn
+++ /dev/null
@@ -1,33 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://cck3omvlkhpix"]
-
-[ext_resource type="PackedScene" uid="uid://b2numvphf2kau" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn" id="1_nrerc"]
-[ext_resource type="Script" uid="uid://cgn8jg7g5ylr" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/video/video_options_menu.gd" id="2_qtdes"]
-[ext_resource type="PackedScene" uid="uid://b6bl3n5mp3m1e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn" id="2_tyiki"]
-
-[node name="Video" instance=ExtResource("1_nrerc")]
-script = ExtResource("2_qtdes")
-
-[node name="AntiAliasingControl" parent="VBoxContainer" index="3" instance=ExtResource("2_tyiki")]
-layout_mode = 2
-lock_titles = true
-option_values = [0, 1, 2, 3]
-option_titles = Array[String](["Disabled (Fastest)", "2x", "4x", "8x (Slowest)"])
-option_name = "Anti-Aliasing"
-option_section = 3
-key = "Anti-aliasing"
-section = "VideoSettings"
-property_type = 2
-default_value = 0
-
-[node name="CameraShakeControl" parent="VBoxContainer" index="4" instance=ExtResource("2_tyiki")]
-visible = false
-layout_mode = 2
-lock_titles = true
-option_values = [1.0, 0.75, 0.5, 0.0]
-option_titles = Array[String](["Normal", "Reduced", "Minimal", "None"])
-option_name = "Camera Shake"
-option_section = 3
-key = "CameraShake"
-section = "VideoSettings"
-property_type = 3
-default_value = 1.0
diff --git a/godot/addons/maaacks_game_template/examples/scenes/opening/opening.gd b/godot/addons/maaacks_game_template/examples/scenes/opening/opening.gd
deleted file mode 100644
index 770176b..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/opening/opening.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends "res://addons/maaacks_game_template/base/scenes/opening/opening.gd"
diff --git a/godot/addons/maaacks_game_template/examples/scenes/opening/opening.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/opening/opening.gd.uid
deleted file mode 100644
index 0f1a1c5..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/opening/opening.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://upkolvghgj67
diff --git a/godot/addons/maaacks_game_template/examples/scenes/opening/opening.tscn b/godot/addons/maaacks_game_template/examples/scenes/opening/opening.tscn
deleted file mode 100644
index 9e69800..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/opening/opening.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://b8u5wed0pve26"]
-
-[ext_resource type="PackedScene" uid="uid://sikc02ddepyt" path="res://addons/maaacks_game_template/base/scenes/opening/opening.tscn" id="1_jidei"]
-[ext_resource type="Script" uid="uid://upkolvghgj67" path="res://addons/maaacks_game_template/examples/scenes/opening/opening.gd" id="2_mjcrw"]
-
-[node name="Opening" instance=ExtResource("1_jidei")]
-script = ExtResource("2_mjcrw")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/opening/opening_with_logo.tscn b/godot/addons/maaacks_game_template/examples/scenes/opening/opening_with_logo.tscn
deleted file mode 100644
index 2f37c73..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/opening/opening_with_logo.tscn
+++ /dev/null
@@ -1,9 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://cyqy6dvynho67"]
-
-[ext_resource type="PackedScene" uid="uid://sikc02ddepyt" path="res://addons/maaacks_game_template/base/scenes/opening/opening.tscn" id="1_tjbcx"]
-[ext_resource type="Script" uid="uid://upkolvghgj67" path="res://addons/maaacks_game_template/examples/scenes/opening/opening.gd" id="2_up6er"]
-[ext_resource type="Texture2D" uid="uid://5rltpvy6c5b" path="res://addons/maaacks_game_template/examples/assets/godot_engine_logo/logo_vertical_color_dark.png" id="3_powqu"]
-
-[node name="Opening" instance=ExtResource("1_tjbcx")]
-script = ExtResource("2_up6er")
-images = Array[Texture2D]([ExtResource("3_powqu")])
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/credits_overlaid_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/credits_overlaid_menu.tscn
deleted file mode 100644
index daf4dd0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/credits_overlaid_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://c87yhxhrkhje0"]
-
-[ext_resource type="PackedScene" uid="uid://n111yfgskspp" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/credits_overlaid_menu.tscn" id="1_ba4pu"]
-[ext_resource type="PackedScene" uid="uid://wjcsvhdqikyl" path="res://addons/maaacks_game_template/examples/scenes/credits/scrollable_credits.tscn" id="2_gbxb0"]
-
-[node name="CreditsOverlaidMenu" instance=ExtResource("1_ba4pu")]
-menu_scene = ExtResource("2_gbxb0")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd
deleted file mode 100644
index 9b4037d..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends GameWonMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd.uid
deleted file mode 100644
index c213673..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c1of4043nlpa4
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.tscn
deleted file mode 100644
index 19d6dae..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://cmefjno2ddk7e"]
-
-[ext_resource type="PackedScene" uid="uid://4brssbq1ghsw" path="res://addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.tscn" id="1_w6qlf"]
-[ext_resource type="Script" uid="uid://c1of4043nlpa4" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/game_won_menu.gd" id="2_2jmwn"]
-
-[node name="GameWonMenu" instance=ExtResource("1_w6qlf")]
-script = ExtResource("2_2jmwn")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd
deleted file mode 100644
index cfe6091..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends LevelLostMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd.uid
deleted file mode 100644
index 54770f0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://rjif3dwb5jvy
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.tscn
deleted file mode 100644
index ca4814c..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://bralse0lmn6t3"]
-
-[ext_resource type="PackedScene" uid="uid://dkq3nhkmhu4je" path="res://addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.tscn" id="1_53wog"]
-[ext_resource type="Script" uid="uid://rjif3dwb5jvy" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/level_lost_menu.gd" id="2_qfo47"]
-
-[node name="LevelLostMenu" instance=ExtResource("1_53wog")]
-script = ExtResource("2_qfo47")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd
deleted file mode 100644
index ecbc0c9..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends LevelWonMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd.uid
deleted file mode 100644
index ad5f946..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cwubbhtyxto7p
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.tscn
deleted file mode 100644
index f46a583..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://cyjcj8mo8x5tk"]
-
-[ext_resource type="PackedScene" uid="uid://y3vtx0e0shv4" path="res://addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.tscn" id="1_37y12"]
-[ext_resource type="Script" uid="uid://cwubbhtyxto7p" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/level_won_menu.gd" id="2_p2umj"]
-
-[node name="LevelWonMenu" instance=ExtResource("1_37y12")]
-script = ExtResource("2_p2umj")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/master_options_overlaid_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/master_options_overlaid_menu.tscn
deleted file mode 100644
index 0804b18..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/master_options_overlaid_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://q2s4ai5avg5n"]
-
-[ext_resource type="PackedScene" uid="uid://dy8sr0cd8nbiu" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/master_options_overlaid_menu.tscn" id="1_e7b2a"]
-[ext_resource type="PackedScene" uid="uid://bdvdf5v87mmrr" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/master_options_menu_with_tabs.tscn" id="2_vemvc"]
-
-[node name="MasterOptionsOverlaidMenu" instance=ExtResource("1_e7b2a")]
-menu_scene = ExtResource("2_vemvc")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/mini_options_overlaid_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/mini_options_overlaid_menu.tscn
deleted file mode 100644
index 2f91bde..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/mini_options_overlaid_menu.tscn
+++ /dev/null
@@ -1,7 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://65shnbd3xtxu"]
-
-[ext_resource type="PackedScene" uid="uid://cikf3o5omnunl" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn" id="1_nwj8l"]
-[ext_resource type="PackedScene" uid="uid://dr1ard3qf6t81" path="res://addons/maaacks_game_template/examples/scenes/menus/options_menu/mini_options_menu_with_reset.tscn" id="2_0xks0"]
-
-[node name="MiniOptionsOverlaidMenu" instance=ExtResource("1_nwj8l")]
-menu_scene = ExtResource("2_0xks0")
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd
deleted file mode 100644
index bee76c0..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd
+++ /dev/null
@@ -1 +0,0 @@
-extends PauseMenu
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd.uid b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd.uid
deleted file mode 100644
index 8668f7b..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://4ieefgkpqugj
diff --git a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.tscn b/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.tscn
deleted file mode 100644
index f2d7622..0000000
--- a/godot/addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.tscn
+++ /dev/null
@@ -1,9 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://cnmu4k37qncn8"]
-
-[ext_resource type="PackedScene" uid="uid://b5cd6sa8qq4vc" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn" id="1_fd1e4"]
-[ext_resource type="Script" uid="uid://4ieefgkpqugj" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/pause_menu.gd" id="2_o57rn"]
-[ext_resource type="PackedScene" uid="uid://65shnbd3xtxu" path="res://addons/maaacks_game_template/examples/scenes/overlaid_menus/mini_options_overlaid_menu.tscn" id="3_hewsk"]
-
-[node name="PauseMenu" instance=ExtResource("1_fd1e4")]
-script = ExtResource("2_o57rn")
-options_packed_scene = ExtResource("3_hewsk")
diff --git a/godot/addons/maaacks_game_template/examples/scripts/game_state.gd b/godot/addons/maaacks_game_template/examples/scripts/game_state.gd
deleted file mode 100644
index 2c6bfdf..0000000
--- a/godot/addons/maaacks_game_template/examples/scripts/game_state.gd
+++ /dev/null
@@ -1,74 +0,0 @@
-class_name GameStateExample
-extends Resource
-
-const STATE_NAME : String = "GameStateExample"
-const FILE_PATH = "res://addons/maaacks_game_template/examples/scripts/game_state.gd"
-
-@export var level_states : Dictionary = {}
-@export var current_level_path : String
-@export var continue_level_path : String
-@export var total_games_played : int
-@export var play_time : int
-@export var total_time : int
-
-static func get_level_state(level_state_key : String) -> LevelStateExample:
- if not has_game_state():
- return
- var game_state := get_or_create_state()
- if level_state_key.is_empty() : return
- if level_state_key in game_state.level_states:
- return game_state.level_states[level_state_key]
- else:
- var new_level_state := LevelStateExample.new()
- game_state.level_states[level_state_key] = new_level_state
- GlobalState.save()
- return new_level_state
-
-static func has_game_state() -> bool:
- return GlobalState.has_state(STATE_NAME)
-
-static func get_or_create_state() -> GameStateExample:
- return GlobalState.get_or_create_state(STATE_NAME, FILE_PATH)
-
-static func get_current_level_path() -> String:
- if not has_game_state():
- return ""
- var game_state := get_or_create_state()
- return game_state.current_level_path
-
-static func get_levels_reached() -> int:
- if not has_game_state():
- return 0
- var game_state := get_or_create_state()
- return game_state.level_states.size()
-
-static func level_reached(level_path : String) -> void:
- var game_state := get_or_create_state()
- game_state.current_level_path = level_path
- game_state.continue_level_path = level_path
- get_level_state(level_path)
- GlobalState.save()
-
-static func set_current_level(level_path : String) -> void:
- var game_state := get_or_create_state()
- game_state.current_level_path = level_path
- GlobalState.save()
-
-static func start_game() -> void:
- var game_state := get_or_create_state()
- game_state.total_games_played += 1
- GlobalState.save()
-
-static func continue_game() -> void:
- var game_state := get_or_create_state()
- game_state.current_level_path = game_state.continue_level_path
- GlobalState.save()
-
-static func reset() -> void:
- var game_state := get_or_create_state()
- game_state.level_states = {}
- game_state.current_level_path = ""
- game_state.continue_level_path = ""
- game_state.play_time = 0
- game_state.total_time = 0
- GlobalState.save()
diff --git a/godot/addons/maaacks_game_template/examples/scripts/game_state.gd.uid b/godot/addons/maaacks_game_template/examples/scripts/game_state.gd.uid
deleted file mode 100644
index 59641d7..0000000
--- a/godot/addons/maaacks_game_template/examples/scripts/game_state.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://3fi7aeiafrpi
diff --git a/godot/addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd b/godot/addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd
deleted file mode 100644
index 5aafe18..0000000
--- a/godot/addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-extends LevelManager
-
-func set_current_level_path(value : String) -> void:
- super.set_current_level_path(value)
- GameStateExample.set_current_level(value)
- GameStateExample.get_level_state(value)
-
-func get_current_level_path() -> String:
- var state_level_path := GameStateExample.get_current_level_path()
- if not state_level_path.is_empty():
- current_level_path = state_level_path
- return super.get_current_level_path()
-
-func _advance_level() -> bool:
- var _advanced := super._advance_level()
- if _advanced:
- GameStateExample.level_reached(current_level_path)
- return _advanced
diff --git a/godot/addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd.uid b/godot/addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd.uid
deleted file mode 100644
index a07970d..0000000
--- a/godot/addons/maaacks_game_template/examples/scripts/level_and_state_manager.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cmqngqwso0uve
diff --git a/godot/addons/maaacks_game_template/examples/scripts/level_state.gd b/godot/addons/maaacks_game_template/examples/scripts/level_state.gd
deleted file mode 100644
index 1e7c493..0000000
--- a/godot/addons/maaacks_game_template/examples/scripts/level_state.gd
+++ /dev/null
@@ -1,5 +0,0 @@
-class_name LevelStateExample
-extends Resource
-
-@export var color : Color
-@export var tutorial_read : bool = false
diff --git a/godot/addons/maaacks_game_template/examples/scripts/level_state.gd.uid b/godot/addons/maaacks_game_template/examples/scripts/level_state.gd.uid
deleted file mode 100644
index 453f70d..0000000
--- a/godot/addons/maaacks_game_template/examples/scripts/level_state.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c3kysco616td4
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd
deleted file mode 100644
index 9ceee50..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd
+++ /dev/null
@@ -1,34 +0,0 @@
-class_name GameWonMenu
-extends OverlaidMenu
-
-signal continue_pressed
-signal main_menu_pressed
-
-func _handle_cancel_input():
- if $ConfirmExit.visible:
- $ConfirmExit.hide()
- elif $ConfirmMainMenu.visible:
- $ConfirmMainMenu.hide()
- else:
- super._handle_cancel_input()
-
-func _ready():
- if OS.has_feature("web"):
- %ExitButton.hide()
-
-func _on_exit_button_pressed():
- $ConfirmExit.popup_centered()
-
-func _on_main_menu_button_pressed():
- $ConfirmMainMenu.popup_centered()
-
-func _on_confirm_main_menu_confirmed():
- main_menu_pressed.emit()
- close()
-
-func _on_confirm_exit_confirmed():
- get_tree().quit()
-
-func _on_close_button_pressed():
- continue_pressed.emit()
- close()
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd.uid b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd.uid
deleted file mode 100644
index 652953e..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://gi8tms6wsj1n
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.tscn b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.tscn
deleted file mode 100644
index 17b2180..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.tscn
+++ /dev/null
@@ -1,61 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://4brssbq1ghsw"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_87sd7"]
-[ext_resource type="Script" uid="uid://gi8tms6wsj1n" path="res://addons/maaacks_game_template/extras/scenes/overlaid_menus/game_won_menu.gd" id="2_hi7oy"]
-
-[node name="GameWonMenu" instance=ExtResource("1_87sd7")]
-process_mode = 3
-script = ExtResource("2_hi7oy")
-pauses_game = true
-
-[node name="MenuPanelContainer" parent="." index="1"]
-custom_minimum_size = Vector2(432, 240)
-
-[node name="TitleMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="0"]
-visible = false
-
-[node name="DescriptionMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="1"]
-visible = true
-theme_override_constants/margin_top = 64
-theme_override_constants/margin_bottom = 64
-
-[node name="DescriptionLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin" index="0"]
-text = "[center]You won![/center]"
-scroll_active = false
-
-[node name="MenuButtons" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin" index="0"]
-custom_minimum_size = Vector2(400, 0)
-vertical = false
-
-[node name="ExitButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="0"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Exit"
-
-[node name="MainMenuButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="1"]
-unique_name_in_owner = true
-visible = false
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Main Menu"
-
-[node name="CloseButton" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="2"]
-size_flags_horizontal = 3
-text = "Continue"
-
-[node name="ConfirmMainMenu" type="ConfirmationDialog" parent="." index="2"]
-auto_translate_mode = 1
-initial_position = 2
-dialog_text = "Go back to main menu?"
-
-[node name="ConfirmExit" type="ConfirmationDialog" parent="." index="3"]
-auto_translate_mode = 1
-initial_position = 2
-dialog_text = "Quit the game?"
-
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/ExitButton" to="." method="_on_exit_button_pressed"]
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/MainMenuButton" to="." method="_on_main_menu_button_pressed"]
-[connection signal="confirmed" from="ConfirmMainMenu" to="." method="_on_confirm_main_menu_confirmed"]
-[connection signal="confirmed" from="ConfirmExit" to="." method="_on_confirm_exit_confirmed"]
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd
deleted file mode 100644
index 976357a..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd
+++ /dev/null
@@ -1,34 +0,0 @@
-class_name LevelLostMenu
-extends OverlaidMenu
-
-signal restart_pressed
-signal main_menu_pressed
-
-func _handle_cancel_input():
- if $ConfirmExit.visible:
- $ConfirmExit.hide()
- elif $ConfirmMainMenu.visible:
- $ConfirmMainMenu.hide()
- else:
- super._handle_cancel_input()
-
-func _ready():
- if OS.has_feature("web"):
- %ExitButton.hide()
-
-func _on_exit_button_pressed():
- $ConfirmExit.popup_centered()
-
-func _on_main_menu_button_pressed():
- $ConfirmMainMenu.popup_centered()
-
-func _on_confirm_main_menu_confirmed():
- main_menu_pressed.emit()
- close()
-
-func _on_confirm_exit_confirmed():
- get_tree().quit()
-
-func _on_close_button_pressed():
- restart_pressed.emit()
- close()
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd.uid b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd.uid
deleted file mode 100644
index 9c4f54f..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ckh3w3xa6qjk0
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.tscn b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.tscn
deleted file mode 100644
index 1f8be8b..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.tscn
+++ /dev/null
@@ -1,59 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://dkq3nhkmhu4je"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_ok347"]
-[ext_resource type="Script" uid="uid://ckh3w3xa6qjk0" path="res://addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd" id="2_6r1n8"]
-
-[node name="LevelLostMenu" instance=ExtResource("1_ok347")]
-process_mode = 3
-script = ExtResource("2_6r1n8")
-pauses_game = true
-
-[node name="MenuPanelContainer" parent="." index="1"]
-custom_minimum_size = Vector2(432, 240)
-
-[node name="TitleMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="0"]
-visible = false
-
-[node name="DescriptionMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="1"]
-visible = true
-theme_override_constants/margin_top = 64
-theme_override_constants/margin_bottom = 64
-
-[node name="DescriptionLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin" index="0"]
-text = "[center]You lost...[/center]"
-scroll_active = false
-
-[node name="MenuButtons" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin" index="0"]
-custom_minimum_size = Vector2(400, 0)
-vertical = false
-
-[node name="ExitButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="0"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Exit"
-
-[node name="MainMenuButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="1"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Main Menu"
-
-[node name="CloseButton" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="2"]
-size_flags_horizontal = 3
-text = "Restart"
-
-[node name="ConfirmMainMenu" type="ConfirmationDialog" parent="." index="2"]
-auto_translate_mode = 1
-initial_position = 2
-dialog_text = "Go back to main menu?"
-
-[node name="ConfirmExit" type="ConfirmationDialog" parent="." index="3"]
-auto_translate_mode = 1
-initial_position = 2
-dialog_text = "Quit the game?"
-
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/ExitButton" to="." method="_on_exit_button_pressed"]
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/MainMenuButton" to="." method="_on_main_menu_button_pressed"]
-[connection signal="confirmed" from="ConfirmMainMenu" to="." method="_on_confirm_main_menu_confirmed"]
-[connection signal="confirmed" from="ConfirmExit" to="." method="_on_confirm_exit_confirmed"]
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd
deleted file mode 100644
index d80b1fc..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd
+++ /dev/null
@@ -1,27 +0,0 @@
-class_name LevelWonMenu
-extends OverlaidMenu
-
-signal continue_pressed
-signal restart_pressed
-signal main_menu_pressed
-
-func _input(event):
- if event.is_action_pressed("ui_cancel"):
- if $ConfirmMainMenu.visible:
- $ConfirmMainMenu.hide()
- get_viewport().set_input_as_handled()
-
-func _on_main_menu_button_pressed():
- $ConfirmMainMenu.popup_centered()
-
-func _on_confirm_main_menu_confirmed():
- main_menu_pressed.emit()
- close()
-
-func _on_restart_button_pressed():
- restart_pressed.emit()
- close()
-
-func _on_close_button_pressed():
- continue_pressed.emit()
- close()
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd.uid b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd.uid
deleted file mode 100644
index 09d2a97..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bdic7jebf0y7a
diff --git a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.tscn b/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.tscn
deleted file mode 100644
index 45a8205..0000000
--- a/godot/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.tscn
+++ /dev/null
@@ -1,53 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://y3vtx0e0shv4"]
-
-[ext_resource type="PackedScene" uid="uid://wny2d8dvp3ok" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.tscn" id="1_nknag"]
-[ext_resource type="Script" uid="uid://bdic7jebf0y7a" path="res://addons/maaacks_game_template/extras/scenes/overlaid_menus/level_won_menu.gd" id="2_klq7f"]
-
-[node name="LevelWonMenu" instance=ExtResource("1_nknag")]
-process_mode = 3
-script = ExtResource("2_klq7f")
-pauses_game = true
-
-[node name="MenuPanelContainer" parent="." index="1"]
-custom_minimum_size = Vector2(432, 240)
-
-[node name="TitleMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="0"]
-visible = false
-
-[node name="DescriptionMargin" parent="MenuPanelContainer/MarginContainer/BoxContainer" index="1"]
-visible = true
-theme_override_constants/margin_top = 64
-theme_override_constants/margin_bottom = 64
-
-[node name="DescriptionLabel" parent="MenuPanelContainer/MarginContainer/BoxContainer/DescriptionMargin" index="0"]
-text = "[center]Level complete![/center]"
-scroll_active = false
-
-[node name="MenuButtons" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin" index="0"]
-custom_minimum_size = Vector2(400, 0)
-vertical = false
-
-[node name="MainMenuButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="0"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Main Menu"
-
-[node name="RestartButton" type="Button" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="1"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Restart"
-
-[node name="CloseButton" parent="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons" index="2"]
-size_flags_horizontal = 3
-text = "Continue"
-
-[node name="ConfirmMainMenu" type="ConfirmationDialog" parent="." index="2"]
-auto_translate_mode = 1
-initial_position = 2
-dialog_text = "Go back to main menu?"
-
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/MainMenuButton" to="." method="_on_main_menu_button_pressed"]
-[connection signal="pressed" from="MenuPanelContainer/MarginContainer/BoxContainer/MenuButtonsMargin/MenuButtons/RestartButton" to="." method="_on_restart_button_pressed"]
-[connection signal="confirmed" from="ConfirmMainMenu" to="." method="_on_confirm_main_menu_confirmed"]
diff --git a/godot/addons/maaacks_game_template/extras/scripts/asset_checker.sh b/godot/addons/maaacks_game_template/extras/scripts/asset_checker.sh
deleted file mode 100755
index 4174191..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/asset_checker.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-# asset checker command
-# Used for quickly checking that assets (like audio files) are being used where expected.
-#
-# Recursively searches through scene files (.tscn, .scn, .res)
-# for occurrences of asset types (default: AudioStream).
-# It then outputs the paths of assets discovered,
-# along with the file names that use them.
-
-short_flag=false
-asset_type="AudioStream"
-
-print_usage() {
- printf "Usage: -sa %s\n" "$asset_type"
-}
-
-while getopts 'a:s' flag; do
- case "${flag}" in
- a)
- asset_type="${OPTARG}"
- ;;
- s)
- short_flag=true
- ;;
- *)
- print_usage
- exit 1
- ;;
- esac
-done
-
-# Initialize an associative array to store paths and corresponding files
-declare -A path_files
-
-while IFS=: read -r file line; do
- path=$(echo "$line" | grep -o 'path="[^"]*' | cut -d'"' -f2)
- if [ -n "$path" ]; then
- # Append the current file to the string of files for this path
- # Note: Bash does not support having arrays as values of associative array.
- # Using a pipe `|` separator instead, and then splitting on output
- if [ -z "${path_files["$path"]}" ]; then
- path_files["$path"]=$file
- else
- path_files["$path"]+="|$file"
- fi
- fi
-done < <(egrep -ir --include=*.{tscn,scn,res} "type=\"$asset_type\"")
-
-# Get the paths and sort them
-sorted_paths=()
-for key in "${!path_files[@]}"; do
- sorted_paths+=("$key")
-done
-IFS=$'\n' sorted_paths=($(sort <<< "${sorted_paths[*]}"))
-unset IFS
-
-# Print out the results
-for path in "${sorted_paths[@]}"; do
- # Note: Bash does not support having arrays as values of associative array.
- # Splitting the concatenated files string on the pipe `|` separator.
- IFS='|' read -r -a files_array <<< "${path_files[$path]}"
- files_count=${#files_array[@]}
- printf "%-80s | Uses: %s\n" "$path" "$files_count"
- if ! $short_flag ; then
- for file in "${files_array[@]}"; do
- printf "\t%82s\n" "$file"
- done
- echo
- fi
-done
diff --git a/godot/addons/maaacks_game_template/extras/scripts/butler_manager.sh b/godot/addons/maaacks_game_template/extras/scripts/butler_manager.sh
deleted file mode 100755
index b576487..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/butler_manager.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-# butler manager command
-# Uploads directories as builds to matching itch.io channels.
-# HTML5 => html5
-# Linux => linux
-# Windows => win
-# MacOS => osx
-
-file=upload_destination.txt
-directories=("HTML5" "Linux" "Windows" "MacOS")
-channels=("html5" "linux" "win" "osx")
-
-# Check if the file exists
-if [ ! -e $file ]; then
- # File doesn't exist, create an empty one
- touch $file
-fi
-
-# File exists, read the first line into a variable
-read -r destination < $file
-
-if [ -z "$destination" ]; then
- # File is empty, prompt the user for input
- echo "Please enter the build destination (username/project-url-after-slash)."
- read -r user_input
-
- # Save user input to the file
- echo "$user_input" > "$file"
- echo "Destination saved to $file."
- destination="$user_input"
-fi
-
-# Check for the existence of directories and upload contents
-for ((i=0; i<${#directories[@]}; i++)); do
- dir="${directories[i]}"
- channel="${channels[i]}"
-
- if [ -d "$dir" ]; then
- echo butler push ./$dir/ $destination:$channel
- butler push ./$dir/ $destination:$channel
- else
- echo "Directory '$dir' does not exist."
- fi
-done
\ No newline at end of file
diff --git a/godot/addons/maaacks_game_template/extras/scripts/capture_mouse.gd b/godot/addons/maaacks_game_template/extras/scripts/capture_mouse.gd
deleted file mode 100644
index cf6ce5b..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/capture_mouse.gd
+++ /dev/null
@@ -1,8 +0,0 @@
-extends Control
-## Control node that captures the mouse for games that require it.
-##
-## Used for games that use the mouse to move the camera (ex. FPS or third-person shooters).
-
-func _gui_input(event):
- if event is InputEventMouseButton and Input.mouse_mode != Input.MOUSE_MODE_CAPTURED:
- Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
diff --git a/godot/addons/maaacks_game_template/extras/scripts/capture_mouse.gd.uid b/godot/addons/maaacks_game_template/extras/scripts/capture_mouse.gd.uid
deleted file mode 100644
index e3b0ff7..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/capture_mouse.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dqdyrkm3jily6
diff --git a/godot/addons/maaacks_game_template/extras/scripts/level_loader.gd b/godot/addons/maaacks_game_template/extras/scripts/level_loader.gd
deleted file mode 100644
index 0bdb734..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/level_loader.gd
+++ /dev/null
@@ -1,43 +0,0 @@
-@tool
-class_name LevelLoader
-extends Node
-## Loads scenes into a container.
-
-signal level_load_started
-signal level_loaded
-signal level_ready
-
-## Container where the level instance will be added.
-@export var level_container : Node
-## Optional reference to a loading screen in the scene.
-@export var level_loading_screen : LoadingScreen
-@export_group("Debugging")
-@export var current_level : Node
-
-var is_loading : bool = false
-
-func _attach_level(level_resource : Resource):
- assert(level_container != null, "level_container is null")
- var instance = level_resource.instantiate()
- level_container.call_deferred("add_child", instance)
- return instance
-
-func load_level(level_path : String):
- if is_loading : return
- if is_instance_valid(current_level):
- current_level.queue_free()
- await current_level.tree_exited
- current_level = null
- is_loading = true
- SceneLoader.load_scene(level_path, true)
- if level_loading_screen:
- level_loading_screen.reset()
- level_load_started.emit()
- await SceneLoader.scene_loaded
- is_loading = false
- current_level = _attach_level(SceneLoader.get_resource())
- if level_loading_screen:
- level_loading_screen.close()
- level_loaded.emit()
- await current_level.ready
- level_ready.emit()
diff --git a/godot/addons/maaacks_game_template/extras/scripts/level_loader.gd.uid b/godot/addons/maaacks_game_template/extras/scripts/level_loader.gd.uid
deleted file mode 100644
index d3c169c..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/level_loader.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bbymrin0cm704
diff --git a/godot/addons/maaacks_game_template/extras/scripts/level_manager.gd b/godot/addons/maaacks_game_template/extras/scripts/level_manager.gd
deleted file mode 100644
index 292d451..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/level_manager.gd
+++ /dev/null
@@ -1,200 +0,0 @@
-class_name LevelManager
-extends Node
-## Manage level changes in games.
-##
-## A helper script to assign to a node in a scene.
-## It works with a level loader and can open menus when players win or lose.
-## It can either be assigned a starting level path or a scene lister.
-## It can detect signals from levels to change levels in an open-world.
-## With a scene lister, it will instead traverse through levels linearly.
-
-## Required reference to a level loader in the scene.
-@export var level_loader : LevelLoader
-## Optional path to a starting level scene.
-## Required if there is no scene lister.
-@export_file var starting_level_path : String
-## Optional reference to a scene lister in the scene.
-## Required if there is no starting level path.
-@export var scene_lister : SceneLister
-## Whether to load the starting level when ready.
-@export var auto_load : bool = true
-@export_group("Scenes")
-## Path to a main menu scene.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var main_menu_scene_path : String
-## Optional path to an ending scene.
-## Will attempt to read from AppConfig if left empty
-@export_file("*.tscn") var ending_scene_path : String
-## Optional screen to be shown after the game is won.
-@export var game_won_scene : PackedScene
-## Optional screen to be shown after the level is lost.
-@export var level_lost_scene : PackedScene
-## Optional screen to be shown after the level is won.
-@export var level_won_scene : PackedScene
-@export_group("Debugging")
-## Loads a level on start.
-@export_file("*.tscn") var force_level_path : String = ""
-
-## Reference to the current level node.
-var current_level : Node
-var current_level_path : String :
- set = set_current_level_path
-
-func set_current_level_path(value : String) -> void:
- current_level_path = value
-
-var next_level_path : String :
- set = set_next_level_path
-
-func set_next_level_path(value : String) -> void:
- next_level_path = value
-
-func _try_connecting_signal_to_node(node : Node, signal_name : String, callable : Callable) -> void:
- if node.has_signal(signal_name) and not node.is_connected(signal_name, callable):
- node.connect(signal_name, callable)
-
-func _try_connecting_signal_to_level(signal_name : String, callable : Callable) -> void:
- _try_connecting_signal_to_node(current_level, signal_name, callable)
-
-func get_main_menu_scene_path() -> String:
- if main_menu_scene_path.is_empty():
- return AppConfig.main_menu_scene_path
- return main_menu_scene_path
-
-func _load_main_menu() -> void:
- SceneLoader.load_scene(get_main_menu_scene_path())
-
-func _find_in_scene_lister(level_path : String) -> int:
- if not scene_lister: return -1
- return scene_lister.files.find(level_path)
-
-func has_next_level() -> bool:
- if scene_lister:
- var current_level_id = _find_in_scene_lister(current_level_path)
- return current_level_id < scene_lister.files.size() - 1
- return (not next_level_path.is_empty()) and next_level_path != current_level_path
-
-func is_on_last_level() -> bool:
- return not has_next_level()
-
-func _advance_level() -> bool:
- if is_on_last_level(): return false
- var current_level_id := _find_in_scene_lister(current_level_path)
- if current_level_id > -1:
- current_level_id += 1
- current_level_path = scene_lister.files[current_level_id]
- return true
- current_level_path = next_level_path
- next_level_path = ""
- return true
-
-func _advance_and_load_main_menu() -> void:
- _advance_level()
- _load_main_menu()
-
-func get_ending_scene_path() -> String:
- if ending_scene_path.is_empty():
- return AppConfig.ending_scene_path
- return ending_scene_path
-
-func _load_ending() -> void:
- if not get_ending_scene_path().is_empty():
- SceneLoader.load_scene(get_ending_scene_path())
- else:
- _load_main_menu()
-
-func _on_level_lost() -> void:
- if level_lost_scene:
- var instance = level_lost_scene.instantiate()
- get_tree().current_scene.add_child(instance)
- _try_connecting_signal_to_node(instance, &"restart_pressed", _reload_level)
- _try_connecting_signal_to_node(instance, &"main_menu_pressed", _load_main_menu)
- else:
- _reload_level()
-
-func get_current_level_path() -> String:
- if current_level_path.is_empty():
- current_level_path = starting_level_path
- if scene_lister:
- current_level_path = scene_lister.files.front()
- return current_level_path if force_level_path.is_empty() else force_level_path
-
-func load_current_level() -> void:
- level_loader.load_level(get_current_level_path())
-
-func _advance_and_reload_level() -> void:
- var _prior_level_path = current_level_path
- _advance_level()
- current_level_path = _prior_level_path
- load_current_level()
-
-func _load_next_level() -> void:
- _advance_level()
- load_current_level()
-
-func _reload_level() -> void:
- load_current_level()
-
-func _load_win_screen_or_ending() -> void:
- if game_won_scene:
- var instance = game_won_scene.instantiate()
- get_tree().current_scene.add_child(instance)
- _try_connecting_signal_to_node(instance, &"continue_pressed", _load_ending)
- _try_connecting_signal_to_node(instance, &"restart_pressed", _reload_level)
- _try_connecting_signal_to_node(instance, &"main_menu_pressed", _load_main_menu)
- else:
- _load_ending()
-
-func _load_level_won_screen_or_next_level() -> void:
- if level_won_scene:
- var instance = level_won_scene.instantiate()
- get_tree().current_scene.add_child(instance)
- _try_connecting_signal_to_node(instance, &"continue_pressed", _load_next_level)
- _try_connecting_signal_to_node(instance, &"restart_pressed", _advance_and_reload_level)
- _try_connecting_signal_to_node(instance, &"main_menu_pressed", _advance_and_load_main_menu)
- else:
- _load_next_level()
-
-func _on_level_won():
- if is_on_last_level():
- _load_win_screen_or_ending()
- else:
- _load_level_won_screen_or_next_level()
-
-func _on_level_won_and_changed(next_level : String):
- next_level_path = next_level
- _on_level_won()
-
-func _on_level_changed(next_level : String):
- next_level_path = next_level
- _load_next_level()
-
-func _connect_level_signals() -> void:
- _try_connecting_signal_to_level(&"level_lost", _on_level_lost)
- _try_connecting_signal_to_level(&"level_won", _on_level_won)
- _try_connecting_signal_to_level(&"level_won_and_changed", _on_level_won_and_changed)
- _try_connecting_signal_to_level(&"level_changed", _on_level_changed)
- _try_connecting_signal_to_level(&"level_passed", _load_next_level)
- _try_connecting_signal_to_level(&"next_level_set", set_next_level_path)
-
-func _on_level_loader_level_loaded() -> void:
- current_level = level_loader.current_level
- await current_level.ready
- _connect_level_signals()
-
-func _on_level_loader_level_load_started() -> void:
- pass
-
-func _on_level_loader_level_ready() -> void:
- pass
-
-func _auto_load() -> void:
- if auto_load:
- load_current_level()
-
-func _ready() -> void:
- if Engine.is_editor_hint(): return
- level_loader.level_loaded.connect(_on_level_loader_level_loaded)
- level_loader.level_ready.connect(_on_level_loader_level_ready)
- level_loader.level_load_started.connect(_on_level_loader_level_load_started)
- _auto_load()
diff --git a/godot/addons/maaacks_game_template/extras/scripts/level_manager.gd.uid b/godot/addons/maaacks_game_template/extras/scripts/level_manager.gd.uid
deleted file mode 100644
index 67c0b4c..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/level_manager.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bllg4gg7v1tsr
diff --git a/godot/addons/maaacks_game_template/extras/scripts/scene_lister.gd b/godot/addons/maaacks_game_template/extras/scripts/scene_lister.gd
deleted file mode 100644
index c2bb4c4..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/scene_lister.gd
+++ /dev/null
@@ -1,23 +0,0 @@
-@tool
-extends Node
-class_name SceneLister
-## Helper class for listing all the scenes in a directory.
-
-## List of paths to scene files.
-## Prefilled in the editor by selecting a directory.
-@export var files : Array[String]
-## Prefill files with any scenes in the directory.
-@export_dir var directory : String :
- set(value):
- directory = value
- _refresh_files()
-
-func _refresh_files():
- if not is_inside_tree() or directory.is_empty(): return
- var dir_access = DirAccess.open(directory)
- if dir_access:
- files.clear()
- for file in dir_access.get_files():
- if not file.ends_with(".tscn"):
- continue
- files.append(directory + "/" + file)
diff --git a/godot/addons/maaacks_game_template/extras/scripts/scene_lister.gd.uid b/godot/addons/maaacks_game_template/extras/scripts/scene_lister.gd.uid
deleted file mode 100644
index ae7cd7f..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/scene_lister.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://wjq7li836lwj
diff --git a/godot/addons/maaacks_game_template/extras/scripts/win_lose_manager.gd b/godot/addons/maaacks_game_template/extras/scripts/win_lose_manager.gd
deleted file mode 100644
index c1c4a3d..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/win_lose_manager.gd
+++ /dev/null
@@ -1,63 +0,0 @@
-extends Node
-
-## Path to a main menu scene.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var main_menu_scene_path : String
-## Optional path to an ending scene.
-## Will attempt to read from AppConfig if left empty.
-@export_file("*.tscn") var ending_scene_path : String
-## Optional screen to be shown after the game is won.
-@export var game_won_scene : PackedScene
-## Optional screen to be shown after the game is lost.
-@export var game_lost_scene : PackedScene
-
-func _try_connecting_signal_to_node(node : Node, signal_name : String, callable : Callable) -> void:
- if node.has_signal(signal_name) and not node.is_connected(signal_name, callable):
- node.connect(signal_name, callable)
-
-func get_main_menu_scene_path() -> String:
- if main_menu_scene_path.is_empty():
- return AppConfig.main_menu_scene_path
- return main_menu_scene_path
-
-func _load_main_menu() -> void:
- SceneLoader.load_scene(get_main_menu_scene_path())
-
-func get_ending_scene_path() -> String:
- if ending_scene_path.is_empty():
- return AppConfig.ending_scene_path
- return ending_scene_path
-
-func _load_ending() -> void:
- if get_ending_scene_path().is_empty():
- _load_main_menu()
- else:
- SceneLoader.load_scene(get_ending_scene_path())
-
-func _load_lose_screen_or_reload() -> void:
- if game_lost_scene:
- var instance = game_lost_scene.instantiate()
- get_tree().current_scene.add_child(instance)
- _try_connecting_signal_to_node(instance, &"restart_pressed", _reload_level)
- _try_connecting_signal_to_node(instance, &"main_menu_pressed", _load_main_menu)
- else:
- _reload_level()
-
-func _reload_level() -> void:
- SceneLoader.reload_current_scene()
-
-func _load_win_screen_or_ending() -> void:
- if game_won_scene:
- var instance = game_won_scene.instantiate()
- get_tree().current_scene.add_child(instance)
- _try_connecting_signal_to_node(instance, &"continue_pressed", _load_ending)
- _try_connecting_signal_to_node(instance, &"restart_pressed", _reload_level)
- _try_connecting_signal_to_node(instance, &"main_menu_pressed", _load_main_menu)
- else:
- _load_ending()
-
-func game_lost() -> void:
- _load_lose_screen_or_reload()
-
-func game_won() -> void:
- _load_win_screen_or_ending()
diff --git a/godot/addons/maaacks_game_template/extras/scripts/win_lose_manager.gd.uid b/godot/addons/maaacks_game_template/extras/scripts/win_lose_manager.gd.uid
deleted file mode 100644
index 32aa4d2..0000000
--- a/godot/addons/maaacks_game_template/extras/scripts/win_lose_manager.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bmlwpkrav3q56
diff --git a/godot/addons/maaacks_game_template/installer/check_plugin_version.gd b/godot/addons/maaacks_game_template/installer/check_plugin_version.gd
deleted file mode 100644
index b3f4cab..0000000
--- a/godot/addons/maaacks_game_template/installer/check_plugin_version.gd
+++ /dev/null
@@ -1,78 +0,0 @@
-@tool
-extends Node
-
-signal new_version_detected(version: String)
-signal versions_matched
-signal failed
-
-const APIClient = MaaacksGameTemplatePlugin.APIClient
-
-const API_RELEASES_URL := "https://api.github.com/repos/%s/%s/releases"
-
-@export var plugin_directory : String
-@export var plugin_github_url : String :
- set(value):
- plugin_github_url = value
- _update_urls()
-@export_group("Advanced")
-@export var auto_start : bool = false
-@export var default_version : String = "0.0.0"
-@export var replace_tag_name : String = "v"
-@export var _test_action : bool = false :
- set(value):
- if value and Engine.is_editor_hint():
- compare_versions()
-
-@onready var _api_client : APIClient = $APIClient
-
-var _zipball_url : String
-
-func get_plugin_version() -> String :
- if not plugin_directory.is_empty():
- for enabled_plugin in ProjectSettings.get_setting("editor_plugins/enabled"):
- if enabled_plugin.contains(plugin_directory):
- var config := ConfigFile.new()
- var error = config.load(enabled_plugin)
- if error != OK:
- return default_version
- return config.get_value("plugin", "version", default_version)
- return default_version
-
-func _update_urls() -> void:
- if plugin_github_url.is_empty(): return
- if _api_client == null: return
- var regex := RegEx.create_from_string("https:\\/\\/github\\.com\\/([\\w-]+)\\/([\\w-]+)\\/*")
- var regex_match := regex.search(plugin_github_url)
- if regex_match == null: return
- var username := regex_match.get_string(1)
- var repository := regex_match.get_string(2)
- _api_client.api_url = API_RELEASES_URL % [username, repository]
-
-func _on_api_client_request_failed(error) -> void:
- failed.emit()
- queue_free()
-
-func _on_api_client_response_received(response_body) -> void:
- if response_body is not Array:
- failed.emit()
- queue_free()
- return
- var latest_release : Dictionary = response_body.front()
- var tag_name := default_version
- if latest_release.has("tag_name"):
- tag_name = latest_release["tag_name"]
- if replace_tag_name:
- tag_name = tag_name.replacen(replace_tag_name, "")
- var current_tag_name = get_plugin_version()
- if tag_name != current_tag_name:
- new_version_detected.emit(tag_name)
- else:
- versions_matched.emit()
- queue_free()
-
-func compare_versions() -> void:
- _api_client.request()
-
-func _ready() -> void:
- if auto_start:
- compare_versions()
diff --git a/godot/addons/maaacks_game_template/installer/check_plugin_version.gd.uid b/godot/addons/maaacks_game_template/installer/check_plugin_version.gd.uid
deleted file mode 100644
index 6211f05..0000000
--- a/godot/addons/maaacks_game_template/installer/check_plugin_version.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ye1geusqp1gd
diff --git a/godot/addons/maaacks_game_template/installer/check_plugin_version.tscn b/godot/addons/maaacks_game_template/installer/check_plugin_version.tscn
deleted file mode 100644
index a7e1721..0000000
--- a/godot/addons/maaacks_game_template/installer/check_plugin_version.tscn
+++ /dev/null
@@ -1,16 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://b5m61gpvjy1ao"]
-
-[ext_resource type="Script" uid="uid://ye1geusqp1gd" path="res://addons/maaacks_game_template/installer/check_plugin_version.gd" id="1_aqelj"]
-[ext_resource type="PackedScene" uid="uid://drhhakm62vjsy" path="res://addons/maaacks_game_template/utilities/api_client.tscn" id="2_5myc0"]
-
-[node name="CheckPluginVersion" type="Node"]
-script = ExtResource("1_aqelj")
-plugin_directory = "maaacks_game_template"
-plugin_github_url = "https://github.com/Maaack/Godot-Game-Template"
-
-[node name="APIClient" parent="." instance=ExtResource("2_5myc0")]
-api_url = "https://api.github.com/repos/Maaack/Godot-Game-Template/releases"
-request_method = 0
-
-[connection signal="request_failed" from="APIClient" to="." method="_on_api_client_request_failed"]
-[connection signal="response_received" from="APIClient" to="." method="_on_api_client_response_received"]
diff --git a/godot/addons/maaacks_game_template/installer/copy_and_edit_files.gd b/godot/addons/maaacks_game_template/installer/copy_and_edit_files.gd
deleted file mode 100644
index 1f430ec..0000000
--- a/godot/addons/maaacks_game_template/installer/copy_and_edit_files.gd
+++ /dev/null
@@ -1,175 +0,0 @@
-@tool
-extends Node
-
-signal canceled
-signal completed(target_path : String)
-
-const UID_PREG_MATCH = r'uid="uid:\/\/[0-9a-z]+" '
-const RUNNING_CHECK_DELAY : float = 0.25
-const RESAVING_DELAY : float = 1.0
-const RAW_COPY_EXTENSIONS : Array = ["gd", "md", "txt"]
-const OMIT_COPY_EXTENSIONS : Array = ["uid"]
-const REPLACE_CONTENT_EXTENSIONS : Array = ["gd", "tscn", "tres", "md"]
-
-@onready var destination_dialog : FileDialog = $DestinationDialog
-
-@export_dir var relative_path : String :
- set(value):
- relative_path = value
- if not relative_path.ends_with("/"):
- relative_path += "/"
-@export var replace_strings_map : Dictionary
-@export var visible : bool = true :
- set(value):
- visible = value
- if is_inside_tree():
- destination_dialog.visible = visible
-
-func show() -> void:
- visible = true
-
-func hide() -> void:
- visible = false
-
-func close() -> void:
- if Engine.is_editor_hint(): return
- queue_free()
-
-func _remove_uids(content : String) -> String:
- var regex = RegEx.new()
- regex.compile(UID_PREG_MATCH)
- return regex.sub(content, "", true)
-
-func _replace_paths(content : String, target_path : String) -> String:
- return content.replace(relative_path.trim_prefix("res://"), target_path.trim_prefix("res://"))
-
-func _replace_strings(content : String) -> String:
- for key in replace_strings_map:
- var value : String = replace_strings_map[key]
- content = content.replace(key, value)
- return content
-
-func _replace_content(content : String, target_path : String) -> String:
- var replaced_content : String
- replaced_content = _remove_uids(content)
- replaced_content = _replace_paths(replaced_content, target_path)
- replaced_content = _replace_strings(replaced_content)
- return replaced_content
-
-func _replace_file_contents(file_path : String, target_path : String) -> void:
- var extension : String = file_path.get_extension()
- if extension not in REPLACE_CONTENT_EXTENSIONS:
- return
- var file = FileAccess.open(file_path, FileAccess.READ)
- if file == null:
- push_error("plugin error - null file: `%s`" % file_path)
- return
- var original_content = file.get_as_text()
- file.close()
- var replaced_content := _replace_content(original_content, target_path)
- if replaced_content == original_content: return
- file = FileAccess.open(file_path, FileAccess.WRITE)
- file.store_string(replaced_content)
- file.close()
-
-func _save_resource(resource_path : String, resource_destination : String, whitelisted_extensions : PackedStringArray = []) -> Error:
- var extension : String = resource_path.get_extension()
- if whitelisted_extensions.size() > 0:
- if not extension in whitelisted_extensions:
- return OK
- if extension == "import":
- # skip import files
- return OK
- var file_object = load(resource_path)
- if file_object is Resource:
- var possible_extensions = ResourceSaver.get_recognized_extensions(file_object)
- if possible_extensions.has(extension):
- return ResourceSaver.save(file_object, resource_destination, ResourceSaver.FLAG_CHANGE_PATH)
- else:
- return ERR_FILE_UNRECOGNIZED
- else:
- return ERR_FILE_UNRECOGNIZED
- return OK
-
-func _raw_copy_file_path(file_path : String, destination_path : String) -> Error:
- var dir := DirAccess.open("res://")
- var error := dir.copy(file_path, destination_path)
- return error
-
-func _copy_file_path(file_path : String, destination_path : String, target_path : String) -> Error:
- var error : Error
- if file_path.get_extension() in OMIT_COPY_EXTENSIONS:
- return error
- if file_path.get_extension() in RAW_COPY_EXTENSIONS:
- error = _raw_copy_file_path(file_path, destination_path)
- else:
- error = _save_resource(file_path, destination_path)
- if error == ERR_FILE_UNRECOGNIZED:
- error = _raw_copy_file_path(file_path, destination_path)
- if not error:
- _replace_file_contents(destination_path, target_path)
- return error
-
-func _copy_directory_path(dir_path : String, target_path : String) -> void:
- if not dir_path.ends_with("/"):
- dir_path += "/"
- var dir = DirAccess.open(dir_path)
- if dir:
- dir.list_dir_begin()
- var file_name = dir.get_next()
- var error : Error
- while file_name != "" and error == 0:
- var file_relative_path = dir_path.trim_prefix(relative_path)
- var destination_path = target_path + file_relative_path + file_name
- var full_file_path = dir_path + file_name
- if dir.current_is_dir():
- if not dir.dir_exists(destination_path):
- error = dir.make_dir(destination_path)
- _copy_directory_path(full_file_path, target_path)
- else:
- error = _copy_file_path(full_file_path, destination_path, target_path)
- file_name = dir.get_next()
- if error:
- push_error("plugin error - copying path: %s" % error)
- else:
- push_error("plugin error - accessing path: %s" % dir_path)
-
-func _complete(target_path : String) -> void:
- completed.emit(target_path)
- close()
-
-func _wait_for_scan_and_complete(target_path : String) -> void:
- var timer: Timer = Timer.new()
- var callable := func():
- if EditorInterface.get_resource_filesystem().is_scanning(): return
- timer.stop()
- _complete(target_path)
- timer.queue_free()
- timer.timeout.connect(callable)
- add_child(timer)
- timer.start(RUNNING_CHECK_DELAY)
-
-func _delayed_saving_and_next_prompt(target_path : String) -> void:
- var timer: Timer = Timer.new()
- var callable := func():
- timer.stop()
- EditorInterface.save_all_scenes()
- EditorInterface.get_resource_filesystem().scan()
- _wait_for_scan_and_complete(target_path)
- timer.queue_free()
- timer.timeout.connect(callable)
- add_child(timer)
- timer.start(RESAVING_DELAY)
-
-func _copy_to_directory(target_path : String) -> void:
- if not target_path.ends_with("/"):
- target_path += "/"
- _copy_directory_path(relative_path, target_path)
- _delayed_saving_and_next_prompt(target_path)
-
-func _on_destination_dialog_dir_selected(dir):
- _copy_to_directory(dir)
-
-func _on_destination_dialog_canceled():
- canceled.emit()
- close()
diff --git a/godot/addons/maaacks_game_template/installer/copy_and_edit_files.gd.uid b/godot/addons/maaacks_game_template/installer/copy_and_edit_files.gd.uid
deleted file mode 100644
index 4aa510b..0000000
--- a/godot/addons/maaacks_game_template/installer/copy_and_edit_files.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bgdxso8wdsm2l
diff --git a/godot/addons/maaacks_game_template/installer/copy_and_edit_files.tscn b/godot/addons/maaacks_game_template/installer/copy_and_edit_files.tscn
deleted file mode 100644
index dd7b04b..0000000
--- a/godot/addons/maaacks_game_template/installer/copy_and_edit_files.tscn
+++ /dev/null
@@ -1,16 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://bcgr0b6wp5b5d"]
-
-[ext_resource type="Script" uid="uid://bgdxso8wdsm2l" path="res://addons/maaacks_game_template/installer/copy_and_edit_files.gd" id="1_oyky1"]
-[ext_resource type="PackedScene" uid="uid://ckx50am7thhd2" path="res://addons/maaacks_game_template/installer/destination_dialog.tscn" id="2_g35hh"]
-
-[node name="CopyAndEditFiles" type="Node"]
-script = ExtResource("1_oyky1")
-relative_path = "res://addons/maaacks_game_template/examples/"
-replace_strings_map = {
-"StateExample": "State"
-}
-
-[node name="DestinationDialog" parent="." instance=ExtResource("2_g35hh")]
-
-[connection signal="canceled" from="DestinationDialog" to="." method="_on_destination_dialog_canceled"]
-[connection signal="dir_selected" from="DestinationDialog" to="." method="_on_destination_dialog_dir_selected"]
diff --git a/godot/addons/maaacks_game_template/installer/copy_confirmation_dialog.tscn b/godot/addons/maaacks_game_template/installer/copy_confirmation_dialog.tscn
deleted file mode 100644
index 909e871..0000000
--- a/godot/addons/maaacks_game_template/installer/copy_confirmation_dialog.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene format=3 uid="uid://cyx4i4v30bw4o"]
-
-[node name="CopyConfirmationDialog" type="ConfirmationDialog"]
-title = "Copy Examples"
-initial_position = 2
-size = Vector2i(1024, 148)
-visible = true
-exclusive = false
-ok_button_text = "Yes"
-dialog_text = "Plugin enabled. It is recommended to copy the example scenes to a destination outside of the addons/ folder before editing them.
-
-Would you like to copy the examples now?"
-dialog_autowrap = true
-cancel_button_text = "No"
diff --git a/godot/addons/maaacks_game_template/installer/delete_examples_confirmation_dialog.tscn b/godot/addons/maaacks_game_template/installer/delete_examples_confirmation_dialog.tscn
deleted file mode 100644
index 2cc1c83..0000000
--- a/godot/addons/maaacks_game_template/installer/delete_examples_confirmation_dialog.tscn
+++ /dev/null
@@ -1,15 +0,0 @@
-[gd_scene format=3 uid="uid://vgdxevcnv0vx"]
-
-[node name="DeleteExamplesConfirmationDialog" type="ConfirmationDialog"]
-title = "Delete Source Examples"
-initial_position = 2
-size = Vector2i(1024, 256)
-visible = true
-ok_button_text = "Yes"
-dialog_text = "If the copied scenes work as expected, you may delete the source examples folder. This avoids confusing both developers and the Godot editor.
-
-This will also remove the option to copy the examples again. However, one copy is enough for most use cases.
-
-Would you like to delete the source examples folder now?"
-dialog_autowrap = true
-cancel_button_text = "No"
diff --git a/godot/addons/maaacks_game_template/installer/delete_examples_short_confirmation_dialog.tscn b/godot/addons/maaacks_game_template/installer/delete_examples_short_confirmation_dialog.tscn
deleted file mode 100644
index 4b4822a..0000000
--- a/godot/addons/maaacks_game_template/installer/delete_examples_short_confirmation_dialog.tscn
+++ /dev/null
@@ -1,16 +0,0 @@
-[gd_scene format=3 uid="uid://d03csqgcaxm0m"]
-
-[node name="DeleteExamplesShortConfirmationDialog" type="ConfirmationDialog"]
-title = "Delete Source Examples"
-initial_position = 2
-size = Vector2i(1024, 300)
-visible = true
-ok_button_text = "Yes"
-dialog_text = "This will delete the original examples folder from the plugin (inside of addons/).
-
-Copies of the examples (outside of addons/) will not be affected.
-
-Are you sure you would like to delete the examples folder?
-"
-dialog_autowrap = true
-cancel_button_text = "No"
diff --git a/godot/addons/maaacks_game_template/installer/destination_dialog.tscn b/godot/addons/maaacks_game_template/installer/destination_dialog.tscn
deleted file mode 100644
index 9399873..0000000
--- a/godot/addons/maaacks_game_template/installer/destination_dialog.tscn
+++ /dev/null
@@ -1,11 +0,0 @@
-[gd_scene format=3 uid="uid://ckx50am7thhd2"]
-
-[node name="DestinationDialog" type="FileDialog"]
-title = "Select a Destination"
-initial_position = 2
-size = Vector2i(1024, 640)
-visible = true
-exclusive = false
-ok_button_text = "Select Current Folder"
-mode_overrides_title = false
-file_mode = 2
diff --git a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd b/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd
deleted file mode 100644
index 4d79818..0000000
--- a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd
+++ /dev/null
@@ -1,12 +0,0 @@
-@tool
-extends ConfirmationDialog
-
-const SHORT_DESCRIPTION : String = "Choose a style for icons in the input remapping menu. This style can be changed later."
-
-signal configuration_selected(index : int)
-
-func _on_item_list_item_selected(index) -> void:
- configuration_selected.emit(index)
-
-func set_short_description() -> void:
- %Label.text = SHORT_DESCRIPTION
diff --git a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd.uid b/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd.uid
deleted file mode 100644
index ec63fee..0000000
--- a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bduy6qihnm0qo
diff --git a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.tscn b/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.tscn
deleted file mode 100644
index 3a8cfca..0000000
--- a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_dialog.tscn
+++ /dev/null
@@ -1,83 +0,0 @@
-[gd_scene load_steps=14 format=3 uid="uid://d3x8m40qtdrj"]
-
-[ext_resource type="Script" uid="uid://bduy6qihnm0qo" path="res://addons/maaacks_game_template/installer/kenney_input_prompts_dialog.gd" id="1_nf1bc"]
-[ext_resource type="Texture2D" uid="uid://cmni5hv40bfaa" path="res://addons/maaacks_game_template/assets/input-icons/icons-filled-colored.png" id="2_0nqam"]
-[ext_resource type="Texture2D" uid="uid://deskx061vlcgx" path="res://addons/maaacks_game_template/assets/input-icons/icons-filled-white.png" id="3_ynuxh"]
-[ext_resource type="Texture2D" uid="uid://bohem6w6kcl3x" path="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-colored.png" id="4_dqbfh"]
-[ext_resource type="Texture2D" uid="uid://bq211jkfnm7k7" path="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-white.png" id="5_1tkva"]
-[ext_resource type="Texture2D" uid="uid://bt1yqttw3d5xn" path="res://addons/maaacks_game_template/assets/input-icons/icons-filled-colored-2x.png" id="6_r3yyh"]
-[ext_resource type="Texture2D" uid="uid://bit8o3p506th6" path="res://addons/maaacks_game_template/assets/input-icons/icons-filled-white-2x.png" id="7_xgp8o"]
-[ext_resource type="Texture2D" uid="uid://cqb86gp1gh3y8" path="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-2x.png" id="8_ag5dy"]
-[ext_resource type="Texture2D" uid="uid://d3bsc6o2ae88q" path="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-white-2x.png" id="9_3b8mx"]
-[ext_resource type="Texture2D" uid="uid://ix1d2e62f233" path="res://addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg" id="10_ag5dy"]
-[ext_resource type="Texture2D" uid="uid://c37gofthe2bh3" path="res://addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg" id="11_3b8mx"]
-[ext_resource type="Texture2D" uid="uid://bsgf78aysgdnd" path="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-colored-vector.svg" id="12_rrkvx"]
-[ext_resource type="Texture2D" uid="uid://c1lpc33fpmd4p" path="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg" id="13_bkfjd"]
-
-[node name="KenneyInputPromptsDialog" type="ConfirmationDialog"]
-title = "Add Kenney Input Prompts Pack"
-initial_position = 2
-size = Vector2i(1024, 640)
-visible = true
-ok_button_text = "Yes"
-dialog_autowrap = true
-cancel_button_text = "No"
-script = ExtResource("1_nf1bc")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-custom_minimum_size = Vector2(560, 443)
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 8.0
-offset_top = 8.0
-offset_right = -8.0
-offset_bottom = -49.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/separation = 16
-
-[node name="Label" type="Label" parent="VBoxContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(384, 0)
-layout_mode = 2
-text = "Would you like to install Kenney's Input Prompts?
-
-This adds icons for a majority of input keys and devices in the input remapping menu. They are Creative Commons Zero (CC0) licensed, about 3.9 MB in size (7.6 MB with *.import files), and get installed into the assets folder.
-
-Choose a style for icons in the input remapping menu. The style can be changed later."
-autowrap_mode = 3
-
-[node name="ItemList" type="ItemList" parent="VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-item_count = 12
-same_column_width = true
-item_0/text = "Filled and Colored Vector"
-item_0/icon = ExtResource("10_ag5dy")
-item_1/text = "Filled and White Vector"
-item_1/icon = ExtResource("11_3b8mx")
-item_2/text = "Outlined and Colored Vector"
-item_2/icon = ExtResource("12_rrkvx")
-item_3/text = "Outlined and White Vector"
-item_3/icon = ExtResource("13_bkfjd")
-item_4/text = "Filled and Colored 64x64"
-item_4/icon = ExtResource("2_0nqam")
-item_5/text = "Filled and White 64x64"
-item_5/icon = ExtResource("3_ynuxh")
-item_6/text = "Outlined and Colored 64x64"
-item_6/icon = ExtResource("4_dqbfh")
-item_7/text = "Outlined and White 64x64"
-item_7/icon = ExtResource("5_1tkva")
-item_8/text = "Filled and Colored 128x128"
-item_8/icon = ExtResource("6_r3yyh")
-item_9/text = "Filled and White 128x128"
-item_9/icon = ExtResource("7_xgp8o")
-item_10/text = "Outlined and Colored 128x128"
-item_10/icon = ExtResource("8_ag5dy")
-item_11/text = "Outlined and White 128x128"
-item_11/icon = ExtResource("9_3b8mx")
-
-[connection signal="item_selected" from="VBoxContainer/ItemList" to="." method="_on_item_list_item_selected"]
diff --git a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd b/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd
deleted file mode 100644
index 0cc8aaa..0000000
--- a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd
+++ /dev/null
@@ -1,332 +0,0 @@
-@tool
-## Tool for installing icons and setting up the configuration of the input icon mapper.
-extends Node
-
-## Sent when the user selects to cancel the installation process.
-signal canceled
-## Sent when the installation process has completed.
-signal completed
-
-const DownloadAndExtract = MaaacksGameTemplatePlugin.DownloadAndExtract
-const RELATIVE_PATH_TO_CONFIGURE_SCENE = "scenes/menus/options_menu/input/input_icon_mapper.tscn"
-const REIMPORT_CHECK_DELAY : float = 0.5
-const OPEN_SCENE_DELAY : float = 0.5
-const REGEX_PREFIX = """\\[node name="InputIconMapper" type="Node"\\][\\s\\S]*"""
-
-const FILLED_WHITE_CONFIGURATION = """
-replace_strings = {
-"Capslock": "Caps Lock",
-"Generic Stick": "Generic Left Stick",
-"Guide": "Home",
-"Slash Back": "Back Slash",
-"Slash Forward": "Slash",
-"Stick L": "Left Stick",
-"Stick R": "Right Stick",
-"Trigger L 1": "Left Shoulder",
-"Trigger L 2": "Left Trigger",
-"Trigger R 1": "Right Shoulder",
-"Trigger R 2": "Right Trigger"
-}
-filtered_strings = Array[String](["keyboard", "color", "button", "arrow"])
-directories = Array[String](["res://assets/kenney_input-prompts/Keyboard & Mouse/Default", "res://assets/kenney_input-prompts/Generic/Default", "res://assets/kenney_input-prompts/Xbox Series/Default", "res://assets/kenney_input-prompts/PlayStation Series/Default", "res://assets/kenney_input-prompts/Nintendo Switch/Default", "res://assets/kenney_input-prompts/Steam Deck/Default"])
-filter = "color"
-ends_with = ".png"
-not_ends_with = "outline.png"
-"""
-const FILLED_COLOR_CONFIGURATION = """
-prioritized_strings = Array[String](["color"])
-replace_strings = {
-"Capslock": "Caps Lock",
-"Generic Stick": "Generic Left Stick",
-"Guide": "Home",
-"Slash Back": "Back Slash",
-"Slash Forward": "Slash",
-"Stick L": "Left Stick",
-"Stick R": "Right Stick",
-"Trigger L 1": "Left Shoulder",
-"Trigger L 2": "Left Trigger",
-"Trigger R 1": "Right Shoulder",
-"Trigger R 2": "Right Trigger"
-}
-filtered_strings = Array[String](["keyboard", "color", "button", "arrow"])
-directories = Array[String](["res://assets/kenney_input-prompts/Keyboard & Mouse/Default", "res://assets/kenney_input-prompts/Generic/Default", "res://assets/kenney_input-prompts/Xbox Series/Default", "res://assets/kenney_input-prompts/PlayStation Series/Default", "res://assets/kenney_input-prompts/Nintendo Switch/Default", "res://assets/kenney_input-prompts/Steam Deck/Default"])
-ends_with = ".png"
-not_ends_with = "outline.png"
-"""
-const OUTLINED_WHITE_CONFIGURATION = """
-prioritized_strings = Array[String](["outline"])
-replace_strings = {
-"Capslock": "Caps Lock",
-"Generic Stick": "Generic Left Stick",
-"Guide": "Home",
-"Slash Back": "Back Slash",
-"Slash Forward": "Slash",
-"Stick L": "Left Stick",
-"Stick R": "Right Stick",
-"Trigger L 1": "Left Shoulder",
-"Trigger L 2": "Left Trigger",
-"Trigger R 1": "Right Shoulder",
-"Trigger R 2": "Right Trigger"
-}
-filtered_strings = Array[String](["keyboard", "color", "button", "arrow", "outline"])
-directories = Array[String](["res://assets/kenney_input-prompts/Keyboard & Mouse/Default", "res://assets/kenney_input-prompts/Generic/Default", "res://assets/kenney_input-prompts/Xbox Series/Default", "res://assets/kenney_input-prompts/PlayStation Series/Default", "res://assets/kenney_input-prompts/Nintendo Switch/Default", "res://assets/kenney_input-prompts/Steam Deck/Default"])
-filter = "color"
-ends_with = ".png"
-"""
-const OUTLINED_COLOR_CONFIGURATION = """
-prioritized_strings = Array[String](["outline", "color"])
-replace_strings = {
-"Capslock": "Caps Lock",
-"Generic Stick": "Generic Left Stick",
-"Guide": "Home",
-"Slash Back": "Back Slash",
-"Slash Forward": "Slash",
-"Stick L": "Left Stick",
-"Stick R": "Right Stick",
-"Trigger L 1": "Left Shoulder",
-"Trigger L 2": "Left Trigger",
-"Trigger R 1": "Right Shoulder",
-"Trigger R 2": "Right Trigger"
-}
-filtered_strings = Array[String](["keyboard", "color", "button", "arrow", "outline"])
-directories = Array[String](["res://assets/kenney_input-prompts/Keyboard & Mouse/Default", "res://assets/kenney_input-prompts/Generic/Default", "res://assets/kenney_input-prompts/Xbox Series/Default", "res://assets/kenney_input-prompts/PlayStation Series/Default", "res://assets/kenney_input-prompts/Nintendo Switch/Default", "res://assets/kenney_input-prompts/Steam Deck/Default"])
-ends_with = ".png"
-"""
-
-const PACKAGE_EXTRA_DIRECTORIES := [
- "Flairs",
- "Nintendo Gamecube",
- "Nintendo Switch 2",
- "Nintendo Wii",
- "Nintendo WiiU",
- "Playdate",
- "Steam Controller",
- "Touch",
-]
-
-const PACKAGE_EXTRA_FILES := [
- "Preview",
-]
-
-## Path start where the project examples have been copied.
-@export_dir var copy_dir_path : String
-## Path end where the zipped files are to be extracted.
-@export var extract_extension : String
-
-@onready var _download_and_extract_node : DownloadAndExtract = $DownloadAndExtract
-@onready var _skip_installation_dialog : ConfirmationDialog = $SkipInstallationDialog
-@onready var _kenney_input_prompts_dialog : ConfirmationDialog = $KenneyInputPromptsDialog
-@onready var _installing_dialog : AcceptDialog = $InstallingDialog
-@onready var _clean_up_dialog : ConfirmationDialog = $CleanUpDialog
-@onready var _error_dialog : AcceptDialog = $ErrorDialog
-@onready var _stage_label : Label = %StageLabel
-@onready var _progress_bar : ProgressBar = %ProgressBar
-
-var _configuration_index : int = -1
-## State flag of whether the tool is waiting for the filesystem to finish scanning.
-var scanning : bool = false
-## State flag for whether the tool is waiting for the filesystem to finish reimporting.
-var reimporting : bool = false
-## Flag for whether the tool will force a download and extraction, even if the contents exist.
-var force : bool = false
-
-func _download_and_extract() -> void:
- _installing_dialog.show()
- _download_and_extract_node.run.call_deferred()
-
-func _run_complete() -> void:
- completed.emit()
- queue_free()
-
-func _clean_up_or_complete() -> void:
- if _has_extras():
- _clean_up_dialog.show()
- else:
- _run_complete()
-
-func _process(_delta : float) -> void:
- if _installing_dialog.visible:
- _progress_bar.value = _download_and_extract_node.get_progress()
- match _download_and_extract_node.stage:
- DownloadAndExtract.DownloadAndExtractStage.DOWNLOAD:
- _stage_label.text = "Downloading..."
- DownloadAndExtract.DownloadAndExtractStage.SAVE:
- _stage_label.text = "Saving..."
- DownloadAndExtract.DownloadAndExtractStage.EXTRACT:
- _stage_label.text = "Extracting..."
- DownloadAndExtract.DownloadAndExtractStage.DELETE:
- _stage_label.text = "Cleaning up..."
- DownloadAndExtract.DownloadAndExtractStage.NONE:
- _installing_dialog.hide()
- elif scanning:
- var file_system := EditorInterface.get_resource_filesystem()
- if not file_system.is_scanning():
- scanning = false
- await get_tree().create_timer(REIMPORT_CHECK_DELAY).timeout
- if reimporting:
- await file_system.resources_reimported
- reimporting = false
- _configure_and_complete()
-
-func _delete_recursive(path : String) -> void:
- if not path.ends_with("/"):
- path += "/"
- var dir_access := DirAccess.open(path)
- if dir_access == null:
- return
- var directories := dir_access.get_directories()
- for directory in directories:
- _delete_recursive(path + directory)
- DirAccess.remove_absolute(path + directory)
- var files := dir_access.get_files()
- for file in files:
- DirAccess.remove_absolute(path + file)
-
-func get_full_path() -> String:
- var full_path := copy_dir_path
- if not full_path.ends_with("/"):
- full_path += "/"
- full_path += extract_extension
- if not full_path.ends_with("/"):
- full_path += "/"
- return full_path
-
-func _has_extras() -> bool:
- var full_path := get_full_path()
- var directories := DirAccess.get_directories_at(full_path)
- for directory in directories:
- for key in PACKAGE_EXTRA_DIRECTORIES:
- if directory.contains(key):
- return true
- var files := DirAccess.get_files_at(full_path)
- for file in files:
- for key in PACKAGE_EXTRA_FILES:
- if file.contains(key):
- return true
- return false
-
-func _delete_extras() -> void:
- var full_path := get_full_path()
- var directories := DirAccess.get_directories_at(full_path)
- for directory in directories:
- for key in PACKAGE_EXTRA_DIRECTORIES:
- if directory.contains(key):
- _delete_recursive(full_path + directory)
- DirAccess.remove_absolute(full_path + directory)
- continue
- var files := DirAccess.get_files_at(full_path)
- for file in files:
- for key in PACKAGE_EXTRA_FILES:
- if file.contains(key):
- DirAccess.remove_absolute(full_path + file)
- continue
- EditorInterface.get_resource_filesystem().scan()
-
-func _configure_icons() -> void:
- var input_options_menu_path := copy_dir_path + RELATIVE_PATH_TO_CONFIGURE_SCENE
- var input_options_menu := FileAccess.get_file_as_string(input_options_menu_path)
- match(_configuration_index % 4):
- 0:
- input_options_menu += FILLED_COLOR_CONFIGURATION
- 1:
- input_options_menu += FILLED_WHITE_CONFIGURATION
- 2:
- input_options_menu += OUTLINED_COLOR_CONFIGURATION
- 3:
- input_options_menu += OUTLINED_WHITE_CONFIGURATION
- match(_configuration_index / 4):
- 0:
- input_options_menu = input_options_menu.replace("Default", "Vector").replace(".png", ".svg")
- 1:
- pass
- 2:
- input_options_menu = input_options_menu.replace("Default", "Double")
- var file_rewrite := FileAccess.open(input_options_menu_path, FileAccess.WRITE)
- file_rewrite.store_string(input_options_menu)
- file_rewrite.close()
- if input_options_menu_path in EditorInterface.get_open_scenes():
- EditorInterface.reload_scene_from_path(input_options_menu_path)
- else:
- EditorInterface.open_scene_from_path(input_options_menu_path)
- await get_tree().create_timer(OPEN_SCENE_DELAY).timeout
- EditorInterface.save_scene()
- await get_tree().create_timer(REIMPORT_CHECK_DELAY).timeout
- _clean_up_or_complete()
-
-func _configure_and_complete() -> void:
- if _configuration_index >= 0:
- _configure_icons()
- return
- _clean_up_or_complete()
-
-func _scan_filesystem_and_reimport() -> void:
- var file_system := EditorInterface.get_resource_filesystem()
- file_system.scan()
- scanning = true
- await file_system.resources_reimporting
- reimporting = true
-
-func _enable_forced_install() -> void:
- force = true
- _download_and_extract_node.force = true
- _kenney_input_prompts_dialog.show.call_deferred()
-
-func _enable_skipped_install() -> void:
- _kenney_input_prompts_dialog.set_short_description()
- _kenney_input_prompts_dialog.show.call_deferred()
-
-func _show_error_dialog(error : String) -> void:
- _installing_dialog.hide()
- _error_dialog.show()
- _error_dialog.dialog_text = "%s!" % error
-
-func _ready() -> void:
- _skip_installation_dialog.hide()
- _kenney_input_prompts_dialog.hide()
- _installing_dialog.hide()
- _installing_dialog.get_ok_button().hide()
- _clean_up_dialog.hide()
- _error_dialog.hide()
- _download_and_extract_node.extract_path = get_full_path()
- if _download_and_extract_node.extract_path_exists():
- _skip_installation_dialog.show()
- else:
- _kenney_input_prompts_dialog.show()
-
-func _on_kenney_input_prompts_dialog_canceled() -> void:
- canceled.emit()
- queue_free()
-
-func _on_kenney_input_prompts_dialog_configuration_selected(index: int) -> void:
- _configuration_index = index
-
-func _on_kenney_input_prompts_dialog_confirmed() -> void:
- if _download_and_extract_node.extract_path_exists() and not force:
- _configure_and_complete()
- return
- _download_and_extract()
-
-func _on_skip_installation_dialog_canceled() -> void:
- _enable_forced_install()
-
-func _on_skip_installation_dialog_confirmed() -> void:
- _enable_skipped_install()
-
-func _on_error_dialog_confirmed() -> void:
- queue_free()
-
-func _on_error_dialog_canceled() -> void:
- queue_free()
-
-func _on_download_and_extract_run_completed() -> void:
- _scan_filesystem_and_reimport()
-
-func _on_download_and_extract_run_failed(error : String) -> void:
- _show_error_dialog(error)
-
-func _on_clean_up_dialog_confirmed() -> void:
- _delete_extras()
- _run_complete()
-
-func _on_clean_up_dialog_canceled() -> void:
- _run_complete()
diff --git a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd.uid b/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd.uid
deleted file mode 100644
index c6fb9c6..0000000
--- a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ca36dy2vkk46q
diff --git a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.tscn b/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.tscn
deleted file mode 100644
index b8e3c55..0000000
--- a/godot/addons/maaacks_game_template/installer/kenney_input_prompts_installer.tscn
+++ /dev/null
@@ -1,92 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://d27twrcwmfxrs"]
-
-[ext_resource type="Script" uid="uid://ca36dy2vkk46q" path="res://addons/maaacks_game_template/installer/kenney_input_prompts_installer.gd" id="1_ebstj"]
-[ext_resource type="PackedScene" uid="uid://d3x8m40qtdrj" path="res://addons/maaacks_game_template/installer/kenney_input_prompts_dialog.tscn" id="1_pslk0"]
-[ext_resource type="PackedScene" uid="uid://dlkmofxhavh10" path="res://addons/maaacks_game_template/utilities/download_and_extract.tscn" id="3_ebstj"]
-
-[node name="KenneyInputPromptsInstaller" type="Node"]
-script = ExtResource("1_ebstj")
-copy_dir_path = "res://"
-extract_extension = "assets/kenney_input-prompts"
-
-[node name="DownloadAndExtract" parent="." instance=ExtResource("3_ebstj")]
-zip_url = "https://github.com/Maaack/Kenney-Input-Prompts/archive/refs/tags/1.3.zip"
-extract_path = "res://assets/kenney_input-prompts/"
-skip_base_zip_dir = true
-zip_file_path = "res://kenney_input-prompts.zip"
-metadata/_custom_type_script = "uid://bqu3bc0tttrfk"
-
-[node name="SkipInstallationDialog" type="ConfirmationDialog" parent="."]
-title = "Skip Installation?"
-initial_position = 2
-size = Vector2i(682, 160)
-ok_button_text = "Skip"
-dialog_text = "The input prompts pack appears to already be installed.
-
-Do you want to force a reinstall of the pack, or skip to picking a style?"
-cancel_button_text = "Reinstall"
-
-[node name="KenneyInputPromptsDialog" parent="." instance=ExtResource("1_pslk0")]
-visible = false
-
-[node name="InstallingDialog" type="AcceptDialog" parent="."]
-title = "Installing..."
-initial_position = 2
-size = Vector2i(400, 100)
-
-[node name="MarginContainer" type="MarginContainer" parent="InstallingDialog"]
-offset_left = 4.0
-offset_top = 4.0
-offset_right = 396.0
-offset_bottom = 96.0
-theme_override_constants/margin_left = 16
-theme_override_constants/margin_top = 16
-theme_override_constants/margin_right = 16
-theme_override_constants/margin_bottom = 16
-
-[node name="VBoxContainer" type="VBoxContainer" parent="InstallingDialog/MarginContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="StageLabel" type="Label" parent="InstallingDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="ProgressBar" type="ProgressBar" parent="InstallingDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-max_value = 1.0
-step = 0.001
-
-[node name="CleanUpDialog" type="ConfirmationDialog" parent="."]
-auto_translate_mode = 1
-title = "Clean Up Extra Content?"
-initial_position = 2
-size = Vector2i(1024, 210)
-ok_button_text = "Yes"
-dialog_text = "Kenney's Input Prompts contains extra content not used by the input remapping menu.
-
-This includes icons for devices not currently detected and preview images. Removing the extras cuts the total size of extracted assets by almost 50%. The option to change input icon styles will remain available after the clean up, too.
-
-Would you like to have the extra content removed?"
-dialog_autowrap = true
-cancel_button_text = "No"
-
-[node name="ErrorDialog" type="AcceptDialog" parent="."]
-title = "Error!"
-initial_position = 2
-size = Vector2i(400, 128)
-
-[connection signal="run_completed" from="DownloadAndExtract" to="." method="_on_download_and_extract_run_completed"]
-[connection signal="run_failed" from="DownloadAndExtract" to="." method="_on_download_and_extract_run_failed"]
-[connection signal="canceled" from="SkipInstallationDialog" to="." method="_on_skip_installation_dialog_canceled"]
-[connection signal="confirmed" from="SkipInstallationDialog" to="." method="_on_skip_installation_dialog_confirmed"]
-[connection signal="canceled" from="KenneyInputPromptsDialog" to="." method="_on_kenney_input_prompts_dialog_canceled"]
-[connection signal="configuration_selected" from="KenneyInputPromptsDialog" to="." method="_on_kenney_input_prompts_dialog_configuration_selected"]
-[connection signal="confirmed" from="KenneyInputPromptsDialog" to="." method="_on_kenney_input_prompts_dialog_confirmed"]
-[connection signal="canceled" from="CleanUpDialog" to="." method="_on_clean_up_dialog_canceled"]
-[connection signal="confirmed" from="CleanUpDialog" to="." method="_on_clean_up_dialog_confirmed"]
-[connection signal="canceled" from="ErrorDialog" to="." method="_on_error_dialog_canceled"]
-[connection signal="confirmed" from="ErrorDialog" to="." method="_on_error_dialog_confirmed"]
diff --git a/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd b/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd
deleted file mode 100644
index 327d9aa..0000000
--- a/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd
+++ /dev/null
@@ -1,8 +0,0 @@
-@tool
-extends ConfirmationDialog
-
-const MAIN_SCENE_UPDATE_TEXT = "Would you like to update the project's main scene?\n\nCurrent:\n%s\n\nNew:\n%s\n"
-
-func set_main_scene_text(new_scene_path):
- var current_scene_path : String = ProjectSettings.get_setting("application/run/main_scene", "")
- dialog_text = MAIN_SCENE_UPDATE_TEXT % [current_scene_path, new_scene_path]
diff --git a/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd.uid b/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd.uid
deleted file mode 100644
index 35fd6d5..0000000
--- a/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://uyh03f60qvd2
diff --git a/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.tscn b/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.tscn
deleted file mode 100644
index 57dcd8e..0000000
--- a/godot/addons/maaacks_game_template/installer/main_scene_confirmation_dialog.tscn
+++ /dev/null
@@ -1,17 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://b8kr3y0cjxr8m"]
-
-[ext_resource type="Script" uid="uid://uyh03f60qvd2" path="res://addons/maaacks_game_template/installer/main_scene_confirmation_dialog.gd" id="1_1ydgd"]
-
-[node name="MainSceneConfirmationDialog" type="ConfirmationDialog"]
-title = "Update Main Scene"
-initial_position = 2
-size = Vector2i(1024, 192)
-visible = true
-exclusive = false
-ok_button_text = "Yes"
-dialog_text = "Would you like to update the project's main scene?
-
-"
-dialog_autowrap = true
-cancel_button_text = "No"
-script = ExtResource("1_1ydgd")
diff --git a/godot/addons/maaacks_game_template/installer/override.cfg b/godot/addons/maaacks_game_template/installer/override.cfg
deleted file mode 100644
index e7ecedc..0000000
--- a/godot/addons/maaacks_game_template/installer/override.cfg
+++ /dev/null
@@ -1,36 +0,0 @@
-; Project settings override file.
-; Adds gamepad inputs to built-in actions.
-;
-; Format:
-; [section] ; section goes between []
-; param=value ; assign values to parameters
-
-
-[input]
-
-ui_accept={
-"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":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
-, 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":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
-, 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":32,"physical_keycode":0,"key_label":0,"unicode":32,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
-]
-}
-ui_cancel={
-"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":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":4,"pressure":0.0,"pressed":true,"script":null)
-]
-}
-ui_page_up={
-"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":4194323,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
-]
-}
-ui_page_down={
-"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":4194324,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
-]
-}
diff --git a/godot/addons/maaacks_game_template/installer/play_opening_confirmation_dialog.tscn b/godot/addons/maaacks_game_template/installer/play_opening_confirmation_dialog.tscn
deleted file mode 100644
index b7bea2b..0000000
--- a/godot/addons/maaacks_game_template/installer/play_opening_confirmation_dialog.tscn
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_scene format=3 uid="uid://b8808yj7a0ghj"]
-
-[node name="PlayOpeningConfirmationDialog" type="ConfirmationDialog"]
-title = "Run & Test"
-initial_position = 2
-size = Vector2i(1024, 148)
-visible = true
-ok_button_text = "Yes"
-dialog_text = "It is recommended to run the opening scene of the plugin and test if any issues occurred during the copying process.
-
-Would you like to run and test the scenes now?"
-dialog_autowrap = true
-cancel_button_text = "No"
diff --git a/godot/addons/maaacks_game_template/installer/release_notes_label.gd b/godot/addons/maaacks_game_template/installer/release_notes_label.gd
deleted file mode 100644
index dafbda8..0000000
--- a/godot/addons/maaacks_game_template/installer/release_notes_label.gd
+++ /dev/null
@@ -1,79 +0,0 @@
-@tool
-extends RichTextLabel
-
-const HEADING_STRING_REPLACEMENT = "$1[font_size=%d]$2[/font_size]"
-const BOLD_HEADING_STRING_REPLACEMENT = "$1[b][font_size=%d]$2[/font_size][/b]"
-
-@export_group("Font Sizes")
-@export var h1_font_size: int
-@export var h2_font_size: int
-@export var h3_font_size: int
-@export var h4_font_size: int
-@export var h5_font_size: int
-@export var h6_font_size: int
-@export var bold_headings : bool
-@export_group("Extra Options")
-@export var disable_images : bool = false
-@export var disable_urls : bool = false
-@export var disable_bolds : bool = false
-
-func regex_replace_imgs(markdown_text:String) -> String:
- var regex = RegEx.new()
- var match_string := "
"
- var replace_string := ""
- if not disable_images:
- replace_string = "$1"
- regex.compile(match_string)
- return regex.sub(markdown_text, replace_string, true)
-
-func regex_replace_urls(markdown_text:String) -> String:
- var regex = RegEx.new()
- var match_string := "(https:\\/\\/.*)($|\\s)"
- var replace_string := "$1"
- if not disable_urls:
- replace_string = "[url=$1]$1[/url]"
- regex.compile(match_string)
- return regex.sub(markdown_text, replace_string, true)
-
-func regex_replace_bolds(markdown_text:String) -> String:
- var regex = RegEx.new()
- var match_string := "\\*\\*(.*)\\*\\*"
- var replace_string := "$1"
- if not disable_bolds:
- replace_string = "[b]$1[/b]"
- regex.compile(match_string)
- return regex.sub(markdown_text, replace_string, true)
-
-func regex_replace_titles(markdown_text:String) -> String:
- var iter = 0
- var heading_font_sizes : Array[int] = [
- h1_font_size,
- h2_font_size,
- h3_font_size,
- h4_font_size,
- h5_font_size,
- h6_font_size]
- for heading_font_size in heading_font_sizes:
- iter += 1
- var regex = RegEx.new()
- var match_string : String = "([^#]|^)#{%d}\\s([^\n]*)" % iter
- var replace_string := HEADING_STRING_REPLACEMENT % [heading_font_size]
- if bold_headings:
- replace_string = BOLD_HEADING_STRING_REPLACEMENT % [heading_font_size]
- regex.compile(match_string)
- markdown_text = regex.sub(markdown_text, replace_string, true)
- return markdown_text
-
-func from_release_notes(markdown_text : String) -> void:
- markdown_text = regex_replace_imgs(markdown_text)
- markdown_text = regex_replace_urls(markdown_text)
- markdown_text = regex_replace_bolds(markdown_text)
- markdown_text = regex_replace_titles(markdown_text)
- text = markdown_text
-
-func _on_meta_clicked(meta: String) -> void:
- if meta.begins_with("https://"):
- var _err = OS.shell_open(meta)
-
-func _ready() -> void:
- meta_clicked.connect(_on_meta_clicked)
diff --git a/godot/addons/maaacks_game_template/installer/release_notes_label.gd.uid b/godot/addons/maaacks_game_template/installer/release_notes_label.gd.uid
deleted file mode 100644
index aaa7229..0000000
--- a/godot/addons/maaacks_game_template/installer/release_notes_label.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dab5i53lgv34a
diff --git a/godot/addons/maaacks_game_template/installer/setup_wizard.gd b/godot/addons/maaacks_game_template/installer/setup_wizard.gd
deleted file mode 100644
index 6dd179a..0000000
--- a/godot/addons/maaacks_game_template/installer/setup_wizard.gd
+++ /dev/null
@@ -1,139 +0,0 @@
-@tool
-extends AcceptDialog
-
-@export_file("*.tscn") var check_version_scene_path : String
-@export_dir var input_prompts_directory_path : String
-
-@onready var plugin_label : Label = %PluginLabel
-@onready var update_label : Label = %UpdateLabel
-@onready var update_check_box : CheckBox = %UpdateCheckBox
-@onready var update_button : Button = %UpdateButton
-@onready var copy_check_box : CheckBox = %CopyCheckBox
-@onready var copy_button : Button = %CopyButton
-@onready var delete_check_box : CheckBox = %DeleteCheckBox
-@onready var delete_button : Button = %DeleteButton
-@onready var update_paths_check_box : CheckBox = %UpdatePathsCheckBox
-@onready var update_paths_button : Button = %UpdatePathsButton
-@onready var set_main_scene_check_box : CheckBox = %SetMainSceneCheckBox
-@onready var set_main_scene_button : Button = %SetMainSceneButton
-@onready var set_default_theme_check_box : CheckBox = %SetDefaultThemeCheckBox
-@onready var set_default_theme_button : Button = %SetDefaultThemeButton
-@onready var add_input_icons_check_box : CheckBox = %AddInputIconsCheckBox
-@onready var add_input_icons_button : Button = %AddInputIconsButton
-
-func _refresh_plugin_details() -> void:
- for enabled_plugin in ProjectSettings.get_setting("editor_plugins/enabled"):
- if enabled_plugin.contains(MaaacksGameTemplatePlugin.get_settings_path()):
- var config := ConfigFile.new()
- var error = config.load(enabled_plugin)
- if error != OK:
- return
- var current_plugin_version : String = config.get_value("plugin", "version", "0.0.0")
- var plugin_name : String = config.get_value("plugin", "name", "Plugin")
- plugin_label.text = "%s v%s" % [plugin_name, current_plugin_version]
-
-func _show_plugin_versions_match() -> void:
- update_label.text = "Using Latest Version"
- update_check_box.button_pressed = true
- update_button.disabled = true
-
-func _enable_update_plugin_tool_option(tag_name : String) -> void:
- update_label.text = "Update to Latest Version v%s" % tag_name
- update_button.disabled = false
-
-func _open_check_plugin_version() -> void:
- if check_version_scene_path.is_empty():
- push_warning("Variable \"check_version_scene_path\" is not set")
- return
- if ProjectSettings.get_setting(MaaacksGameTemplatePlugin.get_settings_path() + "disable_update_check", false):
- update_label.text = "Check for Latest Version"
- update_button.disabled = false
- return
- var check_version_scene : PackedScene = load(check_version_scene_path)
- var check_version_instance : Node = check_version_scene.instantiate()
- check_version_instance.auto_start = true
- check_version_instance.new_version_detected.connect(_enable_update_plugin_tool_option)
- check_version_instance.versions_matched.connect(_show_plugin_versions_match)
- add_child(check_version_instance)
-
-func _refresh_copy_and_delete_examples() -> void:
- var examples_path = MaaacksGameTemplatePlugin.instance.get_plugin_examples_path()
- if MaaacksGameTemplatePlugin.get_copy_path() != examples_path:
- copy_check_box.button_pressed = true
- var dir := DirAccess.open("res://")
- if dir.dir_exists(examples_path):
- copy_button.disabled = false
- delete_button.disabled = false
- else:
- delete_check_box.button_pressed = true
-
-func _refresh_update_autoload_paths() -> void:
- update_paths_check_box.button_pressed = MaaacksGameTemplatePlugin.instance.are_autoload_paths_updated()
- update_paths_button.disabled = false
-
-func _refresh_main_scene() -> void:
- if MaaacksGameTemplatePlugin.instance.is_main_scene_set():
- set_main_scene_check_box.button_pressed = true
- else:
- set_main_scene_button.disabled = false
-
-func _refresh_default_theme() -> void:
- set_default_theme_button.disabled = false
- if ProjectSettings.get_setting("gui/theme/custom", "") != "":
- set_default_theme_check_box.button_pressed = true
-
-func _refresh_input_prompts() -> void:
- if input_prompts_directory_path.is_empty():
- push_warning("Variable \"input_prompts_directory_path\" is not set")
- return
- if DirAccess.dir_exists_absolute(input_prompts_directory_path):
- add_input_icons_check_box.button_pressed = true
- add_input_icons_button.disabled = false
-
-func _refresh_options():
- _refresh_plugin_details()
- _open_check_plugin_version()
- _refresh_copy_and_delete_examples()
- _refresh_update_autoload_paths()
- _refresh_main_scene()
- _refresh_default_theme()
- _refresh_input_prompts()
-
-func _ready():
- _refresh_options()
-
-func _on_update_button_pressed():
- if ProjectSettings.get_setting(MaaacksGameTemplatePlugin.get_settings_path() + "disable_update_check", false):
- ProjectSettings.set_setting(MaaacksGameTemplatePlugin.get_settings_path() + "disable_update_check", false)
- _open_check_plugin_version()
- return
- else:
- tree_exited.connect(func(): MaaacksGameTemplatePlugin.instance.open_update_plugin())
- queue_free()
-
-func _on_copy_button_pressed():
- tree_exited.connect(func(): MaaacksGameTemplatePlugin.instance.open_copy_and_edit_dialog())
- queue_free()
-
-func _on_delete_button_pressed():
- tree_exited.connect(func(): MaaacksGameTemplatePlugin.instance.open_delete_examples_short_confirmation_dialog())
- queue_free()
-
-func _on_update_paths_button_pressed():
- MaaacksGameTemplatePlugin.instance.update_autoload_paths(MaaacksGameTemplatePlugin.get_copy_path())
- _refresh_update_autoload_paths()
- update_paths_button.disabled = true
- await get_tree().create_timer(1.0).timeout
- update_paths_button.disabled = false
-
-func _on_set_main_scene_button_pressed():
- tree_exited.connect(func(): MaaacksGameTemplatePlugin.instance.open_main_scene_confirmation_dialog(MaaacksGameTemplatePlugin.get_copy_path()))
- queue_free()
-
-func _on_set_default_theme_button_pressed():
- tree_exited.connect(func(): MaaacksGameTemplatePlugin.instance.open_theme_selection_dialog(MaaacksGameTemplatePlugin.get_copy_path()))
- queue_free()
-
-func _on_add_input_icons_button_pressed():
- tree_exited.connect(func(): MaaacksGameTemplatePlugin.instance.open_input_icons_dialog())
- queue_free()
diff --git a/godot/addons/maaacks_game_template/installer/setup_wizard.gd.uid b/godot/addons/maaacks_game_template/installer/setup_wizard.gd.uid
deleted file mode 100644
index 8261eef..0000000
--- a/godot/addons/maaacks_game_template/installer/setup_wizard.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://coq26stqrim51
diff --git a/godot/addons/maaacks_game_template/installer/setup_wizard.tscn b/godot/addons/maaacks_game_template/installer/setup_wizard.tscn
deleted file mode 100644
index 007700f..0000000
--- a/godot/addons/maaacks_game_template/installer/setup_wizard.tscn
+++ /dev/null
@@ -1,171 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://uojlvirhbysk"]
-
-[ext_resource type="Script" uid="uid://coq26stqrim51" path="res://addons/maaacks_game_template/installer/setup_wizard.gd" id="1_jck5m"]
-
-[node name="SetupWizardDialog" type="AcceptDialog"]
-oversampling_override = 1.0
-title = "Setup Wizard"
-initial_position = 2
-size = Vector2i(576, 540)
-visible = true
-ok_button_text = "Done"
-dialog_autowrap = true
-script = ExtResource("1_jck5m")
-check_version_scene_path = "res://addons/maaacks_game_template/installer/check_plugin_version.tscn"
-input_prompts_directory_path = "res://assets/kenney_input-prompts/"
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-custom_minimum_size = Vector2(560, 483)
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 8.0
-offset_top = 8.0
-offset_right = -8.0
-offset_bottom = -49.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/separation = 16
-
-[node name="PluginLabel" type="Label" parent="VBoxContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(384, 0)
-layout_mode = 2
-autowrap_mode = 3
-
-[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
-layout_mode = 2
-
-[node name="StepsContainer" type="GridContainer" parent="VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/h_separation = 12
-columns = 3
-
-[node name="UpdateLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Update to Latest Version"
-
-[node name="UpdateCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="UpdateButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[node name="CopyLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Copy Example Files"
-
-[node name="CopyCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="CopyButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[node name="DeleteLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Delete Example Files"
-
-[node name="DeleteCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="DeleteButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[node name="UpdatePathsLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Update Autoload Paths"
-
-[node name="UpdatePathsCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="UpdatePathsButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[node name="SetMainSceneLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Set the Main Scene"
-
-[node name="SetMainSceneCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="SetMainSceneButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[node name="SetDefaultThemeLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Set the Default Theme"
-
-[node name="SetDefaultThemeCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="SetDefaultThemeButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[node name="AddInputIconsLabel" type="Label" parent="VBoxContainer/StepsContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Add Input Prompt Icons"
-
-[node name="AddInputIconsCheckBox" type="CheckBox" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-disabled = true
-
-[node name="AddInputIconsButton" type="Button" parent="VBoxContainer/StepsContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(100, 0)
-layout_mode = 2
-disabled = true
-text = "Run"
-
-[connection signal="pressed" from="VBoxContainer/StepsContainer/UpdateButton" to="." method="_on_update_button_pressed"]
-[connection signal="pressed" from="VBoxContainer/StepsContainer/CopyButton" to="." method="_on_copy_button_pressed"]
-[connection signal="pressed" from="VBoxContainer/StepsContainer/DeleteButton" to="." method="_on_delete_button_pressed"]
-[connection signal="pressed" from="VBoxContainer/StepsContainer/UpdatePathsButton" to="." method="_on_update_paths_button_pressed"]
-[connection signal="pressed" from="VBoxContainer/StepsContainer/SetMainSceneButton" to="." method="_on_set_main_scene_button_pressed"]
-[connection signal="pressed" from="VBoxContainer/StepsContainer/SetDefaultThemeButton" to="." method="_on_set_default_theme_button_pressed"]
-[connection signal="pressed" from="VBoxContainer/StepsContainer/AddInputIconsButton" to="." method="_on_add_input_icons_button_pressed"]
diff --git a/godot/addons/maaacks_game_template/installer/theme_selection_dialog.gd b/godot/addons/maaacks_game_template/installer/theme_selection_dialog.gd
deleted file mode 100644
index db6beb7..0000000
--- a/godot/addons/maaacks_game_template/installer/theme_selection_dialog.gd
+++ /dev/null
@@ -1,33 +0,0 @@
-@tool
-extends ConfirmationDialog
-
-signal theme_selected(theme_file: String)
-
-@export_dir var theme_directories : Array[String] :
- set(value):
- theme_directories = value
- if is_inside_tree():
- %FileLister.directories = theme_directories
- _fill_with_themes()
-
-func _fill_with_themes() -> void:
- %ItemList.clear()
- for file in %FileLister.files:
- if file is String:
- var readable_name = file.get_file().get_basename().capitalize()
- %ItemList.add_item(readable_name)
-
-func _ready() -> void:
- get_ok_button().disabled = true
-
-func _preview_theme(theme_file: String) -> void:
- var theme_resource : Theme = load(theme_file)
- if theme_resource == null: return
- %ThemePreviewContainer.theme = theme_resource
-
-func _on_item_list_item_selected(index) -> void:
- get_ok_button().disabled = false
- if index < %FileLister.files.size():
- var file = %FileLister.files[index]
- _preview_theme(file)
- theme_selected.emit(file)
diff --git a/godot/addons/maaacks_game_template/installer/theme_selection_dialog.gd.uid b/godot/addons/maaacks_game_template/installer/theme_selection_dialog.gd.uid
deleted file mode 100644
index 61f64df..0000000
--- a/godot/addons/maaacks_game_template/installer/theme_selection_dialog.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c6p8xjvlrgsfk
diff --git a/godot/addons/maaacks_game_template/installer/theme_selection_dialog.tscn b/godot/addons/maaacks_game_template/installer/theme_selection_dialog.tscn
deleted file mode 100644
index 9e3e2dd..0000000
--- a/godot/addons/maaacks_game_template/installer/theme_selection_dialog.tscn
+++ /dev/null
@@ -1,178 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://d25mdvmlbn35"]
-
-[ext_resource type="Script" uid="uid://c6p8xjvlrgsfk" path="res://addons/maaacks_game_template/installer/theme_selection_dialog.gd" id="1_5u0gx"]
-[ext_resource type="Script" uid="uid://bij7wsh8d44gv" path="res://addons/maaacks_game_template/base/scripts/file_lister.gd" id="2_luhgx"]
-
-[node name="ThemeSelectionDialog" type="ConfirmationDialog"]
-title = "Use a Starter Theme"
-initial_position = 2
-size = Vector2i(1024, 704)
-visible = true
-ok_button_text = "Yes"
-dialog_autowrap = true
-cancel_button_text = "No"
-script = ExtResource("1_5u0gx")
-
-[node name="FileLister" type="Node" parent="."]
-unique_name_in_owner = true
-script = ExtResource("2_luhgx")
-ends_with = ".tres"
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-custom_minimum_size = Vector2(560, 443)
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 8.0
-offset_top = 8.0
-offset_right = -8.0
-offset_bottom = -49.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/separation = 16
-
-[node name="Label" type="Label" parent="VBoxContainer"]
-custom_minimum_size = Vector2(384, 0)
-layout_mode = 2
-text = "A custom theme was not detected for the project. Starter options are provided below. These can be customized as needed.
-
-Requires restarting the editor to take full effect."
-autowrap_mode = 3
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="ItemList" type="ItemList" parent="VBoxContainer/HBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="VSeparator" type="VSeparator" parent="VBoxContainer/HBoxContainer"]
-layout_mode = 2
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-theme_override_constants/margin_left = 16
-theme_override_constants/margin_right = 16
-
-[node name="ThemePreviewContainer" type="TabContainer" parent="VBoxContainer/HBoxContainer/MarginContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-current_tab = 0
-
-[node name="Tab1" type="Control" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer"]
-layout_mode = 2
-metadata/_tab_index = 0
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 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="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer"]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Label"
-horizontal_alignment = 1
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Button"
-
-[node name="Button2" type="Button" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-toggle_mode = true
-button_pressed = true
-text = "Button"
-
-[node name="Button3" type="Button" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-disabled = true
-text = "Button"
-
-[node name="CheckButton" type="CheckButton" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "CheckButton"
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "CheckBox"
-
-[node name="MenuButton" type="MenuButton" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "MenuButton"
-
-[node name="OptionButton" type="OptionButton" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab1/MarginContainer/VBoxContainer"]
-layout_mode = 2
-selected = 0
-item_count = 2
-popup/item_0/text = "OptionButton"
-popup/item_0/id = 0
-popup/item_1/text = "OptionButton2"
-popup/item_1/id = 1
-
-[node name="Tab2" type="Control" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer"]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 1
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 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="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer"]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Another label"
-horizontal_alignment = 1
-
-[node name="LineEdit" type="LineEdit" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="TextEdit" type="TextEdit" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="HSlider" type="HSlider" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="HScrollBar" type="HScrollBar" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="HSeparator" type="HSeparator" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="ProgressBar" type="ProgressBar" parent="VBoxContainer/HBoxContainer/MarginContainer/ThemePreviewContainer/Tab2/MarginContainer/VBoxContainer"]
-layout_mode = 2
-value = 50.0
-
-[connection signal="item_selected" from="VBoxContainer/HBoxContainer/ItemList" to="." method="_on_item_list_item_selected"]
diff --git a/godot/addons/maaacks_game_template/installer/update_plugin.gd b/godot/addons/maaacks_game_template/installer/update_plugin.gd
deleted file mode 100644
index bf79dc9..0000000
--- a/godot/addons/maaacks_game_template/installer/update_plugin.gd
+++ /dev/null
@@ -1,163 +0,0 @@
-@tool
-extends Node
-
-signal update_completed
-
-const DownloadAndExtract = MaaacksGameTemplatePlugin.DownloadAndExtract
-const APIClient = MaaacksGameTemplatePlugin.APIClient
-const ReleaseNotesLabel = preload("./release_notes_label.gd")
-
-const API_RELEASES_URL := "https://api.github.com/repos/%s/%s/releases"
-const UPDATE_CONFIRMATION_MESSAGE := "This will update the contents of the plugin folder (addons/%s/).\nFiles outside of the plugin folder will not be affected.\n\nUpdate %s to v%s?"
-const PLUGIN_EXTRACT_PATH := "res://addons/%s/"
-const PLUGIN_TEMP_ZIP_PATH := "res://%s_%s_update.zip"
-
-@export var plugin_directory : String
-@export var plugin_github_url : String :
- set(value):
- plugin_github_url = value
- _update_urls()
-@export_group("Advanced")
-@export var auto_start : bool = false
-@export var default_version : String = "0.0.0"
-@export var replace_tag_name : String = "v"
-@export var _test_action : bool = false :
- set(value):
- if value and Engine.is_editor_hint():
- get_newest_version()
-
-@onready var _api_client : APIClient = $APIClient
-@onready var _download_and_extract_node : DownloadAndExtract = $DownloadAndExtract
-@onready var _update_confirmation_dialog : ConfirmationDialog = $UpdateConfirmationDialog
-@onready var _installing_dialog : AcceptDialog = $InstallingDialog
-@onready var _error_dialog : AcceptDialog = $ErrorDialog
-@onready var _success_dialog : AcceptDialog = $SuccessDialog
-@onready var _release_notes_label : ReleaseNotesLabel = %ReleaseNotesLabel
-@onready var _update_label : Label = %UpdateLabel
-@onready var _warning_message_button : LinkButton = %WarningMessageButton
-@onready var _warning_message_label : Label = %WarningMessageLabel
-@onready var _release_notes_button : LinkButton = %ReleaseNotesButton
-@onready var _release_notes_panel : Panel = %ReleaseNotesPanel
-@onready var _stage_label : Label = %StageLabel
-@onready var _progress_bar : ProgressBar = %ProgressBar
-
-var _zipball_url : String
-var _newest_version : String
-var _plugin_name : String
-var _current_plugin_version : String
-
-func _load_plugin_details() -> void:
- if plugin_directory.is_empty(): return
- for enabled_plugin in ProjectSettings.get_setting("editor_plugins/enabled"):
- if enabled_plugin.contains(plugin_directory):
- var config := ConfigFile.new()
- var error = config.load(enabled_plugin)
- if error != OK:
- return
- _current_plugin_version = config.get_value("plugin", "version", default_version)
- _plugin_name = config.get_value("plugin", "name", "Plugin")
-
-func _update_urls() -> void:
- if plugin_github_url.is_empty(): return
- if _api_client == null: return
- var regex := RegEx.create_from_string("https:\\/\\/github\\.com\\/([\\w-]+)\\/([\\w-]+)\\/*")
- var regex_match := regex.search(plugin_github_url)
- if regex_match == null: return
- var username := regex_match.get_string(1)
- var repository := regex_match.get_string(2)
- _api_client.api_url = API_RELEASES_URL % [username, repository]
-
-func _show_error_dialog(error : String) -> void:
- _error_dialog.show()
- _error_dialog.dialog_text = "%s!" % error
-
-func _show_success_dialog() -> void:
- _success_dialog.show()
- _success_dialog.dialog_text = "%s updated to v%s." % [_plugin_name, _newest_version]
-
-func _on_api_client_request_failed(error : String) -> void:
- _show_error_dialog(error)
-
-func _on_api_client_response_received(response_body : Variant) -> void:
- if response_body is not Array:
- push_error("Response was not an array")
- return
- var latest_release : Dictionary = response_body.front()
- _newest_version = default_version
- if latest_release.has("tag_name"):
- var tag_name = latest_release["tag_name"]
- if replace_tag_name:
- tag_name = tag_name.replacen(replace_tag_name, "")
- _newest_version = tag_name
- if latest_release.has("zipball_url"):
- _zipball_url = latest_release["zipball_url"]
- _download_and_extract_node.zip_url = _zipball_url
- _download_and_extract_node.zip_file_path = PLUGIN_TEMP_ZIP_PATH % [plugin_directory, _newest_version]
- _update_label.text = UPDATE_CONFIRMATION_MESSAGE % [plugin_directory, _plugin_name, _newest_version]
- if latest_release.has("body"):
- _release_notes_label.from_release_notes(latest_release["body"])
- _update_confirmation_dialog.show()
-
-func _on_download_and_extract_zip_saved() -> void:
- OS.move_to_trash(ProjectSettings.globalize_path(PLUGIN_EXTRACT_PATH % plugin_directory))
-
-func _on_download_and_extract_run_failed(error : String) -> void:
- _show_error_dialog(error)
-
-func _on_download_and_extract_run_completed() -> void:
- update_completed.emit()
- _show_success_dialog()
-
-func _on_error_dialog_canceled() -> void:
- queue_free()
-
-func _on_error_dialog_confirmed() -> void:
- queue_free()
-
-func _on_success_dialog_canceled() -> void:
- queue_free()
-
-func _on_success_dialog_confirmed() -> void:
- queue_free()
-
-func _on_update_confirmation_dialog_canceled() -> void:
- queue_free()
-
-func _on_update_confirmation_dialog_confirmed() -> void:
- _download_and_extract_node.run()
- _installing_dialog.show()
-
-func _on_warning_message_button_pressed():
- _warning_message_label.show()
- _warning_message_button.hide()
-
-func _on_release_notes_button_pressed() -> void:
- _release_notes_panel.show()
- _release_notes_button.hide()
-
-func get_newest_version() -> void:
- _api_client.request()
-
-func _ready() -> void:
- _load_plugin_details()
- _update_confirmation_dialog.hide()
- _installing_dialog.hide()
- _error_dialog.hide()
- _success_dialog.hide()
- if auto_start:
- get_newest_version()
-
-func _process(_delta : float) -> void:
- if _installing_dialog.visible:
- _progress_bar.value = _download_and_extract_node.get_progress()
- match _download_and_extract_node.stage:
- DownloadAndExtract.DownloadAndExtractStage.DOWNLOAD:
- _stage_label.text = "Downloading..."
- DownloadAndExtract.DownloadAndExtractStage.SAVE:
- _stage_label.text = "Saving..."
- DownloadAndExtract.DownloadAndExtractStage.EXTRACT:
- _stage_label.text = "Extracting..."
- DownloadAndExtract.DownloadAndExtractStage.DELETE:
- _stage_label.text = "Cleaning up..."
- DownloadAndExtract.DownloadAndExtractStage.NONE:
- _installing_dialog.hide()
diff --git a/godot/addons/maaacks_game_template/installer/update_plugin.gd.uid b/godot/addons/maaacks_game_template/installer/update_plugin.gd.uid
deleted file mode 100644
index fc72e0a..0000000
--- a/godot/addons/maaacks_game_template/installer/update_plugin.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cwj8dpqveao6o
diff --git a/godot/addons/maaacks_game_template/installer/update_plugin.tscn b/godot/addons/maaacks_game_template/installer/update_plugin.tscn
deleted file mode 100644
index 5929a6a..0000000
--- a/godot/addons/maaacks_game_template/installer/update_plugin.tscn
+++ /dev/null
@@ -1,158 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://gynblau0ojia"]
-
-[ext_resource type="Script" uid="uid://cwj8dpqveao6o" path="res://addons/maaacks_game_template/installer/update_plugin.gd" id="1_s6qpc"]
-[ext_resource type="PackedScene" uid="uid://drhhakm62vjsy" path="res://addons/maaacks_game_template/utilities/api_client.tscn" id="2_s6pdq"]
-[ext_resource type="PackedScene" uid="uid://dlkmofxhavh10" path="res://addons/maaacks_game_template/utilities/download_and_extract.tscn" id="3_s6pdq"]
-[ext_resource type="Script" uid="uid://dab5i53lgv34a" path="res://addons/maaacks_game_template/installer/release_notes_label.gd" id="4_1amwf"]
-
-[node name="UpdatePlugin" type="Node"]
-script = ExtResource("1_s6qpc")
-plugin_directory = "maaacks_game_template"
-plugin_github_url = "https://github.com/Maaack/Godot-Game-Template"
-
-[node name="APIClient" parent="." instance=ExtResource("2_s6pdq")]
-api_url = "https://api.github.com/repos/Maaack/Godot-Game-Template/releases"
-request_method = 0
-
-[node name="DownloadAndExtract" parent="." instance=ExtResource("3_s6pdq")]
-extract_path = "res://"
-path_match_string = "addons/"
-skip_base_zip_dir = true
-force = true
-
-[node name="UpdateConfirmationDialog" type="ConfirmationDialog" parent="."]
-auto_translate_mode = 1
-title = "Update Plugin?"
-initial_position = 2
-size = Vector2i(640, 360)
-dialog_autowrap = true
-
-[node name="MarginContainer" type="MarginContainer" parent="UpdateConfirmationDialog"]
-offset_left = 8.0
-offset_top = 8.0
-offset_right = 632.0
-offset_bottom = 311.0
-theme_override_constants/margin_bottom = 16
-
-[node name="VBoxContainer" type="VBoxContainer" parent="UpdateConfirmationDialog/MarginContainer"]
-layout_mode = 2
-
-[node name="UpdateLabel" type="Label" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "This will update the contents of the plugin folder (addons/plugin_directory/).
-Files outside of the plugin folder will not be affected.
-
-Update to v0.0.0?"
-
-[node name="HSeparator" type="HSeparator" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="WarningMessageButton" type="LinkButton" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Warning About Updating"
-
-[node name="WarningMessageLabel" type="Label" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-visible = false
-custom_minimum_size = Vector2(624, 205)
-layout_mode = 2
-text = "Not all updates are backwards compatible!
-
-Updating can cause issues with previously copied examples. It is recommended to delete any copied example files before starting an update, if it is an option. Otherwise, pay attention to the Release Notes for an idea for how changes may impact your project.
-
-Lastly, save your work and proceed with caution."
-autowrap_mode = 3
-
-[node name="ReleaseNotesButton" type="LinkButton" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Show Release Notes"
-
-[node name="ReleaseNotesPanel" type="Panel" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-visible = false
-custom_minimum_size = Vector2(0, 420)
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="ReleaseNotesLabel" type="RichTextLabel" parent="UpdateConfirmationDialog/MarginContainer/VBoxContainer/ReleaseNotesPanel"]
-unique_name_in_owner = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_vertical = 3
-focus_mode = 2
-bbcode_enabled = true
-selection_enabled = true
-script = ExtResource("4_1amwf")
-h1_font_size = 64
-h2_font_size = 48
-h3_font_size = 32
-h4_font_size = 24
-h5_font_size = 16
-h6_font_size = 12
-bold_headings = true
-
-[node name="InstallingDialog" type="AcceptDialog" parent="."]
-auto_translate_mode = 1
-title = "Installing..."
-initial_position = 2
-size = Vector2i(400, 111)
-
-[node name="MarginContainer" type="MarginContainer" parent="InstallingDialog"]
-offset_left = 4.0
-offset_top = 4.0
-offset_right = 396.0
-offset_bottom = 96.0
-theme_override_constants/margin_left = 16
-theme_override_constants/margin_top = 16
-theme_override_constants/margin_right = 16
-theme_override_constants/margin_bottom = 16
-
-[node name="VBoxContainer" type="VBoxContainer" parent="InstallingDialog/MarginContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="StageLabel" type="Label" parent="InstallingDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="ProgressBar" type="ProgressBar" parent="InstallingDialog/MarginContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-max_value = 1.0
-step = 0.001
-
-[node name="ErrorDialog" type="AcceptDialog" parent="."]
-auto_translate_mode = 1
-title = "Error!"
-initial_position = 2
-size = Vector2i(400, 128)
-
-[node name="SuccessDialog" type="AcceptDialog" parent="."]
-auto_translate_mode = 1
-title = "Update Complete"
-initial_position = 2
-size = Vector2i(400, 128)
-dialog_text = "%s updated to v%s."
-
-[connection signal="request_failed" from="APIClient" to="." method="_on_api_client_request_failed"]
-[connection signal="response_received" from="APIClient" to="." method="_on_api_client_response_received"]
-[connection signal="run_completed" from="DownloadAndExtract" to="." method="_on_download_and_extract_run_completed"]
-[connection signal="run_failed" from="DownloadAndExtract" to="." method="_on_download_and_extract_run_failed"]
-[connection signal="zip_saved" from="DownloadAndExtract" to="." method="_on_download_and_extract_zip_saved"]
-[connection signal="canceled" from="UpdateConfirmationDialog" to="." method="_on_update_confirmation_dialog_canceled"]
-[connection signal="confirmed" from="UpdateConfirmationDialog" to="." method="_on_update_confirmation_dialog_confirmed"]
-[connection signal="pressed" from="UpdateConfirmationDialog/MarginContainer/VBoxContainer/WarningMessageButton" to="." method="_on_warning_message_button_pressed"]
-[connection signal="pressed" from="UpdateConfirmationDialog/MarginContainer/VBoxContainer/ReleaseNotesButton" to="." method="_on_release_notes_button_pressed"]
-[connection signal="canceled" from="ErrorDialog" to="." method="_on_error_dialog_canceled"]
-[connection signal="confirmed" from="ErrorDialog" to="." method="_on_error_dialog_confirmed"]
-[connection signal="canceled" from="SuccessDialog" to="." method="_on_success_dialog_canceled"]
-[connection signal="confirmed" from="SuccessDialog" to="." method="_on_success_dialog_confirmed"]
diff --git a/godot/addons/maaacks_game_template/maaacks_game_template.gd b/godot/addons/maaacks_game_template/maaacks_game_template.gd
deleted file mode 100644
index 0c0efd2..0000000
--- a/godot/addons/maaacks_game_template/maaacks_game_template.gd
+++ /dev/null
@@ -1,374 +0,0 @@
-@tool
-class_name MaaacksGameTemplatePlugin
-extends EditorPlugin
-
-const PLUGIN_PATH = "res://addons/maaacks_game_template/"
-const PLUGIN_NAME = "Maaack's Game Template"
-const PROJECT_SETTINGS_PATH = "maaacks_game_template/"
-
-const APIClient = preload(PLUGIN_PATH + "utilities/api_client.gd")
-const DownloadAndExtract = preload(PLUGIN_PATH + "utilities/download_and_extract.gd")
-const CopyAndEdit = preload(PLUGIN_PATH + "installer/copy_and_edit_files.gd")
-
-const EXAMPLES_RELATIVE_PATH = "examples/"
-const MAIN_SCENE_RELATIVE_PATH = "scenes/opening/opening_with_logo.tscn"
-const OVERRIDE_RELATIVE_PATH = "installer/override.cfg"
-const APP_CONFIG_RELATIVE_PATH = "base/scenes/autoloads/app_config.tscn"
-const SCENE_LOADER_RELATIVE_PATH = "base/scenes/autoloads/scene_loader.tscn"
-const THEMES_DIRECTORY_RELATIVE_PATH = "resources/themes"
-const WINDOW_OPEN_DELAY : float = 0.5
-const RUNNING_CHECK_DELAY : float = 0.25
-const OPEN_EDITOR_DELAY : float = 0.1
-const MAX_PHYSICS_FRAMES_FROM_START : int = 60
-const AVAILABLE_TRANSLATIONS : Array = ["en", "fr"]
-
-static var instance : MaaacksGameTemplatePlugin
-
-var selected_theme : String
-var update_plugin_tool_string : String
-
-static func get_plugin_name() -> String:
- return PLUGIN_NAME
-
-static func get_settings_path() -> String:
- return PROJECT_SETTINGS_PATH
-
-static func get_plugin_path() -> String:
- return PLUGIN_PATH
-
-static func get_plugin_examples_path() -> String:
- return get_plugin_path() + EXAMPLES_RELATIVE_PATH
-
-static func get_app_config_path() -> String:
- return get_plugin_path() + APP_CONFIG_RELATIVE_PATH
-
-static func get_scene_loader_path() -> String:
- return get_plugin_path() + SCENE_LOADER_RELATIVE_PATH
-
-static func get_copy_path() -> String:
- var copy_path = ProjectSettings.get_setting(PROJECT_SETTINGS_PATH + "copy_path", get_plugin_examples_path())
- if not copy_path.ends_with("/"):
- copy_path += "/"
- return copy_path
-
-func _on_theme_selected(theme_resource_path: String) -> void:
- selected_theme = theme_resource_path
-
-func _update_gui_theme() -> void:
- if selected_theme.is_empty(): return
- ProjectSettings.set_setting("gui/theme/custom", selected_theme)
- ProjectSettings.save()
-
-func open_theme_selection_dialog(target_path : String) -> void:
- selected_theme = ""
- var theme_selection_scene : PackedScene = load(get_plugin_path() + "installer/theme_selection_dialog.tscn")
- var theme_selection_instance = theme_selection_scene.instantiate()
- theme_selection_instance.confirmed.connect(_update_gui_theme)
- theme_selection_instance.theme_selected.connect(_on_theme_selected)
- add_child(theme_selection_instance)
- var theme_directores : Array[String]
- theme_directores.append(target_path + THEMES_DIRECTORY_RELATIVE_PATH)
- theme_selection_instance.theme_directories = theme_directores
-
-func _delayed_open_theme_selection_dialog(target_path : String) -> void:
- var timer: Timer = Timer.new()
- var callable := func():
- timer.stop()
- open_theme_selection_dialog(target_path)
- timer.queue_free()
- timer.timeout.connect(callable)
- add_child(timer)
- timer.start(WINDOW_OPEN_DELAY)
-
-func _check_theme_needs_updating(target_path : String) -> void:
- var current_theme_resource_path = ProjectSettings.get_setting("gui/theme/custom", "")
- if current_theme_resource_path != "":
- return
- _delayed_open_theme_selection_dialog(target_path)
-
-func _update_main_scene(target_path : String, main_scene_path : String) -> void:
- ProjectSettings.set_setting("application/run/main_scene", main_scene_path)
- ProjectSettings.save()
- _check_theme_needs_updating(target_path)
-
-func is_main_scene_set(target_path : String = get_copy_path()) -> bool:
- var current_main_scene_path = ProjectSettings.get_setting("application/run/main_scene", "")
- var new_main_scene_path = target_path + MAIN_SCENE_RELATIVE_PATH
- return current_main_scene_path == new_main_scene_path
-
-func _check_main_scene_needs_updating(target_path : String) -> void:
- if not is_main_scene_set(target_path):
- open_main_scene_confirmation_dialog(target_path)
- return
- _check_theme_needs_updating(target_path)
-
-func open_main_scene_confirmation_dialog(target_path : String) -> void:
- var main_confirmation_scene : PackedScene = load(get_plugin_path() + "installer/main_scene_confirmation_dialog.tscn")
- var main_confirmation_instance : ConfirmationDialog = main_confirmation_scene.instantiate()
- var new_main_scene_path = target_path + MAIN_SCENE_RELATIVE_PATH
- if main_confirmation_instance.has_method(&"set_main_scene_text"):
- main_confirmation_instance.set_main_scene_text(new_main_scene_path)
- main_confirmation_instance.confirmed.connect(_update_main_scene.bind(target_path, new_main_scene_path))
- main_confirmation_instance.canceled.connect(_check_theme_needs_updating.bind(target_path))
- add_child(main_confirmation_instance)
-
-func _open_play_opening_confirmation_dialog(target_path : String) -> void:
- var play_confirmation_scene : PackedScene = load(get_plugin_path() + "installer/play_opening_confirmation_dialog.tscn")
- var play_confirmation_instance : ConfirmationDialog = play_confirmation_scene.instantiate()
- play_confirmation_instance.confirmed.connect(_run_opening_scene.bind(target_path))
- play_confirmation_instance.canceled.connect(_check_main_scene_needs_updating.bind(target_path))
- add_child(play_confirmation_instance)
-
-func _open_delete_examples_confirmation_dialog(target_path : String) -> void:
- var delete_confirmation_scene : PackedScene = load(get_plugin_path() + "installer/delete_examples_confirmation_dialog.tscn")
- var delete_confirmation_instance : ConfirmationDialog = delete_confirmation_scene.instantiate()
- delete_confirmation_instance.confirmed.connect(_delete_source_examples_directory.bind(target_path))
- delete_confirmation_instance.canceled.connect(_check_main_scene_needs_updating.bind(target_path))
- add_child(delete_confirmation_instance)
-
-func open_delete_examples_short_confirmation_dialog() -> void:
- var delete_confirmation_scene : PackedScene = load(get_plugin_path() + "installer/delete_examples_short_confirmation_dialog.tscn")
- var delete_confirmation_instance : ConfirmationDialog = delete_confirmation_scene.instantiate()
- delete_confirmation_instance.confirmed.connect(_delete_source_examples_directory)
- add_child(delete_confirmation_instance)
-
-func _run_opening_scene(target_path : String) -> void:
- var opening_scene_path = target_path + MAIN_SCENE_RELATIVE_PATH
- EditorInterface.play_custom_scene(opening_scene_path)
- var timer: Timer = Timer.new()
- var callable := func() -> void:
- if EditorInterface.is_playing_scene(): return
- timer.stop()
- _open_delete_examples_confirmation_dialog(target_path)
- timer.queue_free()
- timer.timeout.connect(callable)
- add_child(timer)
- timer.start(RUNNING_CHECK_DELAY)
-
-func _delete_directory_recursive(dir_path : String) -> void:
- if not dir_path.ends_with("/"):
- dir_path += "/"
- var dir = DirAccess.open(dir_path)
- if dir:
- dir.list_dir_begin()
- var file_name = dir.get_next()
- var error : Error
- while file_name != "" and error == 0:
- var relative_path = dir_path.trim_prefix(get_plugin_examples_path())
- var full_file_path = dir_path + file_name
- if dir.current_is_dir():
- _delete_directory_recursive(full_file_path)
- else:
- error = dir.remove(file_name)
- file_name = dir.get_next()
- if error:
- push_error("plugin error - deleting path: %s" % error)
- else:
- push_error("plugin error - accessing path: %s" % dir)
- dir.remove(dir_path)
-
-func _delete_source_examples_directory(target_path : String = "") -> void:
- var examples_path = get_plugin_examples_path()
- var dir := DirAccess.open("res://")
- if dir.dir_exists(examples_path):
- _delete_directory_recursive(examples_path)
- EditorInterface.get_resource_filesystem().scan()
- if not target_path.is_empty():
- _check_main_scene_needs_updating(target_path)
-
-func _raw_copy_file_path(file_path : String, destination_path : String) -> Error:
- var dir := DirAccess.open("res://")
- var error := dir.copy(file_path, destination_path)
- return error
-
-func _copy_override_file() -> void:
- var override_path : String = get_plugin_path() + OVERRIDE_RELATIVE_PATH
- _raw_copy_file_path(override_path, "res://"+override_path.get_file())
-
-func _update_app_config_paths(target_path : String) -> void:
- var file_path : String = get_app_config_path()
- var file_text : String = FileAccess.get_file_as_string(file_path)
- var prefixes : Array[String] = [
- "main_menu_scene_path",
- "game_scene_path",
- "ending_scene_path",
- ]
- for prefix in prefixes:
- prefix += " = \""
- var target_string = prefix + get_plugin_examples_path()
- var replacing_string = prefix + target_path
- file_text = file_text.replace(target_string, replacing_string)
- var file = FileAccess.open(file_path, FileAccess.WRITE)
- file.store_string(file_text)
- file.close()
-
-func _update_scene_loader_path(target_path : String) -> void:
- var file_path : String = get_scene_loader_path()
- var file_text : String = FileAccess.get_file_as_string(file_path)
- var prefix : String = "loading_screen_path = \""
- var target_string = prefix + get_plugin_path() + "base/"
- var replacing_string = prefix + target_path
- file_text = file_text.replace(target_string, replacing_string)
- var file = FileAccess.open(file_path, FileAccess.WRITE)
- file.store_string(file_text)
- file.close()
-
-func _add_translations() -> void:
- var dir := DirAccess.open("res://")
- var translations : PackedStringArray = ProjectSettings.get_setting("internationalization/locale/translations", [])
- for available_translation in AVAILABLE_TRANSLATIONS:
- var translation_path = get_plugin_path() + ("base/translations/menus_translations.%s.translation" % available_translation)
- if dir.file_exists(translation_path) and translation_path not in translations:
- translations.append(translation_path)
- ProjectSettings.set_setting("internationalization/locale/translations", translations)
-
-func _is_app_config_path_updated(target_path) -> bool:
- var file_text : String = FileAccess.get_file_as_string(get_app_config_path())
- var target_string = "main_menu_scene_path = \"" + get_plugin_examples_path()
- return !file_text.contains(target_string)
-
-func _is_scene_loader_path_updated(target_path) -> bool:
- var file_text : String = FileAccess.get_file_as_string(get_scene_loader_path())
- var target_string = "loading_screen_path = \"" + get_plugin_path() + "base/"
- return !file_text.contains(target_string)
-
-func are_autoload_paths_updated() -> bool:
- var copy_path := get_copy_path()
- if copy_path == get_plugin_examples_path(): return false
- return _is_app_config_path_updated(copy_path) and _is_scene_loader_path_updated(copy_path)
-
-func update_autoload_paths(target_path : String) -> void:
- _update_app_config_paths(target_path)
- _update_scene_loader_path(target_path)
-
-func _on_completed_copy_to_directory(target_path : String) -> void:
- ProjectSettings.set_setting(PROJECT_SETTINGS_PATH + "copy_path", target_path)
- ProjectSettings.save()
- update_autoload_paths(target_path)
- _copy_override_file()
- _open_play_opening_confirmation_dialog(target_path)
-
-func open_input_icons_dialog() -> void:
- var input_icons_scene : PackedScene = load(get_plugin_path() + "installer/kenney_input_prompts_installer.tscn")
- var input_icons_instance = input_icons_scene.instantiate()
- input_icons_instance.copy_dir_path = get_copy_path()
- add_child(input_icons_instance)
-
-func open_copy_and_edit_dialog() -> void:
- var copy_and_edit_scene : PackedScene = load(get_plugin_path() + "installer/copy_and_edit_files.tscn")
- var copy_and_edit_instance : CopyAndEdit = copy_and_edit_scene.instantiate()
- copy_and_edit_instance.completed.connect(_on_completed_copy_to_directory)
- copy_and_edit_instance.canceled.connect(_check_main_scene_needs_updating.bind(get_copy_path()))
- add_child(copy_and_edit_instance)
-
-func _open_confirmation_dialog() -> void:
- var confirmation_scene : PackedScene = load(get_plugin_path() + "installer/copy_confirmation_dialog.tscn")
- var confirmation_instance : ConfirmationDialog = confirmation_scene.instantiate()
- confirmation_instance.confirmed.connect(open_copy_and_edit_dialog)
- confirmation_instance.canceled.connect(_check_main_scene_needs_updating.bind(get_copy_path()))
- add_child(confirmation_instance)
-
-func _open_check_plugin_version() -> void:
- if ProjectSettings.has_setting(PROJECT_SETTINGS_PATH + "disable_update_check"):
- if ProjectSettings.get_setting(PROJECT_SETTINGS_PATH + "disable_update_check"):
- return
- else:
- ProjectSettings.set_setting(PROJECT_SETTINGS_PATH + "disable_update_check", false)
- ProjectSettings.save()
- var check_version_scene : PackedScene = load(get_plugin_path() + "installer/check_plugin_version.tscn")
- var check_version_instance : Node = check_version_scene.instantiate()
- check_version_instance.auto_start = true
- check_version_instance.new_version_detected.connect(_add_update_plugin_tool_option)
- add_child(check_version_instance)
-
-func open_update_plugin() -> void:
- var update_plugin_scene : PackedScene = load(get_plugin_path() + "installer/update_plugin.tscn")
- var update_plugin_instance : Node = update_plugin_scene.instantiate()
- update_plugin_instance.auto_start = true
- update_plugin_instance.update_completed.connect(_remove_update_plugin_tool_option)
- add_child(update_plugin_instance)
-
-func open_setup_wizard() -> void:
- var setup_wizard_scene : PackedScene = load(get_plugin_path() + "installer/setup_wizard.tscn")
- var setup_wizard_instance : Node = setup_wizard_scene.instantiate()
- add_child(setup_wizard_instance)
-
-func _add_update_plugin_tool_option(new_version : String) -> void:
- update_plugin_tool_string = "Update %s to v%s..." % [get_plugin_name(), new_version]
- add_tool_menu_item(update_plugin_tool_string, open_update_plugin)
-
-func _remove_update_plugin_tool_option() -> void:
- if update_plugin_tool_string.is_empty(): return
- remove_tool_menu_item(update_plugin_tool_string)
- update_plugin_tool_string = ""
-
-func _show_plugin_dialogues() -> void:
- if ProjectSettings.has_setting(PROJECT_SETTINGS_PATH + "disable_install_wizard") :
- if ProjectSettings.get_setting(PROJECT_SETTINGS_PATH + "disable_install_wizard") :
- return
- _open_confirmation_dialog()
- ProjectSettings.set_setting(PROJECT_SETTINGS_PATH + "disable_install_wizard", true)
- ProjectSettings.save()
-
-func _resave_if_recently_opened() -> void:
- if Engine.get_physics_frames() < MAX_PHYSICS_FRAMES_FROM_START:
- var timer: Timer = Timer.new()
- var callable := func():
- if Engine.get_frames_per_second() >= 10:
- timer.stop()
- EditorInterface.save_scene()
- timer.queue_free()
- timer.timeout.connect(callable)
- add_child(timer)
- timer.start(OPEN_EDITOR_DELAY)
-
-func _add_audio_bus(bus_name : String) -> void:
- var has_bus_name := false
- for bus_idx in range(AudioServer.bus_count):
- var existing_bus_name := AudioServer.get_bus_name(bus_idx)
- if existing_bus_name == bus_name:
- has_bus_name = true
- break
- if not has_bus_name:
- AudioServer.add_bus()
- var new_bus_idx := AudioServer.bus_count - 1
- AudioServer.set_bus_name(new_bus_idx, bus_name)
- AudioServer.set_bus_send(new_bus_idx, &"Master")
- ProjectSettings.save()
-
-func _install_audio_busses() -> void:
- if ProjectSettings.has_setting(PROJECT_SETTINGS_PATH + "disable_install_audio_busses"):
- if ProjectSettings.get_setting(PROJECT_SETTINGS_PATH + "disable_install_audio_busses") :
- return
- _add_audio_bus("Music")
- _add_audio_bus("SFX")
- ProjectSettings.set_setting(PROJECT_SETTINGS_PATH + "disable_install_audio_busses", true)
- ProjectSettings.save()
-
-func _add_tool_options() -> void:
- add_tool_menu_item("Run " + get_plugin_name() + " Setup...", open_setup_wizard)
- _open_check_plugin_version()
-
-func _remove_tool_options() -> void:
- remove_tool_menu_item("Run " + get_plugin_name() + " Setup...")
- _remove_update_plugin_tool_option()
-
-func _enter_tree() -> void:
- add_autoload_singleton("AppConfig", get_plugin_path() + "base/scenes/autoloads/app_config.tscn")
- add_autoload_singleton("SceneLoader", get_plugin_path() + "base/scenes/autoloads/scene_loader.tscn")
- add_autoload_singleton("ProjectMusicController", get_plugin_path() + "base/scenes/autoloads/project_music_controller.tscn")
- add_autoload_singleton("ProjectUISoundController", get_plugin_path() + "base/scenes/autoloads/project_ui_sound_controller.tscn")
- _install_audio_busses()
- _add_tool_options()
- _add_translations()
- _show_plugin_dialogues()
- _resave_if_recently_opened()
- instance = self
-
-func _exit_tree() -> void:
- remove_autoload_singleton("AppConfig")
- remove_autoload_singleton("SceneLoader")
- remove_autoload_singleton("ProjectMusicController")
- remove_autoload_singleton("ProjectUISoundController")
- _remove_tool_options()
- instance = null
diff --git a/godot/addons/maaacks_game_template/maaacks_game_template.gd.uid b/godot/addons/maaacks_game_template/maaacks_game_template.gd.uid
deleted file mode 100644
index 2b07b65..0000000
--- a/godot/addons/maaacks_game_template/maaacks_game_template.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bndaaa5when2r
diff --git a/godot/addons/maaacks_game_template/media/.gdignore b/godot/addons/maaacks_game_template/media/.gdignore
deleted file mode 100644
index e69de29..0000000
diff --git a/godot/addons/maaacks_game_template/media/credits_scene-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/credits_scene-icon-black-transparent-256x256.png
deleted file mode 100644
index 42fa46f..0000000
Binary files a/godot/addons/maaacks_game_template/media/credits_scene-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/game-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/game-icon-black-transparent-256x256.png
deleted file mode 100644
index ea70a32..0000000
Binary files a/godot/addons/maaacks_game_template/media/game-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/gwj-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/gwj-icon-black-transparent-256x256.png
deleted file mode 100644
index 598f426..0000000
Binary files a/godot/addons/maaacks_game_template/media/gwj-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/input_remapping-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/input_remapping-icon-black-transparent-256x256.png
deleted file mode 100644
index 6e8dd7d..0000000
Binary files a/godot/addons/maaacks_game_template/media/input_remapping-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/maaack-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/maaack-black-transparent-256x256.png
deleted file mode 100644
index 23523f6..0000000
Binary files a/godot/addons/maaacks_game_template/media/maaack-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/maaacks-plugin-suite-256x256.gif b/godot/addons/maaacks_game_template/media/maaacks-plugin-suite-256x256.gif
deleted file mode 100644
index d5ab8fb..0000000
Binary files a/godot/addons/maaacks_game_template/media/maaacks-plugin-suite-256x256.gif and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/menus-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/menus-icon-black-transparent-256x256.png
deleted file mode 100644
index 531ffaa..0000000
Binary files a/godot/addons/maaacks_game_template/media/menus-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/music_controller-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/music_controller-icon-black-transparent-256x256.png
deleted file mode 100644
index 0e7e1dc..0000000
Binary files a/godot/addons/maaacks_game_template/media/music_controller-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/options-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/options-icon-black-transparent-256x256.png
deleted file mode 100644
index ca674b9..0000000
Binary files a/godot/addons/maaacks_game_template/media/options-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/scene_loader-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/scene_loader-icon-black-transparent-256x256.png
deleted file mode 100644
index a40ee1b..0000000
Binary files a/godot/addons/maaacks_game_template/media/scene_loader-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-juliocacko-1.png b/godot/addons/maaacks_game_template/media/screenshot-5-juliocacko-1.png
deleted file mode 100644
index f9b609d..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-juliocacko-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-juliocacko-2.png b/godot/addons/maaacks_game_template/media/screenshot-5-juliocacko-2.png
deleted file mode 100644
index 51da311..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-juliocacko-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-1.png b/godot/addons/maaacks_game_template/media/screenshot-5-kenney-1.png
deleted file mode 100644
index 8286e7f..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-2.png b/godot/addons/maaacks_game_template/media/screenshot-5-kenney-2.png
deleted file mode 100644
index ba8455c..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-3.png b/godot/addons/maaacks_game_template/media/screenshot-5-kenney-3.png
deleted file mode 100644
index ad1eebc..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-4.png b/godot/addons/maaacks_game_template/media/screenshot-5-kenney-4.png
deleted file mode 100644
index 19c2343..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-kenney-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-xelu-1.png b/godot/addons/maaacks_game_template/media/screenshot-5-xelu-1.png
deleted file mode 100644
index 157614c..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-xelu-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-5-xelu-2.png b/godot/addons/maaacks_game_template/media/screenshot-5-xelu-2.png
deleted file mode 100644
index acb0964..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-5-xelu-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-1.png
deleted file mode 100644
index d5d504c..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-2.png
deleted file mode 100644
index 0020cd7..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-3.png
deleted file mode 100644
index cb10028..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-4.png
deleted file mode 100644
index 02ccf47..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-5.png
deleted file mode 100644
index afae5fa..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-6.png b/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-6.png
deleted file mode 100644
index a2a0161..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-audio-options-6.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-1.png
deleted file mode 100644
index 13b9478..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-2.png
deleted file mode 100644
index c9c6936..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-3.png
deleted file mode 100644
index d1652b0..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-4.png
deleted file mode 100644
index 8e649cd..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-5.png
deleted file mode 100644
index f882582..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-6.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-6.png
deleted file mode 100644
index 89d9cad..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-6.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-7.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-7.png
deleted file mode 100644
index 37dc102..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-7.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-8.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-8.png
deleted file mode 100644
index 35253e0..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-8.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-9.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-list-9.png
deleted file mode 100644
index c863208..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-list-9.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-1.png
deleted file mode 100644
index e308813..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-2.png
deleted file mode 100644
index 6236ced..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-3.png
deleted file mode 100644
index 6e42860..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-4.png
deleted file mode 100644
index e4f1377..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-5.png
deleted file mode 100644
index 9a6c9cb..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-sensitivity-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-1.png
deleted file mode 100644
index cb187d8..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-2.png
deleted file mode 100644
index 32e03ff..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-3.png
deleted file mode 100644
index b7c0305..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-4.png
deleted file mode 100644
index 062d982..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-5.png
deleted file mode 100644
index af86c6c..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-input-tree-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-1.png
deleted file mode 100644
index eb1e243..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-2.png
deleted file mode 100644
index 5c8ecdb..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-3.png
deleted file mode 100644
index 61b3583..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-lost-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-select-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-select-1.png
deleted file mode 100644
index 1bc5dd8..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-select-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-state-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-state-1.png
deleted file mode 100644
index 69e11a1..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-state-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-state-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-state-2.png
deleted file mode 100644
index 69fab0b..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-state-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-state-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-state-3.png
deleted file mode 100644
index f90392c..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-state-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-won-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-won-1.png
deleted file mode 100644
index b1ce24f..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-won-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-won-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-won-2.png
deleted file mode 100644
index d9042d1..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-won-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-level-won-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-level-won-3.png
deleted file mode 100644
index d0a02f0..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-level-won-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-1.png
deleted file mode 100644
index 789ed03..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-2.png
deleted file mode 100644
index 7aefce7..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-3.png
deleted file mode 100644
index ecaa3ed..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-4.png
deleted file mode 100644
index 56e40c0..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-loading-screen-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-1.png
deleted file mode 100644
index ebbfeff..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-2.png
deleted file mode 100644
index 6aa9637..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-3.png
deleted file mode 100644
index b7f6caa..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-4.png
deleted file mode 100644
index e5285ab..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-5.png
deleted file mode 100644
index 871aeb7..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-main-menu-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-mini-options-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-mini-options-1.png
deleted file mode 100644
index 57e1e58..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-mini-options-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-mini-options-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-mini-options-2.png
deleted file mode 100644
index 22c5133..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-mini-options-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-1.png
deleted file mode 100644
index 2e2a30b..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-2.png
deleted file mode 100644
index 5e30fa2..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-3.png
deleted file mode 100644
index 795eac5..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-4.png
deleted file mode 100644
index c248cf1..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-5.png
deleted file mode 100644
index 5cb7c36..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-pause-menu-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-1.png
deleted file mode 100644
index cac8c8e..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-10.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-10.png
deleted file mode 100644
index 989ebcf..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-10.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-11.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-11.png
deleted file mode 100644
index c970f2e..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-11.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-12.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-12.png
deleted file mode 100644
index 50d2728..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-12.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-2.png
deleted file mode 100644
index ccbcf1a..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-3.png
deleted file mode 100644
index 6c696fa..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-4.png
deleted file mode 100644
index 63bc601..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-5.png
deleted file mode 100644
index a5f85a3..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-6.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-6.png
deleted file mode 100644
index b9367a8..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-6.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-7.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-7.png
deleted file mode 100644
index 3108e07..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-7.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-8.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-8.png
deleted file mode 100644
index 2f3838a..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-8.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-9.png b/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-9.png
deleted file mode 100644
index ebdb9be..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-theme-selector-9.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-1.png b/godot/addons/maaacks_game_template/media/screenshot-6-video-options-1.png
deleted file mode 100644
index 6cc7c52..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-2.png b/godot/addons/maaacks_game_template/media/screenshot-6-video-options-2.png
deleted file mode 100644
index efbdd68..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-3.png b/godot/addons/maaacks_game_template/media/screenshot-6-video-options-3.png
deleted file mode 100644
index 928a2ee..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-4.png b/godot/addons/maaacks_game_template/media/screenshot-6-video-options-4.png
deleted file mode 100644
index 16ff796..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-5.png b/godot/addons/maaacks_game_template/media/screenshot-6-video-options-5.png
deleted file mode 100644
index f11b1e1..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-6.png b/godot/addons/maaacks_game_template/media/screenshot-6-video-options-6.png
deleted file mode 100644
index 54a5228..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-6-video-options-6.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-audio-options-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-audio-options-1.png
deleted file mode 100644
index e1101bd..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-audio-options-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-credits-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-credits-1.png
deleted file mode 100644
index 71ae041..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-credits-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-credits-2.png b/godot/addons/maaacks_game_template/media/screenshot-7-credits-2.png
deleted file mode 100644
index 1c8d283..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-credits-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-1.png
deleted file mode 100644
index 2df47c5..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-2.png b/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-2.png
deleted file mode 100644
index 77fd085..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-3.png b/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-3.png
deleted file mode 100644
index 36916d7..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-4.png b/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-4.png
deleted file mode 100644
index 263973e..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-end-credits-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-game-won-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-game-won-1.png
deleted file mode 100644
index 3a5be94..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-game-won-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-input-options-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-input-options-1.png
deleted file mode 100644
index a19f930..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-input-options-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-1.png
deleted file mode 100644
index bb3024e..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-2.png b/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-2.png
deleted file mode 100644
index 360ce3d..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-3.png b/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-3.png
deleted file mode 100644
index 8fcfa2a..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-4.png b/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-4.png
deleted file mode 100644
index fa6b50a..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-5.png b/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-5.png
deleted file mode 100644
index 24a8dbb..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-input-remapping-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-level-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-level-1.png
deleted file mode 100644
index 02f8bc0..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-level-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-level-2.png b/godot/addons/maaacks_game_template/media/screenshot-7-level-2.png
deleted file mode 100644
index 9243e20..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-level-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-level-lost-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-level-lost-1.png
deleted file mode 100644
index 2caca8d..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-level-lost-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-level-won-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-level-won-1.png
deleted file mode 100644
index 3bef366..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-level-won-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-1.png
deleted file mode 100644
index 83d2ce4..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-2.png b/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-2.png
deleted file mode 100644
index 3f26c4e..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-2.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-3.png b/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-3.png
deleted file mode 100644
index a4a4221..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-3.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-4.png b/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-4.png
deleted file mode 100644
index 37714f5..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-4.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-5.png b/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-5.png
deleted file mode 100644
index b477e8e..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-5.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-6.png b/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-6.png
deleted file mode 100644
index 3717561..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-loading-screen-6.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-main-menu-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-main-menu-1.png
deleted file mode 100644
index 7edf067..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-main-menu-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-tutorial-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-tutorial-1.png
deleted file mode 100644
index c4963d6..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-tutorial-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/screenshot-7-video-options-1.png b/godot/addons/maaacks_game_template/media/screenshot-7-video-options-1.png
deleted file mode 100644
index 65fe081..0000000
Binary files a/godot/addons/maaacks_game_template/media/screenshot-7-video-options-1.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/thumbnail-game-a-darkness-like-gravity.png b/godot/addons/maaacks_game_template/media/thumbnail-game-a-darkness-like-gravity.png
deleted file mode 100644
index 880e5cb..0000000
Binary files a/godot/addons/maaacks_game_template/media/thumbnail-game-a-darkness-like-gravity.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/thumbnail-game-rent-seek-kill.png b/godot/addons/maaacks_game_template/media/thumbnail-game-rent-seek-kill.png
deleted file mode 100644
index 9b67b6d..0000000
Binary files a/godot/addons/maaacks_game_template/media/thumbnail-game-rent-seek-kill.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/thumbnail-game-spud-customs.png b/godot/addons/maaacks_game_template/media/thumbnail-game-spud-customs.png
deleted file mode 100644
index 59a2d7e..0000000
Binary files a/godot/addons/maaacks_game_template/media/thumbnail-game-spud-customs.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/media/ui_sound_controller-icon-black-transparent-256x256.png b/godot/addons/maaacks_game_template/media/ui_sound_controller-icon-black-transparent-256x256.png
deleted file mode 100644
index 30cbe58..0000000
Binary files a/godot/addons/maaacks_game_template/media/ui_sound_controller-icon-black-transparent-256x256.png and /dev/null differ
diff --git a/godot/addons/maaacks_game_template/plugin.cfg b/godot/addons/maaacks_game_template/plugin.cfg
deleted file mode 100644
index 13c726a..0000000
--- a/godot/addons/maaacks_game_template/plugin.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-[plugin]
-
-name="Maaack's Game Template"
-description="Template with a main menu, options menus, pause menu, credits, scene loader, extra tools, and an example game scene.
-
-Created in collaboration with members of the Godot Wild Jam community."
-author="Marek Belski"
-version="1.3.0"
-script="maaacks_game_template.gd"
diff --git a/godot/addons/maaacks_game_template/utilities/api_client.gd b/godot/addons/maaacks_game_template/utilities/api_client.gd
deleted file mode 100644
index f1077c4..0000000
--- a/godot/addons/maaacks_game_template/utilities/api_client.gd
+++ /dev/null
@@ -1,154 +0,0 @@
-@tool
-extends Node
-
-
-signal response_received(response_body)
-signal request_failed(error)
-
-const RESULT_CANT_CONNECT = "Failed to connect"
-const RESULT_CANT_RESOLVE = "Failed to resolve"
-const RESULT_CONNECTION_ERROR = "Connection error"
-const RESULT_TIMEOUT = "Connection timeout"
-const RESULT_SERVER_ERROR = "Server error"
-const REQUEST_FAILED = "Error in the request"
-const REQUEST_TIMEOUT = "Request timed out on the client side"
-const URL_NOT_SET = "URL parameter is not set"
-const PARSE_FAILED = "Parsing failed"
-
-## Location of the API endpoint.
-@export var api_url : String
-## HTTP request method to use. Typically GET or POST.
-@export var request_method : HTTPClient.Method = HTTPClient.METHOD_POST
-@export_group("Advanced")
-## Location of an API key file, if authorization is required by the endpoint.
-@export_file("*.txt") var api_key_file : String
-## Time in seconds before the request fails due to timeout.
-@export var request_timeout : float = 0.0
-@export var _send_request_action : bool = false :
- set(value):
- if value and Engine.is_editor_hint():
- request()
-# For Godot 4.4
-# @export_tool_button("Send Request") var _send_request_action = request
-
-
-@onready var _http_request : HTTPRequest = $HTTPRequest
-@onready var _timeout_timer : Timer= $TimeoutTimer
-
-## State flag for whether the connection has timed out on the client-side.
-var timed_out : bool = false
-
-func get_http_request() -> HTTPRequest:
- return _http_request
-
-func get_api_key() -> String:
- if api_key_file.is_empty():
- return ""
- var file := FileAccess.open(api_key_file, FileAccess.READ)
- var error := FileAccess.get_open_error()
- if error != OK:
- push_error("API Key reading error: %d" % error)
- return ""
- var content = file.get_as_text()
- file.close()
- return content
-
-func get_api_url() -> String:
- return api_url
-
-func get_api_method() -> int:
- return request_method
-
-func mock_empty_body() -> String:
- var form : Dictionary = {}
- return JSON.stringify(form)
-
-func mock_request(body : String):
- await(get_tree().create_timer(10.0).timeout)
- _on_request_completed(HTTPRequest.RESULT_SUCCESS, "200", [], body)
-
-func request(body : String = "", request_headers : Array = []) -> void:
- var local_http_request : HTTPRequest = get_http_request()
- var key : String = get_api_key()
- var url : String = get_api_url()
- var method : int = get_api_method()
- if url.is_empty():
- request_failed.emit(URL_NOT_SET)
- push_error(URL_NOT_SET)
- return
- request_headers.append("Content-Type: application/json")
- if key:
- request_headers.append("x-api-key: %s" % key)
- if request_timeout > 0.0:
- local_http_request.timeout = request_timeout
- var error = local_http_request.request(url, request_headers, method, body)
- if error != OK:
- request_failed.emit(REQUEST_FAILED)
- push_error("HTTP Request error: %d" % error)
- return
- if request_timeout > 0.0:
- _timeout_timer.start(request_timeout + 1.0)
-
-func request_raw(data : PackedByteArray = [], request_headers : Array = []) -> void:
- var local_http_request : HTTPRequest = get_http_request()
- var key : String = get_api_key()
- var url : String = get_api_url()
- var method : int = get_api_method()
- if url.is_empty():
- request_failed.emit(URL_NOT_SET)
- push_error(URL_NOT_SET)
- return
- request_headers.append("Content-Type: application/json")
- if key:
- request_headers.append("x-api-key: %s" % key)
- if request_timeout > 0.0:
- local_http_request.timeout = request_timeout
- var error = local_http_request.request_raw(url, request_headers, method, data)
- if error != OK:
- request_failed.emit(REQUEST_FAILED)
- push_error("HTTP Request error: %d" % error)
- return
- if request_timeout > 0.0:
- _timeout_timer.start(request_timeout + 1.0)
-
-func _on_request_completed(result, response_code, headers, body) -> void:
- # If already timed out on client-side, then return.
- if timed_out: return
- _timeout_timer.stop()
- if result == HTTPRequest.RESULT_SUCCESS:
- var body_string : String
- if body is PackedByteArray:
- body_string = body.get_string_from_utf8()
- elif body is String:
- body_string = body
- var json := JSON.new()
- var error = json.parse(body_string)
- if error != OK:
- request_failed.emit(PARSE_FAILED)
- push_error("Parse error: %d" % error)
- return
- var parsed_data = json.data
- response_received.emit(json.data)
- else:
- var error_message : String
- match(result):
- HTTPRequest.RESULT_CANT_CONNECT:
- error_message = RESULT_CANT_CONNECT
- HTTPRequest.RESULT_CANT_RESOLVE:
- error_message = RESULT_CANT_RESOLVE
- HTTPRequest.RESULT_CONNECTION_ERROR:
- error_message = RESULT_CONNECTION_ERROR
- HTTPRequest.RESULT_TIMEOUT:
- error_message = RESULT_TIMEOUT
- _:
- error_message = RESULT_SERVER_ERROR
- request_failed.emit(error_message)
- push_error("HTTP Result error: %d" % result)
-
-func _on_http_request_request_completed(result, response_code, headers, body) -> void:
- _on_request_completed(result, response_code, headers, body)
-
-func _on_timeout_timer_timeout() -> void:
- timed_out = true
- request_failed.emit(REQUEST_TIMEOUT)
- push_warning(REQUEST_TIMEOUT)
diff --git a/godot/addons/maaacks_game_template/utilities/api_client.gd.uid b/godot/addons/maaacks_game_template/utilities/api_client.gd.uid
deleted file mode 100644
index 335a8e4..0000000
--- a/godot/addons/maaacks_game_template/utilities/api_client.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://s0j82xowl675
diff --git a/godot/addons/maaacks_game_template/utilities/api_client.tscn b/godot/addons/maaacks_game_template/utilities/api_client.tscn
deleted file mode 100644
index 6d7f41c..0000000
--- a/godot/addons/maaacks_game_template/utilities/api_client.tscn
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://drhhakm62vjsy"]
-
-[ext_resource type="Script" uid="uid://s0j82xowl675" path="res://addons/maaacks_game_template/utilities/api_client.gd" id="1_c5ofg"]
-
-[node name="APIClient" type="Node"]
-script = ExtResource("1_c5ofg")
-
-[node name="HTTPRequest" type="HTTPRequest" parent="."]
-
-[node name="TimeoutTimer" type="Timer" parent="."]
-
-[connection signal="request_completed" from="HTTPRequest" to="." method="_on_http_request_request_completed"]
-[connection signal="timeout" from="TimeoutTimer" to="." method="_on_timeout_timer_timeout"]
diff --git a/godot/addons/maaacks_game_template/utilities/download_and_extract.gd b/godot/addons/maaacks_game_template/utilities/download_and_extract.gd
deleted file mode 100644
index 17fec3d..0000000
--- a/godot/addons/maaacks_game_template/utilities/download_and_extract.gd
+++ /dev/null
@@ -1,284 +0,0 @@
-@tool
-## Utility node for downloading and unzipping a file from a URL to an extraction destination.
-extends Node
-
-## Sent when the run has completed.
-signal run_completed
-## Sent when a response is received from the server.
-signal response_received(response_body)
-## Sent when the run has failed or exited early for any reason.
-signal run_failed(error : String)
-## Sent when the zip file has finished saving.
-signal zip_saved
-
-const TEMPORARY_ZIP_PATH = "res://temp.zip"
-const RESULT_CANT_CONNECT = "Failed to connect"
-const RESULT_CANT_RESOLVE = "Failed to resolve"
-const RESULT_CONNECTION_ERROR = "Connection error"
-const RESULT_TIMEOUT = "Connection timeout"
-const RESULT_SERVER_ERROR = "Server error"
-const REQUEST_FAILED = "Error in the request"
-const REQUEST_TIMEOUT = "Request timed out on the client side"
-const DOWNLOAD_IN_PROGRESS = "Download already in progress"
-const EXTRACT_IN_PROGRESS = "Extract already in progress"
-const DELETE_IN_PROGRESS = "Delete already in progress"
-const FAILED_TO_SAVE_ZIP_FILE = "Failed to save the zip file"
-const FAILED_TO_MAKE_EXTRACT_DIR = "Failed to make extract directory"
-const FAILED_TO_READ_ZIP_FILE = "Failed to read the zip file"
-const DOWNLOADED_ZIP_FILE_DOESNT_EXIST = "The downloaded ZIP file doesn't exist"
-const URL_NOT_SET = "URL parameter is not set"
-
-enum DownloadAndExtractStage{
- NONE,
- DOWNLOAD,
- SAVE,
- EXTRACT,
- DELETE,
-}
-
-## Location of the zip file to be downloaded.
-@export var zip_url : String
-## Path where the zipped files are to be extracted.
-@export_dir var extract_path : String
-@export_group("Advanced")
-## If not empty, zipped file paths that do not contain a match to the string will be ignored.
-@export var path_match_string : String = ""
-## Assuming zip file contains a single base directory, the flag copies all of the contents,
-## as if they were at the base of the zip file. It never makes the base directory locally.
-@export var skip_base_zip_dir : bool = false
-## Forces a download and extraction even if the files already exist.
-@export var force : bool = false
-## Path where the zip file will be stored.
-@export var zip_file_path : String = TEMPORARY_ZIP_PATH
-## Flag to delete a downloaded zip file after the contents are extracted.
-@export var delete_zip_file : bool = true
-## Ratio of processing time that should be spent on extracting files.
-@export_range(0.0, 1.0) var process_time_ratio : float = 0.75
-## Seconds of delay added between saving the zip file and extracting it.
-@export_range(0.0, 3.0) var extraction_delay : float = 0.25
-## Duration to wait before the request times out.
-@export var request_timeout : float = 0.0
-@export var _start_run_action : bool = false :
- set(value):
- if value and Engine.is_editor_hint():
- run()
-# For Godot 4.4
-# @export_tool_button("Download & Extract") var _start_run_action = run
-
-
-@onready var _http_request : HTTPRequest = $HTTPRequest
-@onready var _timeout_timer : Timer= $TimeoutTimer
-
-## State flag for whether the connection has timed out on the client-side.
-var timed_out : bool = false
-## Current stage of the download and extract process.
-var stage : DownloadAndExtractStage = DownloadAndExtractStage.NONE
-var zip_reader : ZIPReader = ZIPReader.new()
-var zipped_file_paths : PackedStringArray = []
-var extracted_file_paths : Array[String] = []
-var skipped_file_paths : Array[String] = []
-var downloaded_zip_file : bool = false
-var base_zip_path : String = ""
-var _save_progress : float = 0.0
-
-func get_http_request() -> HTTPRequest:
- return _http_request
-
-func get_zip_url() -> String:
- return zip_url
-
-func _zip_exists() -> bool:
- return FileAccess.file_exists(zip_file_path)
-
-func get_request_method() -> int:
- return HTTPClient.METHOD_GET
-
-## Sends the request to download the target zip file, and then extracts the contents.
-func run(request_headers : Array = []) -> void:
- if stage == DownloadAndExtractStage.DOWNLOAD:
- run_failed.emit(DOWNLOAD_IN_PROGRESS)
- push_warning(DOWNLOAD_IN_PROGRESS)
- return
- if _zip_exists() and not force:
- _extract_files.call_deferred()
- return
- var local_http_request : HTTPRequest = get_http_request()
- var url : String = get_zip_url()
- var method : int = get_request_method()
- if url.is_empty():
- run_failed.emit(URL_NOT_SET)
- push_error(URL_NOT_SET)
- return
- if request_timeout > 0.0:
- local_http_request.timeout = request_timeout
- var error = local_http_request.request(url, request_headers, method)
- if error != OK:
- run_failed.emit(REQUEST_FAILED)
- push_error("HTTP Request error: %d" % error)
- return
- if request_timeout > 0.0:
- _timeout_timer.start(request_timeout + 1.0)
- stage = DownloadAndExtractStage.DOWNLOAD
-
-func _delete_zip_file() -> void:
- if not delete_zip_file or not downloaded_zip_file: return
- if stage == DownloadAndExtractStage.DELETE:
- run_failed.emit(DELETE_IN_PROGRESS)
- push_warning(DELETE_IN_PROGRESS)
- return
- stage = DownloadAndExtractStage.DELETE
- DirAccess.remove_absolute(zip_file_path)
- downloaded_zip_file = false
-
-func _save_zip_file(body : PackedByteArray) -> void:
- stage = DownloadAndExtractStage.SAVE
- var file = FileAccess.open(zip_file_path, FileAccess.WRITE)
- if not file:
- run_failed.emit(FAILED_TO_SAVE_ZIP_FILE)
- push_error(FAILED_TO_SAVE_ZIP_FILE)
- return
- file.store_buffer(body)
- file.close()
- downloaded_zip_file = true
- zip_saved.emit()
-
-func extract_path_exists() -> bool:
- return DirAccess.dir_exists_absolute(extract_path)
-
-func _make_extract_path() -> void:
- var err := DirAccess.make_dir_recursive_absolute(extract_path)
- if err != OK:
- run_failed.emit(FAILED_TO_MAKE_EXTRACT_DIR)
- push_error(FAILED_TO_MAKE_EXTRACT_DIR)
-
-func _extract_files() -> void:
- if stage == DownloadAndExtractStage.EXTRACT:
- run_failed.emit(EXTRACT_IN_PROGRESS)
- push_warning(EXTRACT_IN_PROGRESS)
- return
- stage = DownloadAndExtractStage.EXTRACT
- if not _zip_exists():
- run_failed.emit(DOWNLOADED_ZIP_FILE_DOESNT_EXIST)
- push_error(DOWNLOADED_ZIP_FILE_DOESNT_EXIST)
- return
- if not extract_path_exists(): _make_extract_path()
- var error = zip_reader.open(zip_file_path)
- if error != OK:
- run_failed.emit(FAILED_TO_READ_ZIP_FILE)
- push_error("ZIP Reader error: %d" % error)
- return
- zipped_file_paths = zip_reader.get_files()
- if skip_base_zip_dir:
- base_zip_path = zipped_file_paths[0]
- if not base_zip_path.ends_with("/"):
- push_warning("Skipping extracting base path, but it is not a directory.")
- zipped_file_paths.remove_at(0)
-
-func _on_request_completed(result, response_code, headers, body) -> void:
- # If already timed out on client-side, then return.
- if timed_out: return
- _timeout_timer.stop()
- if _zip_exists(): _delete_zip_file()
- if result == HTTPRequest.RESULT_SUCCESS:
- if body is PackedByteArray:
- response_received.emit(body)
- _save_zip_file(body)
- _save_progress = 0.0
- var tween = create_tween()
- tween.tween_property(self, "_save_progress", 1.0, extraction_delay)
- await tween.finished
- _extract_files.call_deferred()
- else:
- var error_message : String
- match(result):
- HTTPRequest.RESULT_CANT_CONNECT:
- error_message = RESULT_CANT_CONNECT
- HTTPRequest.RESULT_CANT_RESOLVE:
- error_message = RESULT_CANT_RESOLVE
- HTTPRequest.RESULT_CONNECTION_ERROR:
- error_message = RESULT_CONNECTION_ERROR
- HTTPRequest.RESULT_TIMEOUT:
- error_message = RESULT_TIMEOUT
- _:
- error_message = RESULT_SERVER_ERROR
- run_failed.emit(error_message)
- push_error("HTTP Result error: %d" % result)
-
-func _on_http_request_request_completed(result, response_code, headers, body) -> void:
- _on_request_completed(result, response_code, headers, body)
-
-func _on_timeout_timer_timeout() -> void:
- timed_out = true
- run_failed.emit(REQUEST_TIMEOUT)
- push_warning(REQUEST_TIMEOUT)
-
-func get_progress() -> float:
- if stage == DownloadAndExtractStage.DOWNLOAD:
- return get_download_progress()
- elif stage == DownloadAndExtractStage.SAVE:
- return get_save_progress()
- elif stage == DownloadAndExtractStage.EXTRACT:
- return get_extraction_progress()
- return 0.0
-
-func get_save_progress() -> float:
- return _save_progress
-
-func get_extraction_progress() -> float:
- if zipped_file_paths.size() == 0:
- return 0.0
- return float(extracted_file_paths.size()) / float(zipped_file_paths.size())
-
-func get_download_progress() -> float:
- var body_size := _http_request.get_body_size()
- if body_size < 1: return 0.0
- return float(_http_request.get_downloaded_bytes()) / float(body_size)
-
-func _zipped_files_remaining() -> int:
- return zipped_file_paths.size() - (extracted_file_paths.size() + skipped_file_paths.size())
-
-func _extract_next_zipped_file() -> void:
- var path_index = extracted_file_paths.size() + skipped_file_paths.size()
- var zipped_file_path := zipped_file_paths[path_index]
- if path_match_string and not zipped_file_path.contains(path_match_string):
- skipped_file_paths.append(zipped_file_path)
- return
- var extract_path_dir := extract_path
- if not extract_path_dir.ends_with("/"):
- extract_path_dir += "/"
- var full_path := extract_path_dir
- if skip_base_zip_dir:
- full_path += zipped_file_path.replace(base_zip_path, "")
- else:
- full_path += zipped_file_path
- if full_path.ends_with("/"):
- if not DirAccess.dir_exists_absolute(full_path):
- DirAccess.make_dir_recursive_absolute(full_path)
- else:
- if not FileAccess.file_exists(full_path) or force:
- var file_access := FileAccess.open(full_path, FileAccess.WRITE)
- if file_access == null:
- skipped_file_paths.append(zipped_file_path)
- push_error("Failed to open file: %s" % full_path)
- return
- var file_contents = zip_reader.read_file(zipped_file_path)
- file_access.store_buffer(file_contents)
- file_access.close()
- extracted_file_paths.append(full_path)
-
-func _finish_extraction() -> void:
- zip_reader.close()
- _delete_zip_file()
- stage = DownloadAndExtractStage.NONE
- run_completed.emit()
-
-func _process(delta : float) -> void:
- if stage == DownloadAndExtractStage.EXTRACT:
- var frame_start_time : float = Time.get_unix_time_from_system()
- var frame_time : float = 0.0
- while (frame_time < delta * process_time_ratio):
- if _zipped_files_remaining() == 0:
- _finish_extraction()
- break
- _extract_next_zipped_file()
- frame_time = Time.get_unix_time_from_system() - frame_start_time
diff --git a/godot/addons/maaacks_game_template/utilities/download_and_extract.gd.uid b/godot/addons/maaacks_game_template/utilities/download_and_extract.gd.uid
deleted file mode 100644
index d6b5bda..0000000
--- a/godot/addons/maaacks_game_template/utilities/download_and_extract.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bqu3bc0tttrfk
diff --git a/godot/addons/maaacks_game_template/utilities/download_and_extract.tscn b/godot/addons/maaacks_game_template/utilities/download_and_extract.tscn
deleted file mode 100644
index 1fc8351..0000000
--- a/godot/addons/maaacks_game_template/utilities/download_and_extract.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://dlkmofxhavh10"]
-
-[ext_resource type="Script" uid="uid://bqu3bc0tttrfk" path="res://addons/maaacks_game_template/utilities/download_and_extract.gd" id="1_1few7"]
-
-[node name="DownloadAndExtract" type="Node"]
-script = ExtResource("1_1few7")
-
-[node name="HTTPRequest" type="HTTPRequest" parent="."]
-
-[node name="TimeoutTimer" type="Timer" parent="."]
-one_shot = true
-
-[connection signal="request_completed" from="HTTPRequest" to="." method="_on_http_request_request_completed"]
-[connection signal="timeout" from="TimeoutTimer" to="." method="_on_timeout_timer_timeout"]
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg.import b/godot/addons/rust/NodeRustFerris.svg.import
similarity index 70%
rename from godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg.import
rename to godot/addons/rust/NodeRustFerris.svg.import
index 61e1b23..c2ea920 100644
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg.import
+++ b/godot/addons/rust/NodeRustFerris.svg.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://c37gofthe2bh3"
-path="res://.godot/imported/icons-filled-white-vector.svg-fb1a35d16d7d3ee4e3b0699c09f3649a.ctex"
+uid="uid://bhduxdun7coyn"
+path="res://.godot/imported/NodeRustFerris.svg-331cef6d3b1f5d08917a8d978a58e1bf.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-filled-white-vector.svg"
-dest_files=["res://.godot/imported/icons-filled-white-vector.svg-fb1a35d16d7d3ee4e3b0699c09f3649a.ctex"]
+source_file="res://addons/rust/NodeRustFerris.svg"
+dest_files=["res://.godot/imported/NodeRustFerris.svg-331cef6d3b1f5d08917a8d978a58e1bf.ctex"]
[params]
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg.import b/godot/addons/rust/NodeRustLarge.svg.import
similarity index 70%
rename from godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg.import
rename to godot/addons/rust/NodeRustLarge.svg.import
index 67957f3..d3625d2 100644
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg.import
+++ b/godot/addons/rust/NodeRustLarge.svg.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://ix1d2e62f233"
-path="res://.godot/imported/icons-filled-colored-vector.svg-c7a49006540770527e69f02661f41e5d.ctex"
+uid="uid://boey0ovjh4qn7"
+path="res://.godot/imported/NodeRustLarge.svg-5ebd6f19a542a575621962cd6d6dbbb7.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-filled-colored-vector.svg"
-dest_files=["res://.godot/imported/icons-filled-colored-vector.svg-c7a49006540770527e69f02661f41e5d.ctex"]
+source_file="res://addons/rust/NodeRustLarge.svg"
+dest_files=["res://.godot/imported/NodeRustLarge.svg-5ebd6f19a542a575621962cd6d6dbbb7.ctex"]
[params]
diff --git a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg.import b/godot/addons/rust/NodeRustSmall.svg.import
similarity index 70%
rename from godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg.import
rename to godot/addons/rust/NodeRustSmall.svg.import
index fbed0c4..0d85b3c 100644
--- a/godot/addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg.import
+++ b/godot/addons/rust/NodeRustSmall.svg.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://c1lpc33fpmd4p"
-path="res://.godot/imported/icons-outlined-white-vector.svg-13bd95bd8aface9a8bed6895685dd4ef.ctex"
+uid="uid://m15n4xtsmfqa"
+path="res://.godot/imported/NodeRustSmall.svg-8b0ac7f30d9b52efab43e8ffe9ea9a37.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://addons/maaacks_game_template/assets/input-icons/icons-outlined-white-vector.svg"
-dest_files=["res://.godot/imported/icons-outlined-white-vector.svg-13bd95bd8aface9a8bed6895685dd4ef.ctex"]
+source_file="res://addons/rust/NodeRustSmall.svg"
+dest_files=["res://.godot/imported/NodeRustSmall.svg-8b0ac7f30d9b52efab43e8ffe9ea9a37.ctex"]
[params]
diff --git a/godot/default_bus_layout.tres b/godot/default_bus_layout.tres
new file mode 100644
index 0000000..2c0cd0e
--- /dev/null
+++ b/godot/default_bus_layout.tres
@@ -0,0 +1,15 @@
+[gd_resource type="AudioBusLayout" format=3 uid="uid://cc76fsdx1go5q"]
+
+[resource]
+bus/1/name = &"Music"
+bus/1/solo = false
+bus/1/mute = false
+bus/1/bypass_fx = false
+bus/1/volume_db = 0.0
+bus/1/send = &"Master"
+bus/2/name = &"SFX"
+bus/2/solo = false
+bus/2/mute = false
+bus/2/bypass_fx = false
+bus/2/volume_db = 0.0
+bus/2/send = &"Master"
diff --git a/godot/project.godot b/godot/project.godot
index eaf883d..5ef86b5 100644
--- a/godot/project.godot
+++ b/godot/project.godot
@@ -73,3 +73,13 @@ move_down={
, 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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
+
+[internationalization]
+
+locale/translations=PackedStringArray("res://addons/maaacks_game_template/base/translations/menus_translations.en.translation", "res://addons/maaacks_game_template/base/translations/menus_translations.fr.translation")
+
+[maaacks_game_template]
+
+disable_install_audio_busses=true
+disable_update_check=false
+disable_install_wizard=true