diff --git a/asset_dev/sfx/computer_noise.aup3 b/asset_dev/sfx/computer_noise.aup3 new file mode 100644 index 0000000..836a155 Binary files /dev/null and b/asset_dev/sfx/computer_noise.aup3 differ diff --git a/asset_dev/sfx/computer_noise.aup3-shm b/asset_dev/sfx/computer_noise.aup3-shm new file mode 100644 index 0000000..393a546 Binary files /dev/null and b/asset_dev/sfx/computer_noise.aup3-shm differ diff --git a/asset_dev/sfx/computer_noise.aup3-wal b/asset_dev/sfx/computer_noise.aup3-wal new file mode 100644 index 0000000..538c0b2 Binary files /dev/null and b/asset_dev/sfx/computer_noise.aup3-wal differ diff --git a/assets/sfx/computer_noise.wav b/assets/sfx/computer_noise.wav new file mode 100644 index 0000000..3d8f694 Binary files /dev/null and b/assets/sfx/computer_noise.wav differ diff --git a/assets/sfx/computer_noise.wav.import b/assets/sfx/computer_noise.wav.import new file mode 100644 index 0000000..9050569 --- /dev/null +++ b/assets/sfx/computer_noise.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c838ofbu4bqrn" +path="res://.godot/imported/computer_noise.wav-1bfe3b9b5e4b3c21bd96289c75340c5a.sample" + +[deps] + +source_file="res://assets/sfx/computer_noise.wav" +dest_files=["res://.godot/imported/computer_noise.wav-1bfe3b9b5e4b3c21bd96289c75340c5a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/levels/ghost_ship/player_ship/grunk_terminal/grunk_terminal.gd b/levels/ghost_ship/player_ship/grunk_terminal/grunk_terminal.gd index b85d1b8..65f204f 100644 --- a/levels/ghost_ship/player_ship/grunk_terminal/grunk_terminal.gd +++ b/levels/ghost_ship/player_ship/grunk_terminal/grunk_terminal.gd @@ -18,6 +18,7 @@ const STALLING_MSG := "\n\n\n\n\n. . . C a l c u l a t i n G . . ." @onready var text_terminal: TextTerminal = %TextTerminal @onready var stall_timer: Timer = %StallTimer +@onready var terminal_animation: AnimationPlayer = %TerminalAnimation func _ready() -> void: @@ -56,6 +57,7 @@ func build_message() -> String: ## Under the hood this is instantaneous, but we want to stall for dramatic effect. func recompute() -> void: text_terminal.text = STALLING_MSG + terminal_animation.play("jangle") stall_timer.start() diff --git a/levels/ghost_ship/player_ship/player_ship.gd b/levels/ghost_ship/player_ship/player_ship.gd index b032ed8..73c0920 100644 --- a/levels/ghost_ship/player_ship/player_ship.gd +++ b/levels/ghost_ship/player_ship/player_ship.gd @@ -24,6 +24,7 @@ func deposit_grunk() -> void: # Tank is disabled until the player collects more grunk. tank_interactor.enabled = false Game.manager.deposit_tank() + set_liquid_level(clampf(Game.manager.grunk_vault / MAX_GRUNK, 0.0, 1.0)) diff --git a/levels/ghost_ship/player_ship/player_ship.tscn b/levels/ghost_ship/player_ship/player_ship.tscn index 0771994..a534373 100644 --- a/levels/ghost_ship/player_ship/player_ship.tscn +++ b/levels/ghost_ship/player_ship/player_ship.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=3 uid="uid://oowut88kr2ox"] +[gd_scene load_steps=29 format=3 uid="uid://oowut88kr2ox"] [ext_resource type="Script" uid="uid://lfd36ps52xgk" path="res://levels/ghost_ship/player_ship/player_ship.gd" id="1_0r2ng"] [ext_resource type="ArrayMesh" uid="uid://dq4aj5ph31rce" path="res://assets/level/player_ship/player_ship.obj" id="1_nafoa"] @@ -13,6 +13,8 @@ [ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="9_xuj2g"] [ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="10_2mvif"] [ext_resource type="PackedScene" uid="uid://mgygam1kakb7" path="res://levels/ghost_ship/player_ship/grunk_terminal/grunk_terminal.tscn" id="13_3trrp"] +[ext_resource type="Script" uid="uid://vewq8h8uulbg" path="res://src/util/translator_path_3d.gd" id="13_i4yi7"] +[ext_resource type="AudioStream" uid="uid://c838ofbu4bqrn" path="res://assets/sfx/computer_noise.wav" id="14_was05"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xpsdy"] transparency = 1 @@ -79,6 +81,143 @@ shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi") shader_parameter/vertex_inflation = 0.0 shader_parameter/inflation_pixellation = 10.0 +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i4yi7"] +albedo_color = Color(0.243137, 0.231373, 0.219608, 1) + +[sub_resource type="Curve3D" id="Curve3D_ta4yu"] +_data = { +"points": PackedVector3Array(0, 0, 0, -0.6, -0.525, 0, 0, 0, 0, -0.6, 0, 0, 0.05, 0, 0, 0, -1.4, 0), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="Animation" id="Animation_i4yi7"] +resource_name = "jangle" +length = 3.0 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Path3D:curve:point_1/position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0.15, 0, -0.25, 0.15, 0.25, -0.15, 0, -0.25, -0.025, 0.266667, 0.0459175, 0, -0.366667, -0.00160158, 0.25, 0), +"times": PackedFloat32Array(0, 1, 2, 3) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Path3D:curve:point_1/position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0, 0, 0, 0, 0, 0, 0), +"points": PackedFloat32Array(-1.4, -0.25, 0, 0.16, 0.25, -1.4, -0.25, 0.25, 0.25, -0.2, -1.4, -0.25, -0.2, 0.25, 0.15, -1.4, -0.25, 0.15, 0.25, -0.1, -1.4, -0.25, -0.1, 0.25, 0.05, -1.4, -0.25, 0.05, 0.25, 0, -1.4, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.6, 1, 1.5, 2, 2.5, 3) +} +tracks/2/type = "bezier" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Path3D:curve:point_1/position:z") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0, 0, 0, 0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.2, 0.2, 0, -0.2, 0.2, 0.233333, -0.227317, 0, -0.2, 0.0429476, 0.2, -0.025, 0, -0.2, -0.025, 0.2, 0.013, 0, -0.2, 0.013, 0.2, -0.001, 0, -0.0666666, 0.00136808, 0.25, 0), +"times": PackedFloat32Array(0, 0.8, 1.9, 2.3, 2.6, 3) +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Path3D/GrunkTerminal:rotation") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.5, 1.3, 2.2, 3), +"transitions": PackedFloat32Array(0.618, 1, 1, 1, 1), +"update": 0, +"values": [Vector3(0.2618, 1.5708, 0), Vector3(0.158825, 1.5708, 0.174533), Vector3(0.467748, 1.5708, -0.139626), Vector3(0.261799, 1.5708, 0.0698132), Vector3(0.261799, 1.5708, 0)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Path3D/GrunkTerminal/AudioStreamPlayer3D:playing") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_ta4yu"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Path3D:curve:point_1/position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Path3D:curve:point_1/position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(-1.4, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/2/type = "bezier" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Path3D:curve:point_1/position:z") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Path3D/GrunkTerminal:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.2618, 1.5708, 0)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Path3D/GrunkTerminal/AudioStreamPlayer3D:playing") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_fw23o"] +_data = { +&"RESET": SubResource("Animation_ta4yu"), +&"jangle": SubResource("Animation_i4yi7") +} + [node name="PlayerShip" type="Node3D"] script = ExtResource("1_0r2ng") @@ -126,7 +265,38 @@ light_energy = 2.0 light_indirect_energy = 8.0 omni_range = 10.0 -[node name="GrunkTerminal" parent="." instance=ExtResource("13_3trrp")] -transform = Transform3D(-0.707107, 0.183013, 0.683013, 0, 0.965926, -0.258819, -0.707107, -0.183013, -0.683013, -1.87678, 1.71247, 4.17322) +[node name="TerminalCable" type="CSGPolygon3D" parent="."] +transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, -1.87678, 3.21247, 4.17322) +polygon = PackedVector2Array(0.25, 0, 0.125, 0.217, -0.125, 0.217, -0.25, 0, -0.125, -0.216, 0.125, -0.216) +mode = 2 +path_node = NodePath("Path3D") +path_interval_type = 0 +path_interval = 0.25 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false +material = SubResource("StandardMaterial3D_i4yi7") + +[node name="Path3D" type="Path3D" parent="TerminalCable"] +curve = SubResource("Curve3D_ta4yu") +script = ExtResource("13_i4yi7") + +[node name="GrunkTerminal" parent="TerminalCable/Path3D" instance=ExtResource("13_3trrp")] +transform = Transform3D(-4.37114e-08, 0.258819, 0.965926, 0, 0.965926, -0.258819, -1, -1.13134e-08, -4.2222e-08, 0, -1.4, 0) + +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="TerminalCable/Path3D/GrunkTerminal"] +stream = ExtResource("14_was05") +volume_db = -6.0 +unit_size = 1.0 + +[node name="TerminalAnimation" type="AnimationPlayer" parent="TerminalCable"] +unique_name_in_owner = true +libraries = { +&"": SubResource("AnimationLibrary_fw23o") +} [connection signal="activated" from="TankInteractor" to="." method="deposit_grunk"] diff --git a/src/util/translator_path_3d.gd b/src/util/translator_path_3d.gd new file mode 100644 index 0000000..3166812 --- /dev/null +++ b/src/util/translator_path_3d.gd @@ -0,0 +1,10 @@ +@tool +class_name TranslatorPath3D extends Path3D +## Keeps all child elements at the last point on the curve. + + +func _process(_delta: float) -> void: + if curve and curve.point_count > 1: + var endpoint := curve.get_point_position(curve.point_count - 1) + for c: Node3D in get_children(): + c.position = endpoint diff --git a/src/util/translator_path_3d.gd.uid b/src/util/translator_path_3d.gd.uid new file mode 100644 index 0000000..96eb60b --- /dev/null +++ b/src/util/translator_path_3d.gd.uid @@ -0,0 +1 @@ +uid://vewq8h8uulbg diff --git a/vault/TODO.md b/vault/TODO.md index 744437a..f0ad821 100644 --- a/vault/TODO.md +++ b/vault/TODO.md @@ -48,7 +48,7 @@ - [ ] SFX: - [ ] ui bonk - [ ] prop clear glitter - - [ ] computer bleep on reload + - [x] computer bleep on reload - [ ] grunk tank deposit schlorp - [ ] player ship door - [x] metal footsteps diff --git a/vault/assets/asset credits.md b/vault/assets/asset credits.md index aa0ae2f..0e9b57e 100644 --- a/vault/assets/asset credits.md +++ b/vault/assets/asset credits.md @@ -20,6 +20,7 @@ - CC0 - retrieved from https://freesound.org/people/lowpolygon/sounds/421722/ - assets/sfx/mechanical_door.wav + - modified - "Footsteps_Mountain_Boots_Mud_Mono.wav" - author: Nox_Sound - CC0 @@ -44,4 +45,10 @@ - author: jerry.berumen - CC BY 4.0 - retrieved from https://freesound.org/people/jerry.berumen/sounds/769512/ - - assets/sfx/ambient/metal_creak2-8.wav \ No newline at end of file + - assets/sfx/ambient/metal_creak2-8.wav + - "Printer startup" + - author: Clagnar + - CC0 + - retrieved from https://freesound.org/people/Clagnar/sounds/547256/ + - assets/sfx/computer_noise.wav + - modified \ No newline at end of file