diff --git a/core/game_menu/assets/decoration_page1.png b/core/game_menu/assets/decoration_page1.png new file mode 100644 index 0000000..f4c53bc Binary files /dev/null and b/core/game_menu/assets/decoration_page1.png differ diff --git a/core/game_menu/assets/page_3/quality_button.png.import b/core/game_menu/assets/decoration_page1.png.import similarity index 71% rename from core/game_menu/assets/page_3/quality_button.png.import rename to core/game_menu/assets/decoration_page1.png.import index e87c8d2..d585f0d 100644 --- a/core/game_menu/assets/page_3/quality_button.png.import +++ b/core/game_menu/assets/decoration_page1.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dqqs83gh5mwof" -path="res://.godot/imported/quality_button.png-362af22cd4764f63b4532bc0ac31582c.ctex" +uid="uid://bd80xo2id3xdm" +path="res://.godot/imported/decoration_page1.png-c6b34b864930b80e5c17c69a3b3d19a0.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://core/game_menu/assets/page_3/quality_button.png" -dest_files=["res://.godot/imported/quality_button.png-362af22cd4764f63b4532bc0ac31582c.ctex"] +source_file="res://core/game_menu/assets/decoration_page1.png" +dest_files=["res://.godot/imported/decoration_page1.png-c6b34b864930b80e5c17c69a3b3d19a0.ctex"] [params] diff --git a/core/game_menu/assets/decoration_page2.png b/core/game_menu/assets/decoration_page2.png new file mode 100644 index 0000000..0783d1f Binary files /dev/null and b/core/game_menu/assets/decoration_page2.png differ diff --git a/core/game_menu/assets/page_3/resolution_button.png.import b/core/game_menu/assets/decoration_page2.png.import similarity index 71% rename from core/game_menu/assets/page_3/resolution_button.png.import rename to core/game_menu/assets/decoration_page2.png.import index 8d4ca78..92845b7 100644 --- a/core/game_menu/assets/page_3/resolution_button.png.import +++ b/core/game_menu/assets/decoration_page2.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bohvj2bmao03f" -path="res://.godot/imported/resolution_button.png-48bd04fd62af50e2585326b54ad8130f.ctex" +uid="uid://d3qq4ho24phyw" +path="res://.godot/imported/decoration_page2.png-d4209c852841afb58d7284d3e6fd6801.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://core/game_menu/assets/page_3/resolution_button.png" -dest_files=["res://.godot/imported/resolution_button.png-48bd04fd62af50e2585326b54ad8130f.ctex"] +source_file="res://core/game_menu/assets/decoration_page2.png" +dest_files=["res://.godot/imported/decoration_page2.png-d4209c852841afb58d7284d3e6fd6801.ctex"] [params] diff --git a/core/game_menu/assets/decoration_page3.png b/core/game_menu/assets/decoration_page3.png new file mode 100644 index 0000000..684710c Binary files /dev/null and b/core/game_menu/assets/decoration_page3.png differ diff --git a/core/game_menu/assets/decoration_page3.png.import b/core/game_menu/assets/decoration_page3.png.import new file mode 100644 index 0000000..36147e5 --- /dev/null +++ b/core/game_menu/assets/decoration_page3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://db2yhovnqq4cp" +path="res://.godot/imported/decoration_page3.png-5581ad5aca27e618c185f4d3e7f0fea2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/decoration_page3.png" +dest_files=["res://.godot/imported/decoration_page3.png-5581ad5aca27e618c185f4d3e7f0fea2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/lock.png b/core/game_menu/assets/lock.png new file mode 100644 index 0000000..4d3d894 Binary files /dev/null and b/core/game_menu/assets/lock.png differ diff --git a/core/game_menu/assets/lock.png.import b/core/game_menu/assets/lock.png.import new file mode 100644 index 0000000..d7fee0f --- /dev/null +++ b/core/game_menu/assets/lock.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bx6gsh5uchkge" +path="res://.godot/imported/lock.png-942bcd7274ea3432467400a057c673a4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/lock.png" +dest_files=["res://.godot/imported/lock.png-942bcd7274ea3432467400a057c673a4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_1/chooseyourbiome_text.png b/core/game_menu/assets/page_1/chooseyourbiome_text.png index 203038d..5e123c2 100644 Binary files a/core/game_menu/assets/page_1/chooseyourbiome_text.png and b/core/game_menu/assets/page_1/chooseyourbiome_text.png differ diff --git a/core/game_menu/assets/page_1/chooseyourtrain_text.png b/core/game_menu/assets/page_1/chooseyourtrain_text.png index fb29f12..c655cb1 100644 Binary files a/core/game_menu/assets/page_1/chooseyourtrain_text.png and b/core/game_menu/assets/page_1/chooseyourtrain_text.png differ diff --git a/core/game_menu/assets/page_2/achievements_text.png b/core/game_menu/assets/page_2/achievements_text.png index 65c4104..21ac915 100644 Binary files a/core/game_menu/assets/page_2/achievements_text.png and b/core/game_menu/assets/page_2/achievements_text.png differ diff --git a/core/game_menu/assets/page_2/photocollections_text.png b/core/game_menu/assets/page_2/photocollections_text.png index 7ea0d3e..a66316d 100644 Binary files a/core/game_menu/assets/page_2/photocollections_text.png and b/core/game_menu/assets/page_2/photocollections_text.png differ diff --git a/core/game_menu/assets/page_3/aliasing_button.png b/core/game_menu/assets/page_3/aliasing_button.png index 92db2c3..a657d82 100644 Binary files a/core/game_menu/assets/page_3/aliasing_button.png and b/core/game_menu/assets/page_3/aliasing_button.png differ diff --git a/core/game_menu/assets/page_3/base.png b/core/game_menu/assets/page_3/base.png new file mode 100644 index 0000000..dbfdfa2 Binary files /dev/null and b/core/game_menu/assets/page_3/base.png differ diff --git a/core/game_menu/assets/page_3/base.png.import b/core/game_menu/assets/page_3/base.png.import new file mode 100644 index 0000000..ec61fc1 --- /dev/null +++ b/core/game_menu/assets/page_3/base.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://idvleok1gecb" +path="res://.godot/imported/base.png-35dfca664909be339bca935018608cfd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/base.png" +dest_files=["res://.godot/imported/base.png-35dfca664909be339bca935018608cfd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/borderless.png b/core/game_menu/assets/page_3/borderless.png new file mode 100644 index 0000000..2cb3b78 Binary files /dev/null and b/core/game_menu/assets/page_3/borderless.png differ diff --git a/core/game_menu/assets/page_3/borderless.png.import b/core/game_menu/assets/page_3/borderless.png.import new file mode 100644 index 0000000..5ddf0b6 --- /dev/null +++ b/core/game_menu/assets/page_3/borderless.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://m5llqtaj5kla" +path="res://.godot/imported/borderless.png-7776006373879bd724ff6e75abfe2110.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/borderless.png" +dest_files=["res://.godot/imported/borderless.png-7776006373879bd724ff6e75abfe2110.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/buttoncircle_empty.png b/core/game_menu/assets/page_3/buttoncircle_empty.png new file mode 100644 index 0000000..c24d1a6 Binary files /dev/null and b/core/game_menu/assets/page_3/buttoncircle_empty.png differ diff --git a/core/game_menu/assets/page_3/buttoncircle_empty.png.import b/core/game_menu/assets/page_3/buttoncircle_empty.png.import new file mode 100644 index 0000000..64ea635 --- /dev/null +++ b/core/game_menu/assets/page_3/buttoncircle_empty.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://srsr075e1blh" +path="res://.godot/imported/buttoncircle_empty.png-004e709955abf5a4c40270f81dd8b280.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/buttoncircle_empty.png" +dest_files=["res://.godot/imported/buttoncircle_empty.png-004e709955abf5a4c40270f81dd8b280.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/buttoncircle_fill.png b/core/game_menu/assets/page_3/buttoncircle_fill.png new file mode 100644 index 0000000..33e2e04 Binary files /dev/null and b/core/game_menu/assets/page_3/buttoncircle_fill.png differ diff --git a/core/game_menu/assets/page_3/buttoncircle_fill.png.import b/core/game_menu/assets/page_3/buttoncircle_fill.png.import new file mode 100644 index 0000000..744456d --- /dev/null +++ b/core/game_menu/assets/page_3/buttoncircle_fill.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://be26apr133ywy" +path="res://.godot/imported/buttoncircle_fill.png-c6f6e85549558b77cc4e6504b299f4c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/buttoncircle_fill.png" +dest_files=["res://.godot/imported/buttoncircle_fill.png-c6f6e85549558b77cc4e6504b299f4c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/buttoncircle_selected.png b/core/game_menu/assets/page_3/buttoncircle_selected.png new file mode 100644 index 0000000..01a259d Binary files /dev/null and b/core/game_menu/assets/page_3/buttoncircle_selected.png differ diff --git a/core/game_menu/assets/page_3/buttoncircle_selected.png.import b/core/game_menu/assets/page_3/buttoncircle_selected.png.import new file mode 100644 index 0000000..fd236fd --- /dev/null +++ b/core/game_menu/assets/page_3/buttoncircle_selected.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bflho4bt4mh66" +path="res://.godot/imported/buttoncircle_selected.png-d02c1a2f732ff07cf8f0a06893743bee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/buttoncircle_selected.png" +dest_files=["res://.godot/imported/buttoncircle_selected.png-d02c1a2f732ff07cf8f0a06893743bee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/buttonsquare_empty.png b/core/game_menu/assets/page_3/buttonsquare_empty.png new file mode 100644 index 0000000..36dd780 Binary files /dev/null and b/core/game_menu/assets/page_3/buttonsquare_empty.png differ diff --git a/core/game_menu/assets/page_3/buttonsquare_empty.png.import b/core/game_menu/assets/page_3/buttonsquare_empty.png.import new file mode 100644 index 0000000..e82786a --- /dev/null +++ b/core/game_menu/assets/page_3/buttonsquare_empty.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hw1j3ii4eer" +path="res://.godot/imported/buttonsquare_empty.png-9813d1aa27d0cc5b635a9af58112a204.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/buttonsquare_empty.png" +dest_files=["res://.godot/imported/buttonsquare_empty.png-9813d1aa27d0cc5b635a9af58112a204.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/buttonsquare_fill.png b/core/game_menu/assets/page_3/buttonsquare_fill.png new file mode 100644 index 0000000..f97bf9c Binary files /dev/null and b/core/game_menu/assets/page_3/buttonsquare_fill.png differ diff --git a/core/game_menu/assets/page_3/buttonsquare_fill.png.import b/core/game_menu/assets/page_3/buttonsquare_fill.png.import new file mode 100644 index 0000000..13a6e0e --- /dev/null +++ b/core/game_menu/assets/page_3/buttonsquare_fill.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cq51kdp4p1jfk" +path="res://.godot/imported/buttonsquare_fill.png-bec9bdea5abb9a22113554a88b73bfb1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/buttonsquare_fill.png" +dest_files=["res://.godot/imported/buttonsquare_fill.png-bec9bdea5abb9a22113554a88b73bfb1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/checkbox.png b/core/game_menu/assets/page_3/checkbox.png new file mode 100644 index 0000000..b6a3621 Binary files /dev/null and b/core/game_menu/assets/page_3/checkbox.png differ diff --git a/core/game_menu/assets/page_3/checkbox.png.import b/core/game_menu/assets/page_3/checkbox.png.import new file mode 100644 index 0000000..18cb1b1 --- /dev/null +++ b/core/game_menu/assets/page_3/checkbox.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dde30f2ngoj53" +path="res://.godot/imported/checkbox.png-999e5910ae6271ca60b788aac7231b32.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/checkbox.png" +dest_files=["res://.godot/imported/checkbox.png-999e5910ae6271ca60b788aac7231b32.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/fullscreen.png b/core/game_menu/assets/page_3/fullscreen.png new file mode 100644 index 0000000..4d2a29e Binary files /dev/null and b/core/game_menu/assets/page_3/fullscreen.png differ diff --git a/core/game_menu/assets/page_3/fullscreen.png.import b/core/game_menu/assets/page_3/fullscreen.png.import new file mode 100644 index 0000000..a86e2ec --- /dev/null +++ b/core/game_menu/assets/page_3/fullscreen.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bftymw7ajgb25" +path="res://.godot/imported/fullscreen.png-74bf998c270deb1e85a7914014f931c3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/fullscreen.png" +dest_files=["res://.godot/imported/fullscreen.png-74bf998c270deb1e85a7914014f931c3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/main_volume_button.png b/core/game_menu/assets/page_3/main_volume_button.png index 557d143..15cc3ae 100644 Binary files a/core/game_menu/assets/page_3/main_volume_button.png and b/core/game_menu/assets/page_3/main_volume_button.png differ diff --git a/core/game_menu/assets/page_3/music_volume_button.png b/core/game_menu/assets/page_3/music_volume_button.png index ad2d9ea..939932c 100644 Binary files a/core/game_menu/assets/page_3/music_volume_button.png and b/core/game_menu/assets/page_3/music_volume_button.png differ diff --git a/core/game_menu/assets/page_3/play_button.png b/core/game_menu/assets/page_3/play_button.png index 2dad0a5..f32e61b 100644 Binary files a/core/game_menu/assets/page_3/play_button.png and b/core/game_menu/assets/page_3/play_button.png differ diff --git a/core/game_menu/assets/page_3/quality_button.png b/core/game_menu/assets/page_3/quality_button.png deleted file mode 100644 index 8eb45a1..0000000 Binary files a/core/game_menu/assets/page_3/quality_button.png and /dev/null differ diff --git a/core/game_menu/assets/page_3/quit_button.png b/core/game_menu/assets/page_3/quit_button.png index 00afff9..dabd953 100644 Binary files a/core/game_menu/assets/page_3/quit_button.png and b/core/game_menu/assets/page_3/quit_button.png differ diff --git a/core/game_menu/assets/page_3/resolution.png b/core/game_menu/assets/page_3/resolution.png new file mode 100644 index 0000000..645901b Binary files /dev/null and b/core/game_menu/assets/page_3/resolution.png differ diff --git a/core/game_menu/assets/page_3/resolution.png.import b/core/game_menu/assets/page_3/resolution.png.import new file mode 100644 index 0000000..53cd949 --- /dev/null +++ b/core/game_menu/assets/page_3/resolution.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djllofh10hgk6" +path="res://.godot/imported/resolution.png-e7791d7c551852aff68481a068a9d7ef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/resolution.png" +dest_files=["res://.godot/imported/resolution.png-e7791d7c551852aff68481a068a9d7ef.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/assets/page_3/resolution_button.png b/core/game_menu/assets/page_3/resolution_button.png deleted file mode 100644 index 847f3e2..0000000 Binary files a/core/game_menu/assets/page_3/resolution_button.png and /dev/null differ diff --git a/core/game_menu/assets/page_3/resume_button.png b/core/game_menu/assets/page_3/resume_button.png index daa9e28..72bc278 100644 Binary files a/core/game_menu/assets/page_3/resume_button.png and b/core/game_menu/assets/page_3/resume_button.png differ diff --git a/core/game_menu/assets/page_3/save_button.png b/core/game_menu/assets/page_3/save_button.png index bc6adc9..448fab8 100644 Binary files a/core/game_menu/assets/page_3/save_button.png and b/core/game_menu/assets/page_3/save_button.png differ diff --git a/core/game_menu/assets/page_3/settings_button.png b/core/game_menu/assets/page_3/settings_button.png index 83ee667..7d8804f 100644 Binary files a/core/game_menu/assets/page_3/settings_button.png and b/core/game_menu/assets/page_3/settings_button.png differ diff --git a/core/game_menu/assets/page_3/sfx_volume_button.png b/core/game_menu/assets/page_3/sfx_volume_button.png index 812ff64..935369a 100644 Binary files a/core/game_menu/assets/page_3/sfx_volume_button.png and b/core/game_menu/assets/page_3/sfx_volume_button.png differ diff --git a/core/game_menu/assets/page_3/windowed.png b/core/game_menu/assets/page_3/windowed.png new file mode 100644 index 0000000..5596e56 Binary files /dev/null and b/core/game_menu/assets/page_3/windowed.png differ diff --git a/core/game_menu/assets/page_3/windowed.png.import b/core/game_menu/assets/page_3/windowed.png.import new file mode 100644 index 0000000..cb99201 --- /dev/null +++ b/core/game_menu/assets/page_3/windowed.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbcs6apfftxxw" +path="res://.godot/imported/windowed.png-3a6ae844e78a7d611e7a5eb2ac5e80f2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/game_menu/assets/page_3/windowed.png" +dest_files=["res://.godot/imported/windowed.png-3a6ae844e78a7d611e7a5eb2ac5e80f2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/game_menu/audio_option.tscn b/core/game_menu/audio_option.tscn index c6140cd..bb91638 100644 --- a/core/game_menu/audio_option.tscn +++ b/core/game_menu/audio_option.tscn @@ -19,16 +19,22 @@ texture = ExtResource("4_hduhm") texture = ExtResource("4_hduhm") [node name="AudioOption" type="VBoxContainer" unique_id=1509773712] -offset_right = 319.0 -offset_bottom = 177.0 +custom_minimum_size = Vector2(280, 117) +anchors_preset = -1 +anchor_right = 0.14583333 +anchor_bottom = 0.108333334 theme_override_constants/separation = 0 script = ExtResource("1_orafl") image = ExtResource("2_vudub") +metadata/_edit_use_anchors_ = true [node name="Texture" type="TextureRect" parent="." unique_id=637050541] unique_name_in_owner = true +custom_minimum_size = Vector2(250, 65) layout_mode = 2 +size_flags_horizontal = 4 texture = ExtResource("2_vudub") +expand_mode = 1 stretch_mode = 5 [node name="HSlider" type="HSlider" parent="." unique_id=1286896253] diff --git a/core/game_menu/checkbox.gd b/core/game_menu/checkbox.gd new file mode 100644 index 0000000..df4df40 --- /dev/null +++ b/core/game_menu/checkbox.gd @@ -0,0 +1,7 @@ +@tool +extends Button + +class_name CustomCheckbox + +func _on_toggled(toggled_on: bool) -> void: + $%ToggleTexture.visible = toggled_on diff --git a/core/game_menu/checkbox.gd.uid b/core/game_menu/checkbox.gd.uid new file mode 100644 index 0000000..7591cb2 --- /dev/null +++ b/core/game_menu/checkbox.gd.uid @@ -0,0 +1 @@ +uid://bf28djpewxwai diff --git a/core/game_menu/checkbox.tscn b/core/game_menu/checkbox.tscn new file mode 100644 index 0000000..ab8dd3b --- /dev/null +++ b/core/game_menu/checkbox.tscn @@ -0,0 +1,51 @@ +[gd_scene format=3 uid="uid://gvpxmy1bgt8h"] + +[ext_resource type="Script" uid="uid://bf28djpewxwai" path="res://core/game_menu/checkbox.gd" id="2_ma3ho"] +[ext_resource type="Texture2D" uid="uid://hw1j3ii4eer" path="res://core/game_menu/assets/page_3/buttonsquare_empty.png" id="2_p1o3r"] +[ext_resource type="Texture2D" uid="uid://dde30f2ngoj53" path="res://core/game_menu/assets/page_3/checkbox.png" id="4_p1o3r"] + +[node name="Checkbox" type="Button" unique_id=1346986972] +custom_minimum_size = Vector2(52, 52) +anchors_preset = -1 +anchor_right = 0.027083334 +anchor_bottom = 0.048148148 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +toggle_mode = true +flat = true +script = ExtResource("2_ma3ho") +metadata/_edit_use_anchors_ = true + +[node name="Texture" type="TextureRect" parent="." unique_id=1951376393] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +texture = ExtResource("2_p1o3r") +expand_mode = 1 + +[node name="ToggleTexture" type="TextureRect" parent="." unique_id=1931011536] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +texture = ExtResource("4_p1o3r") +expand_mode = 1 + +[connection signal="toggled" from="." to="." method="_on_toggled"] diff --git a/core/game_menu/color_picker.gd b/core/game_menu/color_picker.gd index 1a767ac..3a6cf5d 100644 --- a/core/game_menu/color_picker.gd +++ b/core/game_menu/color_picker.gd @@ -3,32 +3,24 @@ extends Button class_name TrainColorPicker -@export var image: Texture: +@export var color: Color = Color(1,1,1,1): set(value): - image = value - if is_inside_tree() and has_node("%Texture"): - $%Texture.texture = image - -@onready var color: Color + color = value + if is_inside_tree() and has_node("%FillColor"): + $%FillColor.modulate = color var selected: bool = false func _ready(): - if image != null and has_node("%Texture"): - $%Texture.texture = image - if $%Texture.texture != null: - var img = $%Texture.texture.get_image() - color = img.get_pixel(0, 0) - else: - color = Color.BLACK - $%Border.color.a = 0 - + if has_node("%FillColor"): + $%FillColor.modulate = color + $%SelectedBorder.modulate.a = 0 func select() -> void: if selected: return selected = true - $%Border.color.a = 1 + $%SelectedBorder.modulate.a = 1 TweenFX.stop_all(self) scale = Vector2.ONE rotation = 0.0 @@ -40,7 +32,7 @@ func deselect() -> void: if !selected: return selected = false - $%Border.color.a = 0 + $%SelectedBorder.modulate.a = 0 func _on_mouse_entered() -> void: diff --git a/core/game_menu/color_picker.tscn b/core/game_menu/color_picker.tscn index 3abdb12..782a107 100644 --- a/core/game_menu/color_picker.tscn +++ b/core/game_menu/color_picker.tscn @@ -1,7 +1,9 @@ [gd_scene format=3 uid="uid://ch1st1oryjoio"] -[ext_resource type="Texture2D" uid="uid://cdjwvwst3f10a" path="res://core/game_menu/assets/page_1/customizecolor-1.png" id="1_us0rx"] +[ext_resource type="Texture2D" uid="uid://bflho4bt4mh66" path="res://core/game_menu/assets/page_3/buttoncircle_selected.png" id="2_1folt"] [ext_resource type="Script" uid="uid://crfw5whcjs0du" path="res://core/game_menu/color_picker.gd" id="2_323rd"] +[ext_resource type="Texture2D" uid="uid://srsr075e1blh" path="res://core/game_menu/assets/page_3/buttoncircle_empty.png" id="3_264kt"] +[ext_resource type="Texture2D" uid="uid://be26apr133ywy" path="res://core/game_menu/assets/page_3/buttoncircle_fill.png" id="4_1folt"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_323rd"] @@ -26,10 +28,12 @@ [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6pmjh"] [node name="ColorPicker" type="Button" unique_id=1664685328] -custom_minimum_size = Vector2(60, 60) +custom_minimum_size = Vector2(75, 71) anchors_preset = -1 -anchor_right = 0.03125 -anchor_bottom = 0.055555556 +anchor_right = 0.0390625 +anchor_bottom = 0.06574074 +offset_right = -5.0 +offset_bottom = -1.0 pivot_offset_ratio = Vector2(0.5, 0.5) theme_override_styles/normal = SubResource("StyleBoxEmpty_323rd") theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_264kt") @@ -43,10 +47,9 @@ theme_override_styles/disabled = SubResource("StyleBoxEmpty_2ocph") theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_5386i") theme_override_styles/focus = SubResource("StyleBoxEmpty_6pmjh") script = ExtResource("2_323rd") -image = ExtResource("1_us0rx") metadata/_edit_use_anchors_ = true -[node name="Border" type="ColorRect" parent="." unique_id=1774696864] +[node name="SelectedBorder" type="TextureRect" parent="." unique_id=1490766537] unique_name_in_owner = true layout_mode = 1 anchors_preset = 15 @@ -54,21 +57,42 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -mouse_filter = 2 +texture = ExtResource("2_1folt") -[node name="Texture" type="TextureRect" parent="Border" unique_id=329703623] +[node name="FillColor" type="TextureRect" parent="." unique_id=1634640310] unique_name_in_owner = true +custom_minimum_size = Vector2(48, 52) layout_mode = 1 -anchors_preset = -1 -anchor_left = 0.058333334 -anchor_top = 0.058333334 -anchor_right = 0.94166666 -anchor_bottom = 0.94166666 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -24.0 +offset_top = -26.0 +offset_right = 24.0 +offset_bottom = 26.0 grow_horizontal = 2 grow_vertical = 2 -mouse_filter = 2 -texture = ExtResource("1_us0rx") -metadata/_edit_use_anchors_ = true +texture = ExtResource("4_1folt") +expand_mode = 1 + +[node name="ButtonTexture" type="TextureRect" parent="." unique_id=813207030] +custom_minimum_size = Vector2(50, 52) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -25.0 +offset_top = -26.0 +offset_right = 25.0 +offset_bottom = 26.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("3_264kt") +expand_mode = 1 [connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] [connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/core/game_menu/option_menu_button.tscn b/core/game_menu/option_menu_button.tscn index 0022b4a..4dda008 100644 --- a/core/game_menu/option_menu_button.tscn +++ b/core/game_menu/option_menu_button.tscn @@ -49,17 +49,18 @@ metadata/_edit_use_anchors_ = true [node name="Texture" type="TextureRect" parent="." unique_id=1177880405] unique_name_in_owner = true +custom_minimum_size = Vector2(302, 90) layout_mode = 1 anchors_preset = -1 -anchor_left = 0.42135417 -anchor_top = 0.45833334 -anchor_right = 0.5786458 -anchor_bottom = 0.5416667 +anchor_right = 1.0 +anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 pivot_offset_ratio = Vector2(0.5, 0.5) mouse_filter = 2 texture = ExtResource("1_movd1") +expand_mode = 1 +stretch_mode = 5 metadata/_edit_use_anchors_ = true [connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] diff --git a/core/game_menu/page_1.tscn b/core/game_menu/page_1.tscn index 60b0a32..7f41ec4 100644 --- a/core/game_menu/page_1.tscn +++ b/core/game_menu/page_1.tscn @@ -1,6 +1,7 @@ [gd_scene format=3 uid="uid://bqvpnu74cwry8"] [ext_resource type="PackedScene" uid="uid://id854u4gh12f" path="res://core/game_menu/page.tscn" id="1_uxih6"] +[ext_resource type="Texture2D" uid="uid://bd80xo2id3xdm" path="res://core/game_menu/assets/decoration_page1.png" id="2_3i50p"] [ext_resource type="PackedScene" uid="uid://bh1kxsp5jyxfx" path="res://core/game_menu/train_selector.tscn" id="3_ijm38"] [ext_resource type="PackedScene" uid="uid://bc60gon7fmvbr" path="res://core/game_menu/biome_selector.tscn" id="12_7yi8x"] @@ -14,14 +15,36 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="TrainSelector" parent="." index="1" unique_id=1039769375 instance=ExtResource("3_ijm38")] +[node name="Background" parent="." index="0" unique_id=1203110384] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 0.0 +offset_bottom = 0.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Decoration" type="TextureRect" parent="." index="1" unique_id=161938515] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("2_3i50p") +expand_mode = 1 + +[node name="TrainSelector" parent="." index="2" unique_id=1039769375 instance=ExtResource("3_ijm38")] layout_mode = 0 offset_left = 211.0 offset_top = 365.0 offset_right = 871.0 offset_bottom = 758.0 -[node name="BiomeSelector" parent="." index="2" unique_id=1957954960 instance=ExtResource("12_7yi8x")] +[node name="BiomeSelector" parent="." index="3" unique_id=1957954960 instance=ExtResource("12_7yi8x")] layout_mode = 0 offset_left = 1038.0 offset_top = 365.0 diff --git a/core/game_menu/page_2.tscn b/core/game_menu/page_2.tscn index 76e5faf..596ffc8 100644 --- a/core/game_menu/page_2.tscn +++ b/core/game_menu/page_2.tscn @@ -2,10 +2,12 @@ [ext_resource type="PackedScene" uid="uid://id854u4gh12f" path="res://core/game_menu/page.tscn" id="1_ka6tx"] [ext_resource type="Texture2D" uid="uid://xgx0211eo8hi" path="res://core/game_menu/assets/page_2/photocollections_text.png" id="2_4uwhd"] +[ext_resource type="Texture2D" uid="uid://d3qq4ho24phyw" path="res://core/game_menu/assets/decoration_page2.png" id="2_xqdsh"] [ext_resource type="Texture2D" uid="uid://xfl3ks4dbfaw" path="res://core/game_menu/assets/page_2/achievements_text.png" id="3_4uwhd"] [ext_resource type="PackedScene" uid="uid://b6r787sik5yil" path="res://core/game_menu/photo_gallery.tscn" id="4_3tfra"] [ext_resource type="PackedScene" uid="uid://bvw086glfpcba" path="res://core/game_menu/collectible_gallery.tscn" id="5_w0bcg"] [ext_resource type="PackedScene" uid="uid://c7t3p8sp54apy" path="res://core/game_menu/highlighted_photo.tscn" id="6_2273a"] +[ext_resource type="Texture2D" uid="uid://bx6gsh5uchkge" path="res://core/game_menu/assets/lock.png" id="8_48jk0"] [node name="Page2" unique_id=2037261222 instance=ExtResource("1_ka6tx")] anchors_preset = 15 @@ -17,16 +19,28 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="PhotoCollectionText" type="TextureRect" parent="." index="1" unique_id=240014191] +[node name="Decoration" type="TextureRect" parent="." index="1" unique_id=529740362] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("2_xqdsh") +expand_mode = 1 + +[node name="PhotoCollectionText" type="TextureRect" parent="." index="2" unique_id=240014191] layout_mode = 0 -offset_left = 350.0 +offset_left = 260.0 offset_top = 330.0 -offset_right = 758.0 -offset_bottom = 410.0 +offset_right = 827.0 +offset_bottom = 415.0 texture = ExtResource("2_4uwhd") stretch_mode = 3 -[node name="AchievementsText" type="TextureRect" parent="." index="2" unique_id=1478291812] +[node name="AchievementsText" type="TextureRect" parent="." index="3" unique_id=1478291812] layout_mode = 0 offset_left = 1184.0 offset_top = 330.0 @@ -35,20 +49,31 @@ offset_bottom = 401.0 texture = ExtResource("3_4uwhd") stretch_mode = 3 -[node name="PhotoGallery" parent="." index="3" unique_id=354419843 instance=ExtResource("4_3tfra")] +[node name="PhotoGallery" parent="." index="4" unique_id=354419843 instance=ExtResource("4_3tfra")] layout_mode = 1 offset_left = 244.0 offset_top = 410.0 offset_right = 844.0 offset_bottom = 850.0 -[node name="CollectibleGallery" parent="." index="4" unique_id=708445500 instance=ExtResource("5_w0bcg")] +[node name="CollectibleGallery" parent="." index="5" unique_id=708445500 instance=ExtResource("5_w0bcg")] +visible = false layout_mode = 1 offset_left = 1050.0 offset_top = 425.0 offset_right = 1690.0 offset_bottom = 835.0011 -[node name="HighlightedPhoto" parent="." index="5" unique_id=888465569 instance=ExtResource("6_2273a")] +[node name="HighlightedPhoto" parent="." index="6" unique_id=888465569 instance=ExtResource("6_2273a")] visible = false layout_mode = 1 + +[node name="LockTexture" type="TextureRect" parent="." index="7" unique_id=1369712242] +layout_mode = 0 +offset_left = 1265.0 +offset_top = 449.0 +offset_right = 1547.0 +offset_bottom = 809.6977 +texture = ExtResource("8_48jk0") +expand_mode = 1 +stretch_mode = 5 diff --git a/core/game_menu/page_3.tscn b/core/game_menu/page_3.tscn index 17e5dd9..29ccc29 100644 --- a/core/game_menu/page_3.tscn +++ b/core/game_menu/page_3.tscn @@ -3,6 +3,7 @@ [ext_resource type="PackedScene" uid="uid://id854u4gh12f" path="res://core/game_menu/page.tscn" id="1_ua8fn"] [ext_resource type="Texture2D" uid="uid://fpnhk1ygcrmu" path="res://core/game_menu/assets/page_3/bg_timbri.png" id="2_ckqcb"] [ext_resource type="PackedScene" uid="uid://cxf8s80ivwj1p" path="res://core/game_menu/option_menu.tscn" id="2_tymfi"] +[ext_resource type="Texture2D" uid="uid://db2yhovnqq4cp" path="res://core/game_menu/assets/decoration_page3.png" id="2_yx6jr"] [ext_resource type="PackedScene" uid="uid://caqf471x0kttc" path="res://core/game_menu/settings_menu.tscn" id="4_twko7"] [node name="Page3" unique_id=2037261222 instance=ExtResource("1_ua8fn")] @@ -15,25 +16,40 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="TextureRect" type="TextureRect" parent="." index="1" unique_id=464034413] -layout_mode = 0 -offset_left = 1040.0 -offset_top = 309.0 -offset_right = 1738.0 -offset_bottom = 836.0 -texture = ExtResource("2_ckqcb") +[node name="Background" parent="." index="0" unique_id=1203110384] +visible = true -[node name="OptionMenu" parent="." index="2" unique_id=1055457221 instance=ExtResource("2_tymfi")] +[node name="Decoration" type="TextureRect" parent="." index="1" unique_id=980764536] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("2_yx6jr") +expand_mode = 1 + +[node name="TextureRect" type="TextureRect" parent="." index="2" unique_id=464034413] +layout_mode = 0 +anchor_left = 0.5416667 +anchor_top = 0.28611112 +anchor_right = 0.90520835 +anchor_bottom = 0.7740741 +texture = ExtResource("2_ckqcb") +metadata/_edit_use_anchors_ = true + +[node name="OptionMenu" parent="." index="3" unique_id=1055457221 instance=ExtResource("2_tymfi")] layout_mode = 0 anchors_preset = 0 -anchor_right = 0.0 -anchor_bottom = 0.0 -offset_left = 1385.0 -offset_top = 563.0 -offset_right = 1385.0 -offset_bottom = 563.0 +anchor_left = 0.7213542 +anchor_top = 0.5212963 +anchor_right = 0.7213542 +anchor_bottom = 0.5212963 grow_horizontal = 1 grow_vertical = 1 +metadata/_edit_use_anchors_ = true [node name="PlayButton" parent="OptionMenu/VBoxContainer" parent_id_path=PackedInt32Array(1055457221, 508055524) index="0" unique_id=1990327704] visible = false @@ -41,11 +57,16 @@ visible = false [node name="SettingsButton" parent="OptionMenu/VBoxContainer" parent_id_path=PackedInt32Array(1055457221, 508055524) index="2" unique_id=1931222561] visible = false -[node name="SettingsMenu" parent="." index="3" unique_id=1639777294 instance=ExtResource("4_twko7")] +[node name="SettingsMenu" parent="." index="4" unique_id=1639777294 instance=ExtResource("4_twko7")] layout_mode = 1 -offset_left = 365.0 -offset_top = 304.0 -offset_right = 365.0 -offset_bottom = 304.0 +anchor_top = 0.5388889 +anchor_right = 0.0 +anchor_bottom = 0.5388889 +offset_left = 278.11 +offset_top = -240.0 +offset_right = 902.11 +offset_bottom = 285.0 +grow_vertical = 2 +size_flags_horizontal = 6 [editable path="OptionMenu"] diff --git a/core/game_menu/settings_menu.gd b/core/game_menu/settings_menu.gd index 6327c27..8a82d24 100644 --- a/core/game_menu/settings_menu.gd +++ b/core/game_menu/settings_menu.gd @@ -1,11 +1,40 @@ -extends Control +extends HBoxContainer class_name SettingsMenu @onready var audio_options_container: VBoxContainer = $%AudioOptionsContainer +@onready var aliasing_checkbox: CustomCheckbox = $%AliasingCheckbox + +@onready var window_option_menu = $VBoxContainer/WindowOptionMenu func _ready() -> void: _refresh_audio_options() + + if aliasing_checkbox: + aliasing_checkbox.button_pressed = GameState.save_data.anti_aliasing + aliasing_checkbox.toggled.connect(_on_aliasing_toggled) + + if window_option_menu: + var initial_res = Vector2i(GameState.save_data.resolution_x, GameState.save_data.resolution_y) + window_option_menu.initialize(GameState.save_data.window_mode_index, initial_res) + window_option_menu.mode_changed.connect(_on_window_mode_changed) + window_option_menu.resolution_changed.connect(_on_resolution_changed) + +func _on_aliasing_toggled(toggled_on: bool) -> void: + GameState.save_data.anti_aliasing = toggled_on + GameState.save_game() + GameState.apply_video_settings() + +func _on_window_mode_changed(mode_index: int) -> void: + GameState.save_data.window_mode_index = mode_index + GameState.save_game() + GameState.apply_video_settings() + +func _on_resolution_changed(resolution: Vector2i) -> void: + GameState.save_data.resolution_x = resolution.x + GameState.save_data.resolution_y = resolution.y + GameState.save_game() + GameState.apply_video_settings() func _get_audio_options() -> Array[AudioOption]: var audio_options: Array[AudioOption] = [] diff --git a/core/game_menu/settings_menu.tscn b/core/game_menu/settings_menu.tscn index decbdb9..c301baa 100644 --- a/core/game_menu/settings_menu.tscn +++ b/core/game_menu/settings_menu.tscn @@ -4,43 +4,80 @@ [ext_resource type="PackedScene" uid="uid://cescrovsjlwke" path="res://core/game_menu/audio_option.tscn" id="1_hwcco"] [ext_resource type="Texture2D" uid="uid://0t00kjvrw206" path="res://core/game_menu/assets/page_3/music_volume_button.png" id="3_kgdba"] [ext_resource type="Texture2D" uid="uid://dvergpy6qgggn" path="res://core/game_menu/assets/page_3/sfx_volume_button.png" id="4_ugk4n"] +[ext_resource type="Texture2D" uid="uid://c0s17sglugylc" path="res://core/game_menu/assets/page_3/aliasing_button.png" id="5_8sr5x"] [ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/tween/container_tween.tscn" id="5_p0gqk"] +[ext_resource type="PackedScene" uid="uid://cxkmo80ecvyal" path="res://core/game_menu/window_option_menu.tscn" id="6_ocbt2"] +[ext_resource type="PackedScene" uid="uid://gvpxmy1bgt8h" path="res://core/game_menu/checkbox.tscn" id="6_r08il"] -[node name="SettingsMenu" type="Control" unique_id=1639777294] -custom_minimum_size = Vector2(327, 512) -layout_mode = 3 -anchor_right = 0.1703125 -anchor_bottom = 0.47407407 -offset_right = -327.0 -offset_bottom = -512.0 +[node name="SettingsMenu" type="HBoxContainer" unique_id=513569488] +custom_minimum_size = Vector2(624, 525) +anchors_preset = -1 +anchor_right = 0.325 +anchor_bottom = 0.4861111 pivot_offset_ratio = Vector2(0.5, 0.5) script = ExtResource("1_4lekq") metadata/_edit_use_anchors_ = true -[node name="AudioOptionsContainer" type="VBoxContainer" parent="." unique_id=743642398] -unique_name_in_owner = true -custom_minimum_size = Vector2(327, 512) -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/separation = 12 -alignment = 1 +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1067656285] +layout_mode = 2 +mouse_filter = 2 +theme_override_constants/margin_top = 48 -[node name="MasterVolume_AudioOption" parent="AudioOptionsContainer" unique_id=1509773712 instance=ExtResource("1_hwcco")] +[node name="AudioOptionsContainer" type="VBoxContainer" parent="MarginContainer" unique_id=743642398] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 0 +theme_override_constants/separation = 32 +metadata/_edit_use_anchors_ = true + +[node name="MasterVolume_AudioOption" parent="MarginContainer/AudioOptionsContainer" unique_id=1509773712 instance=ExtResource("1_hwcco")] layout_mode = 2 -[node name="MusicVolume_AudioOption" parent="AudioOptionsContainer" unique_id=690924616 instance=ExtResource("1_hwcco")] +[node name="MusicVolume_AudioOption" parent="MarginContainer/AudioOptionsContainer" unique_id=690924616 instance=ExtResource("1_hwcco")] layout_mode = 2 image = ExtResource("3_kgdba") bus_name = &"Music" -[node name="SFXVolume_AudioOption" parent="AudioOptionsContainer" unique_id=2096291127 instance=ExtResource("1_hwcco")] +[node name="SFXVolume_AudioOption" parent="MarginContainer/AudioOptionsContainer" unique_id=2096291127 instance=ExtResource("1_hwcco")] layout_mode = 2 image = ExtResource("4_ugk4n") bus_name = &"SFX" +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1034452799] +layout_mode = 2 +theme_override_constants/separation = 48 + +[node name="AliasingOption" type="Control" parent="VBoxContainer" unique_id=960976098] +custom_minimum_size = Vector2(265, 78) +layout_mode = 2 +size_flags_horizontal = 4 + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/AliasingOption" unique_id=148856120] +custom_minimum_size = Vector2(208, 78) +layout_mode = 0 +offset_right = 208.0 +offset_bottom = 78.0 +texture = ExtResource("5_8sr5x") +expand_mode = 1 +stretch_mode = 5 + +[node name="AliasingCheckbox" parent="VBoxContainer/AliasingOption" unique_id=1346986972 instance=ExtResource("6_r08il")] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -60.0 +offset_top = -26.0 +offset_right = -8.0 +offset_bottom = 26.0 +grow_horizontal = 0 + +[node name="WindowOptionMenu" parent="VBoxContainer" unique_id=1829826194 instance=ExtResource("6_ocbt2")] +custom_minimum_size = Vector2(320, 342) +layout_mode = 2 + [node name="ContainerTween" parent="." unique_id=160227524 node_paths=PackedStringArray("targets") instance=ExtResource("5_p0gqk")] -targets = [NodePath("../AudioOptionsContainer/MasterVolume_AudioOption"), NodePath("../AudioOptionsContainer/MusicVolume_AudioOption"), NodePath("../AudioOptionsContainer/SFXVolume_AudioOption")] +targets = [NodePath("../MarginContainer/AudioOptionsContainer/MasterVolume_AudioOption"), NodePath("../MarginContainer/AudioOptionsContainer/MusicVolume_AudioOption"), NodePath("../MarginContainer/AudioOptionsContainer/SFXVolume_AudioOption"), NodePath("../VBoxContainer/AliasingOption"), NodePath("../VBoxContainer/WindowOptionMenu")] diff --git a/core/game_menu/train_selector.tscn b/core/game_menu/train_selector.tscn index cbd7500..6a0a6c2 100644 --- a/core/game_menu/train_selector.tscn +++ b/core/game_menu/train_selector.tscn @@ -4,11 +4,6 @@ [ext_resource type="Texture2D" uid="uid://bjqp8kmb5y7px" path="res://core/game_menu/assets/page_1/chooseyourtrain_text.png" id="2_cfvtr"] [ext_resource type="PackedScene" uid="uid://dm3skv22c60tm" path="res://core/game_menu/arrow_button.tscn" id="2_puip6"] [ext_resource type="PackedScene" uid="uid://ch1st1oryjoio" path="res://core/game_menu/color_picker.tscn" id="3_i2rs1"] -[ext_resource type="Texture2D" uid="uid://b5arobd7gl4u4" path="res://core/game_menu/assets/page_1/customizecolor-3.png" id="4_cfvtr"] -[ext_resource type="Texture2D" uid="uid://el88fib24nl0" path="res://core/game_menu/assets/page_1/customizecolor-4.png" id="5_jnto8"] -[ext_resource type="Texture2D" uid="uid://bv07xhpe3kh0r" path="res://core/game_menu/assets/page_1/customizecolor-5.png" id="6_dxnpq"] -[ext_resource type="Texture2D" uid="uid://cryqbi1av2x1c" path="res://core/game_menu/assets/page_1/customizecolor.png" id="7_d1sdr"] -[ext_resource type="Texture2D" uid="uid://d4l5ih723j3md" path="res://core/game_menu/assets/page_1/customizecolor-2.png" id="8_tuh6m"] [ext_resource type="PackedScene" uid="uid://dxun0jk5t0n6" path="res://core/tween/container_tween.tscn" id="10_i2rs1"] [ext_resource type="PackedScene" uid="uid://otptvwer4par" path="res://tgcc/train/train.tscn" id="11_train"] @@ -59,43 +54,43 @@ flip_h = true [node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer2" unique_id=1364417494] layout_mode = 2 -theme_override_constants/separation = 18 +theme_override_constants/separation = 0 alignment = 1 [node name="ColorPicker1" parent="HBoxContainer2/HBoxContainer" unique_id=59169767 instance=ExtResource("3_i2rs1")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 4 -image = ExtResource("4_cfvtr") +color = Color(0.7432059, 0.5684909, 1, 1) [node name="ColorPicker2" parent="HBoxContainer2/HBoxContainer" unique_id=584054476 instance=ExtResource("3_i2rs1")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 4 -image = ExtResource("5_jnto8") +color = Color(0.47657922, 0.8792635, 0.8823829, 1) [node name="ColorPicker3" parent="HBoxContainer2/HBoxContainer" unique_id=889429149 instance=ExtResource("3_i2rs1")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 4 -image = ExtResource("6_dxnpq") +color = Color(0.54004896, 0.5516501, 0.45533067, 1) [node name="ColorPicker4" parent="HBoxContainer2/HBoxContainer" unique_id=466686411 instance=ExtResource("3_i2rs1")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 4 -image = ExtResource("7_d1sdr") +color = Color(0.40863404, 1, 0.47657922, 1) [node name="ColorPicker5" parent="HBoxContainer2/HBoxContainer" unique_id=675841518 instance=ExtResource("3_i2rs1")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 4 +color = Color(1, 0, 0, 1) [node name="ColorPicker6" parent="HBoxContainer2/HBoxContainer" unique_id=1698412911 instance=ExtResource("3_i2rs1")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 4 -image = ExtResource("8_tuh6m") [node name="ArrowButtonRight" parent="HBoxContainer2" unique_id=68298624 instance=ExtResource("2_puip6")] unique_name_in_owner = true diff --git a/core/game_menu/window_option_menu.gd b/core/game_menu/window_option_menu.gd new file mode 100644 index 0000000..a436d99 --- /dev/null +++ b/core/game_menu/window_option_menu.gd @@ -0,0 +1,117 @@ +extends Control + +signal mode_changed(mode_index: int) +signal resolution_changed(resolution: Vector2i) + +@export var window_option_menu_button_scene: PackedScene + +var current_mode_index: int = 0 +var current_resolution: Vector2i = Vector2i.ZERO + +var available_resolutions: Array[Vector2i] = [ + Vector2i(1280, 720), + Vector2i(1366, 768), + Vector2i(1600, 900), + Vector2i(1920, 1080), + Vector2i(2560, 1440), + Vector2i(3840, 2160) +] + +var _valid_resolutions: Array[Vector2i] = [] + +@onready var left_arrow = $%LeftArrowButton +@onready var right_arrow = $%RightArrowButton + +@onready var buttons = [ + $%FullScreenButton, + $%BorderlessButton, + $%WindowedButton +] + +@onready var base = $%Base +@onready var resolutions_list = $%ResolutionsList + +func _ready() -> void: + left_arrow.pressed.connect(_on_left_arrow_pressed) + right_arrow.pressed.connect(_on_right_arrow_pressed) + + _populate_resolutions() + _update_ui() + +func initialize(mode_index: int, res: Vector2i) -> void: + current_mode_index = mode_index + current_resolution = res + _update_ui() + +func _populate_resolutions() -> void: + var screen_size = DisplayServer.screen_get_size() + + for child in resolutions_list.get_children(): + child.queue_free() + + _valid_resolutions.clear() + + for res in available_resolutions: + if res.x <= screen_size.x and res.y <= screen_size.y: + _valid_resolutions.append(res) + + var btn = window_option_menu_button_scene.instantiate() + btn.set_option_text(str(res.x) + " x " + str(res.y)) + btn.alignment = HORIZONTAL_ALIGNMENT_CENTER + + btn.pressed.connect(func(): _on_resolution_selected(res, btn)) + + resolutions_list.add_child(btn) + +func _on_resolution_selected(res: Vector2i, btn) -> void: + var res_buttons = resolutions_list.get_children() + for button in res_buttons: + button.deselect() + + btn.select() + current_resolution = res + resolution_changed.emit(res) + +func _on_left_arrow_pressed() -> void: + current_mode_index -= 1 + if current_mode_index < 0: + current_mode_index = buttons.size() - 1 + _update_ui() + mode_changed.emit(current_mode_index) + +func _on_right_arrow_pressed() -> void: + current_mode_index += 1 + if current_mode_index >= buttons.size(): + current_mode_index = 0 + _update_ui() + mode_changed.emit(current_mode_index) + +func _update_ui() -> void: + for i in range(buttons.size()): + buttons[i].visible = (i == current_mode_index) + + var show_res = current_mode_index == 2 + var color = Color(1,1,1,1) if show_res else Color(0.2, 0.2 ,0.2, 1) + base.modulate = color + + var res_buttons = resolutions_list.get_children() + for button in res_buttons: + button.deselect() + if show_res: + button.enable() + else: + button.disable() + + if res_buttons.size() > 0: + var target_index = 0 + for idx in range(_valid_resolutions.size()): + if _valid_resolutions[idx] == current_resolution: + target_index = idx + break + + var btn = res_buttons[target_index] + btn.select() + current_resolution = _valid_resolutions[target_index] + + if show_res: + resolution_changed.emit(current_resolution) diff --git a/core/game_menu/window_option_menu.gd.uid b/core/game_menu/window_option_menu.gd.uid new file mode 100644 index 0000000..bda88e2 --- /dev/null +++ b/core/game_menu/window_option_menu.gd.uid @@ -0,0 +1 @@ +uid://8gdaotll12ug diff --git a/core/game_menu/window_option_menu.tscn b/core/game_menu/window_option_menu.tscn new file mode 100644 index 0000000..eef4382 --- /dev/null +++ b/core/game_menu/window_option_menu.tscn @@ -0,0 +1,270 @@ +[gd_scene format=3 uid="uid://cxkmo80ecvyal"] + +[ext_resource type="Texture2D" uid="uid://bftymw7ajgb25" path="res://core/game_menu/assets/page_3/fullscreen.png" id="1_1oilv"] +[ext_resource type="Script" uid="uid://8gdaotll12ug" path="res://core/game_menu/window_option_menu.gd" id="1_6b7am"] +[ext_resource type="PackedScene" uid="uid://du4o5mms8jmrx" path="res://core/game_menu/window_option_menu_button.tscn" id="2_13nv1"] +[ext_resource type="PackedScene" uid="uid://dm3skv22c60tm" path="res://core/game_menu/arrow_button.tscn" id="2_c6wxr"] +[ext_resource type="Texture2D" uid="uid://m5llqtaj5kla" path="res://core/game_menu/assets/page_3/borderless.png" id="3_byg38"] +[ext_resource type="Texture2D" uid="uid://idvleok1gecb" path="res://core/game_menu/assets/page_3/base.png" id="3_lo8ks"] +[ext_resource type="Texture2D" uid="uid://dbcs6apfftxxw" path="res://core/game_menu/assets/page_3/windowed.png" id="4_c6wxr"] +[ext_resource type="Texture2D" uid="uid://djllofh10hgk6" path="res://core/game_menu/assets/page_3/resolution.png" id="8_p62vb"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_323rd"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_264kt"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1folt"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tcqrg"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kbu6n"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dk0pr"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_f16cj"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s4jbd"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_2ocph"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_5386i"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6pmjh"] + +[node name="WindowOptionMenu" type="Control" unique_id=891718047] +layout_mode = 3 +anchor_right = 0.16666667 +anchor_bottom = 0.31666666 +pivot_offset_ratio = Vector2(0.5, 0.5) +script = ExtResource("1_6b7am") +window_option_menu_button_scene = ExtResource("2_13nv1") +metadata/_edit_use_anchors_ = true + +[node name="Base" type="TextureRect" parent="." unique_id=1093652090] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -116.0 +offset_top = -249.5 +offset_right = 116.0 +offset_bottom = -10.499939 +grow_horizontal = 2 +grow_vertical = 0 +rotation = -0.20943952 +pivot_offset_ratio = Vector2(0.5, 0.5) +size_flags_horizontal = 4 +texture = ExtResource("3_lo8ks") +stretch_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Base" unique_id=416233744] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="Base/VBoxContainer" unique_id=2077693765] +layout_mode = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 32 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 32 + +[node name="ResolutionsList" type="VBoxContainer" parent="Base/VBoxContainer/MarginContainer" unique_id=633511112] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +alignment = 1 + +[node name="Control" type="Control" parent="." unique_id=1728565603] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -125.0 +offset_top = 45.0 +offset_right = 125.0 +offset_bottom = 110.0 +grow_horizontal = 2 + +[node name="FullScreenButton" type="Button" parent="Control" unique_id=658423473] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(215, 65) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -107.5 +offset_right = 107.5 +offset_bottom = 65.0 +grow_horizontal = 2 +theme_override_styles/normal = SubResource("StyleBoxEmpty_323rd") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_264kt") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_1folt") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_tcqrg") +theme_override_styles/hover = SubResource("StyleBoxEmpty_kbu6n") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_dk0pr") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_f16cj") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_s4jbd") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_2ocph") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_5386i") +theme_override_styles/focus = SubResource("StyleBoxEmpty_6pmjh") + +[node name="Texture" type="TextureRect" parent="Control/FullScreenButton" unique_id=1273084077] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("1_1oilv") +expand_mode = 1 +stretch_mode = 5 + +[node name="BorderlessButton" type="Button" parent="Control" unique_id=1930001398] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(215, 65) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -107.5 +offset_right = 107.5 +offset_bottom = 65.0 +grow_horizontal = 2 +theme_override_styles/normal = SubResource("StyleBoxEmpty_323rd") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_264kt") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_1folt") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_tcqrg") +theme_override_styles/hover = SubResource("StyleBoxEmpty_kbu6n") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_dk0pr") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_f16cj") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_s4jbd") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_2ocph") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_5386i") +theme_override_styles/focus = SubResource("StyleBoxEmpty_6pmjh") + +[node name="Texture" type="TextureRect" parent="Control/BorderlessButton" unique_id=2113335035] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("3_byg38") +expand_mode = 1 +stretch_mode = 5 + +[node name="WindowedButton" type="Button" parent="Control" unique_id=210063143] +unique_name_in_owner = true +custom_minimum_size = Vector2(215, 65) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -107.5 +offset_right = 107.5 +offset_bottom = 65.0 +grow_horizontal = 2 +theme_override_styles/normal = SubResource("StyleBoxEmpty_323rd") +theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_264kt") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_1folt") +theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_tcqrg") +theme_override_styles/hover = SubResource("StyleBoxEmpty_kbu6n") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_dk0pr") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_f16cj") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_s4jbd") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_2ocph") +theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_5386i") +theme_override_styles/focus = SubResource("StyleBoxEmpty_6pmjh") + +[node name="Texture" type="TextureRect" parent="Control/WindowedButton" unique_id=873436909] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("4_c6wxr") +expand_mode = 1 +stretch_mode = 5 + +[node name="LeftArrowButton" parent="Control" unique_id=579258112 instance=ExtResource("2_c6wxr")] +unique_name_in_owner = true +z_index = 1 +custom_minimum_size = Vector2(40, 40) +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_right = 0.0 +anchor_bottom = 0.5 +offset_left = 15.0 +offset_top = -20.0 +offset_right = 55.000008 +offset_bottom = 20.0 +grow_vertical = 2 +flip_h = true + +[node name="Texture" parent="Control/LeftArrowButton" index="0" unique_id=91599097] +custom_minimum_size = Vector2(40, 40) +expand_mode = 1 +stretch_mode = 5 +flip_h = true + +[node name="RightArrowButton" parent="Control" unique_id=1429974963 instance=ExtResource("2_c6wxr")] +unique_name_in_owner = true +z_index = 1 +custom_minimum_size = Vector2(40, 40) +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -55.0 +offset_top = -20.0 +offset_right = -15.0 +offset_bottom = 20.0 +grow_horizontal = 0 +grow_vertical = 2 + +[node name="Texture" parent="Control/RightArrowButton" index="0" unique_id=91599097] +expand_mode = 1 +stretch_mode = 5 + +[node name="ResolutionTexture" type="TextureRect" parent="." unique_id=12652005] +custom_minimum_size = Vector2(250, 65) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -125.0 +offset_right = 125.0 +offset_bottom = 65.0 +grow_horizontal = 2 +texture = ExtResource("8_p62vb") +expand_mode = 1 +stretch_mode = 5 + +[connection signal="mouse_entered" from="Control/FullScreenButton" to="Control/FullScreenButton" method="_on_mouse_entered"] +[connection signal="mouse_exited" from="Control/FullScreenButton" to="Control/FullScreenButton" method="_on_mouse_exited"] +[connection signal="pressed" from="Control/FullScreenButton" to="Control/FullScreenButton" method="_on_pressed"] +[connection signal="mouse_entered" from="Control/BorderlessButton" to="Control/BorderlessButton" method="_on_mouse_entered"] +[connection signal="mouse_exited" from="Control/BorderlessButton" to="Control/BorderlessButton" method="_on_mouse_exited"] +[connection signal="pressed" from="Control/BorderlessButton" to="Control/BorderlessButton" method="_on_pressed"] +[connection signal="mouse_entered" from="Control/WindowedButton" to="Control/WindowedButton" method="_on_mouse_entered"] +[connection signal="mouse_exited" from="Control/WindowedButton" to="Control/WindowedButton" method="_on_mouse_exited"] +[connection signal="pressed" from="Control/WindowedButton" to="Control/WindowedButton" method="_on_pressed"] + +[editable path="Control/LeftArrowButton"] +[editable path="Control/RightArrowButton"] diff --git a/core/game_menu/window_option_menu_button.gd b/core/game_menu/window_option_menu_button.gd new file mode 100644 index 0000000..948bc3e --- /dev/null +++ b/core/game_menu/window_option_menu_button.gd @@ -0,0 +1,31 @@ +extends Button + +class_name WindowOptionMenuButton + +@onready var checkbox: CustomCheckbox = $%Checkbox +@onready var label: Label = $%Label + +func _ready() -> void: + deselect() + disable() + +func set_option_text(text: String) -> void: + if label == null: + label = $%Label + label.text = text + +func select() -> void: + if checkbox == null: + checkbox = $%Checkbox + checkbox.set_pressed(true) + +func deselect() -> void: + if checkbox == null: + checkbox = $%Checkbox + checkbox.set_pressed(false) + +func disable() -> void: + disabled = true + +func enable() -> void: + disabled = false diff --git a/core/game_menu/window_option_menu_button.gd.uid b/core/game_menu/window_option_menu_button.gd.uid new file mode 100644 index 0000000..4c6cfa2 --- /dev/null +++ b/core/game_menu/window_option_menu_button.gd.uid @@ -0,0 +1 @@ +uid://i331kqurs7f4 diff --git a/core/game_menu/window_option_menu_button.tscn b/core/game_menu/window_option_menu_button.tscn new file mode 100644 index 0000000..4cd161c --- /dev/null +++ b/core/game_menu/window_option_menu_button.tscn @@ -0,0 +1,46 @@ +[gd_scene format=3 uid="uid://du4o5mms8jmrx"] + +[ext_resource type="Script" uid="uid://i331kqurs7f4" path="res://core/game_menu/window_option_menu_button.gd" id="1_yyn3b"] +[ext_resource type="PackedScene" uid="uid://gvpxmy1bgt8h" path="res://core/game_menu/checkbox.tscn" id="2_ai3i2"] + +[node name="WindowOptionMenuButton" type="Button" unique_id=1649914382] +custom_minimum_size = Vector2(200, 30) +anchors_preset = -1 +anchor_right = 0.104166664 +anchor_bottom = 0.027777778 +flat = true +script = ExtResource("1_yyn3b") +metadata/_edit_use_anchors_ = true + +[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=2089201662] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Checkbox" parent="HBoxContainer" unique_id=1346986972 instance=ExtResource("2_ai3i2")] +unique_name_in_owner = true +custom_minimum_size = Vector2(30, 30) +layout_mode = 2 +size_flags_vertical = 4 +mouse_filter = 2 + +[node name="ToggleTexture" parent="HBoxContainer/Checkbox" index="1" unique_id=1931011536] +custom_minimum_size = Vector2(25, 25) +offset_left = -14.0 +offset_top = -14.0 +offset_right = 14.0 +offset_bottom = 11.0 + +[node name="Label" type="Label" parent="HBoxContainer" unique_id=1910223249] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "TEST" +horizontal_alignment = 1 + +[editable path="HBoxContainer/Checkbox"] diff --git a/core/game_state/game_state.gd b/core/game_state/game_state.gd index 984734c..890a2b4 100644 --- a/core/game_state/game_state.gd +++ b/core/game_state/game_state.gd @@ -28,6 +28,31 @@ var is_loaded: bool = false func _ready() -> void: load_game() + apply_video_settings() + +func apply_video_settings() -> void: + get_viewport().use_taa = save_data.anti_aliasing + var msaa_mode = Viewport.MSAA_2X if save_data.anti_aliasing else Viewport.MSAA_DISABLED + get_viewport().msaa_3d = msaa_mode + get_viewport().msaa_2d = msaa_mode + + match save_data.window_mode_index: + 0: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN) + 1: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) + 2: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) + DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false) + + if save_data.window_mode_index == 2 and save_data.resolution_x > 0 and save_data.resolution_y > 0: + DisplayServer.window_set_size(Vector2i(save_data.resolution_x, save_data.resolution_y)) + + # Optional: center the window if resized + var screen_center = DisplayServer.screen_get_position() + DisplayServer.screen_get_size() / 2 + var window_size = DisplayServer.window_get_size() + DisplayServer.window_set_position(screen_center - window_size / 2) + func save_game() -> void: var save_file = FileAccess.open(SAVE_PATH, FileAccess.WRITE) diff --git a/core/game_state/save_game_data.gd b/core/game_state/save_game_data.gd index 8a1cf10..85eb51e 100644 --- a/core/game_state/save_game_data.gd +++ b/core/game_state/save_game_data.gd @@ -5,6 +5,11 @@ var unlocked_collectibles_ids: Array[StringName] = [] var saved_photos: Array[String] = [] var audio_bus_volumes: Dictionary[String, float] = {} +var anti_aliasing: bool = true +var window_mode_index: int = 0 +var resolution_x: int = 1920 +var resolution_y: int = 1080 + func to_dictionary() -> Dictionary: var serialized_collectible_ids: Array[String] = [] for collectible_id in unlocked_collectibles_ids: @@ -14,6 +19,10 @@ func to_dictionary() -> Dictionary: "unlocked_collectibles_ids": serialized_collectible_ids, "saved_photos": saved_photos, "audio_bus_volumes": audio_bus_volumes, + "anti_aliasing": anti_aliasing, + "window_mode_index": window_mode_index, + "resolution_x": resolution_x, + "resolution_y": resolution_y, } static func from_dictionary(data: Dictionary) -> SaveGameData: @@ -31,4 +40,16 @@ static func from_dictionary(data: Dictionary) -> SaveGameData: for bus_name in data["audio_bus_volumes"]: save_game_data.audio_bus_volumes[str(bus_name)] = float(data["audio_bus_volumes"][bus_name]) + if data.has("anti_aliasing"): + save_game_data.anti_aliasing = bool(data["anti_aliasing"]) + + if data.has("window_mode_index"): + save_game_data.window_mode_index = int(data["window_mode_index"]) + + if data.has("resolution_x"): + save_game_data.resolution_x = int(data["resolution_x"]) + + if data.has("resolution_y"): + save_game_data.resolution_y = int(data["resolution_y"]) + return save_game_data diff --git a/core/main_scene_ui/assets/button_daynightcycleoff.png b/core/main_scene_ui/assets/button_daynightcycleoff.png new file mode 100644 index 0000000..4ecc188 Binary files /dev/null and b/core/main_scene_ui/assets/button_daynightcycleoff.png differ diff --git a/core/main_scene_ui/assets/button_daynightcycleoff.png.import b/core/main_scene_ui/assets/button_daynightcycleoff.png.import new file mode 100644 index 0000000..e439d89 --- /dev/null +++ b/core/main_scene_ui/assets/button_daynightcycleoff.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu3i1fieme2tl" +path="res://.godot/imported/button_daynightcycleoff.png-131eced9a7760b605f2000cb094084a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/main_scene_ui/assets/button_daynightcycleoff.png" +dest_files=["res://.godot/imported/button_daynightcycleoff.png-131eced9a7760b605f2000cb094084a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/main_scene_ui/assets/button_weather_off.png b/core/main_scene_ui/assets/button_weather_off.png new file mode 100644 index 0000000..3ed9971 Binary files /dev/null and b/core/main_scene_ui/assets/button_weather_off.png differ diff --git a/core/main_scene_ui/assets/button_weather_off.png.import b/core/main_scene_ui/assets/button_weather_off.png.import new file mode 100644 index 0000000..305af3b --- /dev/null +++ b/core/main_scene_ui/assets/button_weather_off.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cimo71kc2x58a" +path="res://.godot/imported/button_weather_off.png-342a4361cdab31d6ec154c88e60f162b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/main_scene_ui/assets/button_weather_off.png" +dest_files=["res://.godot/imported/button_weather_off.png-342a4361cdab31d6ec154c88e60f162b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/core/main_scene_ui/main_scene_ui.gd b/core/main_scene_ui/main_scene_ui.gd index 1e7f120..d1dfbaa 100644 --- a/core/main_scene_ui/main_scene_ui.gd +++ b/core/main_scene_ui/main_scene_ui.gd @@ -14,7 +14,11 @@ extends Control @onready var photo_mode_black_screen: ColorRect = $%PhotoModeBlackScreen @onready var audio_player: Control = $%AudioPlayer -var cycle = false +var _cycle = false +var _rain = false +var _snow = false +var _storm = false +var _wind = false var _photo_mode_mat_tween: Tween var _photo_mode_alpha_tween: Tween var _photo_mode_fold_tween: Tween @@ -62,21 +66,25 @@ func _on_time_of_day_row_on_option_changed(data: String) -> void: "Night": UIEvents.time_option_item_changed.emit(3) "Cycle": - cycle = !cycle - UIEvents.toggle_pause_daytime.emit(cycle) + _cycle = !_cycle + UIEvents.toggle_pause_daytime.emit(_cycle) _: pass func _on_weather_row_on_option_changed(data: String) -> void: match data: "Snow": - UIEvents.toggle_snow.emit(true) + _snow = !_snow + UIEvents.toggle_snow.emit(_snow) "Rain": - UIEvents.toggle_rain.emit(true) + _rain = !_rain + UIEvents.toggle_rain.emit(_rain) "Storm": - UIEvents.toggle_storm.emit(true) + _storm = !_storm + UIEvents.toggle_storm.emit(_storm) "Wind": - UIEvents.toggle_wind.emit(true) + _wind = !_wind + UIEvents.toggle_wind.emit(_wind) "Random": pick_random_weather() _: diff --git a/core/main_scene_ui/main_scene_ui.tscn b/core/main_scene_ui/main_scene_ui.tscn index 2126d86..b7dcb14 100644 --- a/core/main_scene_ui/main_scene_ui.tscn +++ b/core/main_scene_ui/main_scene_ui.tscn @@ -10,6 +10,7 @@ [ext_resource type="PackedScene" uid="uid://cpeyt1dgrtglc" path="res://core/radio/radio.tscn" id="5_nevjt"] [ext_resource type="Texture2D" uid="uid://blttomjog2rin" path="res://core/main_scene_ui/assets/button_weather_nosnow.png" id="6_167gj"] [ext_resource type="AudioStream" uid="uid://70cc8she43re" path="res://docs/gyms/radio/lofi_01.ogg" id="6_kd244"] +[ext_resource type="Texture2D" uid="uid://bu3i1fieme2tl" path="res://core/main_scene_ui/assets/button_daynightcycleoff.png" id="6_luj56"] [ext_resource type="Texture2D" uid="uid://bj0idkr7kd4ik" path="res://core/main_scene_ui/assets/button_weather_snow.png" id="6_xykej"] [ext_resource type="Texture2D" uid="uid://cc6e2piksgv1a" path="res://core/main_scene_ui/assets/button_weather01.png" id="6_yggu7"] [ext_resource type="Texture2D" uid="uid://d3v43kog5fwnf" path="res://core/main_scene_ui/assets/button_weather_rain.png" id="7_jpmw5"] @@ -72,6 +73,7 @@ data = "Night" [node name="IconButton5" parent="Rows/TimeOfDayRow" index="4" unique_id=315412403] data = "Cycle" image = ExtResource("5_fjfwt") +images = Array[Texture]([ExtResource("5_fjfwt"), ExtResource("6_luj56")]) apply_texture_on_selection = false [node name="ShowContainerTween" parent="Rows/TimeOfDayRow" index="5" unique_id=160227524] diff --git a/tgcc/chunk/prop/grass/grass_chunk.tres b/tgcc/chunk/prop/grass/grass_chunk.tres index d68f7a6..058b37c 100644 --- a/tgcc/chunk/prop/grass/grass_chunk.tres +++ b/tgcc/chunk/prop/grass/grass_chunk.tres @@ -29,6 +29,7 @@ shader_parameter/variance_color = Color(0.3, 0.5, 0.2, 1) shader_parameter/variance_intensity = 0.350000016625 shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) shader_parameter/snow_visibility = 1.0 +shader_parameter/snow_coverage = 0.35 shader_parameter/height_min = 0.0 shader_parameter/height_max = 5.0 shader_parameter/shadow_intensity = 0.6000000285