diff --git a/credits.toml b/credits.toml index cd0c11e..b139b5c 100644 --- a/credits.toml +++ b/credits.toml @@ -36,6 +36,9 @@ link = "https://www.zapsplat.com/music/drinking-glasses-champagne-flutes-with-ch [[people.credits]] credit = "Fantasy, inventory open 00" link = "https://www.zapsplat.com/music/fantasy-inventory-open-00/" +[[people.credits]] +credit = "Very hard and fast whoosh, swinging a stick through air, version 3" +link = "https://www.zapsplat.com/music/very-hard-and-fast-whoosh-swinging-a-stick-through-air-version-3/" [[people]] name = "TripleSnail" diff --git a/godot/raw_assets/sfx b/godot/raw_assets/sfx index 14326d3..4aa58e9 160000 --- a/godot/raw_assets/sfx +++ b/godot/raw_assets/sfx @@ -1 +1 @@ -Subproject commit 14326d35eb7f01c0e8656c10c38747a705acb601 +Subproject commit 4aa58e9b53032fb5cc8431a2102e75066313be35 diff --git a/godot/scenes/player/local_player.tscn b/godot/scenes/player/local_player.tscn index 7b1363d..52c2e4e 100644 --- a/godot/scenes/player/local_player.tscn +++ b/godot/scenes/player/local_player.tscn @@ -9,6 +9,7 @@ [ext_resource type="AudioStream" uid="uid://jktwx7dyak2f" path="res://raw_assets/sfx/zapsplat_glass/zapsplat_household_drinking_glasses_champagne_flutes_full_champagne_clink_together_cheers_celebrate_004_111316.mp3" id="7_3nqsm"] [ext_resource type="AudioStream" uid="uid://bfg31e3s4jv8c" path="res://raw_assets/sfx/Hit.mp3" id="7_dguuj"] [ext_resource type="AudioStream" uid="uid://cl416orgv11vj" path="res://raw_assets/sfx/ball/little_robot_sound_factory_fantasy_Inventory_Open_00.mp3" id="8_cmcit"] +[ext_resource type="AudioStream" uid="uid://uq0o8gkpqhfa" path="res://raw_assets/sfx/ball/zapsplat_foley_stick_swing_air_whoosh_very_fast_hard_003_110413.mp3" id="9_qpw6d"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_oh8vq"] @@ -18,7 +19,7 @@ shader_parameter/Color = Color(1, 0, 0, 1) shader_parameter/RimDistance = 0.7 shader_parameter/FloatParameter = 3.0 -[node name="player" type="LocalPlayer" unique_id=863055906 node_paths=PackedStringArray("camera", "vignette", "soldier_mesh", "collider", "effects", "dead_cam_target", "respawn_label", "camera_origin", "weapon_node", "hud", "hit_sound", "goal_sound_good", "goal_sound_bad", "pickup_ball_sfx")] +[node name="player" type="LocalPlayer" unique_id=863055906 node_paths=PackedStringArray("camera", "vignette", "soldier_mesh", "collider", "effects", "dead_cam_target", "respawn_label", "camera_origin", "weapon_node", "hud", "hit_sound", "goal_sound_good", "goal_sound_bad", "pickup_ball_sfx", "throw_ball_sfx")] look_sensitivity = 1.5 camera = NodePath("camera_3d") vignette = NodePath("vignette") @@ -35,6 +36,7 @@ hit_sound = NodePath("hit_sound") goal_sound_good = NodePath("goal_good") goal_sound_bad = NodePath("goal_bad") pickup_ball_sfx = NodePath("ball_pickup_sfx") +throw_ball_sfx = NodePath("ball_throw_sfx") health = 100 punch_cooldown = 1.0 telegrenade_cd = 10.0 @@ -117,6 +119,10 @@ bus = &"SFX" stream = ExtResource("8_cmcit") bus = &"SFX" +[node name="ball_throw_sfx" type="AudioStreamPlayer" parent="." unique_id=1577850877] +stream = ExtResource("9_qpw6d") +bus = &"SFX" + [node name="hud" parent="." unique_id=2049159590 instance=ExtResource("5_cv68x")] [connection signal="on_exit" from="hud" to="." method="exit"] diff --git a/godot/scenes/player/remote_player.tscn b/godot/scenes/player/remote_player.tscn index 0c73fb3..80ac201 100644 --- a/godot/scenes/player/remote_player.tscn +++ b/godot/scenes/player/remote_player.tscn @@ -2,6 +2,8 @@ [ext_resource type="PackedScene" uid="uid://bod6b3befmyt5" path="res://scenes/player/soldier_m.tscn" id="1_e2ekk"] [ext_resource type="PackedScene" uid="uid://cl66unms2gim0" path="res://scenes/player/effects.tscn" id="2_orxjf"] +[ext_resource type="AudioStream" uid="uid://cl416orgv11vj" path="res://raw_assets/sfx/ball/little_robot_sound_factory_fantasy_Inventory_Open_00.mp3" id="3_840kl"] +[ext_resource type="AudioStream" uid="uid://uq0o8gkpqhfa" path="res://raw_assets/sfx/ball/zapsplat_foley_stick_swing_air_whoosh_very_fast_hard_003_110413.mp3" id="4_qn18y"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_1cgct"] @@ -35,7 +37,7 @@ curve = SubResource("Curve_qn18y") [sub_resource type="ViewportTexture" id="ViewportTexture_rmxnb"] viewport_path = NodePath("double_health_bar_sprite/health_bar_viewport") -[node name="player" type="RemotePlayer" unique_id=845968872 node_paths=PackedStringArray("soldier_mesh", "collider", "effects", "spectator_camera", "camera_origin", "name_label", "health_bar", "double_health_bar", "health_bar_sprite", "double_health_bar_sprite", "ball_pickup_sfx")] +[node name="player" type="RemotePlayer" unique_id=845968872 node_paths=PackedStringArray("soldier_mesh", "collider", "effects", "spectator_camera", "camera_origin", "name_label", "health_bar", "double_health_bar", "health_bar_sprite", "double_health_bar_sprite", "ball_pickup_sfx", "ball_throw_sfx")] move_speed = 7.0 soldier_mesh = NodePath("soldier_m") collider = NodePath("collision_shape_3d") @@ -50,6 +52,7 @@ double_health_bar = NodePath("double_health_bar_sprite/health_bar_viewport/doubl health_bar_sprite = NodePath("health_bar_sprite") double_health_bar_sprite = NodePath("double_health_bar_sprite") ball_pickup_sfx = NodePath("ball_pickup_sfx") +ball_throw_sfx = NodePath("ball_throw_sfx") telegrenade_cd = 10.0 collision_layer = 2 collision_mask = 4 @@ -131,4 +134,9 @@ tint_over = Color(1, 1, 1, 0) tint_progress = Color(0.5660922, 1.7688051e-06, 3.3691526e-07, 1) [node name="ball_pickup_sfx" type="AudioStreamPlayer3D" parent="." unique_id=1473967809] +stream = ExtResource("3_840kl") +bus = &"SFX" + +[node name="ball_throw_sfx" type="AudioStreamPlayer3D" parent="." unique_id=198255565] +stream = ExtResource("4_qn18y") bus = &"SFX" diff --git a/godot/scenes/player/replay_player.tscn b/godot/scenes/player/replay_player.tscn index f9d5cdf..168e7f1 100644 --- a/godot/scenes/player/replay_player.tscn +++ b/godot/scenes/player/replay_player.tscn @@ -2,6 +2,8 @@ [ext_resource type="PackedScene" uid="uid://bod6b3befmyt5" path="res://scenes/player/soldier_m.tscn" id="1_bfcd3"] [ext_resource type="PackedScene" uid="uid://cl66unms2gim0" path="res://scenes/player/effects.tscn" id="2_rejks"] +[ext_resource type="AudioStream" uid="uid://cl416orgv11vj" path="res://raw_assets/sfx/ball/little_robot_sound_factory_fantasy_Inventory_Open_00.mp3" id="3_o85ek"] +[ext_resource type="AudioStream" uid="uid://uq0o8gkpqhfa" path="res://raw_assets/sfx/ball/zapsplat_foley_stick_swing_air_whoosh_very_fast_hard_003_110413.mp3" id="4_fwayu"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_1cgct"] @@ -35,7 +37,7 @@ curve = SubResource("Curve_qn18y") [sub_resource type="ViewportTexture" id="ViewportTexture_bfcd3"] viewport_path = NodePath("double_health_bar_sprite/double_health_bar_viewport") -[node name="player" type="RemotePlayer" unique_id=845968872 node_paths=PackedStringArray("soldier_mesh", "collider", "effects", "spectator_camera", "camera_origin", "name_label", "health_bar", "double_health_bar", "health_bar_sprite", "double_health_bar_sprite", "ball_pickup_sfx")] +[node name="player" type="RemotePlayer" unique_id=845968872 node_paths=PackedStringArray("soldier_mesh", "collider", "effects", "spectator_camera", "camera_origin", "name_label", "health_bar", "double_health_bar", "health_bar_sprite", "double_health_bar_sprite", "ball_pickup_sfx", "ball_throw_sfx")] move_speed = 5.0 soldier_mesh = NodePath("soldier_m") collider = NodePath("collision_shape_3d") @@ -50,6 +52,7 @@ double_health_bar = NodePath("double_health_bar_sprite/double_health_bar_viewpor health_bar_sprite = NodePath("health_bar_sprite") double_health_bar_sprite = NodePath("double_health_bar_sprite") ball_pickup_sfx = NodePath("ball_pickup_sfx") +ball_throw_sfx = NodePath("ball_throw_sfx") collision_layer = 16 collision_mask = 4 @@ -128,4 +131,9 @@ tint_over = Color(1, 1, 1, 0) tint_progress = Color(0.5660922, 1.7688051e-06, 3.3691526e-07, 1) [node name="ball_pickup_sfx" type="AudioStreamPlayer3D" parent="." unique_id=330638520] +stream = ExtResource("3_o85ek") +bus = &"SFX" + +[node name="ball_throw_sfx" type="AudioStreamPlayer3D" parent="." unique_id=1825805271] +stream = ExtResource("4_fwayu") bus = &"SFX" diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index f5ddddd..6b7aa9e 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -74,6 +74,8 @@ pub struct LocalPlayer { #[export] pickup_ball_sfx: Option>, #[export] + throw_ball_sfx: Option>, + #[export] health: i32, #[export] punch_cooldown: f64, @@ -327,7 +329,15 @@ impl IPlayer for LocalPlayer { } fn drop_ball(&mut self, with_velocity: bool) -> bool { - self.drop_ball_common(with_velocity) + if self.drop_ball_common(with_velocity) + && with_velocity + && let Some(sfx) = &mut self.throw_ball_sfx + { + sfx.play(); + true + } else { + false + } } fn get_camera_origin(&self) -> Option> { diff --git a/rust/src/player/remote_player.rs b/rust/src/player/remote_player.rs index fe1ff07..b02ff1f 100644 --- a/rust/src/player/remote_player.rs +++ b/rust/src/player/remote_player.rs @@ -53,6 +53,8 @@ pub struct RemotePlayer { double_health_bar_sprite: Option>, #[export] ball_pickup_sfx: Option>, + #[export] + ball_throw_sfx: Option>, pub player_id: Option, pub player_name: String, @@ -267,7 +269,15 @@ impl IPlayer for RemotePlayer { } fn drop_ball(&mut self, with_velocity: bool) -> bool { - self.drop_ball_common(with_velocity) + if self.drop_ball_common(with_velocity) + && with_velocity + && let Some(sfx) = &mut self.ball_throw_sfx + { + sfx.play(); + true + } else { + false + } } fn get_camera_origin(&self) -> Option> {