diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 896c9db..0000000 --- a/.editorconfig +++ /dev/null @@ -1,232 +0,0 @@ -# Remove the line below if you want to inherit .editorconfig settings from higher directories -root = true - -# C# files -[*.cs] - -#### Core EditorConfig Options #### - -# Indentation and spacing -indent_size = 4 -indent_style = space -tab_width = 4 - -# New line preferences -end_of_line = crlf -insert_final_newline = false - -#### .NET Coding Conventions #### - -# Organize usings -dotnet_separate_import_directive_groups = false -dotnet_sort_system_directives_first = false -file_header_template = unset - -# this. and Me. preferences -dotnet_style_qualification_for_event = false -dotnet_style_qualification_for_field = false -dotnet_style_qualification_for_method = false -dotnet_style_qualification_for_property = false - -# Language keywords vs BCL types preferences -dotnet_style_predefined_type_for_locals_parameters_members = true -dotnet_style_predefined_type_for_member_access = true - -# Parentheses preferences -dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity -dotnet_style_parentheses_in_other_binary_operators = always_for_clarity -dotnet_style_parentheses_in_other_operators = never_if_unnecessary -dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity - -# Modifier preferences -dotnet_style_require_accessibility_modifiers = for_non_interface_members - -# Expression-level preferences -dotnet_style_coalesce_expression = true -dotnet_style_collection_initializer = true -dotnet_style_explicit_tuple_names = true -dotnet_style_namespace_match_folder = true -dotnet_style_null_propagation = true -dotnet_style_object_initializer = true -dotnet_style_operator_placement_when_wrapping = beginning_of_line -dotnet_style_prefer_auto_properties = true -dotnet_style_prefer_collection_expression = when_types_loosely_match -dotnet_style_prefer_compound_assignment = true -dotnet_style_prefer_conditional_expression_over_assignment = true -dotnet_style_prefer_conditional_expression_over_return = true -dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed -dotnet_style_prefer_inferred_anonymous_type_member_names = true -dotnet_style_prefer_inferred_tuple_names = true -dotnet_style_prefer_is_null_check_over_reference_equality_method = true -dotnet_style_prefer_simplified_boolean_expressions = true -dotnet_style_prefer_simplified_interpolation = true - -# Field preferences -dotnet_style_readonly_field = true - -# Parameter preferences -dotnet_code_quality_unused_parameters = all - -# Suppression preferences -dotnet_remove_unnecessary_suppression_exclusions = none - -# New line preferences -dotnet_style_allow_multiple_blank_lines_experimental = false -dotnet_style_allow_statement_immediately_after_block_experimental = false - -#### C# Coding Conventions #### - -# var preferences -csharp_style_var_elsewhere = false -csharp_style_var_for_built_in_types = false -csharp_style_var_when_type_is_apparent = false - -# Expression-bodied members -csharp_style_expression_bodied_accessors = true -csharp_style_expression_bodied_constructors = false -csharp_style_expression_bodied_indexers = true -csharp_style_expression_bodied_lambdas = true -csharp_style_expression_bodied_local_functions = true:suggestion -csharp_style_expression_bodied_methods = false:suggestion -csharp_style_expression_bodied_operators = true -csharp_style_expression_bodied_properties = true - -# Pattern matching preferences -csharp_style_pattern_matching_over_as_with_null_check = true -csharp_style_pattern_matching_over_is_with_cast_check = true -csharp_style_prefer_extended_property_pattern = true -csharp_style_prefer_not_pattern = true -csharp_style_prefer_pattern_matching = true:suggestion -csharp_style_prefer_switch_expression = true - -# Null-checking preferences -csharp_style_conditional_delegate_call = true - -# Modifier preferences -csharp_prefer_static_anonymous_function = true -csharp_prefer_static_local_function = false:silent -csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async -csharp_style_prefer_readonly_struct = true -csharp_style_prefer_readonly_struct_member = true - -# Code-block preferences -csharp_prefer_braces = true -csharp_prefer_simple_using_statement = true -csharp_style_namespace_declarations = file_scoped:error -csharp_style_prefer_method_group_conversion = false -csharp_style_prefer_primary_constructors = true -csharp_style_prefer_top_level_statements = true - -# Expression-level preferences -csharp_prefer_simple_default_expression = false:silent -csharp_style_deconstructed_variable_declaration = true -csharp_style_implicit_object_creation_when_type_is_apparent = true -csharp_style_inlined_variable_declaration = true -csharp_style_prefer_index_operator = false:silent -csharp_style_prefer_local_over_anonymous_function = true -csharp_style_prefer_null_check_over_type_check = true -csharp_style_prefer_range_operator = false:silent -csharp_style_prefer_tuple_swap = true -csharp_style_prefer_utf8_string_literals = true -csharp_style_throw_expression = true -csharp_style_unused_value_assignment_preference = discard_variable -csharp_style_unused_value_expression_statement_preference = discard_variable - -# 'using' directive preferences -csharp_using_directive_placement = outside_namespace - -# New line preferences -csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true -csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true -csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true -csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false -csharp_style_allow_embedded_statements_on_same_line_experimental = true - -#### C# Formatting Rules #### - -# New line preferences -csharp_new_line_before_catch = true -csharp_new_line_before_else = true -csharp_new_line_before_finally = true -csharp_new_line_before_members_in_anonymous_types = true -csharp_new_line_before_members_in_object_initializers = true -csharp_new_line_before_open_brace = all -csharp_new_line_between_query_expression_clauses = true - -# Indentation preferences -csharp_indent_block_contents = true -csharp_indent_braces = false -csharp_indent_case_contents = true -csharp_indent_case_contents_when_block = false -csharp_indent_labels = one_less_than_current -csharp_indent_switch_labels = true - -# Space preferences -csharp_space_after_cast = false -csharp_space_after_colon_in_inheritance_clause = true -csharp_space_after_comma = true -csharp_space_after_dot = false -csharp_space_after_keywords_in_control_flow_statements = true -csharp_space_after_semicolon_in_for_statement = true -csharp_space_around_binary_operators = before_and_after -csharp_space_around_declaration_statements = ignore -csharp_space_before_colon_in_inheritance_clause = true -csharp_space_before_comma = false -csharp_space_before_dot = false -csharp_space_before_open_square_brackets = false -csharp_space_before_semicolon_in_for_statement = false -csharp_space_between_empty_square_brackets = false -csharp_space_between_method_call_empty_parameter_list_parentheses = false -csharp_space_between_method_call_name_and_opening_parenthesis = false -csharp_space_between_method_call_parameter_list_parentheses = false -csharp_space_between_method_declaration_empty_parameter_list_parentheses = false -csharp_space_between_method_declaration_name_and_open_parenthesis = false -csharp_space_between_method_declaration_parameter_list_parentheses = false -csharp_space_between_parentheses = false -csharp_space_between_square_brackets = false - -# Wrapping preferences -csharp_preserve_single_line_blocks = true -csharp_preserve_single_line_statements = false - -#### Naming styles #### - -# Naming rules - -dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion -dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface -dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i - -dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.types_should_be_pascal_case.symbols = types -dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case - -dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members -dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case - -# Symbol specifications - -dotnet_naming_symbols.interface.applicable_kinds = interface -dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.interface.required_modifiers = - -dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum -dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.types.required_modifiers = - -dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method -dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.non_field_members.required_modifiers = - -# Naming styles - -dotnet_naming_style.pascal_case.required_prefix = -dotnet_naming_style.pascal_case.required_suffix = -dotnet_naming_style.pascal_case.word_separator = -dotnet_naming_style.pascal_case.capitalization = pascal_case - -dotnet_naming_style.begins_with_i.required_prefix = I -dotnet_naming_style.begins_with_i.required_suffix = -dotnet_naming_style.begins_with_i.word_separator = -dotnet_naming_style.begins_with_i.capitalization = pascal_case diff --git a/Fonts/Press_Start_2P/OFL.txt b/Fonts/Press_Start_2P/OFL.txt deleted file mode 100644 index c0f4383..0000000 --- a/Fonts/Press_Start_2P/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2012 The Press Start 2P Project Authors (cody@zone38.net), with Reserved Font Name "Press Start 2P". - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Fonts/Press_Start_2P/PressStart2P-Regular.ttf b/Fonts/Press_Start_2P/PressStart2P-Regular.ttf deleted file mode 100644 index 2442aff..0000000 Binary files a/Fonts/Press_Start_2P/PressStart2P-Regular.ttf and /dev/null differ diff --git a/Fonts/Press_Start_2P/PressStart2P-Regular.ttf.import b/Fonts/Press_Start_2P/PressStart2P-Regular.ttf.import deleted file mode 100644 index e37847a..0000000 --- a/Fonts/Press_Start_2P/PressStart2P-Regular.ttf.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="font_data_dynamic" -type="FontFile" -uid="uid://tftlwb1c4m0s" -path="res://.godot/imported/PressStart2P-Regular.ttf-66018d3b5001161018825e3befc2483b.fontdata" - -[deps] - -source_file="res://Fonts/Press_Start_2P/PressStart2P-Regular.ttf" -dest_files=["res://.godot/imported/PressStart2P-Regular.ttf-66018d3b5001161018825e3befc2483b.fontdata"] - -[params] - -Rendering=null -antialiasing=1 -generate_mipmaps=false -disable_embedded_bitmaps=true -multichannel_signed_distance_field=false -msdf_pixel_range=8 -msdf_size=48 -allow_system_fallback=true -force_autohinter=false -hinting=1 -subpixel_positioning=1 -oversampling=0.0 -Fallbacks=null -fallbacks=[] -Compress=null -compress=true -preload=[] -language_support={} -script_support={} -opentype_features={} diff --git a/Fonts/Unbounded/OFL.txt b/Fonts/Unbounded/OFL.txt deleted file mode 100644 index b79099e..0000000 --- a/Fonts/Unbounded/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2022 The Unbounded Project Authors (https://github.com/googlefonts/unbounded) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Fonts/Unbounded/README.txt b/Fonts/Unbounded/README.txt deleted file mode 100644 index 3212b38..0000000 --- a/Fonts/Unbounded/README.txt +++ /dev/null @@ -1,70 +0,0 @@ -Unbounded Variable Font -======================= - -This download contains Unbounded as both a variable font and static fonts. - -Unbounded is a variable font with this axis: - wght - -This means all the styles are contained in a single file: - Unbounded-VariableFont_wght.ttf - -If your app fully supports variable fonts, you can now pick intermediate styles -that aren’t available as static fonts. Not all apps support variable fonts, and -in those cases you can use the static font files for Unbounded: - static/Unbounded-ExtraLight.ttf - static/Unbounded-Light.ttf - static/Unbounded-Regular.ttf - static/Unbounded-Medium.ttf - static/Unbounded-SemiBold.ttf - static/Unbounded-Bold.ttf - static/Unbounded-ExtraBold.ttf - static/Unbounded-Black.ttf - -Get started ------------ - -1. Install the font files you want to use - -2. Use your app's font picker to view the font family and all the -available styles - -Learn more about variable fonts -------------------------------- - - https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts - https://variablefonts.typenetwork.com - https://medium.com/variable-fonts - -In desktop apps - - https://theblog.adobe.com/can-variable-fonts-illustrator-cc - https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts - -Online - - https://developers.google.com/fonts/docs/getting_started - https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide - https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts - -Installing fonts - - MacOS: https://support.apple.com/en-us/HT201749 - Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux - Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows - -Android Apps - - https://developers.google.com/fonts/docs/android - https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts - -License -------- -Please read the full license text (OFL.txt) to understand the permissions, -restrictions and requirements for usage, redistribution, and modification. - -You can use them in your products & projects – print or digital, -commercial or otherwise. - -This isn't legal advice, please consider consulting a lawyer and see the full -license for all details. diff --git a/Fonts/Unbounded/Unbounded-VariableFont_wght.ttf b/Fonts/Unbounded/Unbounded-VariableFont_wght.ttf deleted file mode 100644 index 9700edc..0000000 Binary files a/Fonts/Unbounded/Unbounded-VariableFont_wght.ttf and /dev/null differ diff --git a/Fonts/Unbounded/Unbounded-VariableFont_wght.ttf.import b/Fonts/Unbounded/Unbounded-VariableFont_wght.ttf.import deleted file mode 100644 index 0c39871..0000000 --- a/Fonts/Unbounded/Unbounded-VariableFont_wght.ttf.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="font_data_dynamic" -type="FontFile" -uid="uid://c1qgn2c1mlfmn" -path="res://.godot/imported/Unbounded-VariableFont_wght.ttf-e137eb5f6d0ed49225cd288ba102d03a.fontdata" - -[deps] - -source_file="res://Fonts/Unbounded/Unbounded-VariableFont_wght.ttf" -dest_files=["res://.godot/imported/Unbounded-VariableFont_wght.ttf-e137eb5f6d0ed49225cd288ba102d03a.fontdata"] - -[params] - -Rendering=null -antialiasing=1 -generate_mipmaps=false -disable_embedded_bitmaps=true -multichannel_signed_distance_field=false -msdf_pixel_range=8 -msdf_size=48 -allow_system_fallback=true -force_autohinter=false -hinting=1 -subpixel_positioning=1 -oversampling=0.0 -Fallbacks=null -fallbacks=[] -Compress=null -compress=true -preload=[] -language_support={} -script_support={} -opentype_features={} diff --git a/GodotUtils b/GodotUtils index eabd41d..26af6c0 160000 --- a/GodotUtils +++ b/GodotUtils @@ -1 +1 @@ -Subproject commit eabd41dc3ade146dc1cb9fd86810174714510343 +Subproject commit 26af6c09101b94c26d185a8358b2a566fbd40da0 diff --git a/Localisation/text.csv b/Localisation/text.csv deleted file mode 100644 index dbb8898..0000000 --- a/Localisation/text.csv +++ /dev/null @@ -1,37 +0,0 @@ -keys,en,fr,ja -PLAY,Play,Jouer,遊ぶ -OPTIONS,Options,Choix,オプション -QUIT,Quit,Arrêter,やめる -RESUME,Resume,Continuer,履歴書 -MAIN MENU,Main Menu,Menu Principal,メインメニュー -CREDITS,Credits,Crédits,クレジット -GENERAL,General,Général,全般的 -DISPLAY,Display,Afficher,画面 -AUDIO,Audio,l'audio,オーディオ -INPUT,Input,Saisir,入力 -RESET_TO_DEFAULTS,Reset to Defaults,Réinitialiser les paramètres par défaut,既定値にリセット -LANGUAGE,Language,Langue,言語 -WINDOW_MODE,Window Mode,Fenêtre Mode,窓モード -WINDOW_SIZE,Window Size,Fenêtre Taille,窓サイズ -VSYNC_MODE,VSync Mode,VSync Mode,垂直同期モード -MAX_FPS,Max FPS,Max FPS,マックス FPS -UNLIMITED,Unlimited,Illimité,無制限 -ENABLED,Enabled,Activé,有効 -DISABLED,Disabled,Désactivé,無効 -ADAPTIVE,Adaptive,Adaptatif,アダプティブ -WINDOWED,Windowed,Fenêtré,ウィンドウ付き -BORDERLESS,Borderless,Sans bordure,ボーダレス -FULLSCREEN,Fullscreen,Plein écran,全画面表示 -APPLY,Apply,Appliquer,申し込み -MUSIC,Music,Musique,音楽 -SOUNDS,Sounds,Des sons,サウンド -PAUSE,Pause,Pause,一時停止 -TEMPLATE,Template,Modèle,レンプレート -LICENSED,Licensed,Autorisé,認可済み -INTERACT,Interact,Interagir,相互作用 -SPRINT,Sprint,Sprint,スプリント -JUMP,Jump,Saut,ジャンプ -MOVE_LEFT,Move Left,Se déplacer à gauche,左に移動 -MOVE_RIGHT,Move Right,Déplacer vers la droite,右に動く -MOVE_UP,Move Up,Déplacer vers le haut,上に移動 -MOVE_DOWN,Move Down,Descendre,下に移動 \ No newline at end of file diff --git a/Localisation/text.csv.import b/Localisation/text.csv.import deleted file mode 100644 index 9dbda90..0000000 --- a/Localisation/text.csv.import +++ /dev/null @@ -1,17 +0,0 @@ -[remap] - -importer="csv_translation" -type="Translation" -uid="uid://b2enpily4v0j4" - -[deps] - -files=["res://Localisation/text.en.translation", "res://Localisation/text.fr.translation", "res://Localisation/text.ja.translation"] - -source_file="res://Localisation/text.csv" -dest_files=["res://Localisation/text.en.translation", "res://Localisation/text.fr.translation", "res://Localisation/text.ja.translation"] - -[params] - -compress=true -delimiter=0 diff --git a/Localisation/text.en.translation b/Localisation/text.en.translation deleted file mode 100644 index fdd652d..0000000 Binary files a/Localisation/text.en.translation and /dev/null differ diff --git a/Localisation/text.fr.translation b/Localisation/text.fr.translation deleted file mode 100644 index 50d450f..0000000 Binary files a/Localisation/text.fr.translation and /dev/null differ diff --git a/Localisation/text.ja.translation b/Localisation/text.ja.translation deleted file mode 100644 index b6e9739..0000000 Binary files a/Localisation/text.ja.translation and /dev/null differ diff --git a/Scenes/Prefabs/options.tscn b/Scenes/Prefabs/options.tscn deleted file mode 100644 index f367bd3..0000000 --- a/Scenes/Prefabs/options.tscn +++ /dev/null @@ -1,271 +0,0 @@ -[gd_scene load_steps=11 format=3 uid="uid://cbajm5a75aiwu"] - -[ext_resource type="Theme" uid="uid://bi0f2eo0ywyyf" path="res://Themes/main.tres" id="1_0kbby"] -[ext_resource type="Script" path="res://Scripts/UI/Options/UIOptions.cs" id="1_xjg3i"] -[ext_resource type="Script" path="res://Scripts/UI/Options/UIOptionsNav.cs" id="2_w30yg"] -[ext_resource type="Theme" uid="uid://8f4q252ns4xm" path="res://Themes/nav_btns.tres" id="3_mvq8n"] -[ext_resource type="Script" path="res://Scripts/UI/Options/UIOptionsGeneral.cs" id="3_vefex"] -[ext_resource type="Script" path="res://Scripts/UI/Options/UIOptionsDisplay.cs" id="4_o6e7i"] -[ext_resource type="Script" path="res://Scripts/UI/Options/UIOptionsAudio.cs" id="5_hbpj8"] -[ext_resource type="Script" path="res://Scripts/UI/Options/UIOptionsInput.cs" id="6_n2qcv"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_v8h3e"] -bg_color = Color(0, 0, 0, 0.392157) - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ijcjj"] - -[node name="Options" type="PanelContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme = ExtResource("1_0kbby") -theme_override_styles/panel = SubResource("StyleBoxFlat_v8h3e") -script = ExtResource("1_xjg3i") - -[node name="Margin" type="MarginContainer" parent="."] -layout_mode = 2 -theme_override_constants/margin_left = 50 -theme_override_constants/margin_top = 50 -theme_override_constants/margin_right = 50 -theme_override_constants/margin_bottom = 50 - -[node name="HBox" type="HBoxContainer" parent="Margin"] -layout_mode = 2 -theme_override_constants/separation = 30 - -[node name="Nav" type="VBoxContainer" parent="Margin/HBox"] -layout_mode = 2 -theme = ExtResource("3_mvq8n") -theme_override_constants/separation = 0 -alignment = 1 -script = ExtResource("2_w30yg") - -[node name="General" type="Button" parent="Margin/HBox/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "GENERAL" - -[node name="Display" type="Button" parent="Margin/HBox/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "DISPLAY" - -[node name="Audio" type="Button" parent="Margin/HBox/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "AUDIO" - -[node name="Input" type="Button" parent="Margin/HBox/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "INPUT" - -[node name="Content" type="PanelContainer" parent="Margin/HBox"] -layout_mode = 2 -size_flags_horizontal = 3 -theme_override_styles/panel = SubResource("StyleBoxEmpty_ijcjj") - -[node name="General" type="VBoxContainer" parent="Margin/HBox/Content"] -visible = false -layout_mode = 2 -script = ExtResource("3_vefex") - -[node name="Language" type="HBoxContainer" parent="Margin/HBox/Content/General"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/General/Language"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "LANGUAGE" - -[node name="Language" type="OptionButton" parent="Margin/HBox/Content/General/Language"] -layout_mode = 2 -item_count = 3 -selected = 0 -popup/item_0/text = "English" -popup/item_0/id = 0 -popup/item_1/text = "French" -popup/item_1/id = 1 -popup/item_2/text = "Japanese" -popup/item_2/id = 2 - -[node name="Display" type="VBoxContainer" parent="Margin/HBox/Content"] -layout_mode = 2 -theme_override_constants/separation = 10 -script = ExtResource("4_o6e7i") - -[node name="WindowMode" type="HBoxContainer" parent="Margin/HBox/Content/Display"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Display/WindowMode"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "WINDOW_MODE" - -[node name="WindowMode" type="OptionButton" parent="Margin/HBox/Content/Display/WindowMode"] -layout_mode = 2 -item_count = 3 -selected = 0 -popup/item_0/text = "WINDOWED" -popup/item_0/id = 0 -popup/item_1/text = "BORDERLESS" -popup/item_1/id = 1 -popup/item_2/text = "FULLSCREEN" -popup/item_2/id = 2 - -[node name="WindowSize" type="HBoxContainer" parent="Margin/HBox/Content/Display"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Display/WindowSize"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "WINDOW_SIZE" - -[node name="HBox" type="HBoxContainer" parent="Margin/HBox/Content/Display/WindowSize"] -layout_mode = 2 -theme_override_constants/separation = 10 - -[node name="WindowWidth" type="LineEdit" parent="Margin/HBox/Content/Display/WindowSize/HBox"] -layout_mode = 2 -text = "1920" -alignment = 1 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Display/WindowSize/HBox"] -layout_mode = 2 -text = "x" - -[node name="WindowHeight" type="LineEdit" parent="Margin/HBox/Content/Display/WindowSize/HBox"] -layout_mode = 2 -text = "1080" -alignment = 1 - -[node name="WindowSizeApply" type="Button" parent="Margin/HBox/Content/Display/WindowSize/HBox"] -custom_minimum_size = Vector2(75, 0) -layout_mode = 2 -text = "APPLY" - -[node name="VSyncMode" type="HBoxContainer" parent="Margin/HBox/Content/Display"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Display/VSyncMode"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "VSYNC_MODE" - -[node name="VSyncMode" type="OptionButton" parent="Margin/HBox/Content/Display/VSyncMode"] -layout_mode = 2 -tooltip_text = "VSync synchronizes the frame rate of the game with the monitor's refresh rate. Enable this to get rid of screen tearing. Disable this if stuttering is experienced." -item_count = 3 -selected = 1 -popup/item_0/text = "DISABLED" -popup/item_0/id = 0 -popup/item_1/text = "ENABLED" -popup/item_1/id = 1 -popup/item_2/text = "ADAPTIVE" -popup/item_2/id = 2 - -[node name="MaxFPS" type="HBoxContainer" parent="Margin/HBox/Content/Display"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Display/MaxFPS"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "MAX_FPS" - -[node name="HBox" type="HBoxContainer" parent="Margin/HBox/Content/Display/MaxFPS"] -layout_mode = 2 -theme_override_constants/separation = 20 - -[node name="MaxFPS" type="HSlider" parent="Margin/HBox/Content/Display/MaxFPS/HBox"] -custom_minimum_size = Vector2(250, 0) -layout_mode = 2 -size_flags_vertical = 4 -max_value = 120.0 -allow_greater = true - -[node name="Panel" type="PanelContainer" parent="Margin/HBox/Content/Display/MaxFPS/HBox"] -layout_mode = 2 - -[node name="Margin" type="MarginContainer" parent="Margin/HBox/Content/Display/MaxFPS/HBox/Panel"] -layout_mode = 2 -theme_override_constants/margin_left = 10 -theme_override_constants/margin_top = 5 -theme_override_constants/margin_right = 10 -theme_override_constants/margin_bottom = 5 - -[node name="MaxFPSFeedback" type="Label" parent="Margin/HBox/Content/Display/MaxFPS/HBox/Panel/Margin"] -layout_mode = 2 -text = "UNLIMITED" -vertical_alignment = 1 - -[node name="Audio" type="VBoxContainer" parent="Margin/HBox/Content"] -visible = false -layout_mode = 2 -theme_override_constants/separation = 20 -script = ExtResource("5_hbpj8") - -[node name="Music" type="HBoxContainer" parent="Margin/HBox/Content/Audio"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Audio/Music"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "MUSIC" - -[node name="Music" type="HSlider" parent="Margin/HBox/Content/Audio/Music"] -custom_minimum_size = Vector2(400, 0) -layout_mode = 2 -size_flags_vertical = 4 -value = 100.0 - -[node name="Sounds" type="HBoxContainer" parent="Margin/HBox/Content/Audio"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Margin/HBox/Content/Audio/Sounds"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -text = "SOUNDS" - -[node name="Sounds" type="HSlider" parent="Margin/HBox/Content/Audio/Sounds"] -custom_minimum_size = Vector2(400, 0) -layout_mode = 2 -size_flags_vertical = 4 -value = 75.0 - -[node name="Input" type="VBoxContainer" parent="Margin/HBox/Content"] -visible = false -layout_mode = 2 -script = ExtResource("6_n2qcv") - -[node name="Scroll" type="ScrollContainer" parent="Margin/HBox/Content/Input"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="VBox" type="VBoxContainer" parent="Margin/HBox/Content/Input/Scroll"] -layout_mode = 2 - -[node name="ResetToDefaults" type="Button" parent="Margin/HBox/Content/Input"] -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -size_flags_horizontal = 4 -text = "RESET_TO_DEFAULTS" - -[connection signal="pressed" from="Margin/HBox/Nav/General" to="Margin/HBox/Nav" method="_on_general_pressed"] -[connection signal="pressed" from="Margin/HBox/Nav/Display" to="Margin/HBox/Nav" method="_on_display_pressed"] -[connection signal="pressed" from="Margin/HBox/Nav/Audio" to="Margin/HBox/Nav" method="_on_audio_pressed"] -[connection signal="pressed" from="Margin/HBox/Nav/Input" to="Margin/HBox/Nav" method="_on_input_pressed"] -[connection signal="item_selected" from="Margin/HBox/Content/General/Language/Language" to="Margin/HBox/Content/General" method="_on_language_item_selected"] -[connection signal="item_selected" from="Margin/HBox/Content/Display/WindowMode/WindowMode" to="Margin/HBox/Content/Display" method="_on_window_mode_item_selected"] -[connection signal="text_changed" from="Margin/HBox/Content/Display/WindowSize/HBox/WindowWidth" to="Margin/HBox/Content/Display" method="_on_window_width_text_changed"] -[connection signal="text_submitted" from="Margin/HBox/Content/Display/WindowSize/HBox/WindowWidth" to="Margin/HBox/Content/Display" method="_on_window_width_text_submitted"] -[connection signal="text_changed" from="Margin/HBox/Content/Display/WindowSize/HBox/WindowHeight" to="Margin/HBox/Content/Display" method="_on_window_height_text_changed"] -[connection signal="text_submitted" from="Margin/HBox/Content/Display/WindowSize/HBox/WindowHeight" to="Margin/HBox/Content/Display" method="_on_window_height_text_submitted"] -[connection signal="pressed" from="Margin/HBox/Content/Display/WindowSize/HBox/WindowSizeApply" to="Margin/HBox/Content/Display" method="_on_window_size_apply_pressed"] -[connection signal="item_selected" from="Margin/HBox/Content/Display/VSyncMode/VSyncMode" to="Margin/HBox/Content/Display" method="_on_v_sync_mode_item_selected"] -[connection signal="drag_ended" from="Margin/HBox/Content/Display/MaxFPS/HBox/MaxFPS" to="Margin/HBox/Content/Display" method="_on_max_fps_drag_ended"] -[connection signal="value_changed" from="Margin/HBox/Content/Display/MaxFPS/HBox/MaxFPS" to="Margin/HBox/Content/Display" method="_on_max_fps_value_changed"] -[connection signal="value_changed" from="Margin/HBox/Content/Audio/Music/Music" to="Margin/HBox/Content/Audio" method="_on_music_value_changed"] -[connection signal="value_changed" from="Margin/HBox/Content/Audio/Sounds/Sounds" to="Margin/HBox/Content/Audio" method="_on_sounds_value_changed"] -[connection signal="pressed" from="Margin/HBox/Content/Input/ResetToDefaults" to="Margin/HBox/Content/Input" method="_on_reset_to_defaults_pressed"] diff --git a/Scenes/Prefabs/popup_menu.tscn b/Scenes/Prefabs/popup_menu.tscn deleted file mode 100644 index cb4da30..0000000 --- a/Scenes/Prefabs/popup_menu.tscn +++ /dev/null @@ -1,59 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://c6pism2kgjr5c"] - -[ext_resource type="Theme" uid="uid://bi0f2eo0ywyyf" path="res://Themes/main.tres" id="1_8kp65"] -[ext_resource type="Script" path="res://Scripts/UI/UIPopupMenu.cs" id="2_g08n2"] - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_j3vts"] - -[node name="UIPopupMenu" type="PanelContainer"] -visible = false -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -theme = ExtResource("1_8kp65") -theme_override_styles/panel = SubResource("StyleBoxEmpty_j3vts") -script = ExtResource("2_g08n2") - -[node name="Center" type="CenterContainer" parent="."] -layout_mode = 2 - -[node name="Panel" type="PanelContainer" parent="Center"] -layout_mode = 2 - -[node name="Margin" type="MarginContainer" parent="Center/Panel"] -layout_mode = 2 -theme_override_constants/margin_left = 50 -theme_override_constants/margin_top = 30 -theme_override_constants/margin_right = 50 -theme_override_constants/margin_bottom = 30 - -[node name="Nav" type="VBoxContainer" parent="Center/Panel/Margin"] -layout_mode = 2 - -[node name="Resume" type="Button" parent="Center/Panel/Margin/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "RESUME" - -[node name="Options" type="Button" parent="Center/Panel/Margin/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "OPTIONS" - -[node name="Main Menu" type="Button" parent="Center/Panel/Margin/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "MAIN MENU" - -[node name="Quit" type="Button" parent="Center/Panel/Margin/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "QUIT" - -[connection signal="pressed" from="Center/Panel/Margin/Nav/Resume" to="." method="_on_resume_pressed"] -[connection signal="pressed" from="Center/Panel/Margin/Nav/Options" to="." method="_on_options_pressed"] -[connection signal="pressed" from="Center/Panel/Margin/Nav/Main Menu" to="." method="_on_main_menu_pressed"] -[connection signal="pressed" from="Center/Panel/Margin/Nav/Quit" to="." method="_on_quit_pressed"] diff --git a/Scenes/credits.tscn b/Scenes/credits.tscn deleted file mode 100644 index 81f1949..0000000 --- a/Scenes/credits.tscn +++ /dev/null @@ -1,38 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://rbcqvr4snrvn"] - -[ext_resource type="Script" path="res://Scripts/UI/UICredits.cs" id="1_2ybu5"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qx1q1"] -bg_color = Color(0, 0, 0, 1) - -[node name="Credits" 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_qx1q1") -script = ExtResource("1_2ybu5") - -[node name="HBox" type="HBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -40.0 -offset_top = -40.0 -grow_horizontal = 0 -grow_vertical = 0 - -[node name="Pause" type="Button" parent="HBox"] -layout_mode = 2 -text = "PAUSE" - -[node name="Speed" type="Button" parent="HBox"] -layout_mode = 2 -text = "1.0x" - -[connection signal="pressed" from="HBox/Pause" to="." method="_on_pause_pressed"] -[connection signal="pressed" from="HBox/Speed" to="." method="_on_speed_pressed"] diff --git a/Scenes/level_3D.tscn b/Scenes/level_3D.tscn index b413f37..81496ed 100644 --- a/Scenes/level_3D.tscn +++ b/Scenes/level_3D.tscn @@ -1,7 +1,6 @@ -[gd_scene load_steps=16 format=3 uid="uid://bmu34hfw77kcw"] +[gd_scene load_steps=15 format=3 uid="uid://bmu34hfw77kcw"] [ext_resource type="Script" path="res://Scripts/Planet.cs" id="1_8qujs"] -[ext_resource type="PackedScene" uid="uid://c6pism2kgjr5c" path="res://Scenes/Prefabs/popup_menu.tscn" id="1_bhqx1"] [ext_resource type="Script" path="res://Scripts/CameraController.cs" id="2_anx2t"] [ext_resource type="Shader" path="res://water.gdshader" id="3_rujla"] @@ -38,6 +37,9 @@ shader_parameter/albedo = Color(0, 0.227451, 0.32549, 1) shader_parameter/albedo_fresnel = Color(0, 1, 0.956863, 1) shader_parameter/metallic = 0.146 shader_parameter/roughness = 0.069 +shader_parameter/wave = SubResource("NoiseTexture2D_y1cd4") +shader_parameter/texture_normal_1 = SubResource("NoiseTexture2D_j176p") +shader_parameter/texture_normal_2 = SubResource("NoiseTexture2D_ygkpg") shader_parameter/wave_direction_1 = Vector2(2, 0) shader_parameter/wave_direction_2 = Vector2(0, 1) shader_parameter/time_scale = 0.005 @@ -51,9 +53,6 @@ shader_parameter/edge_scale = 0.01 shader_parameter/near = 0.5 shader_parameter/far = 100.0 shader_parameter/edge_color = Color(0, 0, 0, 1) -shader_parameter/wave = SubResource("NoiseTexture2D_y1cd4") -shader_parameter/texture_normal_1 = SubResource("NoiseTexture2D_j176p") -shader_parameter/texture_normal_2 = SubResource("NoiseTexture2D_ygkpg") [sub_resource type="SphereMesh" id="SphereMesh_sg8se"] material = SubResource("ShaderMaterial_3ifrl") @@ -103,7 +102,3 @@ environment = SubResource("Environment_fx7rt") [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0) - -[node name="CanvasLayer" type="CanvasLayer" parent="."] - -[node name="popup_menu" parent="CanvasLayer" instance=ExtResource("1_bhqx1")] diff --git a/Scenes/main_menu.tscn b/Scenes/main_menu.tscn deleted file mode 100644 index 206903c..0000000 --- a/Scenes/main_menu.tscn +++ /dev/null @@ -1,102 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://b1ige5g5k8nma"] - -[ext_resource type="Script" path="res://Scripts/UI/UIMainMenu.cs" id="1_3ln8k"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dbvcp"] -bg_color = Color(0.172549, 0.172549, 0.172549, 1) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n05l1"] -content_margin_left = 30.0 -content_margin_top = 15.0 -content_margin_right = 30.0 -content_margin_bottom = 15.0 -bg_color = Color(0, 0, 0, 0.392157) - -[sub_resource type="Theme" id="Theme_v88qt"] -Button/styles/normal = SubResource("StyleBoxFlat_n05l1") - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_d325d"] -content_margin_left = 10.0 -content_margin_top = 10.0 -content_margin_right = 10.0 -content_margin_bottom = 10.0 -bg_color = Color(0, 0, 0, 0.392157) - -[sub_resource type="Theme" id="Theme_nbt60"] -default_font_size = 14 -Button/styles/normal = SubResource("StyleBoxFlat_d325d") - -[node name="Main Menu" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_3ln8k") - -[node name="PanelContainer" type="PanelContainer" parent="."] -layout_mode = 0 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_dbvcp") - -[node name="CenterContainer" type="CenterContainer" parent="PanelContainer"] -layout_mode = 2 - -[node name="Nav" type="VBoxContainer" parent="PanelContainer/CenterContainer"] -layout_mode = 2 -theme = SubResource("Theme_v88qt") - -[node name="Play" type="Button" parent="PanelContainer/CenterContainer/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "PLAY" - -[node name="Options" type="Button" parent="PanelContainer/CenterContainer/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "OPTIONS" - -[node name="Credits" type="Button" parent="PanelContainer/CenterContainer/Nav"] -layout_mode = 2 -text = "CREDITS" - -[node name="Quit" type="Button" parent="PanelContainer/CenterContainer/Nav"] -custom_minimum_size = Vector2(150, 0) -layout_mode = 2 -text = "QUIT" - -[node name="Margin" type="MarginContainer" parent="PanelContainer"] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 8 -theme_override_constants/margin_left = 10 -theme_override_constants/margin_top = 10 -theme_override_constants/margin_right = 10 -theme_override_constants/margin_bottom = 10 - -[node name="Socials" type="HBoxContainer" parent="PanelContainer/Margin"] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 8 -theme = SubResource("Theme_nbt60") - -[node name="Discord" type="Button" parent="PanelContainer/Margin/Socials"] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 0 -text = "Discord" - -[node name="Github" type="Button" parent="PanelContainer/Margin/Socials"] -layout_mode = 2 -text = "GitHub" - -[connection signal="pressed" from="PanelContainer/CenterContainer/Nav/Play" to="." method="_on_play_pressed"] -[connection signal="pressed" from="PanelContainer/CenterContainer/Nav/Options" to="." method="_on_options_pressed"] -[connection signal="pressed" from="PanelContainer/CenterContainer/Nav/Credits" to="." method="_on_credits_pressed"] -[connection signal="pressed" from="PanelContainer/CenterContainer/Nav/Quit" to="." method="_on_quit_pressed"] -[connection signal="pressed" from="PanelContainer/Margin/Socials/Discord" to="." method="_on_discord_pressed"] -[connection signal="pressed" from="PanelContainer/Margin/Socials/Github" to="." method="_on_github_pressed"] diff --git a/Scripts/Autoloads/AudioManager.cs b/Scripts/Autoloads/AudioManager.cs deleted file mode 100644 index 05837cc..0000000 --- a/Scripts/Autoloads/AudioManager.cs +++ /dev/null @@ -1,117 +0,0 @@ -namespace Planets; - -public partial class AudioManager : Node -{ - private static GAudioPlayer MusicPlayer { get; set; } - - private static Node SFXPlayersParent { get; set; } - private static float LastPitch { get; set; } - private static ResourceOptions Options { get; set; } - - public static void PlayMusic(AudioStream song, bool instant = true, double fadeOut = 1.5, double fadeIn = 0.5) - { - if (!instant && MusicPlayer.Playing) - { - // Transition from current song being played to new song - var tween = new GTween(MusicPlayer.StreamPlayer); - tween.Create(); - - // Fade out current song - tween.Animate("volume_db", -80, fadeOut) - .SetTrans(Tween.TransitionType.Sine) - .SetEase(Tween.EaseType.In); - - // Set to new song - tween.Callback(() => - { - MusicPlayer.Stream = song; - MusicPlayer.Play(); - }); - - // Fade in to current song - float volume = Options.MusicVolume; - var volumeRemapped = volume == 0 ? -80 : volume.Remap(0, 100, -40, 0); - tween.Animate("volume_db", volumeRemapped, fadeIn) - .SetTrans(Tween.TransitionType.Sine) - .SetEase(Tween.EaseType.In); - } - else - { - // Instantly switch to and play new song - MusicPlayer.Stream = song; - MusicPlayer.Volume = Options.MusicVolume; - MusicPlayer.Play(); - } - } - - public static void PlaySFX(AudioStream sound) - { - // Setup the SFX stream player - var sfxPlayer = new GAudioPlayer(SFXPlayersParent, true) - { - Stream = sound, - Volume = Options.SFXVolume - }; - - // Randomize the pitch - RandomNumberGenerator rng = new(); - rng.Randomize(); - float pitch = rng.RandfRange(0.8f, 1.2f); - - // Ensure the current pitch is not the same as the last - while (Mathf.Abs(pitch - LastPitch) < 0.1f) - { - rng.Randomize(); - pitch = rng.RandfRange(0.8f, 1.2f); - } - - LastPitch = pitch; - - // Play the sound - sfxPlayer.Pitch = pitch; - sfxPlayer.Play(); - } - - /// - /// Gradually fade out all sounds - /// - public static void FadeOutSFX(double fadeTime = 1) - { - foreach (AudioStreamPlayer audioPlayer in SFXPlayersParent.GetChildren()) - { - var tween = new GTween(audioPlayer); - tween.Create(); - tween.Animate("volume_db", -80, fadeTime); - } - } - - public static void SetMusicVolume(float v) - { - MusicPlayer.Volume = v; - Options.MusicVolume = MusicPlayer.Volume; - } - - public static void SetSFXVolume(float v) - { - // Set volume for future SFX players - Options.SFXVolume = v; - - // Can't cast to GAudioPlayer so will have to remap manually again - v = v == 0 ? -80 : v.Remap(0, 100, -40, 0); - - // Set volume of all SFX players currently in the scene - foreach (AudioStreamPlayer audioPlayer in SFXPlayersParent.GetChildren()) - audioPlayer.VolumeDb = v; - } - - public override void _Ready() - { - Options = OptionsManager.Options; - MusicPlayer = new GAudioPlayer(this); - - SFXPlayersParent = new Node(); - AddChild(SFXPlayersParent); - - //PlayMusic(Music.Menu); - } -} diff --git a/Scripts/Autoloads/Global.cs b/Scripts/Autoloads/Global.cs deleted file mode 100644 index 1627746..0000000 --- a/Scripts/Autoloads/Global.cs +++ /dev/null @@ -1,49 +0,0 @@ -global using Godot; -global using GodotUtils; -global using System; -global using System.Collections.Generic; -global using System.Collections.Concurrent; -global using System.Diagnostics; -global using System.Linq; -global using System.Runtime.CompilerServices; -global using System.Threading; -global using System.Text.RegularExpressions; -global using System.Threading.Tasks; - -namespace Planets; - -public partial class Global : Node -{ - private static Global Instance { get; set; } - - public override void _Ready() - { - Instance = this; - - // Gradually fade out all SFX whenever the scene is changed - SceneManager.SceneChanged += name => AudioManager.FadeOutSFX(); - } - - public override void _PhysicsProcess(double delta) - { - Logger.Update(); - } - - public override void _Notification(int what) - { - if (what == NotificationWMCloseRequest) - { - GetTree().AutoAcceptQuit = false; - Quit(); - } - } - - public static void Quit() - { - // Handle cleanup here - OptionsManager.SaveOptions(); - OptionsManager.SaveHotkeys(); - - Instance.GetTree().Quit(); - } -} diff --git a/Scripts/Autoloads/OptionsManager.cs b/Scripts/Autoloads/OptionsManager.cs deleted file mode 100644 index d068bc0..0000000 --- a/Scripts/Autoloads/OptionsManager.cs +++ /dev/null @@ -1,183 +0,0 @@ -namespace Planets; - -using Godot.Collections; - -public partial class OptionsManager : Node -{ - public static event Action WindowModeChanged; - - public static ResourceOptions Options { get; set; } - - public static Dictionary> DefaultHotkeys { get; private set; } - public static ResourceHotkeys Hotkeys { get; set; } - - public static string CurrentOptionsTab { get; set; } = "General"; - - public static void SaveOptions() - { - Error error = ResourceSaver.Save(OptionsManager.Options, "user://options.tres"); - - if (error != Error.Ok) - GD.Print(error); - } - - public static void SaveHotkeys() - { - Error error = ResourceSaver.Save(OptionsManager.Hotkeys, "user://hotkeys.tres"); - - if (error != Error.Ok) - GD.Print(error); - } - - public static void ResetHotkeys() - { - // Deep clone default hotkeys over - Hotkeys.Actions = new(); - - foreach (KeyValuePair> element in DefaultHotkeys) - { - Array arr = new(); - - foreach (InputEvent item in DefaultHotkeys[element.Key]) - { - arr.Add((InputEvent)item.Duplicate()); - } - - Hotkeys.Actions.Add(element.Key, arr); - } - - // Set input map - LoadInputMap(DefaultHotkeys); - } - - public override void _Ready() - { - LoadOptions(); - - GetDefaultHotkeys(); - LoadHotkeys(); - - SetWindowMode(); - SetVSyncMode(); - SetWinSize(); - SetMaxFPS(); - SetLanguage(); - } - - public override void _Input(InputEvent @event) - { - if (Input.IsActionJustPressed("fullscreen")) - { - if (DisplayServer.WindowGetMode() == DisplayServer.WindowMode.Windowed) - { - DisplayServer.WindowSetMode(DisplayServer.WindowMode.Fullscreen); - Options.WindowMode = WindowMode.Borderless; - WindowModeChanged?.Invoke(WindowMode.Borderless); - } - else - { - DisplayServer.WindowSetMode(DisplayServer.WindowMode.Windowed); - Options.WindowMode = WindowMode.Windowed; - WindowModeChanged?.Invoke(WindowMode.Windowed); - } - } - } - - private void LoadOptions() - { - bool fileExists = FileAccess.FileExists("user://options.tres"); - - Options = fileExists ? - GD.Load("user://options.tres") : new(); - } - - private static void LoadInputMap(Dictionary> hotkeys) - { - Array actions = InputMap.GetActions(); - - foreach (StringName action in actions) - InputMap.EraseAction(action); - - foreach (StringName action in hotkeys.Keys) - { - InputMap.AddAction(action); - - foreach (InputEvent @event in hotkeys[action]) - InputMap.ActionAddEvent(action, @event); - } - } - - private void GetDefaultHotkeys() - { - // Get all the default actions defined in the input map - Dictionary> actions = new(); - - foreach (StringName action in InputMap.GetActions()) - { - actions.Add(action, new Array()); - - foreach (InputEvent actionEvent in InputMap.ActionGetEvents(action)) - actions[action].Add(actionEvent); - } - - DefaultHotkeys = actions; - } - - private void LoadHotkeys() - { - bool fileExists = FileAccess.FileExists("user://hotkeys.tres"); - - if (fileExists) - { - Hotkeys = GD.Load("user://hotkeys.tres"); - LoadInputMap(Hotkeys.Actions); - } - else - { - Hotkeys = new(); - ResetHotkeys(); - } - } - - private void SetWindowMode() - { - switch (Options.WindowMode) - { - case WindowMode.Windowed: - DisplayServer.WindowSetMode(DisplayServer.WindowMode.Windowed); - break; - case WindowMode.Borderless: - DisplayServer.WindowSetMode(DisplayServer.WindowMode.Fullscreen); - break; - case WindowMode.Fullscreen: - DisplayServer.WindowSetMode(DisplayServer.WindowMode.ExclusiveFullscreen); - break; - } - } - - private void SetVSyncMode() => DisplayServer.WindowSetVsyncMode(Options.VSyncMode); - - private void SetWinSize() - { - if (Options.WindowSize != Vector2I.Zero) - { - DisplayServer.WindowSetSize(Options.WindowSize); - - // center window - Vector2I screenSize = DisplayServer.ScreenGetSize(); - Vector2I winSize = DisplayServer.WindowGetSize(); - DisplayServer.WindowSetPosition((screenSize / 2) - (winSize / 2)); - } - } - - private void SetMaxFPS() - { - if (DisplayServer.WindowGetVsyncMode() == DisplayServer.VSyncMode.Disabled) - { - Engine.MaxFps = Options.MaxFPS; - } - } - - private void SetLanguage() => TranslationServer.SetLocale( - Options.Language.ToString().Substring(0, 2).ToLower()); -} diff --git a/Scripts/Autoloads/audio_manager.tscn b/Scripts/Autoloads/audio_manager.tscn deleted file mode 100644 index 1ee1952..0000000 --- a/Scripts/Autoloads/audio_manager.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://jnwu35ethg3x"] - -[ext_resource type="Script" path="res://Scripts/Autoloads/AudioManager.cs" id="1_e4p82"] - -[node name="audio_manager" type="Node"] -script = ExtResource("1_e4p82") diff --git a/Scripts/Autoloads/global.tscn b/Scripts/Autoloads/global.tscn deleted file mode 100644 index dd5c407..0000000 --- a/Scripts/Autoloads/global.tscn +++ /dev/null @@ -1,12 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://cj2rg5607dbh3"] - -[ext_resource type="Script" path="res://Scripts/Autoloads/Global.cs" id="1_ueahs"] -[ext_resource type="PackedScene" uid="uid://c4o3fj5cr8ua7" path="res://GodotUtils/Prefabs/UIConsole.tscn" id="2_ht13n"] - -[node name="Global" type="Node2D"] -script = ExtResource("1_ueahs") - -[node name="CanvasLayer" type="CanvasLayer" parent="."] -layer = 100 - -[node name="UIConsole" parent="CanvasLayer" instance=ExtResource("2_ht13n")] diff --git a/Scripts/CameraController.cs b/Scripts/CameraController.cs index ed547cd..ef68515 100644 --- a/Scripts/CameraController.cs +++ b/Scripts/CameraController.cs @@ -1,56 +1,58 @@ -using System; +using Godot; +using GodotUtils; namespace Planets; public partial class CameraController : Node3D { - private float Sensitivity { get; } = 0.005f; - - private Camera3D Camera { get; set; } - private bool HoldingLeftClick { get; set; } - private Node3D Orbit { get; set; } + private Camera3D _camera; + private Node3D _orbit; + private float _sensitivity = 0.005f; + private bool _holdingLeftClick; public override void _Ready() { - Orbit = GetNode("Orbit"); - Camera = Orbit.GetNode("Camera"); + _orbit = GetNode("Orbit"); + _camera = _orbit.GetNode("Camera"); } public override void _Input(InputEvent @event) { if (@event is InputEventMouseButton button) { - HoldingLeftClick = button.ButtonIndex == MouseButton.Left && button.Pressed; + _holdingLeftClick = button.IsLeftClickPressed(); if (button.IsZoomIn()) { - Camera.Position -= new Vector3(0, 0, 0.1f); + _camera.Position -= new Vector3(0, 0, 0.1f); } if (button.IsZoomOut()) { - Camera.Position += new Vector3(0, 0, 0.1f); + _camera.Position += new Vector3(0, 0, 0.1f); } } if (@event is InputEventMouseMotion motion) + { Rotate(motion); + } } private void Rotate(InputEventMouseMotion motion) { - if (!HoldingLeftClick) + if (!_holdingLeftClick) + { return; + } - Vector2 vel = motion.Relative * Sensitivity; - + Vector2 vel = motion.Relative * _sensitivity; Vector3 rot = Rotation; rot.X -= vel.Y; rot.Y -= vel.X; + rot.X = Mathf.Clamp(rot.X, -Mathf.Pi / 2.0f, Mathf.Pi / 2.0f); // If the rot.X is not clamped then the rotation will become too chaotic - // If the rot.X is not clamped then the rotation gets too chaotic - rot.X = Mathf.Clamp(rot.X, -Mathf.Pi / 2.0f, Mathf.Pi / 2.0f); Rotation = rot; } } diff --git a/Scripts/Chunk.cs b/Scripts/ChunkUtils.cs similarity index 58% rename from Scripts/Chunk.cs rename to Scripts/ChunkUtils.cs index 70d670c..8e6153d 100644 --- a/Scripts/Chunk.cs +++ b/Scripts/ChunkUtils.cs @@ -1,62 +1,101 @@ -namespace Planets; +using Godot; +using System.Collections.Generic; +using GodotUtils; -public class Chunk -{ - private Node Parent { get; set; } +namespace Planets; - public Chunk(Node parent, Vector3 posA, Vector3 posB, Vector3 posC, int resolution) +public class ChunkUtils +{ + public static Mesh GenerateMesh(Vector3 posA, Vector3 posB, Vector3 posC, int resolution) { - Parent = parent; - Vector3[] vertices = BuildVertices(posA, posB, posC, resolution); int[] indices = BuildIndices(resolution); - GMesh gMesh = new(vertices, indices) - { - SimpleNormals = false, - Colors = GenerateColors(vertices) - }; + return GenerateWithComplexNormals(vertices, indices, GenerateColors(vertices)); + } - Parent.AddChild(new MeshInstance3D + private static ArrayMesh GenerateWithComplexNormals(Vector3[] vertices, int[] indices, Color[] colors) + { + SurfaceTool st = new(); + st.Begin(Mesh.PrimitiveType.Triangles); + + for (int i = 0; i < vertices.Length; i++) { - Mesh = gMesh.Generate(), - MaterialOverride = new StandardMaterial3D + if (colors != null) { - VertexColorUseAsAlbedo = true + st.SetColor(colors[i]); } - }); + + st.AddVertex(vertices[i]); + } + + foreach (int index in indices) + { + st.AddIndex(index); + } + + st.GenerateNormals(); + + return st.Commit(); } - private Color[] GenerateColors(Vector3[] vertices) + private static ArrayMesh GenerateWithSimpleNormals(Vector3[] vertices, int[] indices, Color[] colors) { - FastNoiseLite noise = new() + Godot.Collections.Array arrays = []; + arrays.Resize((int)Mesh.ArrayType.Max); + arrays[(int)Mesh.ArrayType.Vertex] = vertices; + + Vector3[] normals = new Vector3[vertices.Length]; + + for (int i = 0; i < normals.Length; i++) { - Frequency = 0.2f - }; + normals[i] = vertices[i].Normalized(); + } + + arrays[(int)Mesh.ArrayType.Normal] = normals; + //arrays[(int)Mesh.ArrayType.TexUv] = uvs; + + if (colors != null) + { + arrays[(int)Mesh.ArrayType.Color] = colors; + } + arrays[(int)Mesh.ArrayType.Index] = indices; + + ArrayMesh mesh = new(); + mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays); + + return mesh; + } + + private static Color[] GenerateColors(Vector3[] vertices) + { Color[] colors = new Color[vertices.Length]; + for (int i = 0; i < colors.Length; i++) { - float n = 1 + (noise.GetNoise3Dv(vertices[i]) * 10); - if (vertices[i].Length() > 9.5f) + { colors[i] = new Color("316231"); // grass + } else + { colors[i] = new Color(1, 1, 0.73f); // sand + } } return colors; } - private Vector3[] BuildVertices(Vector3 posA, Vector3 posB, Vector3 posC, int res) + private static Vector3[] BuildVertices(Vector3 posA, Vector3 posB, Vector3 posC, int res) { - List vertices = new() - { + List vertices = + [ // The 3 main corners posA, posB, posC - }; + ]; // The edge midpoints if (res >= 1) @@ -70,7 +109,9 @@ private Vector3[] BuildVertices(Vector3 posA, Vector3 posB, Vector3 posC, int re // The center points if (res >= 2) + { vertices.AddRange(GenerateCenterPoints(edgeMidpointsLeft, edgeMidpointsRight, res)); + } } vertices = DeformVertices(vertices); @@ -78,7 +119,7 @@ private Vector3[] BuildVertices(Vector3 posA, Vector3 posB, Vector3 posC, int re return vertices.ToArray(); } - private List DeformVertices(List vertices) + private static List DeformVertices(List vertices) { FastNoiseLite noise = new() { @@ -98,15 +139,15 @@ private List DeformVertices(List vertices) return vertices; } - private int[] BuildIndices(int res) + private static int[] BuildIndices(int res) { - List indices = new(); + List indices = []; // If the resolution is 0 then there are no midpoints and thus there // is only 1 triangle if (res <= 0) { - indices.AddRange(new int[] { 0, 1, 2 }); + indices.AddRange([0, 1, 2]); return indices.ToArray(); } @@ -123,7 +164,7 @@ private int[] BuildIndices(int res) // The center points int center = 3 + (res * 3); - var centerBottomRight = center + GUMath.SumNaturalNumbers(res) - 1; + var centerBottomRight = center + CMath.SumNaturalNumbers(res) - 1; var centerBottomLeft = centerBottomRight - res + 2; // The last point in each midpoint array @@ -133,20 +174,22 @@ private int[] BuildIndices(int res) // Resolution can be greater than or equal to 1 here // Draw the corner triangles - indices.AddRange(new int[] { leftFirst, topMiddle, rightFirst }); - indices.AddRange(new int[] { bottomLeft, leftLast, bottomLast }); - indices.AddRange(new int[] { bottomFirst, rightLast, bottomRight }); + indices.AddRange([leftFirst, topMiddle, rightFirst]); + indices.AddRange([bottomLeft, leftLast, bottomLast]); + indices.AddRange([bottomFirst, rightLast, bottomRight]); // If resolution equals 1 then draw the special case triangle in center if (res == 1) - indices.AddRange(new int[] { leftFirst, rightFirst, bottomFirst }); + { + indices.AddRange([leftFirst, rightFirst, bottomFirst]); + } if (res >= 2) { // Draw the special triangles near each of the 3 main corners - indices.AddRange(new int[] { center, leftFirst, rightFirst }); - indices.AddRange(new int[] { centerBottomLeft, bottomLast, leftLast }); - indices.AddRange(new int[] { centerBottomRight, rightLast, bottomFirst }); + indices.AddRange([center, leftFirst, rightFirst]); + indices.AddRange([centerBottomLeft, bottomLast, leftLast]); + indices.AddRange([centerBottomRight, rightLast, bottomFirst]); // Draw the outer edge triangles List triOuterEdgeRight = IndicesOuterEdgeRight(res, rightFirst, center); @@ -169,99 +212,99 @@ private int[] BuildIndices(int res) return indices.ToArray(); } - private List IndicesOuterEdgeRight(int res, int rightFirst, int center) + private static List IndicesOuterEdgeRight(int res, int rightFirst, int center) { - List indices = new(); + List indices = []; // Outer Right Edge Triangles // Upside for (int i = 0; i < res - 1; i++) { - indices.AddRange(new int[] - { + indices.AddRange( + [ rightFirst + i, rightFirst + i + 1, - center + GUMath.SumNaturalNumbers(i + 2) - 1 - }); + center + CMath.SumNaturalNumbers(i + 2) - 1 + ]); } // Flipside for (int i = 0; i < res - 2; i++) { - indices.AddRange(new int[] - { - center + GUMath.SumNaturalNumbers(i + 2) - 1, + indices.AddRange( + [ + center + CMath.SumNaturalNumbers(i + 2) - 1, rightFirst + i + 1, - center + GUMath.SumNaturalNumbers(i + 3) - 1 - }); + center + CMath.SumNaturalNumbers(i + 3) - 1 + ]); } return indices; } - private List IndicesOuterEdgeLeft(int res, int leftFirst, int center) + private static List IndicesOuterEdgeLeft(int res, int leftFirst, int center) { - List indices = new(); + List indices = []; // Outer Left Edge Triangles // Upside for (int i = 0; i < res - 1; i++) { - indices.AddRange(new int[] - { + indices.AddRange( + [ leftFirst + i, - center + GUMath.SumNaturalNumbers(i + 2) - i - 1, + center + CMath.SumNaturalNumbers(i + 2) - i - 1, leftFirst + i + 1 - }); + ]); } // Flipside for (int i = 0; i < res - 2; i++) { - indices.AddRange(new int[] - { + indices.AddRange( + [ leftFirst + i + 1, - center + GUMath.SumNaturalNumbers(i + 2) - i - 1, - center + GUMath.SumNaturalNumbers(i + 3) - i - 2 - }); + center + CMath.SumNaturalNumbers(i + 2) - i - 1, + center + CMath.SumNaturalNumbers(i + 3) - i - 2 + ]); } return indices; } - private List IndicesOuterBottom(int res, int bottomFirst, int centerBottomRight) + private static List IndicesOuterBottom(int res, int bottomFirst, int centerBottomRight) { - List indices = new(); + List indices = []; // Outer Bottom Edge Triangles // Upside for (int i = 0; i < res - 1; i++) { - indices.AddRange(new int[] - { + indices.AddRange( + [ bottomFirst + i + 1, centerBottomRight - i, bottomFirst + i - }); + ]); } // Flipside for (int i = 0; i < res - 2; i++) { - indices.AddRange(new int[] - { + indices.AddRange( + [ centerBottomRight - i - 1, centerBottomRight - i, bottomFirst + i + 1 - }); + ]); } return indices; } - private List IndicesCenter(int res, int center) + private static List IndicesCenter(int res, int center) { - List indices = new(); + List indices = []; // Center Triangles // Upside @@ -269,16 +312,16 @@ private List IndicesCenter(int res, int center) { for (int i = 0; i < row; i++) { - var row1 = GUMath.SumNaturalNumbers(row) + i; - var row2 = GUMath.SumNaturalNumbers(row + 1) + i; + var row1 = CMath.SumNaturalNumbers(row) + i; + var row2 = CMath.SumNaturalNumbers(row + 1) + i; var x = row2; var y = row1; var z = row2 + 1; - indices.AddRange(new int[] { + indices.AddRange([ center + x, center + y, center + z - }); + ]); } } @@ -287,25 +330,25 @@ private List IndicesCenter(int res, int center) { for (int i = 0; i < row; i++) { - var row1 = GUMath.SumNaturalNumbers(row + 1) + i; - var row2 = GUMath.SumNaturalNumbers(row + 2) + i; + var row1 = CMath.SumNaturalNumbers(row + 1) + i; + var row2 = CMath.SumNaturalNumbers(row + 2) + i; var x = row1; var y = row1 + 1; var z = row2 + 1; - indices.AddRange(new int[] { + indices.AddRange([ center + x, center + y, center + z - }); + ]); } } return indices; } - private Vector3[] GenerateCenterPoints(Vector3[] edgeMidpointsLeft, Vector3[] edgeMidpointsRight, int resolution) + private static Vector3[] GenerateCenterPoints(Vector3[] edgeMidpointsLeft, Vector3[] edgeMidpointsRight, int resolution) { - Vector3[] centerPoints = new Vector3[GUMath.SumNaturalNumbers(resolution)]; + Vector3[] centerPoints = new Vector3[CMath.SumNaturalNumbers(resolution)]; int index = 0; @@ -324,7 +367,7 @@ private Vector3[] GenerateCenterPoints(Vector3[] edgeMidpointsLeft, Vector3[] ed return centerPoints; } - private Vector3[] GenerateEdgeMidPoints(Vector3 posA, Vector3 posB, int resolution) + private static Vector3[] GenerateEdgeMidPoints(Vector3 posA, Vector3 posB, int resolution) { Vector3[] points = new Vector3[resolution]; diff --git a/Scripts/Geometry/DebugPoint.cs b/Scripts/Geometry/DebugPoint.cs index 81d7351..7bc4693 100644 --- a/Scripts/Geometry/DebugPoint.cs +++ b/Scripts/Geometry/DebugPoint.cs @@ -1,4 +1,6 @@ -namespace Planets; +using Godot; + +namespace Planets; public class DebugPoint : Sphere { @@ -12,7 +14,7 @@ public DebugPoint(Node parent, Vector3 pos, string text) : base(parent, pos) parent.AddChild(new Label3D { Text = text, - Position = Position + new Vector3(0, 0.05f, 0), + Position = _position + new Vector3(0, 0.05f, 0), FontSize = 12 }); } diff --git a/Scripts/Geometry/Icosahedron.cs b/Scripts/Geometry/Icosahedron.cs index 7b3f25e..6b8f684 100644 --- a/Scripts/Geometry/Icosahedron.cs +++ b/Scripts/Geometry/Icosahedron.cs @@ -1,4 +1,6 @@ -namespace Planets; +using Godot; + +namespace Planets; public class Icosahedron { @@ -9,8 +11,8 @@ public Icosahedron(float radius = 1) { float t = (1.0f + Mathf.Sqrt(5.0f)) / 2.0f; - Vertices = new Vector3[] - { + Vertices = + [ new Vector3(-1, t, 0).Normalized() * radius, new Vector3( 1, t, 0).Normalized() * radius, new Vector3(-1, -t, 0).Normalized() * radius, @@ -23,9 +25,9 @@ public Icosahedron(float radius = 1) new Vector3( t, 0, 1).Normalized() * radius, new Vector3(-t, 0, -1).Normalized() * radius, new Vector3(-t, 0, 1).Normalized() * radius - }; + ]; - Triangles = new int[] { + Triangles = [ 0, 5, 11, 0, 1, 5, 0, 7, 1, @@ -46,6 +48,6 @@ public Icosahedron(float radius = 1) 6, 10, 2, 8, 7, 6, 9, 1, 8 - }; + ]; } } diff --git a/Scripts/Geometry/Sphere.cs b/Scripts/Geometry/Sphere.cs index 779a459..f97bde1 100644 --- a/Scripts/Geometry/Sphere.cs +++ b/Scripts/Geometry/Sphere.cs @@ -1,24 +1,28 @@ -namespace Planets; +using Godot; + +namespace Planets; public class Sphere { - protected Vector3 Position { get; } - private SphereMesh Mesh { get; } + protected Vector3 _position; + + private readonly SphereMesh _mesh; public Sphere(Node parent, Vector3 pos) { - Position = pos; - Mesh = new(); + _position = pos; + _mesh = new(); + parent.AddChild(new MeshInstance3D { - Mesh = Mesh, + Mesh = _mesh, Position = pos }); } public Sphere SetColor(Color color) { - Mesh.Material = new StandardMaterial3D + _mesh.Material = new StandardMaterial3D { AlbedoColor = color }; @@ -28,22 +32,22 @@ public Sphere SetColor(Color color) public Sphere SetRadius(float radius) { - Mesh.Radius = radius; - Mesh.Height = radius * 2; + _mesh.Radius = radius; + _mesh.Height = radius * 2; return this; } public Sphere SetRings(int rings) { - Mesh.Rings = rings; + _mesh.Rings = rings; return this; } public Sphere SetRadialSegments(int segments) { - Mesh.RadialSegments = Mathf.Max(4, segments); + _mesh.RadialSegments = Mathf.Max(4, segments); return this; } diff --git a/Scripts/Geometry/World3DUtils.cs b/Scripts/Geometry/World3DUtils.cs deleted file mode 100644 index 27aacd2..0000000 --- a/Scripts/Geometry/World3DUtils.cs +++ /dev/null @@ -1,65 +0,0 @@ -namespace Planets; - -public class GMesh -{ - public bool SimpleNormals { get; set; } - public Color[] Colors { get; set; } - - private readonly Vector3[] vertices; - private readonly int[] indices; - - public GMesh(Vector3[] vertices, int[] indices) - { - this.vertices = vertices; - this.indices = indices; - } - - public Mesh Generate() => SimpleNormals ? - GenerateWithSimpleNormals() : GenerateWithComplexNormals(); - - private Mesh GenerateWithSimpleNormals() - { - Godot.Collections.Array arrays = new(); - arrays.Resize((int)Mesh.ArrayType.Max); - arrays[(int)Mesh.ArrayType.Vertex] = vertices; - - Vector3[] normals = new Vector3[vertices.Length]; - - for (int i = 0; i < normals.Length; i++) - normals[i] = vertices[i].Normalized(); - - arrays[(int)Mesh.ArrayType.Normal] = normals; - //arrays[(int)Mesh.ArrayType.TexUv] = uvs; - - if (Colors != null) - arrays[(int)Mesh.ArrayType.Color] = Colors; - - arrays[(int)Mesh.ArrayType.Index] = indices; - - ArrayMesh mesh = new(); - mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays); - - return mesh; - } - - private Mesh GenerateWithComplexNormals() - { - SurfaceTool st = new(); - st.Begin(Mesh.PrimitiveType.Triangles); - - for (int i = 0; i < vertices.Length; i++) - { - if (Colors != null) - st.SetColor(Colors[i]); - - st.AddVertex(vertices[i]); - } - - foreach (int index in indices) - st.AddIndex(index); - - st.GenerateNormals(); - - return st.Commit(); - } -} diff --git a/Scripts/Planet.cs b/Scripts/Planet.cs index 93b2bf0..9e41be1 100644 --- a/Scripts/Planet.cs +++ b/Scripts/Planet.cs @@ -1,3 +1,5 @@ +using Godot; + namespace Planets; public partial class Planet : Node3D @@ -12,16 +14,20 @@ public override void _Ready() int resolution = 128; - Logger.LogMs(() => + for (int i = 0; i < indices.Length; i += 3) { - for (int i = 0; i < indices.Length; i += 3) - { - Vector3 posA = vertices[indices[i]]; - Vector3 posB = vertices[indices[i + 1]]; - Vector3 posC = vertices[indices[i + 2]]; + Vector3 posA = vertices[indices[i]]; + Vector3 posB = vertices[indices[i + 1]]; + Vector3 posC = vertices[indices[i + 2]]; - new Chunk(this, posA, posB, posC, resolution); - } - }); + AddChild(new MeshInstance3D + { + Mesh = ChunkUtils.GenerateMesh(posA, posB, posC, resolution), + MaterialOverride = new StandardMaterial3D + { + VertexColorUseAsAlbedo = true + } + }); + } } } diff --git a/Scripts/Resources/ResourceHotkeys.cs b/Scripts/Resources/ResourceHotkeys.cs deleted file mode 100644 index b61d80e..0000000 --- a/Scripts/Resources/ResourceHotkeys.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Planets; - -using Godot.Collections; - -public partial class ResourceHotkeys : Resource -{ - [Export] public Dictionary> Actions { get; set; } = new(); -} diff --git a/Scripts/Resources/ResourceOptions.cs b/Scripts/Resources/ResourceOptions.cs deleted file mode 100644 index 6c1cdbd..0000000 --- a/Scripts/Resources/ResourceOptions.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Planets; - -using VSyncMode = DisplayServer.VSyncMode; - -/* - * If the ResourceOptions.cs script is moved then the file path will not updated - * in the .tres file. In order to fix this go to - * C:\Users\VALK-DESKTOP\AppData\Roaming\Godot\app_userdata\Planets - * and delete the .tres file so Godot will be forced to generate it from - * scratch. This is not a Godot bug it is just something to look out for. - * - * Resource props must have [Export] attribute otherwise they will not save - * properly. - * - * The 'recommended' way of storing config files can be found here - * https://docs.godotengine.org/en/stable/classes/class_configfile.html - * However this is undesired because values are saved through string keys - * instead of props. - */ -public partial class ResourceOptions : Resource -{ - [Export] public float MusicVolume { get; set; } = 100; - [Export] public float SFXVolume { get; set; } = 100; - [Export] public WindowMode WindowMode { get; set; } = WindowMode.Windowed; - [Export] public VSyncMode VSyncMode { get; set; } = VSyncMode.Enabled; - [Export] public Vector2I WindowSize { get; set; } - [Export] public int MaxFPS { get; set; } = 60; - [Export] public Language Language { get; set; } = Language.English; -} diff --git a/Scripts/Static/Music.cs b/Scripts/Static/Music.cs deleted file mode 100644 index d2faa6f..0000000 --- a/Scripts/Static/Music.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Planets; - -public static class Music -{ - private static AudioStream Load(string path) => - GD.Load($"res://Audio/Songs/{path}"); -} diff --git a/Scripts/Static/Prefabs.cs b/Scripts/Static/Prefabs.cs deleted file mode 100644 index cf59d2f..0000000 --- a/Scripts/Static/Prefabs.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Planets; - -public static class Prefabs -{ - public static PackedScene Options { get; } = Load("options"); - - private static PackedScene Load(string path) => - GD.Load($"res://Scenes/Prefabs/{path}.tscn"); -} diff --git a/Scripts/Static/Sounds.cs b/Scripts/Static/Sounds.cs deleted file mode 100644 index 789b6dc..0000000 --- a/Scripts/Static/Sounds.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Planets; - -public static class Sounds -{ - private static AudioStream Load(string path) => - GD.Load($"res://Audio/SFX/{path}"); -} diff --git a/Scripts/UI/Console Commands/CommandDebug.cs b/Scripts/UI/Console Commands/CommandDebug.cs deleted file mode 100644 index 1d58604..0000000 --- a/Scripts/UI/Console Commands/CommandDebug.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Planets; - -public class CommandDebug : Command -{ - public override void Run(string[] args) - { - Logger.Log("Debug"); - } -} diff --git a/Scripts/UI/Console Commands/CommandExit.cs b/Scripts/UI/Console Commands/CommandExit.cs deleted file mode 100644 index 3d9e598..0000000 --- a/Scripts/UI/Console Commands/CommandExit.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Planets; - -public class CommandExit : Command -{ - public CommandExit() => Aliases = new[] { "quit" }; - - public override void Run(string[] args) - { - Global.Quit(); - } -} diff --git a/Scripts/UI/Console Commands/CommandHelp.cs b/Scripts/UI/Console Commands/CommandHelp.cs deleted file mode 100644 index 7589fe8..0000000 --- a/Scripts/UI/Console Commands/CommandHelp.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Planets; - -using System.Reflection; - -public class CommandHelp : Command -{ - private static List CommandNames { get; } = Assembly.GetExecutingAssembly() - .GetTypes() - .Where(x => typeof(Command).IsAssignableFrom(x) && !x.IsAbstract) - .Select(Activator.CreateInstance).Cast() - .Select(x => x.GetType().Name.Replace("Command", "").ToLower()).ToList(); - - public override void Run(string[] args) => - Logger.Log($"Commands:\n{CommandNames.Print()}"); -} diff --git a/Scripts/UI/Options/UIOptions.cs b/Scripts/UI/Options/UIOptions.cs deleted file mode 100644 index a29efc5..0000000 --- a/Scripts/UI/Options/UIOptions.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Planets; - -public partial class UIOptions : PanelContainer -{ - public override void _Ready() - { - //if (SceneManager.CurrentScene.Name != "Options") - // AddThemeStyleboxOverride("panel", new StyleBoxEmpty()); - } -} diff --git a/Scripts/UI/Options/UIOptionsAudio.cs b/Scripts/UI/Options/UIOptionsAudio.cs deleted file mode 100644 index cd2e495..0000000 --- a/Scripts/UI/Options/UIOptionsAudio.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Planets; - -public partial class UIOptionsAudio : Control -{ - private ResourceOptions Options { get; set; } - - public override void _Ready() - { - Options = OptionsManager.Options; - - SetupMusic(); - SetupSounds(); - } - - private void SetupMusic() - { - HSlider slider = GetNode("Music/Music"); - slider.Value = Options.MusicVolume; - } - - private void SetupSounds() - { - HSlider slider = GetNode("Sounds/Sounds"); - slider.Value = Options.SFXVolume; - } - - private void _on_music_value_changed(float v) => - AudioManager.SetMusicVolume(v); - - private void _on_sounds_value_changed(float v) => - AudioManager.SetSFXVolume(v); -} diff --git a/Scripts/UI/Options/UIOptionsDisplay.cs b/Scripts/UI/Options/UIOptionsDisplay.cs deleted file mode 100644 index 059df4d..0000000 --- a/Scripts/UI/Options/UIOptionsDisplay.cs +++ /dev/null @@ -1,167 +0,0 @@ -using static Godot.DisplayServer; - -namespace Planets; - -public partial class UIOptionsDisplay : Control -{ - private ResourceOptions Options { get; set; } - - // Max FPS - private HSlider SliderMaxFPS { get; set; } - private Label LabelMaxFPSFeedback { get; set; } - - // Window Size - private LineEdit ResX { get; set; } - private LineEdit ResY { get; set; } - - private int PrevNumX, PrevNumY; - - // Window Mode - private OptionButton OptionButtonWindowMode { get; set; } - - // VSync Mode - private OptionButton OptionButtonVSyncMode { get; set; } - - public override void _Ready() - { - Options = OptionsManager.Options; - - SetupMaxFPS(); - SetupWindowSize(); - SetupWindowMode(); - SetupVSyncMode(); - } - - private void SetupMaxFPS() - { - LabelMaxFPSFeedback = GetNode