diff --git a/asset_dev/ui/corpo_logo.xcf b/asset_dev/ui/corpo_logo.xcf new file mode 100644 index 0000000..e1cd01b Binary files /dev/null and b/asset_dev/ui/corpo_logo.xcf differ diff --git a/assets/ui/corpo_logo/corpo_logo_128.png b/assets/ui/corpo_logo/corpo_logo_128.png new file mode 100644 index 0000000..393c983 --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0357223f98ae3f4e3084896ee4e40d4750f9f17e6a496f666c1a68183e7bebc +size 932 diff --git a/assets/ui/corpo_logo/corpo_logo_128.png.import b/assets/ui/corpo_logo/corpo_logo_128.png.import new file mode 100644 index 0000000..c00b3ca --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_128.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dixpjnlaj86x2" +path="res://.godot/imported/corpo_logo_128.png-3de86c663523882d9e0ebffd7de5c43c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/ui/corpo_logo/corpo_logo_128.png" +dest_files=["res://.godot/imported/corpo_logo_128.png-3de86c663523882d9e0ebffd7de5c43c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/ui/corpo_logo/corpo_logo_128_bg.png b/assets/ui/corpo_logo/corpo_logo_128_bg.png new file mode 100644 index 0000000..d7b0d99 --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_128_bg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a2cc2aa2e2bc3245457916fad028f456bae4b6f30e15357d460bfc675622c00 +size 2911 diff --git a/assets/ui/corpo_logo/corpo_logo_128_bg.png.import b/assets/ui/corpo_logo/corpo_logo_128_bg.png.import new file mode 100644 index 0000000..c845392 --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_128_bg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7ds08rj0yk7j" +path="res://.godot/imported/corpo_logo_128_bg.png-89eb09aa3ea1cb5cb304d1d6904ce810.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/ui/corpo_logo/corpo_logo_128_bg.png" +dest_files=["res://.godot/imported/corpo_logo_128_bg.png-89eb09aa3ea1cb5cb304d1d6904ce810.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/ui/corpo_logo/corpo_logo_256.png b/assets/ui/corpo_logo/corpo_logo_256.png new file mode 100644 index 0000000..eb1dd3f --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_256.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8754656cf4bf0c74df9ccb8d1d491e68dc71e231598e2fda671e07a8cedfbaae +size 1730 diff --git a/assets/ui/corpo_logo/corpo_logo_256.png.import b/assets/ui/corpo_logo/corpo_logo_256.png.import new file mode 100644 index 0000000..360d66e --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_256.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbr66ubeql7gi" +path="res://.godot/imported/corpo_logo_256.png-58bfe662ab369a650f7147768bd46884.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/ui/corpo_logo/corpo_logo_256.png" +dest_files=["res://.godot/imported/corpo_logo_256.png-58bfe662ab369a650f7147768bd46884.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/ui/corpo_logo/corpo_logo_512.png b/assets/ui/corpo_logo/corpo_logo_512.png new file mode 100644 index 0000000..c5ed4bb --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_512.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a923e492e6e8a9c547885260ed1794d0acc57f42f750e6cd9b097cdafe3f6400 +size 3893 diff --git a/assets/ui/corpo_logo/corpo_logo_512.png.import b/assets/ui/corpo_logo/corpo_logo_512.png.import new file mode 100644 index 0000000..33599a5 --- /dev/null +++ b/assets/ui/corpo_logo/corpo_logo_512.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbosbnfdmhu27" +path="res://.godot/imported/corpo_logo_512.png-b05524db051b0e137f14c9416740afff.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/ui/corpo_logo/corpo_logo_512.png" +dest_files=["res://.godot/imported/corpo_logo_512.png-b05524db051b0e137f14c9416740afff.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/src/effects/grunk_2d/grunk_2d.gd b/src/effects/grunk_2d/grunk_2d.gd new file mode 100644 index 0000000..1f2ce20 --- /dev/null +++ b/src/effects/grunk_2d/grunk_2d.gd @@ -0,0 +1,12 @@ +@tool +extends ColorRect + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + _update_aspect_ratio() + + +func _update_aspect_ratio() -> void: + var aspect_ratio := size.y / size.x + (material as ShaderMaterial).set_shader_parameter("aspect_ratio", aspect_ratio) diff --git a/src/effects/grunk_2d/grunk_2d.gd.uid b/src/effects/grunk_2d/grunk_2d.gd.uid new file mode 100644 index 0000000..76c9c0f --- /dev/null +++ b/src/effects/grunk_2d/grunk_2d.gd.uid @@ -0,0 +1 @@ +uid://06n7qs3l4tf6 diff --git a/src/effects/grunk_2d/grunk_2d.tscn b/src/effects/grunk_2d/grunk_2d.tscn new file mode 100644 index 0000000..e4df039 --- /dev/null +++ b/src/effects/grunk_2d/grunk_2d.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=9 format=3 uid="uid://b6dx0ovy15g5o"] + +[ext_resource type="Shader" uid="uid://dnytoirugot2e" path="res://src/shaders/canvas_grunk.gdshader" id="1_pgbvb"] +[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="2_g1nf5"] +[ext_resource type="Script" uid="uid://06n7qs3l4tf6" path="res://src/effects/grunk_2d/grunk_2d.gd" id="3_g1nf5"] + +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_7v5ka"] +width = 256 +height = 256 +seamless = true +seamless_blend_skirt = 0.5 +noise = ExtResource("2_g1nf5") + +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_d72jk"] +width = 256 +height = 256 +seamless = true +seamless_blend_skirt = 0.5 +noise = ExtResource("2_g1nf5") + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_qsvii"] +frequency = 0.0006 +fractal_type = 2 +fractal_octaves = 4 +fractal_gain = 0.667 +domain_warp_type = 2 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pgbvb"] +width = 1024 +height = 1024 +noise = SubResource("FastNoiseLite_qsvii") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_rq45f"] +resource_local_to_scene = true +shader = ExtResource("1_pgbvb") +shader_parameter/color_1 = Color(0, 0.03, 0.1, 1) +shader_parameter/color_2 = Color(0, 0.1, 0.3, 1) +shader_parameter/emission_color = Color(0.25, 0.88, 1, 1) +shader_parameter/pixellation = 30.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/emission_strength = 0.05 +shader_parameter/aspect_ratio = 0.5625 +shader_parameter/time_scale = 0.01 +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_7v5ka") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_d72jk") +shader_parameter/mask_progress = 1.0 +shader_parameter/mask_noise = SubResource("NoiseTexture2D_pgbvb") + +[node name="Grunk2D" type="ColorRect"] +material = SubResource("ShaderMaterial_rq45f") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("3_g1nf5") + +[connection signal="item_rect_changed" from="." to="." method="_update_aspect_ratio"] diff --git a/src/shaders/canvas_grunk.gdshader b/src/shaders/canvas_grunk.gdshader index b7a8593..32fbe12 100644 --- a/src/shaders/canvas_grunk.gdshader +++ b/src/shaders/canvas_grunk.gdshader @@ -11,8 +11,7 @@ uniform float time_pixellation = 30.0; uniform float emission_strength = 0.05; -// Used ONLY by the gunk, does not affect the gunk mask. -uniform vec2 uv_scale = vec2(1.0); +uniform float aspect_ratio = 1.0; uniform float time_scale = 1.0; @@ -29,9 +28,8 @@ float hardstep(float value) { } void fragment() { - vec2 aspect_ratio = vec2(SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x, 1.0); - vec2 scaled_pixellation = pixellation * aspect_ratio; - vec2 local_uv = floor(UV * uv_scale * scaled_pixellation) / scaled_pixellation; + vec2 scaled_pixellation = pixellation * vec2(1.0, aspect_ratio); + vec2 local_uv = floor(UV * scaled_pixellation) / scaled_pixellation; float local_time = floor(TIME * time_scale * time_pixellation) / time_pixellation; // swirl diff --git a/src/ui/elements/save_icon/save_icon.tscn b/src/ui/elements/save_icon/save_icon.tscn new file mode 100644 index 0000000..653c037 --- /dev/null +++ b/src/ui/elements/save_icon/save_icon.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=12 format=3 uid="uid://brknr57xc2cp0"] + +[ext_resource type="Texture2D" uid="uid://b7ds08rj0yk7j" path="res://assets/ui/corpo_logo/corpo_logo_128_bg.png" id="1_1oh6t"] +[ext_resource type="Texture2D" uid="uid://dixpjnlaj86x2" path="res://assets/ui/corpo_logo/corpo_logo_128.png" id="1_p2l3a"] +[ext_resource type="Shader" uid="uid://dnytoirugot2e" path="res://src/shaders/canvas_grunk.gdshader" id="2_q367f"] +[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="3_8o5hc"] +[ext_resource type="PackedScene" uid="uid://b6dx0ovy15g5o" path="res://src/effects/grunk_2d/grunk_2d.tscn" id="5_xrtbx"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_8o5hc"] + +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_7v5ka"] +width = 256 +height = 256 +seamless = true +seamless_blend_skirt = 0.5 +noise = ExtResource("3_8o5hc") + +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_d72jk"] +width = 256 +height = 256 +seamless = true +seamless_blend_skirt = 0.5 +noise = ExtResource("3_8o5hc") + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_qsvii"] +frequency = 0.0006 +fractal_type = 2 +fractal_octaves = 4 +fractal_gain = 0.667 +domain_warp_type = 2 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pgbvb"] +width = 1024 +height = 1024 +noise = SubResource("FastNoiseLite_qsvii") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_t8g1i"] +resource_local_to_scene = true +shader = ExtResource("2_q367f") +shader_parameter/color_1 = Color(0, 0, 0, 1) +shader_parameter/color_2 = Color(0.137255, 0.984314, 0.34902, 1) +shader_parameter/emission_color = Color(0.486275, 1, 0.25098, 1) +shader_parameter/pixellation = 32.0 +shader_parameter/time_pixellation = 60.0 +shader_parameter/emission_strength = 0.05 +shader_parameter/aspect_ratio = 1.0 +shader_parameter/time_scale = 1.0 +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_7v5ka") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_d72jk") +shader_parameter/mask_progress = 1.0 +shader_parameter/mask_noise = SubResource("NoiseTexture2D_pgbvb") + +[node name="SaveIcon" type="MarginContainer"] +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="IconBG" type="TextureRect" parent="."] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource("1_1oh6t") +stretch_mode = 2 + +[node name="SaveIcon" type="TextureRect" parent="."] +clip_children = 2 +texture_filter = 3 +material = SubResource("ShaderMaterial_8o5hc") +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource("1_p2l3a") +stretch_mode = 2 + +[node name="Grunk2D" parent="SaveIcon" instance=ExtResource("5_xrtbx")] +material = SubResource("ShaderMaterial_t8g1i") +layout_mode = 1 diff --git a/src/ui/menus/kill_screen/kill_screen.tscn b/src/ui/menus/kill_screen/kill_screen.tscn index 4bc88b5..b5d69d2 100644 --- a/src/ui/menus/kill_screen/kill_screen.tscn +++ b/src/ui/menus/kill_screen/kill_screen.tscn @@ -1,18 +1,19 @@ -[gd_scene load_steps=13 format=3 uid="uid://c0uitm5cg88h1"] +[gd_scene load_steps=14 format=3 uid="uid://c0uitm5cg88h1"] [ext_resource type="Shader" uid="uid://dnytoirugot2e" path="res://src/shaders/canvas_grunk.gdshader" id="1_28vyc"] +[ext_resource type="PackedScene" uid="uid://b6dx0ovy15g5o" path="res://src/effects/grunk_2d/grunk_2d.tscn" id="1_sv5d8"] [ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="2_qsvii"] [ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="3_a6m17"] [ext_resource type="Script" uid="uid://cjs2fen6jo0g0" path="res://src/ui/rumbler.gd" id="4_sv5d8"] -[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_et0xc"] +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_7v5ka"] width = 256 height = 256 seamless = true seamless_blend_skirt = 0.5 noise = ExtResource("2_qsvii") -[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_a6m17"] +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_d72jk"] width = 256 height = 256 seamless = true @@ -26,12 +27,13 @@ fractal_octaves = 4 fractal_gain = 0.667 domain_warp_type = 2 -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_et0xc"] +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pgbvb"] width = 1024 height = 1024 noise = SubResource("FastNoiseLite_qsvii") -[sub_resource type="ShaderMaterial" id="ShaderMaterial_qsvii"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_3jt4s"] +resource_local_to_scene = true shader = ExtResource("1_28vyc") shader_parameter/color_1 = Color(0, 0.03, 0.1, 1) shader_parameter/color_2 = Color(0, 0.1, 0.3, 1) @@ -39,12 +41,51 @@ shader_parameter/emission_color = Color(0.25, 0.88, 1, 1) shader_parameter/pixellation = 50.0 shader_parameter/time_pixellation = 30.0 shader_parameter/emission_strength = 0.0 -shader_parameter/uv_scale = Vector2(1, 1) +shader_parameter/aspect_ratio = 0.5625 shader_parameter/time_scale = 0.2 -shader_parameter/gunk_noise = SubResource("NoiseTexture3D_et0xc") -shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_a6m17") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_7v5ka") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_d72jk") shader_parameter/mask_progress = 0.0 -shader_parameter/mask_noise = SubResource("NoiseTexture2D_et0xc") +shader_parameter/mask_noise = SubResource("NoiseTexture2D_pgbvb") + +[sub_resource type="Animation" id="Animation_et0xc"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Grunk2D:material:shader_parameter/mask_progress") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Grunk2D/Rumbler:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Blackout:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} [sub_resource type="Animation" id="Animation_qsvii"] resource_name = "transition_in" @@ -52,7 +93,7 @@ length = 14.0 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Grunk:material:shader_parameter/mask_progress") +tracks/0/path = NodePath("Grunk2D:material:shader_parameter/mask_progress") tracks/0/interp = 2 tracks/0/loop_wrap = false tracks/0/keys = { @@ -64,7 +105,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("Grunk/Rumbler:visible") +tracks/1/path = NodePath("Grunk2D/Rumbler:visible") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -100,45 +141,6 @@ tracks/3/keys = { }] } -[sub_resource type="Animation" id="Animation_et0xc"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Grunk:material:shader_parameter/mask_progress") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Grunk/Rumbler:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Blackout:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_a6m17"] _data = { &"RESET": SubResource("Animation_et0xc"), @@ -153,27 +155,20 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="Grunk" type="ColorRect" parent="."] -clip_children = 2 -material = SubResource("ShaderMaterial_qsvii") +[node name="Grunk2D" parent="." instance=ExtResource("1_sv5d8")] +material = SubResource("ShaderMaterial_3jt4s") 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="Rumbler" type="Control" parent="Grunk"] +[node name="Rumbler" type="Control" parent="Grunk2D"] visible = false layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = 3.04544 -offset_top = -0.292352 -offset_right = 3.04541 -offset_bottom = -0.292358 +offset_left = -7.49218 +offset_top = -3.99316 +offset_right = -7.49219 +offset_bottom = -3.99316 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 @@ -181,7 +176,7 @@ script = ExtResource("4_sv5d8") intensity = 6.0 metadata/_custom_type_script = "uid://cjs2fen6jo0g0" -[node name="DeathMessage" type="Label" parent="Grunk/Rumbler"] +[node name="DeathMessage" type="Label" parent="Grunk2D/Rumbler"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 diff --git a/src/world/world.gd b/src/world/world.gd index 1bdd771..25c821f 100644 --- a/src/world/world.gd +++ b/src/world/world.gd @@ -18,6 +18,7 @@ var current_level: PackedScene @onready var level_root: Node3D = %LevelRoot @onready var ui_root: Control = %UIRoot +@onready var save_icon: MarginContainer = %SaveIcon static var instance: World @@ -53,8 +54,6 @@ func load_level(level: PackedScene, save: SaveState = null) -> void: current_level = level print("Instantiating level from ", level.resource_path) var level_instance := level.instantiate() - #if save: - #level_instance.ready.connect(func() -> void: save.load_to_world(self), CONNECT_ONE_SHOT) level_root.add_child(level_instance) if save: save.load_to_world(self) @@ -81,7 +80,9 @@ func on_game_over() -> void: func save_progress() -> void: print("Preparing save state...") + save_icon.show() var save := SaveState.serialize(self) print("Writing save to ", save_path) ResourceSaver.save(save, save_path) + save_icon.hide() print("Done!") diff --git a/src/world/world.tscn b/src/world/world.tscn index 71f53a9..f8f731c 100644 --- a/src/world/world.tscn +++ b/src/world/world.tscn @@ -1,17 +1,18 @@ -[gd_scene load_steps=7 format=3 uid="uid://884jqafhtrv0"] +[gd_scene load_steps=8 format=3 uid="uid://884jqafhtrv0"] [ext_resource type="Script" uid="uid://cgqmhtemibxc5" path="res://src/world/world.gd" id="1_1k4gi"] [ext_resource type="Resource" uid="uid://tgac5tnfx56r" path="res://src/world/world_manager.tres" id="2_5kmgb"] [ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="2_6fy3g"] [ext_resource type="Resource" uid="uid://0i72bf8ip1lx" path="res://src/world/spook_manager.tres" id="3_l0av5"] -[ext_resource type="PackedScene" uid="uid://b8rv6dg4tgaeb" path="res://src/world/gunk_node/mechanic_test.tscn" id="4_l0av5"] +[ext_resource type="PackedScene" uid="uid://bov4ok76woyc" path="res://levels/ghost_ship/ghost_ship.tscn" id="4_5kmgb"] [ext_resource type="PackedScene" uid="uid://c0uitm5cg88h1" path="res://src/ui/menus/kill_screen/kill_screen.tscn" id="6_l0av5"] +[ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"] [node name="World" type="Node"] script = ExtResource("1_1k4gi") manager = ExtResource("2_5kmgb") spook_manager = ExtResource("3_l0av5") -initial_level = ExtResource("4_l0av5") +initial_level = ExtResource("4_5kmgb") pause_scene = ExtResource("2_6fy3g") kill_screen_scene = ExtResource("6_l0av5") @@ -27,3 +28,17 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 + +[node name="SaveIcon" parent="UIRoot" instance=ExtResource("7_5kmgb")] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_top = -140.0 +offset_right = 140.0 +offset_bottom = 0.0 +grow_vertical = 0 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_bottom = 32 diff --git a/src/world/world_manager.gd b/src/world/world_manager.gd index add2571..e7db4ba 100644 --- a/src/world/world_manager.gd +++ b/src/world/world_manager.gd @@ -87,6 +87,8 @@ func deposit_tank() -> void: if alert_level >= CLEAR_LEVEL: clear_alert() + World.instance.save_progress() + func is_tank_full() -> bool: return grunk_tank >= grunk_tank_limit