diff --git a/credits.toml b/credits.toml index 8addced..8d9084e 100644 --- a/credits.toml +++ b/credits.toml @@ -27,6 +27,12 @@ credit = "Hit sound effect" [[people.credits]] credit = "Footsteps" link = "https://www.zapsplat.com/sound-effect-packs/footsteps-on-fallen-tree-trunk" +[[people.credits]] +credit = "Wine glasses full of wine and ice clink together, cheers, celebration, version 6" +link = "https://www.zapsplat.com/music/wine-glasses-full-of-wine-and-ice-clink-together-cheers-celebration-version-6/" +[[people.credits]] +credit = " Drinking glasses, champagne flutes with champagne in clink together, cheers, celebrating, version 4" +link = "https://www.zapsplat.com/music/drinking-glasses-champagne-flutes-with-champagne-in-clink-together-cheers-celebrating-version-4/" [[people]] name = "TripleSnail" diff --git a/godot/raw_assets/sfx b/godot/raw_assets/sfx index 098b9f8..7f88273 160000 --- a/godot/raw_assets/sfx +++ b/godot/raw_assets/sfx @@ -1 +1 @@ -Subproject commit 098b9f812aa3b76f61b2deda68f3a8f5f30e6300 +Subproject commit 7f88273259f449fd9f2b5370f7a67cd711d7562f diff --git a/godot/scenes/player/local_player.tscn b/godot/scenes/player/local_player.tscn index ebd995f..29dd7a0 100644 --- a/godot/scenes/player/local_player.tscn +++ b/godot/scenes/player/local_player.tscn @@ -5,6 +5,8 @@ [ext_resource type="Shader" uid="uid://datt1r440base" path="res://shaders/vignette.tres" id="3_7awel"] [ext_resource type="PackedScene" uid="uid://c1gs6cqek1qlq" path="res://scenes/ui/hud.tscn" id="5_cv68x"] [ext_resource type="Texture2D" uid="uid://bdfqu6p74pfwe" path="res://raw_assets/crosshair/Crosshair 1.png" id="6_7awel"] +[ext_resource type="AudioStream" uid="uid://upjuu3vc7tcs" path="res://raw_assets/sfx/zapsplat_glass/zapsplat_household_wine_glasses_full_wine_and_ice_clink_together_cheers_celebrate_006_111350.mp3" id="6_dguuj"] +[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"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_oh8vq"] @@ -15,7 +17,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")] +[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")] look_sensitivity = 1.5 camera = NodePath("camera_3d") vignette = NodePath("vignette") @@ -29,6 +31,8 @@ camera_origin = NodePath("camera_3d") weapon_node = NodePath("camera_3d/weapon_node") hud = NodePath("hud") hit_sound = NodePath("hit_sound") +goal_sound_good = NodePath("goal_good") +goal_sound_bad = NodePath("goal_bad") health = 100 punch_cooldown = 1.0 telegrenade_cd = 10.0 @@ -99,6 +103,14 @@ horizontal_alignment = 1 stream = ExtResource("7_dguuj") bus = &"SFX" +[node name="goal_good" type="AudioStreamPlayer" parent="." unique_id=798263606] +stream = ExtResource("6_dguuj") +bus = &"SFX" + +[node name="goal_bad" type="AudioStreamPlayer" parent="." unique_id=1673136668] +stream = ExtResource("7_3nqsm") +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/rust/src/game/mod.rs b/rust/src/game/mod.rs index c2c5922..3970690 100644 --- a/rust/src/game/mod.rs +++ b/rust/src/game/mod.rs @@ -739,6 +739,17 @@ impl Game { self.goals .insert(*team, self.goals.get(&team).copied().unwrap_or(0) + 1); } + + if let Some(self_player) = self.get_self() + && let Some(mut local_player) = self_player.get_local_player() + { + if teams.contains(&self_player.data.team) { + local_player.bind_mut().play_local_goal_sound(); + } else { + local_player.bind_mut().play_local_goal_bad_sound(); + } + } + self.run_deferred(move |s| { if let Some(mut chat) = Chat::singleton() { chat.bind_mut() @@ -1327,6 +1338,16 @@ impl Game { }); } } + + fn get_self(&self) -> Option { + if let Some(player_id) = self.self_id + && let Some(player) = self.find_player(player_id) + { + Some(player.clone()) + } else { + None + } + } } #[derive(Clone, Debug)] @@ -1462,6 +1483,16 @@ impl Player { pub fn id(&self) -> u16 { self.data.id } + + fn get_local_player(&self) -> Option> { + if let Some(character) = self.character.clone() + && let Ok(local_player) = character.try_cast::() + { + Some(local_player.into_gd()) + } else { + None + } + } } #[derive(Debug, Serialize, Deserialize, Clone)] diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index 3cc4844..2a0ea4c 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -68,6 +68,10 @@ pub struct LocalPlayer { #[export] hit_sound: Option>, #[export] + goal_sound_good: Option>, + #[export] + goal_sound_bad: Option>, + #[export] health: i32, #[export] punch_cooldown: f64, @@ -799,6 +803,18 @@ impl LocalPlayer { } } + pub fn play_local_goal_sound(&mut self) { + if let Some(goal_good) = &mut self.goal_sound_good { + goal_good.play(); + } + } + + pub fn play_local_goal_bad_sound(&mut self) { + if let Some(goal_bad) = &mut self.goal_sound_bad { + goal_bad.play(); + } + } + fn raycast_from_camera(&self) -> Option { if let Some(camera) = &self.camera { let forward = camera.get_global_basis().col_c().neg();