diff --git a/levels/ghost_ship/ghost_ship_level.tscn b/levels/ghost_ship/ghost_ship_level.tscn index 0d62a46..f18868d 100644 --- a/levels/ghost_ship/ghost_ship_level.tscn +++ b/levels/ghost_ship/ghost_ship_level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=406 format=4 uid="uid://crydi5cjgfwe5"] +[gd_scene load_steps=415 format=4 uid="uid://crydi5cjgfwe5"] [ext_resource type="PackedScene" uid="uid://oowut88kr2ox" path="res://levels/ghost_ship/player_ship/player_ship.tscn" id="1_2pyr1"] [ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="2_2egij"] @@ -33,7 +33,6 @@ [ext_resource type="Texture2D" uid="uid://b1m1my5q2vlwi" path="res://assets/props/crate_long/crate_long_R.png" id="30_u2hqf"] [ext_resource type="ArrayMesh" uid="uid://5jt7xxr05lw3" path="res://assets/level/hallway/hallway_2.mesh" id="31_ji5cn"] [ext_resource type="ArrayMesh" uid="uid://d0sdsir1hqnbu" path="res://assets/level/wall/wall_4.mesh" id="33_4a0u4"] -[ext_resource type="Material" uid="uid://dutkfm4ek0ysh" path="res://assets/materials/gunk_bright.material" id="33_76qng"] [ext_resource type="ArrayMesh" uid="uid://c4klxlj1oop7t" path="res://assets/level/hallway/hallway_4.mesh" id="33_okeuk"] [ext_resource type="ArrayMesh" uid="uid://c2pruwilyqs07" path="res://assets/level/floor/floor_6x9.mesh" id="35_6giaa"] [ext_resource type="ArrayMesh" uid="uid://dkh2r61ydupb7" path="res://assets/level/floor/floor_2.mesh" id="35_d8p6j"] @@ -482,6 +481,45 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_ojd88") +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_76qng"] +width = 256 +height = 256 +depth = 32 +seamless = true +seamless_blend_skirt = 0.5 +noise = ExtResource("6_3kphg") + +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_pifep"] +width = 256 +height = 256 +depth = 32 +seamless = true +seamless_blend_skirt = 0.5 +noise = ExtResource("6_3kphg") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mj4ca"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ojd88"] data = PackedVector3Array(-1, 0, 0.2, -1, -0.4, 0, -1, 0, -0.2, -1, 0, -0.2, -1, -0.4, 0, 1, 0, -0.2, 1, 0, -0.2, -1, -0.4, 0, 1, -0.4, 0, 1, 0, -0.2, 1, -0.4, 0, 1, 0, 0.2, 1, 0, 0.2, 1, -0.4, 0, -1, 0, 0.2, -1, 0, 0.2, 1, -0.4, 0, -1, -0.4, 0, -1, 0, -0.2, 1, 0, -0.2, -1, 0, 0.2, -1, 0, 0.2, 1, 0, -0.2, 1, 0, 0.2) @@ -724,6 +762,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_h1nog") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_qbsys"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_mgo71"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -1262,6 +1323,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_h1nog") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2dhfq"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ft6k"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -1319,6 +1403,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_fkhf3") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2kcw6"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_7ctwk"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -2798,6 +2905,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_fkhf3") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_y0tcr"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_dxmep"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -2855,6 +2985,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_4akax") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_c4ji2"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_0ij5m"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -3308,6 +3461,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_eaq62") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_bf7oo"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_wqqoq"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -3618,6 +3794,29 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_vt4uw") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_i6b1e"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("5_1njh5") +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.66, 0.943333, 1, 1) +shader_parameter/pixellation = 128.0 +shader_parameter/time_pixellation = 30.0 +shader_parameter/roughness = 0.15 +shader_parameter/specular_contribution = 0.8 +shader_parameter/emission_strength = 0.04 +shader_parameter/uv_scale = Vector2(2, 2) +shader_parameter/time_scale = 0.2 +shader_parameter/edge_bleed = 0.25 +shader_parameter/gunk_mask = ExtResource("43_1h5r5") +shader_parameter/gunk_noise = SubResource("NoiseTexture3D_76qng") +shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_pifep") +shader_parameter/jitter_magnitude = 0.0 +shader_parameter/jitter_time_scale = 0.1 +shader_parameter/vertex_inflation = 0.0 +shader_parameter/inflation_pixellation = 10.0 + [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_np3w4"] data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14) @@ -6026,7 +6225,7 @@ mesh = SubResource("ArrayMesh_anoak") [node name="GunkBody" parent="Corridor1/Hallway1/AirlockSign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_mj4ca") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor1/Hallway1/AirlockSign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_ojd88") @@ -6160,7 +6359,7 @@ mesh = SubResource("ArrayMesh_sux6n") [node name="GunkBody" parent="Corridor1/Hallway4/MessHallSign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_qbsys") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor1/Hallway4/MessHallSign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_mgo71") @@ -6523,7 +6722,7 @@ mesh = SubResource("ArrayMesh_w13dd") [node name="GunkBody" parent="Corridor2/Hallway1/MessHallSign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_2dhfq") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor2/Hallway1/MessHallSign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_2ft6k") @@ -6556,7 +6755,7 @@ mesh = SubResource("ArrayMesh_f0psm") [node name="GunkBody" parent="Corridor2/Hallway2/CrewQuartersSign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_2kcw6") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor2/Hallway2/CrewQuartersSign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_7ctwk") @@ -7349,7 +7548,7 @@ mesh = SubResource("ArrayMesh_v4tkv") [node name="GunkBody" parent="Corridor3/Hallway/CrewQuartersSign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_y0tcr") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor3/Hallway/CrewQuartersSign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_dxmep") @@ -7382,7 +7581,7 @@ mesh = SubResource("ArrayMesh_v0ki8") [node name="GunkBody" parent="Corridor3/Hallway2/OpsSign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_c4ji2") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor3/Hallway2/OpsSign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_0ij5m") @@ -7621,7 +7820,7 @@ mesh = SubResource("ArrayMesh_dspic") [node name="GunkBody" parent="Corridor3/ShortHallway3/MedbaySign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_bf7oo") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor3/ShortHallway3/MedbaySign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_wqqoq") @@ -7783,7 +7982,7 @@ mesh = SubResource("ArrayMesh_rigxx") [node name="GunkBody" parent="Corridor3/ShortHallway6/CargoBaySign" instance=ExtResource("2_2egij")] mask_dim = 32 -source_gunk_material = ExtResource("33_76qng") +source_gunk_material = SubResource("ShaderMaterial_i6b1e") [node name="CollisionShape3D" type="CollisionShape3D" parent="Corridor3/ShortHallway6/CargoBaySign/GunkBody"] shape = SubResource("ConcavePolygonShape3D_np3w4") diff --git a/levels/ghost_ship/guide_sign/airlock_sign.material b/levels/ghost_ship/guide_sign/airlock_sign.material index 663878c..f112c35 100644 Binary files a/levels/ghost_ship/guide_sign/airlock_sign.material and b/levels/ghost_ship/guide_sign/airlock_sign.material differ diff --git a/levels/ghost_ship/guide_sign/cargo_bay_sign.material b/levels/ghost_ship/guide_sign/cargo_bay_sign.material index 03d36e5..df6c2ce 100644 Binary files a/levels/ghost_ship/guide_sign/cargo_bay_sign.material and b/levels/ghost_ship/guide_sign/cargo_bay_sign.material differ diff --git a/levels/ghost_ship/guide_sign/crew_quarters_sign.material b/levels/ghost_ship/guide_sign/crew_quarters_sign.material index bfc29eb..8a0ddc8 100644 Binary files a/levels/ghost_ship/guide_sign/crew_quarters_sign.material and b/levels/ghost_ship/guide_sign/crew_quarters_sign.material differ diff --git a/levels/ghost_ship/guide_sign/medbay_sign.material b/levels/ghost_ship/guide_sign/medbay_sign.material index 839500d..c3e7a81 100644 Binary files a/levels/ghost_ship/guide_sign/medbay_sign.material and b/levels/ghost_ship/guide_sign/medbay_sign.material differ diff --git a/levels/ghost_ship/guide_sign/mess_hall_sign.material b/levels/ghost_ship/guide_sign/mess_hall_sign.material index 399118b..071b8bf 100644 Binary files a/levels/ghost_ship/guide_sign/mess_hall_sign.material and b/levels/ghost_ship/guide_sign/mess_hall_sign.material differ diff --git a/levels/ghost_ship/guide_sign/ops_sign.material b/levels/ghost_ship/guide_sign/ops_sign.material index 8f14228..49673ef 100644 Binary files a/levels/ghost_ship/guide_sign/ops_sign.material and b/levels/ghost_ship/guide_sign/ops_sign.material differ diff --git a/project.godot b/project.godot index 43bd784..6bf80d9 100644 --- a/project.godot +++ b/project.godot @@ -143,6 +143,11 @@ select_prev_tool={ "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) ] } +pause={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [layer_names] diff --git a/src/game/game.gd b/src/game/game.gd index d5d9630..1ad8cea 100644 --- a/src/game/game.gd +++ b/src/game/game.gd @@ -6,4 +6,9 @@ static var manager: GameManagerType: get(): return GameManager -static var hud: PlayerHUD +## Global static access to Game singleton +static var instance: Game + + +func _ready() -> void: + Game.instance = self diff --git a/src/player/camera_controller.gd b/src/player/camera_controller.gd index 8981e46..7a438e9 100644 --- a/src/player/camera_controller.gd +++ b/src/player/camera_controller.gd @@ -15,9 +15,6 @@ func _unhandled_input(event: InputEvent) -> void: camera_motion((event as InputEventMouseMotion).relative) elif event is InputEventMouseButton: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - elif event is InputEventKey: - if (event as InputEventKey).keycode == KEY_ESCAPE: - Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) func camera_motion(motion: Vector2) -> void: diff --git a/src/ui/hud/player_hud.gd b/src/ui/hud/player_hud.gd index 3e6448e..0c0b94c 100644 --- a/src/ui/hud/player_hud.gd +++ b/src/ui/hud/player_hud.gd @@ -7,7 +7,6 @@ class_name PlayerHUD extends Control func _ready() -> void: Game.manager.alert_raised.connect(_on_raise_alert) - Game.hud = self func select_interactive(prop: Interactive) -> void: diff --git a/src/ui/menus/menu.theme b/src/ui/menus/menu.theme new file mode 100644 index 0000000..6972fbd Binary files /dev/null and b/src/ui/menus/menu.theme differ diff --git a/src/ui/menus/pause_menu/pause_menu.gd b/src/ui/menus/pause_menu/pause_menu.gd new file mode 100644 index 0000000..3363daf --- /dev/null +++ b/src/ui/menus/pause_menu/pause_menu.gd @@ -0,0 +1,68 @@ +extends Control +## Menu shown in-game when the user presses pause. + +@export var settings_scene: PackedScene + +var _freeze_input := false + +@onready var menu_list: VBoxContainer = %MenuList +@onready var quit_confirm: CenterContainer = %QuitConfirm +@onready var end_game_confirm: CenterContainer = %EndGameConfirm +@onready var settings_container: MarginContainer = %SettingsContainer + + +func _ready() -> void: + print_debug("PAUSING") + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + Engine.time_scale = 1.0 + + +func _unhandled_key_input(event: InputEvent) -> void: + if not _freeze_input and event.is_action_pressed("pause"): + get_viewport().set_input_as_handled() + resume() + + +func _unhide() -> void: + menu_list.show() + + +func _hide() -> void: + menu_list.hide() + + +func resume() -> void: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + queue_free() + + +func settings() -> void: + var instance: Control = settings_scene.instantiate() + settings_container.add_child(instance) + instance.tree_exited.connect(_unhide) + _hide() + + +func quit() -> void: + quit_confirm.show() + + +func cancel_quit() -> void: + quit_confirm.hide() + + +func confirm_quit() -> void: + get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) + + +func end_game() -> void: + end_game_confirm.show() + + +func cancel_end_game() -> void: + end_game_confirm.hide() + + +func confirm_end_game() -> void: + print_debug("TODO") + #world.fade_to_title() diff --git a/src/ui/menus/pause_menu/pause_menu.gd.uid b/src/ui/menus/pause_menu/pause_menu.gd.uid new file mode 100644 index 0000000..549b4d5 --- /dev/null +++ b/src/ui/menus/pause_menu/pause_menu.gd.uid @@ -0,0 +1 @@ +uid://cllx5glqld8wn diff --git a/src/ui/menus/pause_menu/pause_menu.tscn b/src/ui/menus/pause_menu/pause_menu.tscn new file mode 100644 index 0000000..e66b83f --- /dev/null +++ b/src/ui/menus/pause_menu/pause_menu.tscn @@ -0,0 +1,205 @@ +[gd_scene load_steps=4 format=3 uid="uid://byvjsvavbg5xe"] + +[ext_resource type="Theme" uid="uid://doq7ay6f7dgfo" path="res://src/ui/menus/menu.theme" id="1_b4t8b"] +[ext_resource type="Script" uid="uid://cllx5glqld8wn" path="res://src/ui/menus/pause_menu/pause_menu.gd" id="1_rd0j2"] + +[sub_resource type="Resource" id="Resource_6sp1a"] +metadata/__load_path__ = "res://src/ui/menus/settings_menu/settings_menu.tscn" + +[node name="PauseMenu" type="Control"] +process_mode = 3 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("1_b4t8b") +script = ExtResource("1_rd0j2") +settings_scene = SubResource("Resource_6sp1a") + +[node name="Shade" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.627451) + +[node name="MenuList" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -127.0 +offset_top = -147.0 +offset_right = 127.0 +offset_bottom = 147.0 +grow_horizontal = 2 +grow_vertical = 2 +alignment = 1 + +[node name="TitleLabel" type="Label" parent="MenuList"] +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 8 +theme_override_font_sizes/font_size = 72 +text = "GRUNK" +horizontal_alignment = 1 + +[node name="PauseLabel" type="Label" parent="MenuList"] +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 8 +text = "paused" +horizontal_alignment = 1 + +[node name="HSeparator" type="HSeparator" parent="MenuList"] +layout_mode = 2 +theme_override_constants/separation = 24 + +[node name="VBoxContainer" type="VBoxContainer" parent="MenuList"] +layout_mode = 2 +size_flags_horizontal = 4 +alignment = 1 + +[node name="ResumeButton" type="Button" parent="MenuList/VBoxContainer"] +layout_mode = 2 +text = "Resume" + +[node name="SettingsButton" type="Button" parent="MenuList/VBoxContainer"] +layout_mode = 2 +text = "Settings" + +[node name="EndGameButton" type="Button" parent="MenuList/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DangerButton" +text = "Quit to Title" + +[node name="QuitButton" type="Button" parent="MenuList/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DangerButton" +text = "Quit to Desktop" + +[node name="SettingsContainer" type="MarginContainer" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -640.0 +offset_top = -360.0 +offset_right = 640.0 +offset_bottom = 360.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="QuitConfirm" type="CenterContainer" parent="."] +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 + +[node name="PanelContainer" type="PanelContainer" parent="QuitConfirm"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="QuitConfirm/PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="VBoxContainer" type="VBoxContainer" parent="QuitConfirm/PanelContainer/MarginContainer"] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Label" type="Label" parent="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 24 +text = "End the game and return to the title screen? +Unsaved progress will be lost." +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="CancelButton" type="Button" parent="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Cancel" + +[node name="ConfirmQuitButton" type="Button" parent="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DangerButton" +text = "Quit" + +[node name="EndGameConfirm" type="CenterContainer" parent="."] +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 + +[node name="PanelContainer" type="PanelContainer" parent="EndGameConfirm"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="EndGameConfirm/PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="VBoxContainer" type="VBoxContainer" parent="EndGameConfirm/PanelContainer/MarginContainer"] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Label" type="Label" parent="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 24 +text = "End the game and return to the desktop? +Unsaved progress will be lost." +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="CancelButton" type="Button" parent="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Cancel" + +[node name="ConfirmEndGameButton" type="Button" parent="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DangerButton" +text = "Quit" + +[connection signal="pressed" from="MenuList/VBoxContainer/ResumeButton" to="." method="resume"] +[connection signal="pressed" from="MenuList/VBoxContainer/SettingsButton" to="." method="settings"] +[connection signal="pressed" from="MenuList/VBoxContainer/EndGameButton" to="." method="end_game"] +[connection signal="pressed" from="MenuList/VBoxContainer/QuitButton" to="." method="quit"] +[connection signal="pressed" from="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CancelButton" to="." method="cancel_quit"] +[connection signal="pressed" from="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ConfirmQuitButton" to="." method="confirm_quit"] +[connection signal="pressed" from="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CancelButton" to="." method="cancel_end_game"] +[connection signal="pressed" from="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ConfirmEndGameButton" to="." method="confirm_end_game"] diff --git a/src/world/world.gd b/src/world/world.gd new file mode 100644 index 0000000..3c88e03 --- /dev/null +++ b/src/world/world.gd @@ -0,0 +1,38 @@ +class_name World extends Node +## Access and flow control for the game world. + +@export var initial_level: PackedScene + +@export var pause_scene: PackedScene + +@onready var level_root: Node3D = %LevelRoot +@onready var ui_root: Control = %UIRoot + +static var instance: World + + +func _ready() -> void: + World.instance = self + load_level(initial_level) + + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("pause"): + pause() + + +func pause() -> void: + get_tree().paused = true + var pause_menu: Control = pause_scene.instantiate() + ui_root.add_child(pause_menu) + pause_menu.tree_exited.connect(unpause) + + +func unpause() -> void: + get_tree().paused = false + + +func load_level(level: PackedScene) -> void: + for c: Node in level_root.get_children(): + c.queue_free() + level_root.add_child(level.instantiate()) diff --git a/src/world/world.gd.uid b/src/world/world.gd.uid new file mode 100644 index 0000000..baa4ecf --- /dev/null +++ b/src/world/world.gd.uid @@ -0,0 +1 @@ +uid://cgqmhtemibxc5 diff --git a/src/world/world.tscn b/src/world/world.tscn new file mode 100644 index 0000000..c60c747 --- /dev/null +++ b/src/world/world.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=3 uid="uid://884jqafhtrv0"] + +[ext_resource type="Script" uid="uid://cgqmhtemibxc5" path="res://src/world/world.gd" id="1_1k4gi"] +[ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="2_6fy3g"] +[ext_resource type="PackedScene" uid="uid://bov4ok76woyc" path="res://levels/ghost_ship/ghost_ship.tscn" id="2_jte2u"] + +[node name="World" type="Node"] +script = ExtResource("1_1k4gi") +initial_level = ExtResource("2_jte2u") +pause_scene = ExtResource("2_6fy3g") + +[node name="LevelRoot" type="Node3D" parent="."] +unique_name_in_owner = true + +[node name="UIRoot" type="Control" parent="."] +unique_name_in_owner = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 diff --git a/vault/assets/color_palette.md b/vault/assets/color_palette.md index 6de08c0..457b9e5 100644 --- a/vault/assets/color_palette.md +++ b/vault/assets/color_palette.md @@ -37,4 +37,9 @@ - `#ff4a1c` Emissive Blood Orange SAMPLE - `#dd1c1a` DANGER Red SAMPLE - `#23fb59` SUCCESS Green SAMPLE -- `#39a0ed` HI-TECH Blue SAMPLE \ No newline at end of file +- `#39a0ed` HI-TECH Blue SAMPLE + +## UI +- `#dd1c1a` DANGER Red SAMPLE +- `#23fb59` SUCCESS Green SAMPLE +- `#39a0ed` NOTICE Blue SAMPLE \ No newline at end of file