commit 6659875c65a4c80fc3cf366ee7c1bb12f686e28c Author: Snoweuph Date: Wed Jan 29 13:43:42 2025 +0100 CHORE: setup diff --git a/.forgejo/pull_request_template.yml b/.forgejo/pull_request_template.yml new file mode 100644 index 0000000..0f221b4 --- /dev/null +++ b/.forgejo/pull_request_template.yml @@ -0,0 +1,29 @@ +name: Feature +title: '[Feature]: ' +about: 'Vorlage Für ein Feature Ticket' +ref: 'trunk' +body: + - type: input + id: ticket + attributes: + label: Ticket + description: Für Welches Ticket ist diese Pull Request? + placeholder: TD-1 + validations: + required: true + - type: textarea + id: beschreibung + attributes: + label: Beschreibung + description: Was hast du genau gemacht in diesem Ticket? + placeholder: ... + validations: + required: true + - type: textarea + id: more + attributes: + label: Weitere Infos + description: Gibt es noch etwas das ich wissen muss um das Ticket zu Reviewn? + placeholder: ... + validations: + required: false diff --git a/.forgejo/workflows/Dockerfile b/.forgejo/workflows/Dockerfile new file mode 100644 index 0000000..c053533 --- /dev/null +++ b/.forgejo/workflows/Dockerfile @@ -0,0 +1,3 @@ +FROM httpd:2.4 + +ADD web /usr/local/apache2/htdocs/ diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100755 index 0000000..57917e1 --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,114 @@ +name: Build Application + +on: + push: + tags: + - 'v[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?' + - 'v*' + +jobs: + build: + runs-on: stable + container: + image: git.euph.dev/actions/runner-redot-4.3:latest + strategy: + matrix: + include: + - platform: Linux + out: tower_defence.elf + artifact-name: tower_defence.elf + artifact-path: tower_defence.elf + #- platform: OSX + # build-dir: build + # out: build/tower_defence.app + # artifact-name: tower_defence.app + # artifact-path: build + - platform: Windows + out: tower_defence.exe + artifact-name: tower_defence.exe + artifact-path: tower_defence.exe + - platform: Web + build-dir: build + out: build/index.html + artifact-name: tower_defence_web + artifact-path: build/* + steps: + - name: "Checkout" + uses: "https://git.euph.dev/actions/checkout@v3" + - name: Build Binary + run: | + if [ "${{ matrix.build-dir }}" != "" ]; then + mkdir -p ${{ matrix.build-dir}} + fi + redot --headless --export-release ${{ matrix.platform }} ${{ matrix.out }} + - name: Upload Binary as Artifact + uses: "https://git.euph.dev/actions/upload-artifact@v3" + with: + name: ${{ matrix.artifact-name }} + path: ${{ matrix.artifact-path }} + + build-docker: + runs-on: docker + needs: + - build + steps: + - name: "Checkout" + uses: "https://git.euph.dev/actions/checkout@v3" + - name: Download artifact from previous job + uses: "https://git.euph.dev/actions/download-artifact@v3" + with: + name: tower_defence_web + path: .forgejo/workflows/web + - name: Login to Registry + uses: "https://git.euph.dev/actions/docker-login@v3" + with: + registry: git.euph.dev + username: ${{ secrets.DEPLOY_USER }} + password: ${{ secrets.DEPLOY_SECRET }} + - name: Build and push Web Image + uses: "https://git.euph.dev/actions/docker-build-push@v5" + with: + context: ".forgejo/workflows/" + push: true + tags: | + git.euph.dev/towerdefence/web-client:${{ github.ref_name }} + ${{ contains(github.ref_name, 'rc') == false && 'git.euph.dev/towerdefence/web-client:latest' || '' }} + + release: + runs-on: stable + container: + image: git.euph.dev/actions/runner-basic:latest + needs: + - build + - build-docker + steps: + - name: Download Linux Release Binaries + uses: "https://git.euph.dev/actions/download-artifact@v3" + with: + name: tower_defence.elf + path: release + - name: Download Windows release Binaries + uses: "https://git.euph.dev/actions/download-artifact@v3" + with: + name: tower_defence.exe + path: release + - name: Create Release + uses: "https://git.euph.dev/actions/release@v2" + with: + direction: upload + tag: ${{ github.ref_name }} + token: ${{ secrets.DEPLOY_TOKEN }} + prerelease: ${{ contains( github.ref_name, "rc") }} + release-dir: release + release-notes: | + # Tower Defence - Client ${{ github.ref_name }} + Run this release with docker like this: + \`\`\`sh + docker run --rm -p 8080:80 git.euph.dev/towerdefence/web-client:${{ github.ref_name }} + \`\`\` + It will be available under [\`localhost:8080\`](localhost:8080) +

