From 85cba60644f993c4c555f87855cca1b2c983269b Mon Sep 17 00:00:00 2001
From: Alyssa Milburn <fuzzie@fuzzie.org>
Date: Tue, 18 May 2010 19:30:51 +0200
Subject: [PATCH] parse+play music from BRA hear zones
---
engines/parallaction/parallaction.cpp | 13 +++++++++----
engines/parallaction/parser.h | 1 +
engines/parallaction/parser_br.cpp | 16 ++++++++++++++++
3 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index f31b7ab..58fabea 100644
a
|
b
|
void Parallaction::runZone(ZonePtr z) {
|
591 | 591 | break; |
592 | 592 | |
593 | 593 | case kZoneHear: |
594 | | _soundMan->execute(SC_SETSFXCHANNEL, z->u._hearChannel); |
595 | | _soundMan->execute(SC_SETSFXLOOPING, (int)((z->_flags & kFlagsLooping) == kFlagsLooping)); |
596 | | _soundMan->execute(SC_SETSFXVOLUME, 60); |
597 | | _soundMan->execute(SC_PLAYSFX, z->u._filename.c_str()); |
| 594 | if (z->u._hearChannel == -1) { |
| 595 | _soundMan->execute(SC_SETMUSICFILE, z->u._filename.c_str()); |
| 596 | _soundMan->execute(SC_PLAYMUSIC); |
| 597 | } else { |
| 598 | _soundMan->execute(SC_SETSFXCHANNEL, z->u._hearChannel); |
| 599 | _soundMan->execute(SC_SETSFXLOOPING, (int)((z->_flags & kFlagsLooping) == kFlagsLooping)); |
| 600 | _soundMan->execute(SC_SETSFXVOLUME, 60); |
| 601 | _soundMan->execute(SC_PLAYSFX, z->u._filename.c_str()); |
| 602 | } |
598 | 603 | break; |
599 | 604 | |
600 | 605 | case kZoneSpeak: |
diff --git a/engines/parallaction/parser.h b/engines/parallaction/parser.h
index 3672fd3..3e46e99 100644
a
|
b
|
public:
|
293 | 293 | virtual void parsePathData(ZonePtr z); |
294 | 294 | virtual void parseGetData(ZonePtr z); |
295 | 295 | virtual void parseDoorData(ZonePtr z); |
| 296 | virtual void parseHearData(ZonePtr z); |
296 | 297 | protected: |
297 | 298 | void parseAnswerCounter(Answer *answer); |
298 | 299 | virtual Answer *parseAnswer(); |
diff --git a/engines/parallaction/parser_br.cpp b/engines/parallaction/parser_br.cpp
index 563faa1..1b21023 100644
a
|
b
|
void LocationParser_br::parseDoorData(ZonePtr z) {
|
808 | 808 | } |
809 | 809 | } |
810 | 810 | |
| 811 | void LocationParser_br::parseHearData(ZonePtr z) { |
| 812 | TypeData *data = &z->u; |
| 813 | if (!scumm_stricmp(_tokens[0], "sound")) { |
| 814 | assert(!data->_filename.size()); |
| 815 | data->_filename = _tokens[1]; |
| 816 | data->_hearChannel = atoi(_tokens[2]); |
| 817 | } else |
| 818 | if (!scumm_stricmp(_tokens[0], "freq")) { |
| 819 | data->_hearFreq = atoi(_tokens[1]); |
| 820 | } else |
| 821 | if (!scumm_stricmp(_tokens[0], "music")) { |
| 822 | assert(data->_hearChannel == -1); |
| 823 | data->_filename = _tokens[1]; |
| 824 | } |
| 825 | } |
| 826 | |
811 | 827 | typedef void (LocationParser_br::*ZoneTypeParser)(ZonePtr); |
812 | 828 | static ZoneTypeParser parsers[] = { |
813 | 829 | 0, // no type |