From 0c925ea03e480ab4f863dd363d58f56716f26a82 Mon Sep 17 00:00:00 2001 From: Joshua Barretto Date: Wed, 16 Jun 2021 17:16:05 +0100 Subject: [PATCH] Added more cow noises, prepare for merge --- CHANGELOG.md | 4 + assets/voxygen/audio/sfx.ron | 102 +++++++++--------- .../voxygen/audio/sfx/utterance/cow_calm2.ogg | Bin 0 -> 23328 bytes .../voxygen/audio/sfx/utterance/cow_calm3.ogg | Bin 0 -> 14690 bytes client/src/lib.rs | 6 +- server/src/events/interaction.rs | 22 ++-- voxygen/src/audio/sfx/mod.rs | 30 ++++-- voxygen/src/audio/soundcache.rs | 6 +- voxygen/src/session/mod.rs | 7 +- voxygen/src/settings/control.rs | 1 + voxygen/src/window.rs | 3 + 11 files changed, 102 insertions(+), 79 deletions(-) create mode 100644 assets/voxygen/audio/sfx/utterance/cow_calm2.ogg create mode 100644 assets/voxygen/audio/sfx/utterance/cow_calm3.ogg diff --git a/CHANGELOG.md b/CHANGELOG.md index a556f9bff8..6ad28d3149 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a skill tree for mining, which gains xp from mining ores and gems. - Added debug line info to release builds, enhancing the usefulness of panic backtraces +- NPCs and animals can now make sounds in response to certain events +- Players can press H to greet others ### Changed - Entity-entity pushback is no longer applied in forced movement states like rolling and leaping. @@ -18,7 +20,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed ### Fixed + - Cases where no audio output could be produced before. +- Significantly improved the performance of playing sound effects ## [0.10.0] - 2021-06-12 diff --git a/assets/voxygen/audio/sfx.ron b/assets/voxygen/audio/sfx.ron index 1f6ae01af3..81bca564d1 100644 --- a/assets/voxygen/audio/sfx.ron +++ b/assets/voxygen/audio/sfx.ron @@ -5,7 +5,7 @@ // Campfire: ( files: [ - "voxygen.audio.sfx.ambient.fire", + "voxygen.audio.sfx.ambient.fire", ], threshold: 21.835, ), @@ -831,54 +831,56 @@ ], threshold: 0.2, ), - Utterance(Angry, Wendigo): ( - files: [ - "voxygen.audio.sfx.utterance.wendigo_angry", - ], - threshold: 4.0, - ), - Utterance(Angry, BipedLarge): ( - files: [ - "voxygen.audio.sfx.utterance.ogre_angry", - "voxygen.audio.sfx.utterance.ogre_angry2", - ], - threshold: 4.0, - ), - Utterance(Angry, Reptile): ( - files: [ - "voxygen.audio.sfx.utterance.saurok_angry", - ], - threshold: 4.0, - ), - Utterance(Angry, Bird): ( - files: [ - "voxygen.audio.sfx.utterance.bird_angry", - ], - threshold: 4.0, - ), - Utterance(Calm, Pig): ( - files: [ - "voxygen.audio.sfx.utterance.pig_calm", - ], - threshold: 4.0, - ), - Utterance(Calm, Cow): ( - files: [ - "voxygen.audio.sfx.utterance.cow_calm", - ], - threshold: 4.0, - ), - Utterance(Calm, Sheep): ( - files: [ - "voxygen.audio.sfx.utterance.sheep_calm", - ], - threshold: 4.0, - ), - Utterance(Greeting, HumanMale): ( - files: [ - "voxygen.audio.sfx.utterance.humanmale_greeting", - ], - threshold: 4.0, - ), + Utterance(Angry, Wendigo): ( + files: [ + "voxygen.audio.sfx.utterance.wendigo_angry", + ], + threshold: 0.2, + ), + Utterance(Angry, BipedLarge): ( + files: [ + "voxygen.audio.sfx.utterance.ogre_angry", + "voxygen.audio.sfx.utterance.ogre_angry2", + ], + threshold: 0.2, + ), + Utterance(Angry, Reptile): ( + files: [ + "voxygen.audio.sfx.utterance.saurok_angry", + ], + threshold: 0.2, + ), + Utterance(Angry, Bird): ( + files: [ + "voxygen.audio.sfx.utterance.bird_angry", + ], + threshold: 0.2, + ), + Utterance(Calm, Pig): ( + files: [ + "voxygen.audio.sfx.utterance.pig_calm", + ], + threshold: 0.2, + ), + Utterance(Calm, Cow): ( + files: [ + "voxygen.audio.sfx.utterance.cow_calm", + "voxygen.audio.sfx.utterance.cow_calm2", + "voxygen.audio.sfx.utterance.cow_calm3", + ], + threshold: 0.2, + ), + Utterance(Calm, Sheep): ( + files: [ + "voxygen.audio.sfx.utterance.sheep_calm", + ], + threshold: 0.2, + ), + Utterance(Greeting, HumanMale): ( + files: [ + "voxygen.audio.sfx.utterance.humanmale_greeting", + ], + threshold: 0.2, + ), } ) diff --git a/assets/voxygen/audio/sfx/utterance/cow_calm2.ogg b/assets/voxygen/audio/sfx/utterance/cow_calm2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..072ad5347c739405c117293a4ca554cdd556bb48 GIT binary patch literal 23328 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/audio/sfx/utterance/cow_calm3.ogg b/assets/voxygen/audio/sfx/utterance/cow_calm3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b624e4dc10bcf196c2ee05977621963d8bcbeb55 GIT binary patch literal 14690 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 uK3Ie1vXOwUi5jqTg Some(Outcome::Utterance { - kind, - pos: sound.pos, - body, - }), - _ => None, - } { - ecs.write_resource::>().push(outcome); - } + // Attempt to turn this sound into an outcome to be received by frontends. + if let Some(outcome) = match sound.kind { + SoundKind::Utterance(kind, body) => Some(Outcome::Utterance { + kind, + pos: sound.pos, + body, + }), + _ => None, + } { + ecs.write_resource::>().push(outcome); } } diff --git a/voxygen/src/audio/sfx/mod.rs b/voxygen/src/audio/sfx/mod.rs index 99193012be..1f5fe7ab89 100644 --- a/voxygen/src/audio/sfx/mod.rs +++ b/voxygen/src/audio/sfx/mod.rs @@ -106,7 +106,7 @@ use event_mapper::SfxEventMapper; use hashbrown::HashMap; use rand::prelude::*; use serde::Deserialize; -use tracing::warn; +use tracing::{debug, warn}; use vek::*; /// We watch the states of nearby entities in order to emit SFX at their @@ -186,9 +186,8 @@ pub enum SfxEvent { Utterance(UtteranceKind, VoiceKind), } -#[derive(Clone, Debug, PartialEq, Deserialize, Hash, Eq)] +#[derive(Copy, Clone, Debug, PartialEq, Deserialize, Hash, Eq)] pub enum VoiceKind { - Mute, HumanFemale, HumanMale, BipedLarge, @@ -203,8 +202,8 @@ pub enum VoiceKind { BigCat, } -fn body_to_voice(body: &Body) -> VoiceKind { - match body { +fn body_to_voice(body: &Body) -> Option { + Some(match body { Body::Humanoid(body) => match &body.body_type { humanoid::BodyType::Female => VoiceKind::HumanFemale, humanoid::BodyType::Male => VoiceKind::HumanMale, @@ -232,7 +231,7 @@ fn body_to_voice(body: &Body) -> VoiceKind { | quadruped_medium::Species::Yak | quadruped_medium::Species::Moose | quadruped_medium::Species::Dreadhorn => VoiceKind::Cow, - _ => VoiceKind::Mute, + _ => return None, }, Body::BirdMedium(_) | Body::BirdLarge(_) => VoiceKind::Bird, Body::BipedLarge(body) => match body.species { @@ -243,8 +242,8 @@ fn body_to_voice(body: &Body) -> VoiceKind { _ => VoiceKind::BipedLarge, }, Body::Theropod(_) | Body::Dragon(_) => VoiceKind::Reptile, - _ => VoiceKind::Mute, - } + _ => return None, + }) } #[derive(Clone, Debug, PartialEq, Deserialize, Hash, Eq)] @@ -516,9 +515,18 @@ impl SfxMgr { }, }, Outcome::Utterance { pos, kind, body } => { - let sfx_trigger_item = - triggers.get_key_value(&SfxEvent::Utterance(*kind, body_to_voice(body))); - audio.emit_sfx(sfx_trigger_item, *pos, Some(2.5), false); + if let Some(voice) = body_to_voice(body) { + let sfx_trigger_item = + triggers.get_key_value(&SfxEvent::Utterance(*kind, voice)); + if let Some(sfx_trigger_item) = sfx_trigger_item { + audio.emit_sfx(Some(sfx_trigger_item), *pos, Some(2.5), false); + } else { + debug!( + "No utterance sound effect exists for ({:?}, {:?})", + kind, voice + ); + } + } }, Outcome::ExpChange { .. } | Outcome::ComboChange { .. } diff --git a/voxygen/src/audio/soundcache.rs b/voxygen/src/audio/soundcache.rs index 7fcdae187f..f08a4bdab6 100644 --- a/voxygen/src/audio/soundcache.rs +++ b/voxygen/src/audio/soundcache.rs @@ -2,7 +2,7 @@ //! the need to decode files on each playback use common::assets::{self, Loader}; use rodio::{source::Buffered, Decoder, Source}; -use std::{borrow::Cow, io, sync::Arc}; +use std::{borrow::Cow, io}; use tracing::warn; // Implementation of sound taken from this github issue: @@ -13,10 +13,6 @@ pub struct SoundLoader; #[derive(Clone)] pub struct OggSound(Buffered>>>); -// impl AsRef<[u8]> for OggSound { -// fn as_ref(&self) -> &[u8] { &self.0 } -// } - impl Loader for SoundLoader { fn load(content: Cow<[u8]>, _: &str) -> Result { let source = Decoder::new(io::Cursor::new(content.into_owned()))?.buffered(); diff --git a/voxygen/src/session/mod.rs b/voxygen/src/session/mod.rs index 9abef76774..104459f2b8 100644 --- a/voxygen/src/session/mod.rs +++ b/voxygen/src/session/mod.rs @@ -15,7 +15,7 @@ use common::{ inventory::slot::{EquipSlot, Slot}, invite::InviteKind, item::{tool::ToolKind, ItemDef, ItemDesc}, - ChatMsg, ChatType, InputKind, InventoryUpdateEvent, Pos, Vel, + ChatMsg, ChatType, InputKind, InventoryUpdateEvent, Pos, UtteranceKind, Vel, }, consts::{MAX_MOUNT_RANGE, MAX_PICKUP_RANGE}, outcome::Outcome, @@ -525,6 +525,11 @@ impl PlayState for SessionState { self.client.borrow_mut().toggle_dance(); } }, + GameInput::Greet => { + if state { + self.client.borrow_mut().utter(UtteranceKind::Greeting); + } + }, GameInput::Sneak => { if state { self.stop_auto_walk(); diff --git a/voxygen/src/settings/control.rs b/voxygen/src/settings/control.rs index 67b4defb63..c0b9eb1bd6 100644 --- a/voxygen/src/settings/control.rs +++ b/voxygen/src/settings/control.rs @@ -123,6 +123,7 @@ impl ControlSettings { GameInput::Jump => KeyMouse::Key(VirtualKeyCode::Space), GameInput::Sit => KeyMouse::Key(VirtualKeyCode::K), GameInput::Dance => KeyMouse::Key(VirtualKeyCode::J), + GameInput::Greet => KeyMouse::Key(VirtualKeyCode::H), GameInput::Glide => KeyMouse::Key(VirtualKeyCode::LShift), GameInput::Climb => KeyMouse::Key(VirtualKeyCode::Space), GameInput::ClimbDown => KeyMouse::Key(VirtualKeyCode::LControl), diff --git a/voxygen/src/window.rs b/voxygen/src/window.rs index 2dfe0a9c85..118fe109e9 100644 --- a/voxygen/src/window.rs +++ b/voxygen/src/window.rs @@ -39,6 +39,7 @@ pub enum GameInput { Jump, Sit, Dance, + Greet, Glide, Climb, ClimbDown, @@ -94,6 +95,7 @@ impl GameInput { GameInput::Jump => "gameinput.jump", GameInput::Sit => "gameinput.sit", GameInput::Dance => "gameinput.dance", + GameInput::Greet => "gameinput.greet", GameInput::Glide => "gameinput.glide", GameInput::Climb => "gameinput.climb", GameInput::ClimbDown => "gameinput.climbdown", @@ -159,6 +161,7 @@ impl GameInput { GameInput::Jump, GameInput::Sit, GameInput::Dance, + GameInput::Greet, GameInput::Glide, GameInput::Climb, GameInput::ClimbDown,