feat: Overhaul of the Game Over UI, custom texture integrations, and fixing visual artifacts.

This commit is contained in:
2026-04-02 06:26:06 +08:00
parent f2739841c6
commit 362f8eda98
55 changed files with 1442 additions and 297 deletions
@@ -14,7 +14,7 @@
[ext_resource type="Texture2D" uid="uid://dpkx1a780pvwv" path="res://assets/textures/tile_diamond.png" id="10_sx8rm"] [ext_resource type="Texture2D" uid="uid://dpkx1a780pvwv" path="res://assets/textures/tile_diamond.png" id="10_sx8rm"]
[ext_resource type="BoxMesh" uid="uid://fy4bhoeii40c" path="res://addons/enhanced_gridmap/meshlibrary/tile_safe_zone.tres" id="10_uwjsj"] [ext_resource type="BoxMesh" uid="uid://fy4bhoeii40c" path="res://addons/enhanced_gridmap/meshlibrary/tile_safe_zone.tres" id="10_uwjsj"]
[ext_resource type="BoxMesh" uid="uid://b5cc3prem52r6" path="res://addons/enhanced_gridmap/meshlibrary/tile_freeze.tres" id="11_pgnbl"] [ext_resource type="BoxMesh" uid="uid://b5cc3prem52r6" path="res://addons/enhanced_gridmap/meshlibrary/tile_freeze.tres" id="11_pgnbl"]
[ext_resource type="BoxMesh" uid="uid://dcjdwbffgtutt" path="res://addons/enhanced_gridmap/meshlibrary/tile_non_walkable.tres" id="11_uwjsj"] [ext_resource type="BoxMesh" path="res://addons/enhanced_gridmap/meshlibrary/tile_non_walkable.tres" id="11_uwjsj"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_5d0gc"] [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_5d0gc"]
load_path = "res://.godot/imported/tile_heart.png-deeef50755ca225f028608dfd16900e6.s3tc.ctex" load_path = "res://.godot/imported/tile_heart.png-deeef50755ca225f028608dfd16900e6.s3tc.ctex"
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyhnq5lti5xs6"
path="res://.godot/imported/1st.png-09608c1f2352fd9bd0caa5bd58d7dc5c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/1st.png"
dest_files=["res://.godot/imported/1st.png-09608c1f2352fd9bd0caa5bd58d7dc5c.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwquf8ex24iux"
path="res://.godot/imported/2nd.png-7b334347a1509fbfe89aac4e9206a978.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/2nd.png"
dest_files=["res://.godot/imported/2nd.png-7b334347a1509fbfe89aac4e9206a978.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfi4bfok7kfjt"
path="res://.godot/imported/3rd.png-ac9e18b5a3734b2e12ccde3198df1677.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/3rd.png"
dest_files=["res://.godot/imported/3rd.png-ac9e18b5a3734b2e12ccde3198df1677.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsb22bl3pb05f"
path="res://.godot/imported/4th.png-a249354b03eeeeafd4d35082a6d109e6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/4th.png"
dest_files=["res://.godot/imported/4th.png-a249354b03eeeeafd4d35082a6d109e6.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c65x7tp8x8sys"
path="res://.godot/imported/5th.png-20bc3b884f3fac7e3d37d1f355ca0b2f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/5th.png"
dest_files=["res://.godot/imported/5th.png-20bc3b884f3fac7e3d37d1f355ca0b2f.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://de20ks0e5gmba"
path="res://.godot/imported/6th.png-41946448477658c36d082aaca0df9af6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/6th.png"
dest_files=["res://.godot/imported/6th.png-41946448477658c36d082aaca0df9af6.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvv2288euvnei"
path="res://.godot/imported/7th.png-9b26415826fba42722be72d534549c9c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/7th.png"
dest_files=["res://.godot/imported/7th.png-9b26415826fba42722be72d534549c9c.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://be5eer1coyjbc"
path="res://.godot/imported/8th.png-88d87ad6329f83d7ac1eed3acf8eaa86.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/8th.png"
dest_files=["res://.godot/imported/8th.png-88d87ad6329f83d7ac1eed3acf8eaa86.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://k06v44dkdw4l"
path="res://.godot/imported/Button_avail.png-8810af8c9e1decc0f4da46cc2d3c1bdc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/Button_avail.png"
dest_files=["res://.godot/imported/Button_avail.png-8810af8c9e1decc0f4da46cc2d3c1bdc.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ccw0tfqj2mjyy"
path="res://.godot/imported/Button_avail_click.png-bae20e948be70415c97b044f9f1b27de.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/Button_avail_click.png"
dest_files=["res://.godot/imported/Button_avail_click.png-bae20e948be70415c97b044f9f1b27de.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4460yl3caudj"
path="res://.godot/imported/Button_avail_expand.png-bdac0a700f7d7983b01855fbb9aaa72e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/Button_avail_expand.png"
dest_files=["res://.godot/imported/Button_avail_expand.png-bdac0a700f7d7983b01855fbb9aaa72e.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5ghj5ytsh4wc"
path="res://.godot/imported/Button_unavail.png-455b81a1f2dd0425382a7e83a8dcc20a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/Button_unavail.png"
dest_files=["res://.godot/imported/Button_unavail.png-455b81a1f2dd0425382a7e83a8dcc20a.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmj8fwjtkyabp"
path="res://.godot/imported/Button_unavail_click.png-5509562d176490aa48b6adc4facc6a7e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/Button_unavail_click.png"
dest_files=["res://.godot/imported/Button_unavail_click.png-5509562d176490aa48b6adc4facc6a7e.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ykjd2vg0e1lw"
path="res://.godot/imported/achievement.png-c4c8494dc0efa37667db3ade596543fa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/achievement.png"
dest_files=["res://.godot/imported/achievement.png-c4c8494dc0efa37667db3ade596543fa.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2epjkpphlkku"
path="res://.godot/imported/button_back_click.png-a7bc6b7ee639d5f431b0396ccc98a7ab.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/button_back_click.png"
dest_files=["res://.godot/imported/button_back_click.png-a7bc6b7ee639d5f431b0396ccc98a7ab.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://oo0mw8pkasst"
path="res://.godot/imported/button_back_hover.png-d493a068e88fb21a86ff561bf094b6ba.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/button_back_hover.png"
dest_files=["res://.godot/imported/button_back_hover.png-d493a068e88fb21a86ff561bf094b6ba.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfoq4oe8flax"
path="res://.godot/imported/button_back_normal.png-9cc835c68bb07b7b07581afdcd148dc4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/button_back_normal.png"
dest_files=["res://.godot/imported/button_back_normal.png-9cc835c68bb07b7b07581afdcd148dc4.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0wgciia15q30"
path="res://.godot/imported/button_rematch_click.png-83eac918c140e13d45c8b3e6783c6cce.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/button_rematch_click.png"
dest_files=["res://.godot/imported/button_rematch_click.png-83eac918c140e13d45c8b3e6783c6cce.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwmc51qxcxxni"
path="res://.godot/imported/button_rematch_hover.png-12dd52007bc38cbf10e098f6840dec39.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/button_rematch_hover.png"
dest_files=["res://.godot/imported/button_rematch_hover.png-12dd52007bc38cbf10e098f6840dec39.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsi6yhjdkrcbl"
path="res://.godot/imported/button_rematch_normal.png-33cf7551739468db5d0941523511dd8f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/button_rematch_normal.png"
dest_files=["res://.godot/imported/button_rematch_normal.png-33cf7551739468db5d0941523511dd8f.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mdqtul5w72uj"
path="res://.godot/imported/exp_gauge_placeholder.png-1cae7a7043e7aae326b860a723b7fc74.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/exp_gauge_placeholder.png"
dest_files=["res://.godot/imported/exp_gauge_placeholder.png-1cae7a7043e7aae326b860a723b7fc74.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b70vqj55uj2h"
path="res://.godot/imported/raceresult.png-b74395a5dbe739bedf688b7ac50770f4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/raceresult.png"
dest_files=["res://.godot/imported/raceresult.png-b74395a5dbe739bedf688b7ac50770f4.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2dv61m8loe11"
path="res://.godot/imported/ranklist.png-58a6040cbed233a05d72f17d43d272fb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/ranklist.png"
dest_files=["res://.godot/imported/ranklist.png-58a6040cbed233a05d72f17d43d272fb.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvrmivsbaknhs"
path="res://.godot/imported/scroll.png-01da095276b708de57c3773a2af13130.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/gui/game_over_panel/scroll.png"
dest_files=["res://.godot/imported/scroll.png-01da095276b708de57c3773a2af13130.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
@@ -3,19 +3,20 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://biun2yvglxgij" uid="uid://biun2yvglxgij"
path="res://.godot/imported/grab_tekton.png-38105d2382c7af6ceba9f67fafd9b104.ctex" path.s3tc="res://.godot/imported/grab_tekton.png-38105d2382c7af6ceba9f67fafd9b104.s3tc.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://assets/graphics/touch_control/grab_tekton.png" source_file="res://assets/graphics/touch_control/grab_tekton.png"
dest_files=["res://.godot/imported/grab_tekton.png-38105d2382c7af6ceba9f67fafd9b104.ctex"] dest_files=["res://.godot/imported/grab_tekton.png-38105d2382c7af6ceba9f67fafd9b104.s3tc.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -37,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0
+30
View File
@@ -3,6 +3,7 @@
[ext_resource type="Script" uid="uid://dyovwailce5tf" path="res://scripts/tekton.gd" id="1_tekton"] [ext_resource type="Script" uid="uid://dyovwailce5tf" path="res://scripts/tekton.gd" id="1_tekton"]
[ext_resource type="Script" uid="uid://c67yq846u8y68" path="res://scripts/tekton_controller.gd" id="2_controller"] [ext_resource type="Script" uid="uid://c67yq846u8y68" path="res://scripts/tekton_controller.gd" id="2_controller"]
[ext_resource type="PackedScene" uid="uid://b6d6qu1ir13q1" path="res://scenes/tekton_mesh.scn" id="3_d2kpk"] [ext_resource type="PackedScene" uid="uid://b6d6qu1ir13q1" path="res://scenes/tekton_mesh.scn" id="3_d2kpk"]
[ext_resource type="Texture2D" uid="uid://biun2yvglxgij" path="res://assets/graphics/touch_control/grab_tekton.png" id="4_grab_icon"]
[sub_resource type="BoxShape3D" id="BoxShape3D_tekton"] [sub_resource type="BoxShape3D" id="BoxShape3D_tekton"]
size = Vector3(0.8, 1, 0.8) size = Vector3(0.8, 1, 0.8)
@@ -24,3 +25,32 @@ collision_mask = 2
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=818146069] [node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=818146069]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("BoxShape3D_tekton") shape = SubResource("BoxShape3D_tekton")
[node name="InteractionPrompt" type="Node3D" parent="." unique_id=855764577]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.4, 0)
[node name="PromptIcon" type="Sprite3D" parent="InteractionPrompt" unique_id=11135903]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3731489, 0)
pixel_size = 0.002
billboard = 1
no_depth_test = true
texture = ExtResource("4_grab_icon")
[node name="KeyLabel" type="Label3D" parent="InteractionPrompt" unique_id=1816493043]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.30466843, 0)
pixel_size = 0.01
billboard = 1
no_depth_test = true
modulate = Color(0.1, 1, 0.2, 1)
text = "[ G ]"
font_size = 48
outline_size = 18
[node name="ActionLabel" type="Label3D" parent="InteractionPrompt" unique_id=848495007]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.79176676, 0)
pixel_size = 0.01
billboard = 1
no_depth_test = true
text = "LIFT TEKTON"
font_size = 38
outline_size = 10
+339 -255
View File
@@ -1,111 +1,101 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://dtja62p1y5m57"]
[ext_resource type="Script" path="res://scripts/ui/game_over_panel.gd" id="1_script"] [ext_resource type="Script" uid="uid://b100tjl67tbh7" path="res://scripts/ui/game_over_panel.gd" id="1_script"]
[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="2_font"] [ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="2_font"]
[ext_resource type="PackedScene" uid="uid://ejeamn0pyey4" path="res://assets/characters/Bob.glb" id="3_bob"] [ext_resource type="PackedScene" uid="uid://ejeamn0pyey4" path="res://assets/characters/Bob.glb" id="3_bob"]
[ext_resource type="Texture2D" uid="uid://b70vqj55uj2h" path="res://assets/graphics/gui/game_over_panel/raceresult.png" id="3_llt1x"]
[ext_resource type="Texture2D" uid="uid://k06v44dkdw4l" path="res://assets/graphics/gui/game_over_panel/Button_avail.png" id="4_fdy76"]
[ext_resource type="PackedScene" uid="uid://d4cul3w3wem5w" path="res://assets/characters/Gatot.glb" id="4_gatot"] [ext_resource type="PackedScene" uid="uid://d4cul3w3wem5w" path="res://assets/characters/Gatot.glb" id="4_gatot"]
[ext_resource type="Texture2D" uid="uid://cyhnq5lti5xs6" path="res://assets/graphics/gui/game_over_panel/1st.png" id="4_o7bn5"]
[ext_resource type="Texture2D" uid="uid://ccw0tfqj2mjyy" path="res://assets/graphics/gui/game_over_panel/Button_avail_click.png" id="5_a3ist"]
[ext_resource type="PackedScene" uid="uid://1vk0mjnwkngi" path="res://assets/characters/Masbro.glb" id="5_masbro"] [ext_resource type="PackedScene" uid="uid://1vk0mjnwkngi" path="res://assets/characters/Masbro.glb" id="5_masbro"]
[ext_resource type="PackedScene" uid="uid://bmln7v6v5kvxg" path="res://assets/characters/Oldpop.glb" id="6_oldpop"] [ext_resource type="PackedScene" uid="uid://bmln7v6v5kvxg" path="res://assets/characters/Oldpop.glb" id="6_oldpop"]
[ext_resource type="Texture2D" uid="uid://c4460yl3caudj" path="res://assets/graphics/gui/game_over_panel/Button_avail_expand.png" id="6_t0b3p"]
[ext_resource type="AnimationLibrary" uid="uid://c3pyopnwibckj" path="res://assets/characters/animations/animation-pack.res" id="7_animlib"] [ext_resource type="AnimationLibrary" uid="uid://c3pyopnwibckj" path="res://assets/characters/animations/animation-pack.res" id="7_animlib"]
[ext_resource type="Texture2D" uid="uid://b5ghj5ytsh4wc" path="res://assets/graphics/gui/game_over_panel/Button_unavail.png" id="7_t0b3p"]
[ext_resource type="Texture2D" uid="uid://bfoq4oe8flax" path="res://assets/graphics/gui/game_over_panel/button_back_normal.png" id="12_o7bn5"]
[ext_resource type="Texture2D" uid="uid://dsi6yhjdkrcbl" path="res://assets/graphics/gui/game_over_panel/button_rematch_normal.png" id="13_0eqys"]
[ext_resource type="Texture2D" uid="uid://2epjkpphlkku" path="res://assets/graphics/gui/game_over_panel/button_back_click.png" id="13_a3ist"]
[ext_resource type="Texture2D" uid="uid://mdqtul5w72uj" path="res://assets/graphics/gui/game_over_panel/exp_gauge_placeholder.png" id="14_fnsbg"]
[ext_resource type="Texture2D" uid="uid://oo0mw8pkasst" path="res://assets/graphics/gui/game_over_panel/button_back_hover.png" id="14_t0b3p"]
[ext_resource type="Texture2D" uid="uid://ykjd2vg0e1lw" path="res://assets/graphics/gui/game_over_panel/achievement.png" id="18_0eqys"]
[ext_resource type="Texture2D" uid="uid://0wgciia15q30" path="res://assets/graphics/gui/game_over_panel/button_rematch_click.png" id="19_0nol5"]
[ext_resource type="Texture2D" uid="uid://dwmc51qxcxxni" path="res://assets/graphics/gui/game_over_panel/button_rematch_hover.png" id="20_qn6hl"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_header"]
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
bg_color = Color(0.95, 0.75, 0.1, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_fnsbg"]
content_margin_left = 50.0
content_margin_top = 180.0
content_margin_right = 80.0
content_margin_bottom = 20.0
texture = ExtResource("3_llt1x")
[sub_resource type="StyleBoxLine" id="StyleBoxLine_a3ist"]
color = Color(0.041599996, 0.07514666, 0.16, 1)
thickness = 4
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_0pv0k"]
texture = ExtResource("4_o7bn5")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_abdxb"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_q158c"]
texture = ExtResource("4_fdy76")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_0nol5"]
texture = ExtResource("5_a3ist")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_qn6hl"]
texture = ExtResource("6_t0b3p")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_aju6u"]
texture = ExtResource("7_t0b3p")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_w6rcn"]
texture = ExtResource("7_t0b3p")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_3toab"]
texture = ExtResource("7_t0b3p")
[sub_resource type="Environment" id="Environment_preview"] [sub_resource type="Environment" id="Environment_preview"]
background_mode = 1 background_mode = 1
background_color = Color(0.06, 0.07, 0.1, 0) background_color = Color(0.06, 0.07, 0.1, 0)
ambient_light_source = 2 ambient_light_source = 2
ambient_light_color = Color(0.5, 0.55, 0.75, 1) ambient_light_color = Color(0.7100897, 0.74440694, 0.87715524, 1)
ambient_light_energy = 0.7
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_header"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_gkif2"]
bg_color = Color(0.95, 0.75, 0.1, 1) texture = ExtResource("14_fnsbg")
corner_radius_top_left = 8
corner_radius_top_right = 8
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_content"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_gqj3c"]
bg_color = Color(0.08, 0.1, 0.2, 0.95) texture = ExtResource("12_o7bn5")
corner_radius_bottom_left = 8
content_margin_left = 20.0
content_margin_top = 16.0
content_margin_right = 20.0
content_margin_bottom = 16.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_back_normal"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o7bn5"]
bg_color = Color(0.75, 0.15, 0.15, 1) texture = ExtResource("13_a3ist")
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_back_hover"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_0eqys"]
bg_color = Color(0.9, 0.2, 0.2, 1) texture = ExtResource("14_t0b3p")
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_back_pressed"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_37kxa"]
bg_color = Color(0.6, 0.1, 0.1, 1) texture = ExtResource("13_0eqys")
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rematch_normal"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_3r3oo"]
bg_color = Color(0.15, 0.7, 0.15, 1) texture = ExtResource("19_0nol5")
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rematch_hover"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_cn37d"]
bg_color = Color(0.2, 0.85, 0.2, 1) texture = ExtResource("20_qn6hl")
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rematch_pressed"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_abdxb"]
bg_color = Color(0.1, 0.55, 0.1, 1) texture = ExtResource("18_0eqys")
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
content_margin_left = 16.0
content_margin_top = 8.0
content_margin_right = 16.0
content_margin_bottom = 8.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xp_bg"] [node name="GameOverPanel" type="Control" unique_id=1175073206]
bg_color = Color(0.15, 0.15, 0.15, 1)
corner_radius_top_left = 4
corner_radius_top_right = 4
corner_radius_bottom_right = 4
corner_radius_bottom_left = 4
[node name="GameOverPanel" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -114,7 +104,7 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_script") script = ExtResource("1_script")
[node name="Background" type="ColorRect" parent="."] [node name="Background" type="ColorRect" parent="." unique_id=1286194910]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -123,7 +113,7 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
color = Color(0.22, 0.22, 0.22, 0.95) color = Color(0.22, 0.22, 0.22, 0.95)
[node name="MainMargin" type="MarginContainer" parent="."] [node name="MainMargin" type="MarginContainer" parent="." unique_id=2110579550]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -135,26 +125,47 @@ theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 30 theme_override_constants/margin_right = 30
theme_override_constants/margin_bottom = 20 theme_override_constants/margin_bottom = 20
[node name="MainHBox" type="HBoxContainer" parent="MainMargin"] [node name="MainHBox" type="Control" parent="MainMargin" unique_id=67537991]
layout_mode = 2
theme_override_constants/separation = 20
[node name="LeftSide" type="VBoxContainer" parent="MainMargin/MainHBox"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_stretch_ratio = 1.4 size_flags_vertical = 3
[node name="LeftWrapper" type="Control" parent="MainMargin/MainHBox" unique_id=112233445]
layout_mode = 1
anchor_left = -0.058000002
anchor_top = 0.046000004
anchor_right = 0.50200003
anchor_bottom = 0.87500006
offset_left = 14.748005
offset_top = 36.265774
offset_right = 13.362427
offset_bottom = 36.94568
grow_horizontal = 2
grow_vertical = 2
rotation = -0.05
pivot_offset = Vector2(0, 250)
[node name="LeftSide" type="VBoxContainer" parent="MainMargin/MainHBox/LeftWrapper" unique_id=548147419]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.938
anchor_bottom = 1.0
offset_right = -0.048461914
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 0 theme_override_constants/separation = 0
[node name="HeaderPanel" type="PanelContainer" parent="MainMargin/MainHBox/LeftSide"] [node name="HeaderPanel" type="PanelContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide" unique_id=486625903]
visible = false
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_header") theme_override_styles/panel = SubResource("StyleBoxFlat_header")
[node name="HeaderHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide/HeaderPanel"] [node name="HeaderHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/HeaderPanel" unique_id=2047940161]
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 10 theme_override_constants/separation = 10
[node name="TabTitleLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/HeaderPanel/HeaderHBox"] [node name="TabTitleLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/HeaderPanel/HeaderHBox" unique_id=439793498]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
@@ -163,40 +174,38 @@ theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 28 theme_override_font_sizes/font_size = 28
text = "RACE RESULT" text = "RACE RESULT"
[node name="BodyHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide"] [node name="BodyHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide" unique_id=1514193774]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_constants/separation = 8 theme_override_constants/separation = -32
[node name="ContentPanel" type="PanelContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox"] [node name="ContentPanel" type="PanelContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox" unique_id=272457141]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_content") theme_override_styles/panel = SubResource("StyleBoxTexture_fnsbg")
[node name="ContentStack" type="Control" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel"] [node name="ContentStack" type="Control" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel" unique_id=1176006429]
layout_mode = 1 layout_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="RaceResultContent" type="VBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack"] [node name="RaceResultContent" type="VBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack" unique_id=911961232]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_bottom = -44.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme_override_constants/separation = 12 theme_override_constants/separation = 24
[node name="PlayerInfoHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent"] [node name="PlayerInfoHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent" unique_id=1786750668]
visible = false
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 12 theme_override_constants/separation = 12
[node name="PlayerRankLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/PlayerInfoHBox"] [node name="PlayerRankLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/PlayerInfoHBox" unique_id=1516399018]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(0.95, 0.75, 0.1, 1) theme_override_colors/font_color = Color(0.95, 0.75, 0.1, 1)
@@ -204,7 +213,7 @@ theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 32 theme_override_font_sizes/font_size = 32
text = "1st" text = "1st"
[node name="PlayerNameLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/PlayerInfoHBox"] [node name="PlayerNameLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/PlayerInfoHBox" unique_id=58019783]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_color = Color(1, 1, 1, 1)
@@ -212,116 +221,55 @@ theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 32 theme_override_font_sizes/font_size = 32
text = "Player" text = "Player"
[node name="PlayerScoreLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/PlayerInfoHBox"] [node name="PlayerScoreLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/PlayerInfoHBox" unique_id=1173655800]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 40 theme_override_font_sizes/font_size = 32
text = "0" text = "0"
horizontal_alignment = 2 horizontal_alignment = 2
[node name="Sep1" type="HSeparator" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent"] [node name="Sep1" type="HSeparator" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent" unique_id=841015548]
visible = false
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 4 theme_override_styles/separator = SubResource("StyleBoxLine_a3ist")
[node name="CompletionRow" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent"] [node name="CompletionRow" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent" unique_id=995121163]
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 20 theme_override_constants/separation = 20
[node name="CompletionLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/CompletionRow"] [node name="CompletionLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/CompletionRow" unique_id=750921646]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1)
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 38
text = "COMPLETION" text = "COMPLETION"
[node name="CompletionValue" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/CompletionRow"] [node name="CompletionValue" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/CompletionRow" unique_id=24310777]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 38
text = "0x" text = "0x"
horizontal_alignment = 2 horizontal_alignment = 2
[node name="ScoreRow" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent"] [node name="ScoreRow" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent" unique_id=971702300]
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 20 theme_override_constants/separation = 20
[node name="ScoreLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/ScoreRow"] [node name="ScoreLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/ScoreRow" unique_id=2027492572]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1)
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 38
text = "SCORE" text = "SCORE"
[node name="ScoreValue" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/ScoreRow"] [node name="ScoreValue" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/ScoreRow" unique_id=625339146]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 24
text = "0"
horizontal_alignment = 2
[node name="RankRow" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent"]
layout_mode = 2
theme_override_constants/separation = 20
[node name="RankLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/RankRow"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 24
text = "RANK"
[node name="RankValue" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/RankRow"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.95, 0.75, 0.1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 52
text = "1st"
horizontal_alignment = 2
[node name="RankListContent" type="VBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 6
[node name="WinnerHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent"]
layout_mode = 2
theme_override_constants/separation = 12
[node name="WinnerRankLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/WinnerHBox"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.95, 0.75, 0.1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 30
text = "1st"
[node name="WinnerNameLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/WinnerHBox"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 30
text = "Player"
[node name="WinnerScoreLabel" type="Label" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/WinnerHBox"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_color = Color(1, 1, 1, 1)
@@ -330,175 +278,311 @@ theme_override_font_sizes/font_size = 38
text = "0" text = "0"
horizontal_alignment = 2 horizontal_alignment = 2
[node name="Sep2" type="HSeparator" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent"] [node name="RankRow" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent" unique_id=1373436256]
layout_mode = 2
theme_override_constants/separation = 20
[node name="RankLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/RankRow" unique_id=1601428290]
layout_mode = 2
size_flags_horizontal = 3
theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 38
text = "RANK"
[node name="RankValue" type="Panel" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/RankRow" unique_id=646850553]
unique_name_in_owner = true
custom_minimum_size = Vector2(200, 150)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxTexture_0pv0k")
[node name="VSeparator" type="VSeparator" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RaceResultContent/RankRow" unique_id=191739732]
custom_minimum_size = Vector2(106.025, 0)
layout_mode = 2
theme_override_styles/separator = SubResource("StyleBoxEmpty_abdxb")
[node name="RankListContent" type="VBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack" unique_id=1296050215]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = -44.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 6
[node name="WinnerHBox" type="HBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent" unique_id=135735131]
layout_mode = 2
theme_override_constants/separation = 12
[node name="WinnerRankLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/WinnerHBox" unique_id=774723477]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.95, 0.75, 0.1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 32
text = "1st"
[node name="WinnerNameLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/WinnerHBox" unique_id=865272502]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 32
text = "Player"
[node name="WinnerScoreLabel" type="Label" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/WinnerHBox" unique_id=88165648]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 32
text = "0"
horizontal_alignment = 2
[node name="Sep2" type="HSeparator" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent" unique_id=525354966]
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 4 theme_override_constants/separation = 4
[node name="RankScroll" type="ScrollContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent"] [node name="RankScroll" type="ScrollContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent" unique_id=1786542658]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
[node name="RankListVBox" type="VBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/RankScroll"] [node name="RankListVBox" type="VBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/ContentPanel/ContentStack/RankListContent/RankScroll" unique_id=1214877592]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_constants/separation = 4 theme_override_constants/separation = 4
[node name="TabBtnVBox" type="VBoxContainer" parent="MainMargin/MainHBox/LeftSide/BodyHBox"] [node name="TabBtnVBox" type="VBoxContainer" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox" unique_id=1687584513]
custom_minimum_size = Vector2(90, 0) custom_minimum_size = Vector2(90, 0)
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 8 theme_override_constants/separation = 8
[node name="TabSpacer" type="Control" parent="MainMargin/MainHBox/LeftSide/BodyHBox/TabBtnVBox"] [node name="TabSpacer" type="Control" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/TabBtnVBox" unique_id=620415399]
custom_minimum_size = Vector2(0, 30) custom_minimum_size = Vector2(0, 200)
layout_mode = 2 layout_mode = 2
[node name="RaceResultTabBtn" type="Button" parent="MainMargin/MainHBox/LeftSide/BodyHBox/TabBtnVBox"] [node name="RaceResultTabBtn" type="Button" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/TabBtnVBox" unique_id=288426013]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(85, 50) custom_minimum_size = Vector2(85, 50)
layout_mode = 2 layout_mode = 2
theme_override_constants/outline_size = 5
theme_override_constants/line_spacing = -5
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 12 theme_override_font_sizes/font_size = 14
theme_override_styles/normal = SubResource("StyleBoxTexture_q158c")
theme_override_styles/pressed = SubResource("StyleBoxTexture_0nol5")
theme_override_styles/hover = SubResource("StyleBoxTexture_qn6hl")
text = "RACE text = "RACE
RESULT" RESULT"
[node name="RankListTabBtn" type="Button" parent="MainMargin/MainHBox/LeftSide/BodyHBox/TabBtnVBox"] [node name="RankListTabBtn" type="Button" parent="MainMargin/MainHBox/LeftWrapper/LeftSide/BodyHBox/TabBtnVBox" unique_id=645406477]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(85, 50) custom_minimum_size = Vector2(85, 50)
layout_mode = 2 layout_mode = 2
theme_override_constants/outline_size = 5
theme_override_constants/line_spacing = -5
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 12 theme_override_font_sizes/font_size = 14
theme_override_styles/normal = SubResource("StyleBoxTexture_aju6u")
theme_override_styles/pressed = SubResource("StyleBoxTexture_w6rcn")
theme_override_styles/hover = SubResource("StyleBoxTexture_3toab")
text = "RANK text = "RANK
LIST" LIST"
[node name="BottomBar" type="HBoxContainer" parent="MainMargin/MainHBox/LeftSide"] [node name="RightWrapper" type="Control" parent="MainMargin/MainHBox" unique_id=223344556]
custom_minimum_size = Vector2(0, 50) layout_mode = 1
layout_mode = 2 anchor_left = 0.551
theme_override_constants/separation = 20 anchor_top = 0.1
anchor_right = 0.95100003
anchor_bottom = 0.83
offset_left = 0.39398193
offset_right = 0.3939209
offset_bottom = 0.054260254
grow_horizontal = 2
grow_vertical = 2
[node name="BackBtn" type="Button" parent="MainMargin/MainHBox/LeftSide/BottomBar"] [node name="RightSide" type="VBoxContainer" parent="MainMargin/MainHBox/RightWrapper" unique_id=694266103]
unique_name_in_owner = true layout_mode = 1
custom_minimum_size = Vector2(120, 48) anchors_preset = -1
layout_mode = 2 anchor_left = -0.19900002
theme_override_fonts/font = ExtResource("2_font") anchor_top = -0.07300001
theme_override_font_sizes/font_size = 20 anchor_right = 1.064
theme_override_styles/normal = SubResource("StyleBoxFlat_back_normal") anchor_bottom = 1.0150001
theme_override_styles/hover = SubResource("StyleBoxFlat_back_hover") offset_left = -0.042388916
theme_override_styles/pressed = SubResource("StyleBoxFlat_back_pressed") offset_top = 0.24116135
text = "BACK" offset_right = 0.16638184
offset_bottom = 0.09890747
[node name="BottomSpacer" type="Control" parent="MainMargin/MainHBox/LeftSide/BottomBar"] grow_horizontal = 2
layout_mode = 2 grow_vertical = 2
size_flags_horizontal = 3
[node name="RightSide" type="VBoxContainer" parent="MainMargin/MainHBox"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 1.0
theme_override_constants/separation = 8 theme_override_constants/separation = 8
alignment = 1 alignment = 1
[node name="ViewportContainer" type="SubViewportContainer" parent="MainMargin/MainHBox/RightSide"] [node name="ViewportContainer" type="SubViewportContainer" parent="MainMargin/MainHBox/RightWrapper/RightSide" unique_id=1093032361]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
stretch = true stretch = true
[node name="PreviewViewport" type="SubViewport" parent="MainMargin/MainHBox/RightSide/ViewportContainer"] [node name="PreviewViewport" type="SubViewport" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer" unique_id=190990679]
own_world_3d = true
transparent_bg = true transparent_bg = true
handle_input_locally = false handle_input_locally = false
size = Vector2i(400, 500) size = Vector2i(660, 411)
render_target_update_mode = 4 render_target_update_mode = 4
[node name="WorldEnvironment" type="WorldEnvironment" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport"] [node name="WorldEnvironment" type="WorldEnvironment" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport" unique_id=1823674523]
environment = SubResource("Environment_preview") environment = SubResource("Environment_preview")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport"] [node name="DirectionalLight3D" type="DirectionalLight3D" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport" unique_id=808528854]
transform = Transform3D(0.866025, -0.25, 0.433013, 0, 0.866025, 0.5, -0.5, -0.433013, 0.75, 0, 4, 0) transform = Transform3D(0.866025, -0.25, 0.433013, 0, 0.866025, 0.5, -0.5, -0.433013, 0.75, 0, 4, 0)
light_energy = 1.4 light_energy = 1.4
[node name="FillLight" type="OmniLight3D" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport"] [node name="FillLight" type="OmniLight3D" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport" unique_id=1897012151]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, 2) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, 2)
light_color = Color(0.4, 0.5, 1, 1) light_color = Color(0.4, 0.5, 1, 1)
light_energy = 0.5 light_energy = 0.5
omni_range = 8.0 omni_range = 8.0
[node name="PreviewCamera" type="Camera3D" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport"] [node name="PreviewCamera" type="Camera3D" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport" unique_id=1869696119]
transform = Transform3D(1, 0, 0, 0, 0.9659259, 0.25881898, 0, -0.25881898, 0.9659259, 0, 0.8380414, 3.2) transform = Transform3D(1, 0, 0, 0, 0.9659259, 0.25881895, 0, -0.25881895, 0.9659259, 0, 0.81, 2.309)
cull_mask = 512
current = true current = true
fov = 40.0 fov = 40.0
[node name="CharacterRoot" type="Node3D" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport"] [node name="CharacterRoot" type="Node3D" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport" unique_id=2072292979]
unique_name_in_owner = true unique_name_in_owner = true
[node name="Masbro" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" instance=ExtResource("5_masbro")] [node name="Masbro" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" unique_id=853004539 instance=ExtResource("5_masbro")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false visible = false
[node name="Bob" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" instance=ExtResource("3_bob")] [node name="Bob" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" unique_id=31535600 instance=ExtResource("3_bob")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false visible = false
[node name="Gatot" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" instance=ExtResource("4_gatot")] [node name="Gatot" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" unique_id=1607811370 instance=ExtResource("4_gatot")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false visible = false
[node name="Oldpop" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" instance=ExtResource("6_oldpop")] [node name="Oldpop" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" unique_id=1101298409 instance=ExtResource("6_oldpop")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="MainMargin/MainHBox/RightSide/ViewportContainer/PreviewViewport/CharacterRoot"] [node name="AnimationPlayer" type="AnimationPlayer" parent="MainMargin/MainHBox/RightWrapper/RightSide/ViewportContainer/PreviewViewport/CharacterRoot" unique_id=1274064114]
root_node = NodePath("../Oldpop") root_node = NodePath("../Oldpop")
libraries/animation-pack = ExtResource("7_animlib") libraries/animation-pack = ExtResource("7_animlib")
autoplay = &"animation-pack/idle" autoplay = &"animation-pack/idle"
[node name="CharNameLabel" type="Label" parent="MainMargin/MainHBox/RightSide"] [node name="CharNameLabel" type="Label" parent="MainMargin/MainHBox/RightWrapper/RightSide" unique_id=1040352623]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_constants/outline_size = 12
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 26 theme_override_font_sizes/font_size = 38
text = "PLAYER" text = "PLAYER"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="XPBarHBox" type="HBoxContainer" parent="MainMargin/MainHBox/RightSide"] [node name="XPBarHBox" type="HBoxContainer" parent="MainMargin/MainHBox/RightWrapper/RightSide" unique_id=1727935825]
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 8 theme_override_constants/separation = 8
alignment = 1 alignment = 1
[node name="XPIcon" type="ColorRect" parent="MainMargin/MainHBox/RightSide/XPBarHBox"] [node name="XPIcon" type="ColorRect" parent="MainMargin/MainHBox/RightWrapper/RightSide/XPBarHBox" unique_id=2005795604]
visible = false
custom_minimum_size = Vector2(24, 24) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
color = Color(0.85, 0.65, 0.1, 1) color = Color(0.85, 0.65, 0.1, 1)
[node name="XPBarBg" type="PanelContainer" parent="MainMargin/MainHBox/RightSide/XPBarHBox"] [node name="XPBarBg" type="PanelContainer" parent="MainMargin/MainHBox/RightWrapper/RightSide/XPBarHBox" unique_id=174029272]
custom_minimum_size = Vector2(180, 20) custom_minimum_size = Vector2(283.333, 70)
layout_mode = 2 layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_xp_bg") theme_override_styles/panel = SubResource("StyleBoxTexture_gkif2")
[node name="XPFill" type="ColorRect" parent="MainMargin/MainHBox/RightSide/XPBarHBox/XPBarBg"] [node name="XPFill" type="ColorRect" parent="MainMargin/MainHBox/RightWrapper/RightSide/XPBarHBox/XPBarBg" unique_id=129406007]
visible = false
custom_minimum_size = Vector2(120, 16) custom_minimum_size = Vector2(120, 16)
layout_mode = 2 layout_mode = 2
color = Color(0.85, 0.65, 0.1, 1) color = Color(0.85, 0.65, 0.1, 1)
[node name="RematchHBox" type="HBoxContainer" parent="MainMargin/MainHBox/RightSide"] [node name="BottomWrapper" type="Control" parent="MainMargin/MainHBox" unique_id=131883260]
layout_mode = 2 layout_mode = 1
theme_override_constants/separation = 10 anchor_left = -0.034
alignment = 2 anchor_top = 0.86
anchor_right = 1.033
anchor_bottom = 0.98200005
offset_left = -0.59599686
offset_top = 0.2000122
offset_right = -0.09802246
offset_bottom = 0.23999023
grow_horizontal = 2
grow_vertical = 2
[node name="RematchBtn" type="Button" parent="MainMargin/MainHBox/RightSide/RematchHBox"] [node name="BottomBar" type="HBoxContainer" parent="MainMargin/MainHBox/BottomWrapper" unique_id=881993212]
custom_minimum_size = Vector2(0, 50)
layout_mode = 0
offset_right = 761.0
offset_bottom = 86.0
size_flags_horizontal = 3
size_flags_stretch_ratio = 1.4
theme_override_constants/separation = 20
[node name="BackBtn" type="Button" parent="MainMargin/MainHBox/BottomWrapper/BottomBar" unique_id=504498314]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(160, 48) custom_minimum_size = Vector2(200, 80)
layout_mode = 2 layout_mode = 2
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 20 theme_override_font_sizes/font_size = 20
theme_override_styles/normal = SubResource("StyleBoxFlat_rematch_normal") theme_override_styles/normal = SubResource("StyleBoxTexture_gqj3c")
theme_override_styles/hover = SubResource("StyleBoxFlat_rematch_hover") theme_override_styles/pressed = SubResource("StyleBoxTexture_o7bn5")
theme_override_styles/pressed = SubResource("StyleBoxFlat_rematch_pressed") theme_override_styles/hover = SubResource("StyleBoxTexture_0eqys")
text = "REMATCH"
[node name="RematchVoteLabel" type="Label" parent="MainMargin/MainHBox/RightSide/RematchHBox"] [node name="BottomSpacer" type="Control" parent="MainMargin/MainHBox/BottomWrapper/BottomBar" unique_id=263011202]
layout_mode = 2
size_flags_horizontal = 3
[node name="RematchHBox" type="HBoxContainer" parent="MainMargin/MainHBox/BottomWrapper" unique_id=307743406]
custom_minimum_size = Vector2(0, 50)
layout_mode = 0
offset_left = 761.0
offset_right = 1394.0
offset_bottom = 86.0
size_flags_horizontal = 3
theme_override_constants/separation = 10
alignment = 2
[node name="RematchVoteLabel" type="Label" parent="MainMargin/MainHBox/BottomWrapper/RematchHBox" unique_id=2013869409]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(0.7, 0.7, 0.7, 1) theme_override_colors/font_color = Color(0.7, 0.7, 0.7, 1)
theme_override_fonts/font = ExtResource("2_font") theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 18 theme_override_font_sizes/font_size = 18
[node name="RematchBtn" type="Button" parent="MainMargin/MainHBox/BottomWrapper/RematchHBox" unique_id=1023916356]
unique_name_in_owner = true
custom_minimum_size = Vector2(200, 80)
layout_mode = 2
theme_override_fonts/font = ExtResource("2_font")
theme_override_font_sizes/font_size = 20
theme_override_styles/normal = SubResource("StyleBoxTexture_37kxa")
theme_override_styles/pressed = SubResource("StyleBoxTexture_3r3oo")
theme_override_styles/hover = SubResource("StyleBoxTexture_cn37d")
[node name="AchievementPanel" type="Panel" parent="MainMargin/MainHBox/BottomWrapper" unique_id=689276483]
custom_minimum_size = Vector2(165.5, 208)
layout_mode = 1
anchors_preset = -1
anchor_left = 0.35300002
anchor_top = -1.9760001
anchor_right = 0.45800003
anchor_bottom = 0.42600003
offset_left = -0.08200073
offset_top = 0.008010864
offset_right = 19.047974
offset_bottom = 8.641998
rotation = 0.10297442
theme_override_styles/panel = SubResource("StyleBoxTexture_abdxb")
+21 -11
View File
@@ -14,6 +14,7 @@ var active_safe_zone_rects: Array[Rect2i] = []
var spawned_safe_zones: int = 0 var spawned_safe_zones: int = 0
var _safe_zone_animating: bool = false var _safe_zone_animating: bool = false
var _outline_nodes: Array[Node3D] = [] # Track perimeter outline containers for cleanup var _outline_nodes: Array[Node3D] = [] # Track perimeter outline containers for cleanup
var _cached_safe_zone_mesh: Mesh = null
# Power-Up Tile Spawning # Power-Up Tile Spawning
const POWERUP_TILES = [11, 14] # Speed, Ghost (Freeze and Wall excluded in this mode) const POWERUP_TILES = [11, 14] # Speed, Ghost (Freeze and Wall excluded in this mode)
@@ -654,7 +655,10 @@ func _animate_safe_zone_appear():
_safe_zone_animating = false _safe_zone_animating = false
return return
var original_mesh = gridmap.mesh_library.get_item_mesh(TILE_SAFE) if not _cached_safe_zone_mesh:
_cached_safe_zone_mesh = gridmap.mesh_library.get_item_mesh(TILE_SAFE)
var original_mesh = _cached_safe_zone_mesh
if not is_instance_valid(original_mesh): if not is_instance_valid(original_mesh):
_safe_zone_animating = false _safe_zone_animating = false
return return
@@ -854,12 +858,10 @@ func _animate_safe_zone_disappear():
var cur_mat = cur_mesh.material var cur_mat = cur_mesh.material
if not is_instance_valid(cur_mat): return if not is_instance_valid(cur_mat): return
var fade_mat: StandardMaterial3D = cur_mat.duplicate() # Instead of continuously duplicating, use the current duplicated material for tweening.
var fade_mesh = cur_mesh.duplicate() var fade_mat: StandardMaterial3D = cur_mat
fade_mesh.material = fade_mat
gridmap.mesh_library.set_item_mesh(TILE_SAFE, fade_mesh)
var start_alpha: float = cur_mat.albedo_color.a var start_alpha: float = fade_mat.albedo_color.a
var tween = create_tween() var tween = create_tween()
# Phase 1 — Flicker brighten: alpha → 0.95 in 0.15s (warn the player) # Phase 1 — Flicker brighten: alpha → 0.95 in 0.15s (warn the player)
@@ -895,6 +897,17 @@ func _animate_safe_zone_disappear():
func(a: float): if is_instance_valid(omat): omat.albedo_color.a = a, func(a: float): if is_instance_valid(omat): omat.albedo_color.a = a,
1.0, 0.0, 0.4 1.0, 0.0, 0.4
).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_EXPO) ).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_EXPO)
# Wait for animation to finish, then free outlines locally
await get_tree().create_timer(0.6).timeout
for outline in _outline_nodes:
if is_instance_valid(outline):
outline.queue_free()
_outline_nodes.clear()
# Restore the original safe zone mesh to prevent material/alpha leakage
if _cached_safe_zone_mesh and gridmap and gridmap.mesh_library:
gridmap.mesh_library.set_item_mesh(TILE_SAFE, _cached_safe_zone_mesh)
func _clear_dynamic_safe_zones(): func _clear_dynamic_safe_zones():
var gridmap = get_parent().get_node_or_null("EnhancedGridMap") var gridmap = get_parent().get_node_or_null("EnhancedGridMap")
@@ -926,11 +939,8 @@ func _clear_dynamic_safe_zones():
active_safe_zone_rects.clear() active_safe_zone_rects.clear()
spawned_safe_zones = 0 spawned_safe_zones = 0
# Free all outline containers now that the animation has finished # Outline deletion and mesh restoration is now handled locally by each client
for outline in _outline_nodes: # at the end of _animate_safe_zone_disappear()
if is_instance_valid(outline):
outline.queue_free()
_outline_nodes.clear()
func _scatter_player_tiles(player_node: Node): func _scatter_player_tiles(player_node: Node):
"""Server: Take all tiles from player's playerboard and scatter them onto nearby grid cells.""" """Server: Take all tiles from player's playerboard and scatter them onto nearby grid cells."""
+22 -20
View File
@@ -194,17 +194,21 @@ func _process(delta):
rotation = carrier.rotation rotation = carrier.rotation
_update_prompt_label() _update_prompt_label()
if prompt_container and prompt_container.visible:
var time = Time.get_ticks_msec() / 1000.0
prompt_container.position.y = 2.4 + sin(time * 5.0) * 0.15
var mesh_cache: Array[MeshInstance3D] = [] var mesh_cache: Array[MeshInstance3D] = []
var original_scales: Array[Vector3] = [] var original_scales: Array[Vector3] = []
var prompt_label: Label3D var prompt_container: Node3D
@onready var SettingsManager = get_node_or_null("/root/SettingsManager") @onready var SettingsManager = get_node_or_null("/root/SettingsManager")
func _update_prompt_label(): func _update_prompt_label():
if not prompt_label: return if not prompt_container: return
if is_static_turret or is_carried or is_thrown or is_recovering: if is_static_turret or is_carried or is_thrown or is_recovering:
prompt_label.visible = false prompt_container.visible = false
return return
var authority_player = null var authority_player = null
@@ -215,40 +219,38 @@ func _update_prompt_label():
break break
if not authority_player: if not authority_player:
prompt_label.visible = false prompt_container.visible = false
return return
# Check distance # Check distance
var player_pos = Vector2(authority_player.current_position.x, authority_player.current_position.y) var player_pos = Vector2(authority_player.current_position.x, authority_player.current_position.y)
var tekton_pos = Vector2(current_position.x, current_position.y) var tekton_pos = Vector2(current_position.x, current_position.y)
if player_pos.distance_to(tekton_pos) > 1.5: if player_pos.distance_to(tekton_pos) > 1.5:
prompt_label.visible = false prompt_container.visible = false
return return
# Check power bar # Check power bar
var pw_mgr = authority_player.get_node_or_null("PowerUpManager") var pw_mgr = authority_player.get_node_or_null("PowerUpManager")
if pw_mgr and pw_mgr.current_boost >= (pw_mgr.MAX_BOOST - 1): if pw_mgr and pw_mgr.current_boost >= (pw_mgr.MAX_BOOST - 1):
prompt_label.visible = true prompt_container.visible = true
else: else:
prompt_label.visible = false prompt_container.visible = false
func _ready(): func _ready():
# Cache meshes and their initial scales # Cache meshes and their initial scales
_cache_meshes(self) _cache_meshes(self)
prompt_label = Label3D.new() prompt_container = get_node_or_null("InteractionPrompt")
var shortcut_text = "G" if prompt_container:
if SettingsManager and SettingsManager.has_method("get_control_text"): prompt_container.visible = false
shortcut_text = SettingsManager.get_control_text("tekton_grab") var key_label = prompt_container.get_node_or_null("KeyLabel")
prompt_label.text = "[ " + str(shortcut_text) + " ]" if key_label:
prompt_label.font_size = 64 var shortcut_text = "G"
prompt_label.outline_size = 12 if SettingsManager and SettingsManager.has_method("get_control_text"):
prompt_label.billboard = BaseMaterial3D.BILLBOARD_ENABLED shortcut_text = SettingsManager.get_control_text("tekton_grab")
prompt_label.no_depth_test = true key_label.text = "[ " + str(shortcut_text) + " ]"
prompt_label.position = Vector3(0, 1.8, 0) else:
prompt_label.modulate = Color(1.0, 0.9, 0.0) # Yellow text push_warning("[Tekton] 'InteractionPrompt' node missing. UI will not appear.")
prompt_label.visible = false
add_child(prompt_label)
func _cache_meshes(node: Node): func _cache_meshes(node: Node):
if node is MeshInstance3D: if node is MeshInstance3D:
+62 -4
View File
@@ -19,7 +19,10 @@ signal rematch_pressed
@onready var player_score_label := %PlayerScoreLabel as Label @onready var player_score_label := %PlayerScoreLabel as Label
@onready var completion_value := %CompletionValue as Label @onready var completion_value := %CompletionValue as Label
@onready var score_value := %ScoreValue as Label @onready var score_value := %ScoreValue as Label
@onready var rank_value := %RankValue as Label @onready var rank_value := %RankValue as Panel
# Content Panel
@onready var content_panel := %ContentPanel as PanelContainer
# Rank List tab # Rank List tab
@onready var rank_list_content := %RankListContent as VBoxContainer @onready var rank_list_content := %RankListContent as VBoxContainer
@@ -87,7 +90,48 @@ func _ready() -> void:
func _switch_tab(show_race_result: bool) -> void: func _switch_tab(show_race_result: bool) -> void:
race_result_content.visible = show_race_result race_result_content.visible = show_race_result
rank_list_content.visible = not show_race_result rank_list_content.visible = not show_race_result
tab_title_label.text = "RACE RESULT" if show_race_result else "RANK LIST" if tab_title_label:
tab_title_label.text = "RACE RESULT" if show_race_result else "RANK LIST"
# Tab button styles
var tex_avail_normal = preload("res://assets/graphics/gui/game_over_panel/Button_avail.png")
var tex_avail_click = preload("res://assets/graphics/gui/game_over_panel/Button_avail_click.png")
var tex_avail_hover = preload("res://assets/graphics/gui/game_over_panel/Button_avail_expand.png")
var tex_unavail_normal = preload("res://assets/graphics/gui/game_over_panel/Button_unavail.png")
var tex_unavail_click = preload("res://assets/graphics/gui/game_over_panel/Button_unavail_click.png")
if show_race_result:
race_result_tab_btn.add_theme_stylebox_override("normal", _get_stylebox(tex_avail_normal))
race_result_tab_btn.add_theme_stylebox_override("pressed", _get_stylebox(tex_avail_click))
race_result_tab_btn.add_theme_stylebox_override("hover", _get_stylebox(tex_avail_hover))
rank_list_tab_btn.add_theme_stylebox_override("normal", _get_stylebox(tex_unavail_normal))
rank_list_tab_btn.add_theme_stylebox_override("pressed", _get_stylebox(tex_unavail_click))
rank_list_tab_btn.add_theme_stylebox_override("hover", _get_stylebox(tex_unavail_normal))
else:
race_result_tab_btn.add_theme_stylebox_override("normal", _get_stylebox(tex_unavail_normal))
race_result_tab_btn.add_theme_stylebox_override("pressed", _get_stylebox(tex_unavail_click))
race_result_tab_btn.add_theme_stylebox_override("hover", _get_stylebox(tex_unavail_normal))
rank_list_tab_btn.add_theme_stylebox_override("normal", _get_stylebox(tex_avail_normal))
rank_list_tab_btn.add_theme_stylebox_override("pressed", _get_stylebox(tex_avail_click))
rank_list_tab_btn.add_theme_stylebox_override("hover", _get_stylebox(tex_avail_hover))
# Content Panel Background
var bg_tex = preload("res://assets/graphics/gui/game_over_panel/raceresult.png") if show_race_result else preload("res://assets/graphics/gui/game_over_panel/ranklist.png")
var bg_style = StyleBoxTexture.new()
bg_style.texture = bg_tex
# Must match margins from tscn: left 50, top 180, right 80, bottom 20
bg_style.content_margin_left = 50
bg_style.content_margin_top = 180
bg_style.content_margin_right = 80
bg_style.content_margin_bottom = 20
content_panel.add_theme_stylebox_override("panel", bg_style)
func _get_stylebox(tex: Texture2D) -> StyleBoxTexture:
var sb = StyleBoxTexture.new()
sb.texture = tex
return sb
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Data Population (called by main.gd) # Data Population (called by main.gd)
@@ -119,14 +163,21 @@ func setup(player_scores: Array, local_peer_id: int) -> void:
player_score_label.text = str(local_score) player_score_label.text = str(local_score)
completion_value.text = "%dx" % local_goal_count completion_value.text = "%dx" % local_goal_count
score_value.text = str(local_score) score_value.text = str(local_score)
rank_value.text = _get_ordinal(local_rank + 1)
# Update RankValue Panel texture based on rank
var rank_str = _get_ordinal(local_rank + 1)
var rank_tex_path = "res://assets/graphics/gui/game_over_panel/%s.png" % rank_str
if ResourceLoader.exists(rank_tex_path):
var rank_tex = load(rank_tex_path)
var rank_style = StyleBoxTexture.new()
rank_style.texture = rank_tex
rank_value.add_theme_stylebox_override("panel", rank_style)
# Rank color # Rank color
var rank_color := Color(0.95, 0.75, 0.1) # Gold var rank_color := Color(0.95, 0.75, 0.1) # Gold
if local_rank == 1: rank_color = Color(0.75, 0.75, 0.75) # Silver if local_rank == 1: rank_color = Color(0.75, 0.75, 0.75) # Silver
elif local_rank == 2: rank_color = Color(0.8, 0.5, 0.2) # Bronze elif local_rank == 2: rank_color = Color(0.8, 0.5, 0.2) # Bronze
elif local_rank > 2: rank_color = Color(0.6, 0.6, 0.6) elif local_rank > 2: rank_color = Color(0.6, 0.6, 0.6)
rank_value.add_theme_color_override("font_color", rank_color)
player_rank_label.add_theme_color_override("font_color", rank_color) player_rank_label.add_theme_color_override("font_color", rank_color)
# --- Rank List tab --- # --- Rank List tab ---
@@ -199,6 +250,13 @@ func _setup_3d_preview() -> void:
if not character_root: if not character_root:
return return
_anim_player = character_root.get_node_or_null("AnimationPlayer") _anim_player = character_root.get_node_or_null("AnimationPlayer")
_set_layers_recursive(character_root, 512)
func _set_layers_recursive(node: Node, layer_mask: int) -> void:
if node is VisualInstance3D:
node.layers = layer_mask
for child in node.get_children():
_set_layers_recursive(child, layer_mask)
func _update_3d_preview(character_name: String) -> void: func _update_3d_preview(character_name: String) -> void:
if not character_root: if not character_root: