diff options
-rw-r--r-- | engines/lab/graphics.cpp | 10 | ||||
-rw-r--r-- | engines/lab/intro.cpp | 32 | ||||
-rw-r--r-- | engines/lab/lab.cpp | 4 | ||||
-rw-r--r-- | engines/lab/lab.h | 1 | ||||
-rw-r--r-- | engines/lab/labfun.h | 6 | ||||
-rw-r--r-- | engines/lab/labmusic.cpp | 3 | ||||
-rw-r--r-- | engines/lab/map.cpp | 14 | ||||
-rw-r--r-- | engines/lab/processroom.cpp | 68 | ||||
-rw-r--r-- | engines/lab/readdiff.cpp | 14 | ||||
-rw-r--r-- | engines/lab/resource.cpp | 6 | ||||
-rw-r--r-- | engines/lab/special.cpp | 22 |
11 files changed, 89 insertions, 91 deletions
diff --git a/engines/lab/graphics.cpp b/engines/lab/graphics.cpp index 80d78edfbe..4d19f61baa 100644 --- a/engines/lab/graphics.cpp +++ b/engines/lab/graphics.cpp @@ -68,7 +68,7 @@ bool readPict(const char *filename, bool PlayOnce) { stopDiff(); - file = g_music->newOpen(filename); + file = g_lab->g_music->newOpen(filename); if (file == NULL) { if ((filename[0] == 'p') || (filename[0] == 'P')) @@ -94,9 +94,9 @@ bool readPict(const char *filename, bool PlayOnce) { /*****************************************************************************/ bool readMusic(const char *filename, bool waitTillFinished) { Common::File *file = g_lab->_resource->openDataFile(filename, MKTAG('D', 'I', 'F', 'F')); - g_music->updateMusic(); - if (!g_music->_doNotFilestopSoundEffect) - g_music->stopSoundEffect(); + g_lab->g_music->updateMusic(); + if (!g_lab->g_music->_doNotFilestopSoundEffect) + g_lab->g_music->stopSoundEffect(); if (!file) return false; @@ -121,7 +121,7 @@ byte *readPictToMem(const char *filename, uint16 x, uint16 y) { allocFile((void **)&Mem, (int32) x * (int32) y, "Bitmap"); CurMem = Mem; - file = g_music->newOpen(filename); + file = g_lab->g_music->newOpen(filename); if (file == NULL) return NULL; diff --git a/engines/lab/intro.cpp b/engines/lab/intro.cpp index 7cbe48c044..eaf1aa928b 100644 --- a/engines/lab/intro.cpp +++ b/engines/lab/intro.cpp @@ -90,10 +90,10 @@ void Intro::doPictText(const char *filename, bool isscreen) { strcat(path, filename); if (isscreen) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); timedelay = 35; } else { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); timedelay = 7; } @@ -105,7 +105,7 @@ void Intro::doPictText(const char *filename, bool isscreen) { if (begin) { begin = false; - tfile = g_music->newOpen(path); + tfile = g_lab->g_music->newOpen(path); if (!tfile) return; @@ -144,7 +144,7 @@ void Intro::doPictText(const char *filename, bool isscreen) { msg = g_lab->getMsg(); if (msg == NULL) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->diffNextFrame(); g_lab->getTime(&secs, µs); g_lab->anyTimeDiff(lastsecs, lastmicros, secs, micros, &secs, µs); @@ -216,13 +216,13 @@ void Intro::doPictText(const char *filename, bool isscreen) { /* Does a one second delay, but checks the music while doing it. */ /*****************************************************************************/ void Intro::musicDelay() { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); if (_quitIntro) return; for (uint16 i = 0; i < 20; i++) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->waitTOF(); g_lab->waitTOF(); g_lab->waitTOF(); @@ -234,7 +234,7 @@ void Intro::musicDelay() { void Intro::nReadPict(const char *filename, bool playOnce) { Common::String finalFileName = Common::String("P:Intro/") + filename; - g_music->updateMusic(); + g_lab->g_music->updateMusic(); introEatMessages(); if (_quitIntro) @@ -277,7 +277,7 @@ void Intro::introSequence() { blackAllScreen(); - g_music->initMusic(); + g_lab->g_music->initMusic(); nopalchange = true; if (g_lab->getPlatform() != Common::kPlatformWindows) @@ -297,14 +297,14 @@ void Intro::introSequence() { (diffcmap[i * 3 + 2] >> 2); } - g_music->updateMusic(); + g_lab->g_music->updateMusic(); fade(true, 0); for (int times = 0; times < 150; times++) { if (_quitIntro) break; - g_music->updateMusic(); + g_lab->g_music->updateMusic(); uint16 temp = palette[2]; for (uint16 i = 2; i < 15; i++) @@ -319,7 +319,7 @@ void Intro::introSequence() { fade(false, 0); blackAllScreen(); - g_music->updateMusic(); + g_lab->g_music->updateMusic(); nReadPict("Title.A", true); nReadPict("AB", true); @@ -341,11 +341,11 @@ void Intro::introSequence() { nReadPict("DA", true); musicDelay(); - g_music->newOpen("p:Intro/Intro.1"); /* load the picture into the buffer */ + g_lab->g_music->newOpen("p:Intro/Intro.1"); /* load the picture into the buffer */ - g_music->updateMusic(); + g_lab->g_music->updateMusic(); blackAllScreen(); - g_music->updateMusic(); + g_lab->g_music->updateMusic(); _msgfont = g_lab->_resource->getFont("P:Map.fon"); @@ -366,7 +366,7 @@ void Intro::introSequence() { freeAllStolenMem(); blackAllScreen(); - g_music->updateMusic(); + g_lab->g_music->updateMusic(); _introDoBlack = true; nReadPict("Station1", true); @@ -398,7 +398,7 @@ void Intro::introSequence() { for (uint16 idx = (8 * 3); idx < (255 * 3); idx++) diffcmap[idx] = 255 - diffcmap[idx]; - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->waitTOF(); g_lab->VGASetPal(diffcmap, 256); g_lab-> waitTOF(); diff --git a/engines/lab/lab.cpp b/engines/lab/lab.cpp index 3792f2b0d3..745bb74f94 100644 --- a/engines/lab/lab.cpp +++ b/engines/lab/lab.cpp @@ -76,6 +76,7 @@ LabEngine::LabEngine(OSystem *syst, const ADGameDescription *gameDesc) _event = nullptr; _resource = nullptr; + g_music = nullptr; //const Common::FSNode gameDataDir(ConfMan.get("path")); //SearchMan.addSubDirectoryMatching(gameDataDir, "game"); @@ -100,8 +101,7 @@ Common::Error LabEngine::run() { _event = new EventManager(this); _resource = new Resource(this); - - g_music = new Music(); + g_music = new Music(this); if (getPlatform() == Common::kPlatformWindows) { // Check if this is the Wyrmkeep trial diff --git a/engines/lab/lab.h b/engines/lab/lab.h index 7e7f645167..dd0c204dbc 100644 --- a/engines/lab/lab.h +++ b/engines/lab/lab.h @@ -101,6 +101,7 @@ private: public: EventManager *_event; Resource *_resource; + Music *g_music; byte *_currentDsplayBuffer; Common::Point _mousePos; diff --git a/engines/lab/labfun.h b/engines/lab/labfun.h index dd4796a2d0..57d5817c71 100644 --- a/engines/lab/labfun.h +++ b/engines/lab/labfun.h @@ -157,7 +157,7 @@ void closePartial(int32 File); class Music { public: - Music(); + Music(LabEngine *vm); byte **newOpen(const char *name); byte **newOpen(const char *name, uint32 &size); @@ -185,6 +185,7 @@ public: bool _doReset; private: + LabEngine *_vm; void fillbuffer(byte *musicBuffer); void startMusic(bool startatbegin); @@ -202,9 +203,6 @@ private: Audio::QueuingAudioStream *_queuingAudioStream; }; - -extern Music *g_music; - /*---------------------------*/ /*----- From LabSets.c ------*/ /*---------------------------*/ diff --git a/engines/lab/labmusic.cpp b/engines/lab/labmusic.cpp index a7043dc424..843a866e26 100644 --- a/engines/lab/labmusic.cpp +++ b/engines/lab/labmusic.cpp @@ -43,10 +43,9 @@ namespace Lab { #define CLOWNROOM 123 #define DIMROOM 80 -Music *g_music; extern uint16 RoomNum; // TODO: Move into a class -Music::Music() { +Music::Music(LabEngine *vm) : _vm(vm) { _file = 0; _tFile = 0; _musicPaused = false; diff --git a/engines/lab/map.cpp b/engines/lab/map.cpp index e4a6f04c74..6c2201608e 100644 --- a/engines/lab/map.cpp +++ b/engines/lab/map.cpp @@ -84,9 +84,9 @@ char *getText(const char *filename) { bool dodecrypt; byte **tfile; - g_music->updateMusic(); + g_lab->g_music->updateMusic(); dodecrypt = (isBuffered(filename) == NULL); - tfile = g_music->newOpen(filename); + tfile = g_lab->g_music->newOpen(filename); if (!tfile) return NULL; @@ -200,7 +200,7 @@ static bool loadMapData() { BigMsgFont = MsgFont; resetBuffer(); /* Make images load into start of buffer */ - buffer = g_music->newOpen("P:MapImage", Size); + buffer = g_lab->g_music->newOpen("P:MapImage", Size); if (!buffer) return false; @@ -252,9 +252,9 @@ static bool loadMapData() { Common::File *mapFile = g_lab->_resource->openDataFile("Lab:Maps", MKTAG('M', 'A', 'P', '0')); if (!mapFile) error("Corrupt map file"); - g_music->updateMusic(); - if (!g_music->_doNotFilestopSoundEffect) - g_music->stopSoundEffect(); + g_lab->g_music->updateMusic(); + if (!g_lab->g_music->_doNotFilestopSoundEffect) + g_lab->g_music->stopSoundEffect(); MaxRooms = mapFile->readUint16LE(); Maps = new MapData[MaxRooms]; // will be freed when the user exits the map @@ -309,7 +309,7 @@ void fade(bool fadein, uint16 res) { setAmigaPal(newpal, 16); g_lab->waitTOF(); - g_music->updateMusic(); + g_lab->g_music->updateMusic(); } } diff --git a/engines/lab/processroom.cpp b/engines/lab/processroom.cpp index ef1a8011e1..2939d8af5d 100644 --- a/engines/lab/processroom.cpp +++ b/engines/lab/processroom.cpp @@ -333,26 +333,26 @@ static void doActions(Action * APtr, CloseDataPtr *LCPtr) { uint32 StartSecs, StartMicros, CurSecs, CurMicros; while (APtr) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); switch (APtr->ActionType) { case PLAYSOUND: - g_music->_loopSoundEffect = false; - g_music->_waitTillFinished = true; + g_lab->g_music->_loopSoundEffect = false; + g_lab->g_music->_waitTillFinished = true; readMusic((char *)APtr->Data, true); - g_music->_waitTillFinished = false; + g_lab->g_music->_waitTillFinished = false; break; case PLAYSOUNDB: - g_music->_loopSoundEffect = false; - g_music->_waitTillFinished = false; + g_lab->g_music->_loopSoundEffect = false; + g_lab->g_music->_waitTillFinished = false; readMusic((char *)APtr->Data, false); break; case PLAYSOUNDCONT: - g_music->_doNotFilestopSoundEffect = true; - g_music->_loopSoundEffect = true; - readMusic((char *)APtr->Data, g_music->_waitTillFinished); + g_lab->g_music->_doNotFilestopSoundEffect = true; + g_lab->g_music->_loopSoundEffect = true; + readMusic((char *)APtr->Data, g_lab->g_music->_waitTillFinished); break; case SHOWDIFF: @@ -370,7 +370,7 @@ static void doActions(Action * APtr, CloseDataPtr *LCPtr) { } if (APtr->Data) - g_music->newOpen((char *)APtr->Data); /* Puts a file into memory */ + g_lab->g_music->newOpen((char *)APtr->Data); /* Puts a file into memory */ break; @@ -485,7 +485,7 @@ static void doActions(Action * APtr, CloseDataPtr *LCPtr) { g_lab->WSDL_UpdateScreen(); while (1) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->diffNextFrame(); g_lab->getTime(&CurSecs, &CurMicros); @@ -497,30 +497,30 @@ static void doActions(Action * APtr, CloseDataPtr *LCPtr) { break; case STOPMUSIC: - g_music->setMusic(false); + g_lab->g_music->setMusic(false); break; case STARTMUSIC: - g_music->setMusic(true); + g_lab->g_music->setMusic(true); break; case CHANGEMUSIC: - g_music->changeMusic((const char *)APtr->Data); - g_music->setMusicReset(false); + g_lab->g_music->changeMusic((const char *)APtr->Data); + g_lab->g_music->setMusicReset(false); break; case RESETMUSIC: - g_music->resetMusic(); - g_music->setMusicReset(true); + g_lab->g_music->resetMusic(); + g_lab->g_music->setMusicReset(true); break; case FILLMUSIC: - g_music->updateMusic(); + g_lab->g_music->updateMusic(); break; case WAITSOUND: - while (g_music->isSoundEffectActive()) { - g_music->updateMusic(); + while (g_lab->g_music->isSoundEffectActive()) { + g_lab->g_music->updateMusic(); g_lab->diffNextFrame(); g_lab->waitTOF(); } @@ -528,18 +528,18 @@ static void doActions(Action * APtr, CloseDataPtr *LCPtr) { break; case CLEARSOUND: - if (g_music->_loopSoundEffect) { - g_music->_loopSoundEffect = false; - g_music->stopSoundEffect(); - } else if (g_music->isSoundEffectActive()) - g_music->stopSoundEffect(); + if (g_lab->g_music->_loopSoundEffect) { + g_lab->g_music->_loopSoundEffect = false; + g_lab->g_music->stopSoundEffect(); + } else if (g_lab->g_music->isSoundEffectActive()) + g_lab->g_music->stopSoundEffect(); break; case WINMUSIC: - g_music->_winmusic = true; - g_music->freeMusic(); - g_music->initMusic(); + g_lab->g_music->_winmusic = true; + g_lab->g_music->freeMusic(); + g_lab->g_music->initMusic(); break; case WINGAME: @@ -590,18 +590,18 @@ static void doActions(Action * APtr, CloseDataPtr *LCPtr) { APtr = APtr->NextAction; } - if (g_music->_loopSoundEffect) { - g_music->_loopSoundEffect = false; - g_music->stopSoundEffect(); + if (g_lab->g_music->_loopSoundEffect) { + g_lab->g_music->_loopSoundEffect = false; + g_lab->g_music->stopSoundEffect(); } else { - while (g_music->isSoundEffectActive()) { - g_music->updateMusic(); + while (g_lab->g_music->isSoundEffectActive()) { + g_lab->g_music->updateMusic(); g_lab->diffNextFrame(); g_lab->waitTOF(); } } - g_music->_doNotFilestopSoundEffect = false; + g_lab->g_music->_doNotFilestopSoundEffect = false; } /*****************************************************************************/ diff --git a/engines/lab/readdiff.cpp b/engines/lab/readdiff.cpp index ca7d3905ce..88b4c1805d 100644 --- a/engines/lab/readdiff.cpp +++ b/engines/lab/readdiff.cpp @@ -393,7 +393,7 @@ void stopDiff() { void stopDiffEnd() { if (IsPlaying) { while (IsPlaying) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->diffNextFrame(); } } @@ -431,14 +431,14 @@ void readSound(bool waitTillFinished, Common::File *file) { return; while (soundTag != 65535) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); soundTag = file->readUint32LE(); soundSize = file->readUint32LE() - 8; if ((soundTag == 30) || (soundTag == 31)) { if (waitTillFinished) { - while (g_music->isSoundEffectActive()) { - g_music->updateMusic(); + while (g_lab->g_music->isSoundEffectActive()) { + g_lab->g_music->updateMusic(); g_lab->waitTOF(); } } @@ -449,11 +449,11 @@ void readSound(bool waitTillFinished, Common::File *file) { file->skip(2); byte *soundData = (byte *)malloc(soundSize); file->read(soundData, soundSize); - g_music->playSoundEffect(sampleRate, soundSize, soundData); + g_lab->g_music->playSoundEffect(sampleRate, soundSize, soundData); } else if (soundTag == 65535L) { if (waitTillFinished) { - while (g_music->isSoundEffectActive()) { - g_music->updateMusic(); + while (g_lab->g_music->isSoundEffectActive()) { + g_lab->g_music->updateMusic(); g_lab->waitTOF(); } } diff --git a/engines/lab/resource.cpp b/engines/lab/resource.cpp index 5e6fe290df..1e0ac6bbe9 100644 --- a/engines/lab/resource.cpp +++ b/engines/lab/resource.cpp @@ -28,13 +28,13 @@ * */ +#include "lab/lab.h" #include "lab/text.h" #include "lab/resource.h" namespace Lab { static uint16 allocroom; - extern RoomData *_rooms; extern InventoryData *Inventory; extern uint16 NumInv, ManyRooms, HighestCondition; @@ -65,7 +65,7 @@ TextFont *Resource::getFont(const char *fileName) { if (fileSize <= headerSize) return NULL; - g_music->updateMusic(); + _vm->g_music->updateMusic(); TextFont *textfont = (TextFont *)malloc(sizeof(TextFont)); textfont->DataLength = fileSize - headerSize; @@ -142,7 +142,7 @@ bool Resource::readViews(uint16 roomNum) { _rooms[roomNum]._westView = readView(dataFile); _rooms[roomNum]._rules = readRule(dataFile); - g_music->updateMusic(); + _vm->g_music->updateMusic(); delete dataFile; return true; diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp index eaa9ef2755..417f854b84 100644 --- a/engines/lab/special.cpp +++ b/engines/lab/special.cpp @@ -153,7 +153,7 @@ void showCombination(const char *filename) { blackScreen(); - buffer = g_music->newOpen("P:Numbers"); + buffer = g_lab->g_music->newOpen("P:Numbers"); for (uint16 CurBit = 0; CurBit < 10; CurBit++) readImage(buffer, &(Images[CurBit])); @@ -297,10 +297,10 @@ void showTile(const char *filename, bool showsolution) { if (showsolution) { start = 0; - buffer = g_music->newOpen("P:TileSolution"); + buffer = g_lab->g_music->newOpen("P:TileSolution"); } else { start = 1; - buffer = g_music->newOpen("P:Tile"); + buffer = g_lab->g_music->newOpen("P:Tile"); } if (!buffer) @@ -553,7 +553,7 @@ static bool loadJournalData() { return false; } - g_music->updateMusic(); + g_lab->g_music->updateMusic(); strcpy(filename, "Lab:Rooms/j0"); bridge = g_lab->_conditions->in(BRIDGE0) || g_lab->_conditions->in(BRIDGE1); @@ -586,7 +586,7 @@ static bool loadJournalData() { if ((journaltexttitle = getText("Lab:Rooms/jt")) == NULL) return false; - buffer = g_music->newOpen("P:JImage"); + buffer = g_lab->g_music->newOpen("P:JImage"); if (!buffer) return false; @@ -628,7 +628,7 @@ static void drawJournalText() { char *CurText = journaltext; while (DrawingToPage < JPage) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); CurText = (char *)(journaltext + CharsDrawn); CharsDrawn += flowText(BigMsgFont, -2, 2, 0, false, false, false, false, VGAScaleX(52), VGAScaleY(32), VGAScaleX(152), VGAScaleY(148), CurText); @@ -648,7 +648,7 @@ static void drawJournalText() { CharsDrawn += flowTextToMem(&JBackImage, BigMsgFont, -2, 2, 0, false, false, false, true, VGAScaleX(52), VGAScaleY(32), VGAScaleX(152), VGAScaleY(148), CurText); } - g_music->updateMusic(); + g_lab->g_music->updateMusic(); CurText = (char *)(journaltext + CharsDrawn); lastpage = (*CurText == 0); flowTextToMem(&JBackImage, BigMsgFont, -2, 2, 0, false, false, false, true, VGAScaleX(171), VGAScaleY(32), VGAScaleX(271), VGAScaleY(148), CurText); @@ -663,14 +663,14 @@ static void drawJournalText() { static void turnPage(bool FromLeft) { if (FromLeft) { for (int i = 0; i < g_lab->_screenWidth; i += 8) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->waitTOF(); ScreenImage.ImageData = g_lab->getVGABaseAddr(); g_lab->bltBitMap(&JBackImage, i, 0, &ScreenImage, i, 0, 8, g_lab->_screenHeight); } } else { for (int i = (g_lab->_screenWidth - 8); i > 0; i -= 8) { - g_music->updateMusic(); + g_lab->g_music->updateMusic(); g_lab->waitTOF(); ScreenImage.ImageData = g_lab->getVGABaseAddr(); g_lab->bltBitMap(&JBackImage, i, 0, &ScreenImage, i, 0, 8, g_lab->_screenHeight); @@ -837,7 +837,7 @@ bool saveRestoreGame() { if (slot >= 0) { isOK = loadGame(&RoomNum, &Direction, &(Inventory[QUARTERNUM].Many), slot); if (isOK) - g_music->resetMusic(); + g_lab->g_music->resetMusic(); } } @@ -855,7 +855,7 @@ static void getMonImages() { resetBuffer(); - buffer = g_music->newOpen("P:MonImage", bufferSize); + buffer = g_lab->g_music->newOpen("P:MonImage", bufferSize); if (!buffer) return; |