aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/actor.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2019-03-06 20:32:45 +0100
committerPeter Kohaut2019-03-06 20:41:02 +0100
commitd4e7e957b0ec43168e2bf663fb53bbbdf7752fcb (patch)
treee55f5c9a31069046c256fb9de44f04c8b2329a99 /engines/bladerunner/actor.cpp
parentb8966ff1ad4fe95cdb7be33e94d18d757031f03a (diff)
downloadscummvm-rg350-d4e7e957b0ec43168e2bf663fb53bbbdf7752fcb.tar.gz
scummvm-rg350-d4e7e957b0ec43168e2bf663fb53bbbdf7752fcb.tar.bz2
scummvm-rg350-d4e7e957b0ec43168e2bf663fb53bbbdf7752fcb.zip
BLADERUNNER: Fixed panning of speech
Cleanup of other sound pannings
Diffstat (limited to 'engines/bladerunner/actor.cpp')
-rw-r--r--engines/bladerunner/actor.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp
index f616614ee0..44dd3a603e 100644
--- a/engines/bladerunner/actor.cpp
+++ b/engines/bladerunner/actor.cpp
@@ -1142,17 +1142,16 @@ int Actor::getGoal() const {
void Actor::speechPlay(int sentenceId, bool voiceOver) {
Common::String name = Common::String::format( "%02d-%04d%s.AUD", _id, sentenceId, _vm->_languageCode.c_str());
- int balance = 0;
+ int pan = 0;
if (!voiceOver && _id != BladeRunnerEngine::kActorVoiceOver) {
Vector3 screenPosition = _vm->_view->calculateScreenPosition(_position);
- balance = (127 * (2 * screenPosition.x - 640)) / 640;
- balance = CLIP<int>(balance, -127, 127);
+ pan = (75 * (2 * CLIP<int>(screenPosition.x, 0, 640) - 640)) / 640; // map [0..640] to [-75..75]
}
_vm->_subtitles->getInGameSubsText(_id, sentenceId);
_vm->_subtitles->show();
- _vm->_audioSpeech->playSpeech(name, balance);
+ _vm->_audioSpeech->playSpeech(name, pan);
}
void Actor::speechStop() {
@@ -1215,12 +1214,12 @@ void Actor::acquireCluesByRelations() {
int Actor::soundVolume() const {
float dist = distanceFromView(_vm->_view);
- return 35.0f * CLIP(1.0f - (dist / 1200.0f), 0.0f, 1.0f);
+ return (35 * CLIP<int>(100 - (dist / 12), 0, 100)) / 100; // map [0..1200] to [35..0]
}
-int Actor::soundBalance() const {
+int Actor::soundPan() const {
Vector3 screenPosition = _vm->_view->calculateScreenPosition(_position);
- return 35.0f * (CLIP(screenPosition.x / 640.0f, 0.0f, 1.0f) * 2.0f - 1.0f);
+ return (35 * (2 * CLIP<int>(screenPosition.x, 0, 640) - 640)) / 640; // map [0..640] to [-35..35]
}
bool Actor::isObstacleBetween(const Vector3 &target) {