+ For more information read the [Documentation](https://git.euph.dev/TowerDefence/Dokumentation/wiki/Client/Config) + + + diff --git a/.forgejo/workflows/qs.yml b/.forgejo/workflows/qs.yml new file mode 100644 index 0000000..55c5ce8 --- /dev/null +++ b/.forgejo/workflows/qs.yml @@ -0,0 +1,20 @@ +name: "Quality Check" + +on: + - push + - pull_request + +jobs: + lint: + name: "Linting" + runs-on: stable + container: + image: "git.euph.dev/actions/runner-redot-4.3:latest" + steps: + - name: "Checkout" + uses: "https://git.euph.dev/actions/checkout@v3" + - name: "Check Linting" + run: gdlint . + - name: "Check Formatting" + run: gdformat -c -d . + diff --git a/.gitattributes b/.gitattributes new file mode 100755 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..e2dce33 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Redot 4+ specific ignores +.godot/ +/android/ diff --git a/License.md b/License.md new file mode 100755 index 0000000..ee0327f --- /dev/null +++ b/License.md @@ -0,0 +1 @@ +See License [here](https://git.euph.dev/TowerDefence/.profile/src/branch/main/License.md) diff --git a/Readme.md b/Readme.md new file mode 100755 index 0000000..93bfe58 --- /dev/null +++ b/Readme.md @@ -0,0 +1,3 @@ +[![QS Badge](https://git.euph.dev/TowerDefence/Client/actions/workflows/qs.yml/badge.svg?branch=trunk&style=for-the-badge&label=QS)](https://git.euph.dev/TowerDefence/Client/actions?workflow=qs.yml) +[![Build Badge](https://git.euph.dev/TowerDefence/Client/actions/workflows/build.yml/badge.svg?style=for-the-badge&label=Build)](https://git.euph.dev/TowerDefence/Client/actions?workflow=build.yml) +# Tower Defence - Client diff --git a/addons/format_on_save/LICENSE b/addons/format_on_save/LICENSE new file mode 100644 index 0000000..250f450 --- /dev/null +++ b/addons/format_on_save/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Ryan Haskell-Glatz + +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/addons/format_on_save/format_on_save.gd b/addons/format_on_save/format_on_save.gd new file mode 100644 index 0000000..e5ba809 --- /dev/null +++ b/addons/format_on_save/format_on_save.gd @@ -0,0 +1,70 @@ +@tool +class_name FormatOnSave extends EditorPlugin + +const SUCCESS: int = 0 +const AUTO_RELOAD_SETTING: String = "text_editor/behavior/files/auto_reload_scripts_on_external_change" +var original_auto_reload_setting: bool + + +# LIFECYCLE EVENTS +func _enter_tree(): + activate_auto_reload_setting() + resource_saved.connect(on_resource_saved) + + +func _exit_tree(): + resource_saved.disconnect(on_resource_saved) + restore_original_auto_reload_setting() + + +# CALLED WHEN A SCRIPT IS SAVED +func on_resource_saved(resource: Resource): + if resource is Script: + var script: Script = resource + var current_script = get_editor_interface().get_script_editor().get_current_script() + var text_edit: CodeEdit = ( + get_editor_interface().get_script_editor().get_current_editor().get_base_editor() + ) + + # Prevents other unsaved scripts from overwriting the active one + if current_script == script: + var filepath: String = ProjectSettings.globalize_path(resource.resource_path) + + # Run gdformat + var exit_code = OS.execute("gdformat", [filepath]) + + # Replace source_code with formatted source_code + if exit_code == SUCCESS: + var formatted_source = FileAccess.get_file_as_string(resource.resource_path) + FormatOnSave.reload_script(text_edit, formatted_source) + + +# Workaround until this PR is merged: +# https://github.com/godotengine/godot/pull/83267 +# Thanks, @KANAjetzt 💖 +static func reload_script(text_edit: TextEdit, source_code: String) -> void: + var column := text_edit.get_caret_column() + var row := text_edit.get_caret_line() + var scroll_position_h := text_edit.get_h_scroll_bar().value + var scroll_position_v := text_edit.get_v_scroll_bar().value + + text_edit.text = source_code + text_edit.set_caret_column(column) + text_edit.set_caret_line(row) + text_edit.scroll_horizontal = scroll_position_h + text_edit.scroll_vertical = scroll_position_v + + text_edit.tag_saved_version() + + +# For this workaround to work, we need to disable the "Reload/Resave" pop-up +func activate_auto_reload_setting(): + var settings := get_editor_interface().get_editor_settings() + original_auto_reload_setting = settings.get(AUTO_RELOAD_SETTING) + settings.set(AUTO_RELOAD_SETTING, true) + + +# If the plugin is disabled, let's attempt to restore the original editor setting +func restore_original_auto_reload_setting(): + var settings := get_editor_interface().get_editor_settings() + settings.set(AUTO_RELOAD_SETTING, original_auto_reload_setting) diff --git a/addons/format_on_save/plugin.cfg b/addons/format_on_save/plugin.cfg new file mode 100644 index 0000000..0fec65c --- /dev/null +++ b/addons/format_on_save/plugin.cfg @@ -0,0 +1,6 @@ +[plugin] +name="Format on Save" +description="Runs `gdformat` on save to automatically format your GD script as you code." +author="Ryan Haskell-Glatz" +version="1.2.0" +script="format_on_save.gd" diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..e7b443b --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,396 @@ +[preset.0] + +name="Linux" +platform="Linux" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" + +[preset.1] + +name="Windows" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask redot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName redot_remote_debug +while (Get-ScheduledTask -TaskName redot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName redot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName redot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName redot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.2] + +name="OSX" +platform="macOS" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +export/distribution_type=1 +binary_format/architecture="universal" +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +application/icon="" +application/icon_interpolation=4 +application/bundle_identifier="de.szut.tower-defence" +application/signature="" +application/app_category="Games" +application/short_version="" +application/version="" +application/copyright="tower defence group" +application/copyright_localized={} +application/min_macos_version="10.12" +application/export_angle=0 +display/high_res=true +application/additional_plist_content="" +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=1 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/entitlements/app_sandbox/helper_executables=[] +codesign/custom_options=PackedStringArray() +notarization/notarization=0 +privacy/microphone_usage_description="" +privacy/microphone_usage_description_localized={} +privacy/camera_usage_description="" +privacy/camera_usage_description_localized={} +privacy/location_usage_description="" +privacy/location_usage_description_localized={} +privacy/address_book_usage_description="" +privacy/address_book_usage_description_localized={} +privacy/calendar_usage_description="" +privacy/calendar_usage_description_localized={} +privacy/photos_library_usage_description="" +privacy/photos_library_usage_description_localized={} +privacy/desktop_folder_usage_description="" +privacy/desktop_folder_usage_description_localized={} +privacy/documents_folder_usage_description="" +privacy/documents_folder_usage_description_localized={} +privacy/downloads_folder_usage_description="" +privacy/downloads_folder_usage_description_localized={} +privacy/network_volumes_usage_description="" +privacy/network_volumes_usage_description_localized={} +privacy/removable_volumes_usage_description="" +privacy/removable_volumes_usage_description_localized={} +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_hhistory/collected=false +privacy/collected_data/search_hhistory/linked_to_user=false +privacy/collected_data/search_hhistory/used_for_tracking=false +privacy/collected_data/search_hhistory/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" + +[preset.3] + +name="Web" +platform="Web" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.3.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +variant/thread_support=false +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/ensure_cross_origin_isolation_headers=true +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) diff --git a/gdformatrc b/gdformatrc new file mode 100644 index 0000000..235fd70 --- /dev/null +++ b/gdformatrc @@ -0,0 +1,4 @@ +excluded_directories: !!set + .git: null + addons: null + diff --git a/gdlintrc b/gdlintrc new file mode 100644 index 0000000..a140f15 --- /dev/null +++ b/gdlintrc @@ -0,0 +1,48 @@ +class-definitions-order: +- tools +- classnames +- extends +- docstrings +- signals +- enums +- consts +- staticvars +- exports +- pubvars +- prvvars +- onreadypubvars +- onreadyprvvars +- others +class-load-variable-name: (([A-Z][a-z0-9]*)+|_?[a-z][a-z0-9]*(_[a-z0-9]+)*) +class-name: ([A-Z][a-z0-9]*)+ +class-variable-name: _?[a-z][a-z0-9]*(_[a-z0-9]+)* +comparison-with-itself: null +constant-name: _?[A-Z][A-Z0-9]*(_[A-Z0-9]+)* +disable: [] +duplicated-load: null +enum-element-name: '[A-Z][A-Z0-9]*(_[A-Z0-9]+)*' +enum-name: ([A-Z][a-z0-9]*)+ +excluded_directories: !!set + .git: null + addons: null +expression-not-assigned: null +function-argument-name: _?[a-z][a-z0-9]*(_[a-z0-9]+)* +function-arguments-number: 10 +function-name: (_on_([A-Z][a-z0-9]*)+(_[a-z0-9]+)*|_?[a-z][a-z0-9]*(_[a-z0-9]+)*) +function-preload-variable-name: ([A-Z][a-z0-9]*)+ +function-variable-name: '[a-z][a-z0-9]*(_[a-z0-9]+)*' +load-constant-name: (([A-Z][a-z0-9]*)+|_?[A-Z][A-Z0-9]*(_[A-Z0-9]+)*) +loop-variable-name: _?[a-z][a-z0-9]*(_[a-z0-9]+)* +max-file-lines: 1000 +max-line-length: 80 +max-public-methods: 20 +max-returns: 6 +mixed-tabs-and-spaces: null +no-elif-return: null +no-else-return: null +signal-name: '[a-z][a-z0-9]*(_[a-z0-9]+)*' +sub-class-name: _?([A-Z][a-z0-9]*)+ +tab-characters: 1 +trailing-whitespace: null +unnecessary-pass: null +unused-argument: null diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..788a8aa --- /dev/null +++ b/project.godot @@ -0,0 +1,30 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="TowerDefence" +run/main_scene="res://scenes/main_menu.tscn" +config/features=PackedStringArray("4.3", "GL Compatibility") +config/icon="res://textures/icon.svg" + +[editor_plugins] + +enabled=PackedStringArray("res://addons/format_on_save/plugin.cfg") + +[gui] + +theme/custom="res://ui/theme.tres" + +[rendering] + +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" +textures/vram_compression/import_etc2_astc=true diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn new file mode 100644 index 0000000..9c11e3e --- /dev/null +++ b/scenes/main_menu.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=4 format=3 uid="uid://bqfijb7bk2g7j"] + +[ext_resource type="Theme" uid="uid://bt4hxdwromnxs" path="res://ui/theme.tres" id="1_6qgep"] +[ext_resource type="Script" path="res://scripts/ui/switch_to_scene.gd" id="2_c477a"] +[ext_resource type="PackedScene" uid="uid://ctqxikky2g0nj" path="res://scenes/theme_test.tscn" id="3_j7pbg"] + +[node name="Root" type="Panel"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("1_6qgep") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -180.5 +offset_top = -44.0 +offset_right = 180.5 +offset_bottom = 44.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Text" type="RichTextLabel" parent="VBoxContainer"] +clip_contents = false +layout_mode = 2 +size_flags_stretch_ratio = 7.45 +theme_override_font_sizes/normal_font_size = 64 +text = "Hello World" +fit_content = true +scroll_active = false +autowrap_mode = 0 + +[node name="Button" type="Button" parent="VBoxContainer"] +layout_mode = 2 +text = "Theme Test Scene" +script = ExtResource("2_c477a") +scene = ExtResource("3_j7pbg") diff --git a/scenes/theme_test.tscn b/scenes/theme_test.tscn new file mode 100644 index 0000000..796b760 --- /dev/null +++ b/scenes/theme_test.tscn @@ -0,0 +1,1616 @@ +[gd_scene load_steps=6 format=3 uid="uid://ctqxikky2g0nj"] + +[ext_resource type="Script" path="res://scripts/ui/websocket_time.gd" id="1_qy4dl"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ujhhp"] +bg_color = Color(0.289228, 0.413265, 0.44363, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n6w75"] +bg_color = Color(0.317774, 0.633168, 0.849623, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a5xrb"] +bg_color = Color(1, 0.254902, 0.301961, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p6yiv"] +bg_color = Color(0.67667, 0.502224, 0.889563, 1) + +[node name="Root" type="Panel"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ujhhp") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 16.0 +offset_top = 16.0 +offset_right = -16.0 +offset_bottom = -16.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 16 + +[node name="TabContainer" type="TabContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +current_tab = 1 + +[node name="Page 1" type="HSplitContainer" parent="HBoxContainer/TabContainer"] +visible = false +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="Left" type="Panel" parent="HBoxContainer/TabContainer/Page 1"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_n6w75") + +[node name="Right" type="Panel" parent="HBoxContainer/TabContainer/Page 1"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_a5xrb") + +[node name="Page 2" type="ScrollContainer" parent="HBoxContainer/TabContainer"] +layout_mode = 2 +horizontal_scroll_mode = 0 +metadata/_tab_index = 1 + +[node name="GridContainer" type="GridContainer" parent="HBoxContainer/TabContainer/Page 2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 3 + +[node name="Box" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box2" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box3" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box4" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box5" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box6" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box7" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box8" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box9" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box10" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box11" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box12" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box13" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box14" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box15" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box16" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box17" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box18" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box19" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box20" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box21" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box22" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box23" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box24" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box25" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box26" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box27" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box28" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box29" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box30" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box31" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box32" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box33" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box34" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box35" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box36" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box37" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box38" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box39" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box40" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box41" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box42" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box43" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box44" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box45" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box46" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box47" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box48" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box49" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box50" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box51" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box52" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box53" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box54" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box55" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box56" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box57" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box58" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box59" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box60" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box61" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box62" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box63" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box64" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box65" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box66" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box67" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box68" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box69" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box70" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box71" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box72" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box73" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box74" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box75" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box76" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box77" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box78" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box79" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box80" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box81" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box82" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box83" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box84" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box85" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box86" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box87" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box88" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box89" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box90" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box91" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box92" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box93" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box94" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box95" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box96" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box97" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box98" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box99" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box100" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box101" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box102" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box103" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box104" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box105" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box106" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box107" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box108" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box109" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box110" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box111" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box112" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box113" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box114" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box115" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box116" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box117" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box118" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box119" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box120" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box121" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box122" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box123" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box124" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box125" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box126" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box127" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box128" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box129" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box130" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box131" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box132" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box133" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box134" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box135" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box136" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box137" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box138" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box139" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box140" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box141" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box142" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box143" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box144" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box145" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box146" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box147" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box148" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box149" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box150" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box151" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box152" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box153" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box154" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box155" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box156" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box157" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box158" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box159" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box160" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box161" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box162" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box163" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box164" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box165" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box166" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box167" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box168" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box169" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box170" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box171" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box172" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box173" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box174" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box175" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box176" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box177" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box178" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box179" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box180" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box181" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box182" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box183" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box184" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box185" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box186" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box187" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box188" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box189" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box190" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box191" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box192" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box193" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box194" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box195" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box196" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box197" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box198" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box199" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box200" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box201" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box202" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box203" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box204" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box205" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box206" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box207" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box208" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box209" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box210" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box211" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box212" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box213" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box214" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box215" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box216" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box217" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box218" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box219" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box220" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box221" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box222" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box223" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box224" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box225" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box226" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box227" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box228" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box229" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box230" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box231" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box232" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box233" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box234" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box235" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box236" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box237" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box238" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box239" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box240" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box241" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box242" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box243" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box244" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box245" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box246" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box247" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box248" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box249" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box250" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box251" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box252" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box253" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box254" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box255" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box256" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box257" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box258" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box259" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box260" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box261" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box262" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box263" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box264" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box265" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box266" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box267" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box268" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box269" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box270" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box271" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box272" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box273" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box274" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box275" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box276" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box277" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box278" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box279" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box280" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box281" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box282" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box283" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box284" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box285" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box286" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box287" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box288" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box289" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box290" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box291" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box292" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box293" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box294" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box295" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box296" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box297" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box298" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box299" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="Box300" type="Panel" parent="HBoxContainer/TabContainer/Page 2/GridContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_p6yiv") + +[node name="ScrollContainer" type="ScrollContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 3 + +[node name="Button" type="Button" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Just a Button" + +[node name="ToggleButton" type="Button" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +toggle_mode = true +text = "A button in Check Mode" + +[node name="CheckButton" type="CheckButton" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "A Toggle (Check) Button" + +[node name="ColorPickerButton" type="ColorPickerButton" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Color Picker" +edit_alpha = false + +[node name="OptionButton" type="OptionButton" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +selected = 0 +item_count = 3 +popup/item_0/text = "Choose Your Poison!" +popup/item_0/id = 0 +popup/item_1/text = "Cake" +popup/item_1/id = 1 +popup/item_2/text = "Pie" +popup/item_2/id = 2 + +[node name="LinkButton" type="LinkButton" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Important Video!" +uri = "https://www.youtube.com/watch?v=PXqcHi2fkXI" + +[node name="RichTextLabel" type="RichTextLabel" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "..." +fit_content = true +script = ExtResource("1_qy4dl") diff --git a/scripts/ui/switch_to_scene.gd b/scripts/ui/switch_to_scene.gd new file mode 100644 index 0000000..5d56237 --- /dev/null +++ b/scripts/ui/switch_to_scene.gd @@ -0,0 +1,13 @@ +extends Button + +@export var scene: PackedScene + + +func _ready() -> void: + connect("pressed", _on_Button_pressed) + + +func _on_Button_pressed() -> void: + if not scene: + push_error("Scene to switch to is not configured") + get_tree().change_scene_to_packed(scene) diff --git a/scripts/ui/websocket_time.gd b/scripts/ui/websocket_time.gd new file mode 100644 index 0000000..046778f --- /dev/null +++ b/scripts/ui/websocket_time.gd @@ -0,0 +1,28 @@ +extends RichTextLabel + +# docs.redotengine.org/en/stable/tutorials/networking/websocket.html +@export var fallpack_websocket_url = "ws://localhost:8080/ws/server" +var websocket_url = OS.get_environment("TD_SERVER_WS") +var socket = WebSocketPeer.new() + + +func _ready() -> void: + if websocket_url.is_empty(): + websocket_url = fallpack_websocket_url + var err = socket.connect_to_url(websocket_url) + if err != OK: + error_string(err) + set_process(false) + + +func _process(_delta: float) -> void: + socket.poll() + var state = socket.get_ready_state() + + if state == WebSocketPeer.STATE_CLOSED: + self.text = "Disconnected" + return + + if state == WebSocketPeer.STATE_OPEN: + while socket.get_available_packet_count(): + self.text = "Current Unixtime: " + socket.get_packet().get_string_from_utf8() diff --git a/textures/icon.svg b/textures/icon.svg new file mode 100755 index 0000000..c099cb8 --- /dev/null +++ b/textures/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/textures/icon.svg.import b/textures/icon.svg.import new file mode 100644 index 0000000..5166e0d --- /dev/null +++ b/textures/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csnlvhau8eqvp" +path="res://.godot/imported/icon.svg-3540dd99eafb6c4e602e8c59cee418fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/icon.svg" +dest_files=["res://.godot/imported/icon.svg-3540dd99eafb6c4e602e8c59cee418fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/textures/icons/focus_indicator.png b/textures/icons/focus_indicator.png new file mode 100644 index 0000000..b433cbe Binary files /dev/null and b/textures/icons/focus_indicator.png differ diff --git a/textures/icons/focus_indicator.png.import b/textures/icons/focus_indicator.png.import new file mode 100644 index 0000000..1223d5d --- /dev/null +++ b/textures/icons/focus_indicator.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bc7dmx1v5l0x" +path="res://.godot/imported/focus_indicator.png-df7eca49e62439d12e493a185b0ef82c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/icons/focus_indicator.png" +dest_files=["res://.godot/imported/focus_indicator.png-df7eca49e62439d12e493a185b0ef82c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/ui/panel/focus.tres b/ui/panel/focus.tres new file mode 100644 index 0000000..e021666 --- /dev/null +++ b/ui/panel/focus.tres @@ -0,0 +1,3 @@ +[gd_resource type="StyleBoxEmpty" format=3 uid="uid://b32nqsdbngkvm"] + +[resource] diff --git a/ui/panel/hover.tres b/ui/panel/hover.tres new file mode 100644 index 0000000..f60ba17 --- /dev/null +++ b/ui/panel/hover.tres @@ -0,0 +1,19 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://cdxpd1sbtknsp"] + +[resource] +content_margin_left = 8.0 +content_margin_top = 0.0 +content_margin_right = 20.0 +content_margin_bottom = 2.0 +bg_color = Color(0.346194, 0.629777, 0.84138, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 4 +border_color = Color(0.162643, 0.387402, 0.546384, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +expand_margin_top = 2.0 +expand_margin_bottom = 4.0 diff --git a/ui/panel/hover_pressed.tres b/ui/panel/hover_pressed.tres new file mode 100644 index 0000000..7d63302 --- /dev/null +++ b/ui/panel/hover_pressed.tres @@ -0,0 +1,19 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://cbrw8qgaxtfpr"] + +[resource] +content_margin_left = 8.0 +content_margin_top = 2.0 +content_margin_right = 20.0 +content_margin_bottom = 0.0 +bg_color = Color(0.113491, 0.289986, 0.415524, 1) +border_width_left = 1 +border_width_top = 4 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.160784, 0.388235, 0.545098, 0) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +expand_margin_top = 4.0 +expand_margin_bottom = 2.0 diff --git a/ui/panel/normal.tres b/ui/panel/normal.tres new file mode 100644 index 0000000..f095c2e --- /dev/null +++ b/ui/panel/normal.tres @@ -0,0 +1,19 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dvj7j3j2xg3af"] + +[resource] +content_margin_left = 8.0 +content_margin_top = 0.0 +content_margin_right = 20.0 +content_margin_bottom = 2.0 +bg_color = Color(0.346194, 0.629777, 0.84138, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 4 +border_color = Color(0.162643, 0.387402, 0.546384, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +expand_margin_top = 2.0 +expand_margin_bottom = 4.0 diff --git a/ui/panel/pressed.tres b/ui/panel/pressed.tres new file mode 100644 index 0000000..fa3f10e --- /dev/null +++ b/ui/panel/pressed.tres @@ -0,0 +1,19 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://bcur80wbc3i3h"] + +[resource] +content_margin_left = 8.0 +content_margin_top = 2.0 +content_margin_right = 20.0 +content_margin_bottom = 0.0 +bg_color = Color(0.0626976, 0.18778, 0.276572, 1) +border_width_left = 1 +border_width_top = 4 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.160784, 0.388235, 0.545098, 0) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +expand_margin_top = 4.0 +expand_margin_bottom = 2.0 diff --git a/ui/theme.tres b/ui/theme.tres new file mode 100644 index 0000000..9b7e28b --- /dev/null +++ b/ui/theme.tres @@ -0,0 +1,44 @@ +[gd_resource type="Theme" load_steps=7 format=3 uid="uid://bt4hxdwromnxs"] + +[ext_resource type="Texture2D" uid="uid://bc7dmx1v5l0x" path="res://textures/icons/focus_indicator.png" id="1_2gn16"] +[ext_resource type="StyleBox" uid="uid://b32nqsdbngkvm" path="res://ui/panel/focus.tres" id="2_deyos"] +[ext_resource type="StyleBox" uid="uid://cdxpd1sbtknsp" path="res://ui/panel/hover.tres" id="3_nfsuc"] +[ext_resource type="StyleBox" uid="uid://dvj7j3j2xg3af" path="res://ui/panel/normal.tres" id="4_wi0tw"] +[ext_resource type="StyleBox" uid="uid://bcur80wbc3i3h" path="res://ui/panel/pressed.tres" id="5_kgc35"] +[ext_resource type="StyleBox" uid="uid://cbrw8qgaxtfpr" path="res://ui/panel/hover_pressed.tres" id="6_vlfw3"] + +[resource] +Button/colors/icon_disabled_color = Color(1, 1, 1, 0) +Button/colors/icon_focus_color = Color(1, 1, 1, 1) +Button/colors/icon_hover_color = Color(1, 1, 1, 1) +Button/colors/icon_hover_pressed_color = Color(1, 1, 1, 0) +Button/colors/icon_normal_color = Color(1, 1, 1, 0) +Button/colors/icon_pressed_color = Color(1, 1, 1, 1) +Button/constants/h_separation = 4 +Button/constants/icon_max_width = 8 +Button/icons/icon = ExtResource("1_2gn16") +Button/styles/focus = ExtResource("2_deyos") +Button/styles/hover = ExtResource("3_nfsuc") +Button/styles/normal = ExtResource("4_wi0tw") +Button/styles/pressed = ExtResource("5_kgc35") +CheckBox/colors/icon_hover_color = Color(1, 1, 1, 1) +CheckBox/colors/icon_hover_pressed_color = Color(1, 1, 1, 1) +CheckBox/colors/icon_pressed_color = Color(1, 1, 1, 0) +CheckBox/styles/focus = ExtResource("2_deyos") +CheckBox/styles/hover = ExtResource("3_nfsuc") +CheckBox/styles/hover_pressed = ExtResource("6_vlfw3") +CheckBox/styles/normal = ExtResource("4_wi0tw") +CheckBox/styles/pressed = ExtResource("5_kgc35") +CheckButton/colors/icon_focus_color = Color(1, 1, 1, 1) +CheckButton/colors/icon_hover_color = Color(1, 1, 1, 1) +CheckButton/colors/icon_hover_pressed_color = Color(1, 1, 1, 1) +CheckButton/colors/icon_normal_color = Color(0, 0, 0, 0) +CheckButton/colors/icon_pressed_color = Color(0, 0, 0, 0) +CheckButton/styles/hover = ExtResource("3_nfsuc") +CheckButton/styles/hover_pressed = ExtResource("6_vlfw3") +CheckButton/styles/pressed = ExtResource("5_kgc35") +ColorPickerButton/styles/focus = ExtResource("2_deyos") +ColorPickerButton/styles/hover = ExtResource("3_nfsuc") +ColorPickerButton/styles/hover_pressed = ExtResource("6_vlfw3") +ColorPickerButton/styles/normal = ExtResource("4_wi0tw") +ColorPickerButton/styles/pressed = ExtResource("5_kgc35")