diff options
author | Paul Gilbert | 2012-05-13 22:34:40 +1000 |
---|---|---|
committer | Paul Gilbert | 2012-05-13 22:34:40 +1000 |
commit | 546f47ddcee07b5bd7ecad5f25f4bb022944e234 (patch) | |
tree | f3b6953eaf877174014fc40268ad9084f1e3327b | |
parent | 35143eae094b713524ef677412befdc4c766df04 (diff) | |
download | scummvm-rg350-546f47ddcee07b5bd7ecad5f25f4bb022944e234.tar.gz scummvm-rg350-546f47ddcee07b5bd7ecad5f25f4bb022944e234.tar.bz2 scummvm-rg350-546f47ddcee07b5bd7ecad5f25f4bb022944e234.zip |
TONY: Beginnings of refactoring Globals into their own class
-rw-r--r-- | engines/tony/custom.cpp | 1476 | ||||
-rw-r--r-- | engines/tony/font.cpp | 12 | ||||
-rw-r--r-- | engines/tony/game.cpp | 106 | ||||
-rw-r--r-- | engines/tony/game.h | 20 | ||||
-rw-r--r-- | engines/tony/gfxcore.cpp | 7 | ||||
-rw-r--r-- | engines/tony/gfxengine.cpp | 98 | ||||
-rw-r--r-- | engines/tony/globals.cpp | 93 | ||||
-rw-r--r-- | engines/tony/globals.h | 232 | ||||
-rw-r--r-- | engines/tony/inventory.cpp | 30 | ||||
-rw-r--r-- | engines/tony/loc.cpp | 4 | ||||
-rw-r--r-- | engines/tony/module.mk | 1 | ||||
-rw-r--r-- | engines/tony/sound.cpp | 19 | ||||
-rw-r--r-- | engines/tony/tony.cpp | 61 | ||||
-rw-r--r-- | engines/tony/tony.h | 6 | ||||
-rw-r--r-- | engines/tony/tonychar.cpp | 2 |
15 files changed, 1130 insertions, 1037 deletions
diff --git a/engines/tony/custom.cpp b/engines/tony/custom.cpp index bda65fcf67..168c2d38cd 100644 --- a/engines/tony/custom.cpp +++ b/engines/tony/custom.cpp @@ -62,54 +62,6 @@ namespace Tony { -extern bool bPatIrqFreeze; - -RMTony *Tony; -RMPointer *Pointer; -RMGameBoxes *Boxes; -RMLocation *Loc; -RMInventory *Inventory; -RMInput *Input; - -uint32 (*LoadLocation)(int, RMPoint, RMPoint start); -void (*UnloadLocation)(CORO_PARAM, bool bDoOnExit, uint32 *result); -void (*LinkGraphicTask)(RMGfxTask *task); -void (*Freeze)(void); -void (*Unfreeze)(void); -void (*WaitFrame)(CORO_PARAM); -void (*PlayMusic)(int nChannel, const char *fileName, int nFX, bool bLoop, int nSync); -void (*WaitWipeEnd)(CORO_PARAM); -void (*CloseWipe)(void); -void (*InitWipe)(int type); -void (*EnableGUI)(void); -void (*DisableGUI)(void); -void (*SetPalesati)(bool bpal); - -uint32 dwTonyNumTexts = 0; -bool bTonyInTexts = false; -bool bStaticTalk = false; -RMTony::TALKTYPE nTonyNextTalkType; - -RMPoint StartLocPos[256]; -OSystem::MutexRef cs[10]; -OSystem::MutexRef vdb; -HANDLE mut[10]; - -bool bSkipIdle = false; -uint32 hSkipIdle; - -int lastMusic = 0, lastTappeto = 0; - -int tappeti[200]; - -#define T_GRILLI 1 -#define T_GRILLIOV 2 -#define T_GRILLIVENTO 3 -#define T_GRILLIVENTO1 4 -#define T_VENTO 5 -#define T_MARE 6 -#define T_MAREMETA 7 - const char *tappetiFile[] = { "None", "1.ADP", // Grilli.WAV @@ -121,140 +73,139 @@ const char *tappetiFile[] = { "6.ADP" // Mare1.WAV metà volume }; -struct CharacterStruct { - uint32 code; - RMItem *item; - byte r, g, b; - int talkpattern; - int standpattern; - int starttalkpattern, endtalkpattern; - int numtexts; - - void Save(Common::OutSaveFile *f) { - f->writeUint32LE(code); - f->writeUint32LE(0); - f->writeByte(r); - f->writeByte(g); - f->writeByte(b); - f->writeUint32LE(talkpattern); - f->writeUint32LE(standpattern); - f->writeUint32LE(starttalkpattern); - f->writeUint32LE(endtalkpattern); - f->writeUint32LE(numtexts); - } - void Load(Common::InSaveFile *f) { - code = f->readUint32LE(); - f->readUint32LE(); - item = NULL; - r = f->readByte(); - g = f->readByte(); - b = f->readByte(); - talkpattern = f->readUint32LE(); - standpattern = f->readUint32LE(); - starttalkpattern = f->readUint32LE(); - endtalkpattern = f->readUint32LE(); - numtexts = f->readUint32LE(); - } -}; -CharacterStruct Character[16]; - -struct MCharacterStruct { - uint32 code; - RMItem *item; - byte r, g, b; - int x, y; - int numtalks[10]; - int curgroup; - int numtexts; - bool bInTexts; - int curTalk; - bool bAlwaysBack; - - void Save(Common::OutSaveFile *f) { - f->writeUint32LE(code); - f->writeUint32LE(0); - f->writeByte(r); - f->writeByte(g); - f->writeByte(b); - f->writeUint32LE(x); - f->writeUint32LE(y); - for (int i = 0; i < 10; ++i) - f->writeUint32LE(numtalks[i]); - f->writeUint32LE(curgroup); - f->writeUint32LE(numtexts); - f->writeByte(bInTexts); - f->writeUint32LE(curTalk); - f->writeByte(bAlwaysBack); - } - void Load(Common::InSaveFile *f) { - code = f->readUint32LE(); - f->readUint32LE(); - item = NULL; - r = f->readByte(); - g = f->readByte(); - b = f->readByte(); - x = f->readUint32LE(); - y = f->readUint32LE(); - for (int i = 0; i < 10; ++i) - numtalks[i] = f->readUint32LE(); - curgroup = f->readUint32LE(); - numtexts = f->readUint32LE(); - bInTexts = f->readByte(); - curTalk = f->readUint32LE(); - bAlwaysBack = f->readByte(); - } +struct MusicFileEntry { + const char *name; + int sync; }; -MCharacterStruct MCharacter[10]; +const MusicFileEntry musicFiles[] = { +/* + { "PREGAME1.ADP", 0 }, { "SONO1.ADP", 0 }, + { "SONO2.ADP", 0 }, { "SONO3.ADP", 0 }, + { "CADUTA.ADP",0 }, { "RISVEGLIO.ADP", 0 }, + { "BACKGROUND.ADP", 0 }, { "PREGAME3.ADP", 0 }, + { "BARBUTA1.ADP", 2450 }, { "BARBUTA2.ADP", 0 }, +*/ + { "00.ADP", 0 }, { "01.ADP", 0 }, + { "02.ADP", 0 }, { "03.ADP", 0 }, + { "04.ADP",0 }, { "05.ADP", 0 }, + { "06.ADP", 0 }, { "07.ADP", 0 }, + { "08.ADP", 2450 }, { "09.ADP", 0 }, -bool IsMChar[16]; +/* + { "BARBUTA3.ADP", 0 }, { "15-RUFUS.ADP", 0 }, + { "20-MAMMA.ADP", 0 }, { "32-MAMMARADIO.ADP", 0 }, + { "24-TUNNELOV-MIDI.ADP", 0 }, { "34-RAZZO.ADP", 0 }, + { "27-ZUCC1.ADP", 0 }, { "BEAST.ADP", 0 }, + { "22-MORTIMER.ADP", 0 }, { "25-PUB-OVATTATO.ADP", 0 }, +*/ + { "10.ADP", 0 }, { "11.ADP", 0 }, + { "12.ADP", 0 }, { "13.ADP", 0 }, + { "14.ADP", 0 }, { "15.ADP", 0 }, + { "16.ADP", 0 }, { "17.ADP", 0 }, + { "18.ADP", 0 }, { "19.ADP", 0 }, +/* + { "25-PUB.ADP", 0 }, { "ALBERGO.ADP", 0 }, + { "37.ADP", 0 }, { "26-PIRAT.ADP", 0 }, + { "LORENZBACK.ADP", 0 }, { "LORENZ3.ADP", 0 }, + { "CASTLE.ADP", 0 }, { "53-BACKR.ADP", 0 }, + { "16-SMIL1.ADP", 1670 }, { "16-SMIL2.ADP", 0 }, +*/ + { "20.ADP", 0 }, { "21.ADP", 0 }, + { "22.ADP", 0 }, { "23.ADP", 0 }, + { "24.ADP", 0 }, { "25.ADP", 0 }, + { "26.ADP", 0 }, { "27.ADP", 0 }, + { "28.ADP", 1670 }, { "29.ADP", 0 }, +/* + { "16-SMILE.ADP", 0 }, { "16-DIALOG2.ADP", 0 }, + { "07-SHAKE1.ADP", 2900 }, { "07-SHAKE2.ADP", 0 }, + { "07-SHAKE3.ADP", 0 }, { "46-BEEE.ADP", 0 }, + { "434748.ADP", 0 }, { "TORRE.ADP", 0 }, + { "50-DRAGO.ADP", 0 }, { "56-OPERA.ADP", 0 }, +*/ + { "30.ADP", 0 }, { "31.ADP", 0 }, + { "32.ADP", 2900 }, { "33.ADP", 0 }, + { "34.ADP", 0 }, { "35.ADP", 0 }, + { "36.ADP", 0 }, { "37.ADP", 0 }, + { "38.ADP", 0 }, { "39.ADP", 0 }, +/* + { "FLAUTARP.ADP", 0 }, { "01-2001.ADP", 1920 }, + { "02-INTROPANORAMICA.ADP", 1560 }, { "03-PANORAMICA.ADP", 1920 }, + { "04-INTERNI.ADP", 1920 }, { "05-CADEPIUMA.ADP", 1920 }, + { "06-SCENDESCALE.ADP", 1920 }, { "07-THRILL.ADP", 1920 }, + { "08-CADUTAZUCCA.ADP", 1920 }, { "09-PIUMAALEGGIA.ADP", 1920 }, +*/ + { "40.ADP", 0 }, { "41.ADP", 1920 }, + { "42.ADP", 1560 }, { "43.ADP", 1920 }, + { "44.ADP", 1920 }, { "45.ADP", 1920 }, + { "46.ADP", 1920 }, { "47.ADP", 1920 }, + { "48.ADP", 1920 }, { "49.ADP", 1920 }, -bool bAlwaysDisplay; +/* + { "10-JACKZUCCONA.ADP", 1920 }, { "11-JACKIMPRECAALLAGRANDELUNA.ADP", 1920 }, + { "12-GRANDELUNALOGO.ADP", 1920 }, { "60-BACKGROUND.ADP", 0 }, + { "TONYSTAR.ADP", 0 }, { "FUNNY.ADP", 0 }, + { "60-INIZIODIALOGO.ADP", 0 }, { "60-DIALOGO.ADP", 0 }, + { "60-JACKFELICE.ADP", 0 }, { "24-TONYVIOLENTATO.ADP", 0 } +*/ -RMPoint saveTonyPos; -int saveTonyLoc; + { "50.ADP", 1920 }, { "51.ADP", 1920 }, + { "52.ADP", 1920 }, { "53.ADP", 0 }, + { "54.ADP", 0 }, { "55.ADP", 0 }, + { "56.ADP", 0 }, { "57.ADP", 0 }, + { "58.ADP", 0 }, { "59.ADP", 0 } -RMTextDialog *curBackText = NULL; -bool bTonyIsSpeaking = false; +}; -int curChangedHotspot = 0; -struct ChangedHotspotStruct { - uint32 dwCode; - uint32 nX, nY; +const char *staccFileNames[] = { +/* + "05-MUCCA.ADP", "06-HALOW.ADP", + "LETTERAINIZIO.ADP", "LETTERAPAURA.ADP", + "LETTERAFINE.ADP", "PREGAME2.ADP", + "07-TIMOT.ADP", "15-SHOTRUFUS.ADP", + "15-SHOTTONY.ADP", "27-ZUCC2.ADP", +*/ + "S00.ADP", "S01.ADP", + "S02.ADP", "S03.ADP", + "S04.ADP", "S05.ADP", + "S06.ADP", "S07.ADP", + "S08.ADP", "S09.ADP", - void Save(Common::OutSaveFile *f) { - f->writeUint32LE(dwCode); - f->writeUint32LE(nX); - f->writeUint32LE(nY); - } - void Load(Common::InSaveFile *f) { - dwCode = f->readUint32LE(); - nX = f->readUint32LE(); - nY = f->readUint32LE(); - } +/* + "53-DLOGO.ADP", "16-DIALOG1.ADP", + "TORRE1.ADP", "GARG1.ADP", + "LORENZ1.ADP", "24-FIGHT.ADP", + "08-MACBETH-PREPARA.ADP", "08-MACBETH-RECITA.ADP", + "GATTO1.ADP" +*/ + "S10.ADP", "S11.ADP", + "S12.ADP", "S13.ADP", + "S14.ADP", "S15.ADP", + "S16.ADP", "S17.ADP", + "S18.ADP" }; -ChangedHotspotStruct ChangedHotspot[256]; + void ReapplyChangedHotspot(void) { int i; - for (i = 0; i<curChangedHotspot; i++) - Loc->GetItemFromCode(ChangedHotspot[i].dwCode)->ChangeHotspot(RMPoint(ChangedHotspot[i].nX, ChangedHotspot[i].nY)); + for (i = 0; i < GLOBALS.curChangedHotspot; i++) + GLOBALS.Loc->GetItemFromCode(GLOBALS.ChangedHotspot[i].dwCode)->ChangeHotspot(RMPoint(GLOBALS.ChangedHotspot[i].nX, GLOBALS.ChangedHotspot[i].nY)); } void SaveChangedHotspot(Common::OutSaveFile *f) { - f->writeByte(curChangedHotspot); - if (curChangedHotspot > 0) { - for (int i = 0; i < curChangedHotspot; ++i) - ChangedHotspot[i].Save(f); + f->writeByte(GLOBALS.curChangedHotspot); + if (GLOBALS.curChangedHotspot > 0) { + for (int i = 0; i < GLOBALS.curChangedHotspot; ++i) + GLOBALS.ChangedHotspot[i].Save(f); } } void LoadChangedHotspot(Common::InSaveFile *f) { - curChangedHotspot = f->readByte(); + GLOBALS.curChangedHotspot = f->readByte(); - if (curChangedHotspot > 0) { - for (int i = 0; i < curChangedHotspot; ++i) - ChangedHotspot[i].Load(f); + if (GLOBALS.curChangedHotspot > 0) { + for (int i = 0; i < GLOBALS.curChangedHotspot; ++i) + GLOBALS.ChangedHotspot[i].Load(f); } } @@ -271,51 +222,51 @@ void LoadChangedHotspot(Common::InSaveFile *f) { void MCharResetCodes(void) { for (int i = 0; i < 10; i++) - MCharacter[i].item = Loc->GetItemFromCode(MCharacter[i].code); + GLOBALS.MCharacter[i].item = GLOBALS.Loc->GetItemFromCode(GLOBALS.MCharacter[i].code); for (int i = 0; i < 10; i++) - Character[i].item = Loc->GetItemFromCode(Character[i].code); + GLOBALS.Character[i].item = GLOBALS.Loc->GetItemFromCode(GLOBALS.Character[i].code); } void CharsSaveAll(Common::OutSaveFile *f) { for (int i = 0; i < 10; i++) { - f->writeByte(IsMChar[i]); - if (IsMChar[i]) { - MCharacter[i].Save(f); + f->writeByte(GLOBALS.IsMChar[i]); + if (GLOBALS.IsMChar[i]) { + GLOBALS.MCharacter[i].Save(f); } else { - Character[i].Save(f); + GLOBALS.Character[i].Save(f); } } } void CharsLoadAll(Common::InSaveFile *f) { for (int i = 0; i < 10; i++) { - IsMChar[i] = f->readByte(); - if (IsMChar[i]) - MCharacter[i].Load(f); + GLOBALS.IsMChar[i] = f->readByte(); + if (GLOBALS.IsMChar[i]) + GLOBALS.MCharacter[i].Load(f); else - Character[i].Load(f); + GLOBALS.Character[i].Load(f); } } DECLARE_CUSTOM_FUNCTION(FaceToMe)(CORO_PARAM, uint32, uint32, uint32, uint32) { - Tony->SetPattern(Tony->PAT_STANDDOWN); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_STANDDOWN); } DECLARE_CUSTOM_FUNCTION(BackToMe)(CORO_PARAM, uint32, uint32, uint32, uint32) { - Tony->SetPattern(Tony->PAT_STANDUP); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_STANDUP); } DECLARE_CUSTOM_FUNCTION(LeftToMe)(CORO_PARAM, uint32, uint32, uint32, uint32) { - Tony->SetPattern(Tony->PAT_STANDLEFT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_STANDLEFT); } DECLARE_CUSTOM_FUNCTION(RightToMe)(CORO_PARAM, uint32, uint32, uint32, uint32) { - Tony->SetPattern(Tony->PAT_STANDRIGHT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_STANDRIGHT); } DECLARE_CUSTOM_FUNCTION(TonySetPalesati)(CORO_PARAM, uint32 bStatus, uint32, uint32, uint32) { - SetPalesati(bStatus); + GLOBALS.SetPalesati(bStatus); } DECLARE_CUSTOM_FUNCTION(MySleep)(CORO_PARAM, uint32 dwTime, uint32, uint32, uint32) { @@ -325,37 +276,37 @@ DECLARE_CUSTOM_FUNCTION(MySleep)(CORO_PARAM, uint32 dwTime, uint32, uint32, uint CORO_BEGIN_CODE(_ctx); - if (!bSkipIdle) + if (!GLOBALS.bSkipIdle) CORO_INVOKE_1(CoroScheduler.sleep, dwTime); CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(SetAlwaysDisplay)(CORO_PARAM, uint32 val, uint32, uint32, uint32) { - bAlwaysDisplay = (val != 0); + GLOBALS.bAlwaysDisplay = (val != 0); } DECLARE_CUSTOM_FUNCTION(SetPointer)(CORO_PARAM, uint32 dwPointer, uint32, uint32, uint32) { switch (dwPointer) { case 1: - Pointer->SetSpecialPointer(Pointer->PTR_FRECCIASU); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_FRECCIASU); break; case 2: - Pointer->SetSpecialPointer(Pointer->PTR_FRECCIAGIU); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_FRECCIAGIU); break; case 3: - Pointer->SetSpecialPointer(Pointer->PTR_FRECCIASINISTRA); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_FRECCIASINISTRA); break; case 4: - Pointer->SetSpecialPointer(Pointer->PTR_FRECCIADESTRA); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_FRECCIADESTRA); break; case 5: - Pointer->SetSpecialPointer(Pointer->PTR_FRECCIAMAPPA); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_FRECCIAMAPPA); break; default: - Pointer->SetSpecialPointer(Pointer->PTR_NONE); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_NONE); break; } } @@ -391,7 +342,7 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX _ctx->curOffset = 0; - if (bSkipIdle) return; + if (GLOBALS.bSkipIdle) return; _ctx->msg.Load(dwMessage); if (!_ctx->msg.IsValid()) { @@ -405,7 +356,7 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX _ctx->curOffset = _ctx->curVoc->offset; // PRIMA VOLTA PREALLOCA - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); //fseek(_vm->m_vdbFP, _ctx->curOffset, SEEK_SET); _vm->_vdbFP.seek(_ctx->curOffset); _vm->_theSound.CreateSfx(&_ctx->voice); @@ -414,28 +365,28 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX _ctx->curOffset = _vm->_vdbFP.pos(); _ctx->voice->SetLoop(false); - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } - if (nTonyNextTalkType != Tony->TALK_NORMAL) { - CORO_INVOKE_1(Tony->StartTalk, nTonyNextTalkType); + if (GLOBALS.nTonyNextTalkType != GLOBALS.Tony->TALK_NORMAL) { + CORO_INVOKE_1(GLOBALS.Tony->StartTalk, GLOBALS.nTonyNextTalkType); - if (!bStaticTalk) - nTonyNextTalkType = Tony->TALK_NORMAL; + if (!GLOBALS.bStaticTalk) + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; } else { if (_ctx->msg.NumPeriods() > 1) - CORO_INVOKE_1(Tony->StartTalk, Tony->TALK_FIANCHI); + CORO_INVOKE_1(GLOBALS.Tony->StartTalk, GLOBALS.Tony->TALK_FIANCHI); else - CORO_INVOKE_1(Tony->StartTalk, Tony->TALK_NORMAL); + CORO_INVOKE_1(GLOBALS.Tony->StartTalk, GLOBALS.Tony->TALK_NORMAL); } - if (curBackText) - CORO_INVOKE_0(curBackText->Hide); + if (GLOBALS.curBackText) + CORO_INVOKE_0(GLOBALS.curBackText->Hide); - bTonyIsSpeaking = true; + GLOBALS.bTonyIsSpeaking = true; - for (_ctx->i = 0; _ctx->i < _ctx->msg.NumPeriods() && !bSkipIdle; _ctx->i++) { - _ctx->text.SetInput(Input); + for (_ctx->i = 0; _ctx->i < _ctx->msg.NumPeriods() && !GLOBALS.bSkipIdle; _ctx->i++) { + _ctx->text.SetInput(GLOBALS.Input); // Allineamento _ctx->text.SetAlignType(RMText::HCENTER, RMText::VBOTTOM); @@ -448,22 +399,22 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX // Setta la posizione if (nX == 0 && nY == 0) - _ctx->text.SetPosition(Tony->Position() - RMPoint(0, 130) - Loc->ScrollPosition()); + _ctx->text.SetPosition(GLOBALS.Tony->Position() - RMPoint(0, 130) - GLOBALS.Loc->ScrollPosition()); else - _ctx->text.SetPosition(RMPoint(nX, nY) - Loc->ScrollPosition()); + _ctx->text.SetPosition(RMPoint(nX, nY) - GLOBALS.Loc->ScrollPosition()); // Setta l'always display - if (bAlwaysDisplay) { _ctx->text.SetAlwaysDisplay(); _ctx->text.ForceTime(); } + if (GLOBALS.bAlwaysDisplay) { _ctx->text.SetAlwaysDisplay(); _ctx->text.ForceTime(); } // Registra il testo - LinkGraphicTask(&_ctx->text); + GLOBALS.LinkGraphicTask(&_ctx->text); if (_ctx->curVoc) { if (_ctx->i == 0) { _ctx->voice->Play(); _ctx->text.SetCustomSkipHandle2(_ctx->voice->hEndOfBuffer); } else { - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); // fseek(_vm->m_vdbFP, _ctx->curOffset, SEEK_SET); _vm->_vdbFP.seek(_ctx->curOffset); _vm->_theSound.CreateSfx(&_ctx->voice); @@ -473,12 +424,12 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX _ctx->voice->SetLoop(false); _ctx->voice->Play(); _ctx->text.SetCustomSkipHandle2(_ctx->voice->hEndOfBuffer); - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } } // Aspetta la fine della visualizzazione - _ctx->text.SetCustomSkipHandle(hSkipIdle); + _ctx->text.SetCustomSkipHandle(GLOBALS.hSkipIdle); CORO_INVOKE_0(_ctx->text.WaitForEndDisplay); if (_ctx->curVoc) { @@ -488,17 +439,17 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX } } - bTonyIsSpeaking = false; - if (curBackText) - curBackText->Show(); + GLOBALS.bTonyIsSpeaking = false; + if (GLOBALS.curBackText) + GLOBALS.curBackText->Show(); - CORO_INVOKE_0(Tony->EndTalk); + CORO_INVOKE_0(GLOBALS.Tony->EndTalk); CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(ChangeBoxStatus)(CORO_PARAM, uint32 nLoc, uint32 nBox, uint32 nStatus, uint32) { - Boxes->ChangeBoxStatus(nLoc,nBox,nStatus); + GLOBALS.Boxes->ChangeBoxStatus(nLoc, nBox, nStatus); } @@ -509,15 +460,15 @@ DECLARE_CUSTOM_FUNCTION(CustLoadLocation)(CORO_PARAM, uint32 nLoc, uint32 tX, ui CORO_BEGIN_CODE(_ctx); - Freeze(); + GLOBALS.Freeze(); - curChangedHotspot = 0; + GLOBALS.curChangedHotspot = 0; if (bUseStartPos != 0) - LoadLocation(nLoc, RMPoint(tX, tY), StartLocPos[nLoc]); + GLOBALS.LoadLocation(nLoc, RMPoint(tX, tY), GLOBALS.StartLocPos[nLoc]); else - LoadLocation(nLoc, RMPoint(tX, tY), RMPoint(-1, -1)); + GLOBALS.LoadLocation(nLoc, RMPoint(tX, tY), RMPoint(-1, -1)); - Unfreeze(); + GLOBALS.Unfreeze(); _ctx->h = mpalQueryDoAction(0, nLoc, 0); // On Enter? @@ -528,9 +479,6 @@ DECLARE_CUSTOM_FUNCTION(CustLoadLocation)(CORO_PARAM, uint32 nLoc, uint32 tX, ui } -RMPoint SFM_pt; -int SFM_nLoc; - DECLARE_CUSTOM_FUNCTION(SendFullscreenMsgStart)(CORO_PARAM, uint32 nMsg, uint32 nFont, uint32, uint32) { CORO_BEGIN_CONTEXT; RMMessage *msg; @@ -543,18 +491,18 @@ DECLARE_CUSTOM_FUNCTION(SendFullscreenMsgStart)(CORO_PARAM, uint32 nMsg, uint32 _ctx->msg = new RMMessage(nMsg); - SFM_nLoc = Loc->TEMPGetNumLoc(); - SFM_pt = Tony->Position(); + GLOBALS.SFM_nLoc = GLOBALS.Loc->TEMPGetNumLoc(); + GLOBALS.SFM_pt = GLOBALS.Tony->Position(); - if (bSkipIdle) + if (GLOBALS.bSkipIdle) return; - CORO_INVOKE_2(UnloadLocation, false, NULL); - Tony->Hide(); - Unfreeze(); + CORO_INVOKE_2(GLOBALS.UnloadLocation, false, NULL); + GLOBALS.Tony->Hide(); + GLOBALS.Unfreeze(); - for (_ctx->i = 0; _ctx->i < _ctx->msg->NumPeriods() && !bSkipIdle; _ctx->i++) { - _ctx->text.SetInput(Input); + for (_ctx->i = 0; _ctx->i < _ctx->msg->NumPeriods() && !GLOBALS.bSkipIdle; _ctx->i++) { + _ctx->text.SetInput(GLOBALS.Input); // Allineamento _ctx->text.SetAlignType(RMText::HCENTER,RMText::VCENTER); @@ -578,11 +526,11 @@ DECLARE_CUSTOM_FUNCTION(SendFullscreenMsgStart)(CORO_PARAM, uint32 nMsg, uint32 _ctx->text.ForceTime(); // Registra il testo - LinkGraphicTask(&_ctx->clear); - LinkGraphicTask(&_ctx->text); + GLOBALS.LinkGraphicTask(&_ctx->clear); + GLOBALS.LinkGraphicTask(&_ctx->text); // Aspetta la fine della visualizzazione - _ctx->text.SetCustomSkipHandle(hSkipIdle); + _ctx->text.SetCustomSkipHandle(GLOBALS.hSkipIdle); CORO_INVOKE_0(_ctx->text.WaitForEndDisplay); } @@ -599,19 +547,19 @@ DECLARE_CUSTOM_FUNCTION(ClearScreen)(CORO_PARAM, uint32, uint32, uint32, uint32) CORO_BEGIN_CODE(_ctx); - LinkGraphicTask(&_ctx->clear); + GLOBALS.LinkGraphicTask(&_ctx->clear); - CORO_INVOKE_0(WaitFrame); + CORO_INVOKE_0(GLOBALS.WaitFrame); CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(SendFullscreenMsgEnd)(CORO_PARAM, uint32 bNotEnableTony, uint32, uint32, uint32) { - Freeze(); - LoadLocation(SFM_nLoc,RMPoint(SFM_pt.x,SFM_pt.y),RMPoint(-1,-1)); + GLOBALS.Freeze(); + GLOBALS.LoadLocation(GLOBALS.SFM_nLoc,RMPoint(GLOBALS.SFM_pt.x,GLOBALS.SFM_pt.y),RMPoint(-1,-1)); if (!bNotEnableTony) - Tony->Show(); - Unfreeze(); + GLOBALS.Tony->Show(); + GLOBALS.Unfreeze(); MCharResetCodes(); ReapplyChangedHotspot(); @@ -630,10 +578,8 @@ DECLARE_CUSTOM_FUNCTION(SendFullscreenMessage)(CORO_PARAM, uint32 nMsg, uint32 n CORO_END_CODE; } -bool bNoOcchioDiBue = false; - DECLARE_CUSTOM_FUNCTION(NoOcchioDiBue)(CORO_PARAM, uint32, uint32, uint32, uint32) { - bNoOcchioDiBue = true; + GLOBALS.bNoOcchioDiBue = true; } DECLARE_CUSTOM_FUNCTION(CloseLocation)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -642,16 +588,16 @@ DECLARE_CUSTOM_FUNCTION(CloseLocation)(CORO_PARAM, uint32, uint32, uint32, uint3 CORO_BEGIN_CODE(_ctx); - if (!bNoOcchioDiBue) { - InitWipe(1); - CORO_INVOKE_0(WaitWipeEnd); + if (!GLOBALS.bNoOcchioDiBue) { + GLOBALS.InitWipe(1); + CORO_INVOKE_0(GLOBALS.WaitWipeEnd); } _vm->StopMusic(4); // On Exit e lascia freezzato - CORO_INVOKE_2(UnloadLocation, true, NULL); - Unfreeze(); + CORO_INVOKE_2(GLOBALS.UnloadLocation, true, NULL); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -664,45 +610,45 @@ DECLARE_CUSTOM_FUNCTION(ChangeLocation)(CORO_PARAM, uint32 nLoc, uint32 tX, uint CORO_BEGIN_CODE(_ctx); - if (!bNoOcchioDiBue) { - InitWipe(1); - CORO_INVOKE_0(WaitWipeEnd); + if (!GLOBALS.bNoOcchioDiBue) { + GLOBALS.InitWipe(1); + CORO_INVOKE_0(GLOBALS.WaitWipeEnd); } - if (lastTappeto != tappeti[nLoc]) { + if (GLOBALS.lastTappeto != GLOBALS.tappeti[nLoc]) { _vm->StopMusic(4); } // On Exit e lascia freezzato - CORO_INVOKE_2(UnloadLocation, true, NULL); + CORO_INVOKE_2(GLOBALS.UnloadLocation, true, NULL); - curChangedHotspot = 0; + GLOBALS.curChangedHotspot = 0; if (bUseStartPos != 0) - LoadLocation(nLoc, RMPoint(tX, tY), StartLocPos[nLoc]); + GLOBALS.LoadLocation(nLoc, RMPoint(tX, tY), GLOBALS.StartLocPos[nLoc]); else - LoadLocation(nLoc, RMPoint(tX, tY), RMPoint(-1, -1)); + GLOBALS.LoadLocation(nLoc, RMPoint(tX, tY), RMPoint(-1, -1)); - if (lastTappeto != tappeti[nLoc]) { - lastTappeto = tappeti[nLoc]; - if (lastTappeto != 0) - _vm->PlayMusic(4, tappetiFile[lastTappeto], 0, true, 2000); + if (GLOBALS.lastTappeto != GLOBALS.tappeti[nLoc]) { + GLOBALS.lastTappeto = GLOBALS.tappeti[nLoc]; + if (GLOBALS.lastTappeto != 0) + _vm->PlayMusic(4, tappetiFile[GLOBALS.lastTappeto], 0, true, 2000); } - if (!bNoOcchioDiBue) { - InitWipe(2); + if (!GLOBALS.bNoOcchioDiBue) { + GLOBALS.InitWipe(2); } - Unfreeze(); + GLOBALS.Unfreeze(); _ctx->h = mpalQueryDoAction(0, nLoc, 0); - if (!bNoOcchioDiBue) { - CORO_INVOKE_0(WaitWipeEnd); - CloseWipe(); + if (!GLOBALS.bNoOcchioDiBue) { + CORO_INVOKE_0(GLOBALS.WaitWipeEnd); + GLOBALS.CloseWipe(); } - bNoOcchioDiBue = false; + GLOBALS.bNoOcchioDiBue = false; // On Enter? if (_ctx->h != CORO_INVALID_PID_VALUE) @@ -712,12 +658,12 @@ DECLARE_CUSTOM_FUNCTION(ChangeLocation)(CORO_PARAM, uint32 nLoc, uint32 tX, uint } DECLARE_CUSTOM_FUNCTION(SetLocStartPosition)(CORO_PARAM, uint32 nLoc, uint32 lX, uint32 lY, uint32) { - StartLocPos[nLoc].Set(lX,lY); + GLOBALS.StartLocPos[nLoc].Set(lX,lY); } DECLARE_CUSTOM_FUNCTION(SaveTonyPosition)(CORO_PARAM, uint32, uint32, uint32, uint32) { - saveTonyPos = Tony->Position(); - saveTonyLoc = Loc->TEMPGetNumLoc(); + GLOBALS.saveTonyPos = GLOBALS.Tony->Position(); + GLOBALS.saveTonyLoc = GLOBALS.Loc->TEMPGetNumLoc(); } DECLARE_CUSTOM_FUNCTION(RestoreTonyPosition)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -726,7 +672,7 @@ DECLARE_CUSTOM_FUNCTION(RestoreTonyPosition)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_4(ChangeLocation, saveTonyLoc, saveTonyPos.x, saveTonyPos.y, 0); + CORO_INVOKE_4(ChangeLocation, GLOBALS.saveTonyLoc, GLOBALS.saveTonyPos.x, GLOBALS.saveTonyPos.y, 0); MCharResetCodes(); @@ -744,16 +690,16 @@ DECLARE_CUSTOM_FUNCTION(EnableInput)(CORO_PARAM, uint32, uint32, uint32, uint32) } DECLARE_CUSTOM_FUNCTION(StopTony)(CORO_PARAM, uint32, uint32, uint32, uint32) { - Tony->StopNoAction(coroParam); + GLOBALS.Tony->StopNoAction(coroParam); } DECLARE_CUSTOM_FUNCTION(CustEnableGUI)(CORO_PARAM, uint32, uint32, uint32, uint32) { - EnableGUI(); + GLOBALS.EnableGUI(); } DECLARE_CUSTOM_FUNCTION(CustDisableGUI)(CORO_PARAM, uint32, uint32, uint32, uint32) { - DisableGUI(); + GLOBALS.DisableGUI(); } @@ -764,12 +710,12 @@ void TonyGenericTake1(CORO_PARAM, uint32 nDirection) { CORO_BEGIN_CODE(_ctx); - Freeze(); - Tony->Take(nDirection, 0); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Tony->Take(nDirection, 0); + GLOBALS.Unfreeze(); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndPattern); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); CORO_END_CODE; } @@ -780,16 +726,16 @@ void TonyGenericTake2(CORO_PARAM, uint32 nDirection) { CORO_BEGIN_CODE(_ctx); - Freeze(); - Tony->Take(nDirection, 1); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Tony->Take(nDirection, 1); + GLOBALS.Unfreeze(); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndPattern); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); - Freeze(); - Tony->Take(nDirection,2); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Tony->Take(nDirection,2); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -800,12 +746,12 @@ void TonyGenericPut1(CORO_PARAM, uint32 nDirection) { CORO_BEGIN_CODE(_ctx); - Freeze(); - Tony->Put(nDirection, 0); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Tony->Put(nDirection, 0); + GLOBALS.Unfreeze(); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndPattern); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); CORO_END_CODE; } @@ -816,16 +762,16 @@ void TonyGenericPut2(CORO_PARAM, uint32 nDirection) { CORO_BEGIN_CODE(_ctx); - Freeze(); - Tony->Put(nDirection,1); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Tony->Put(nDirection,1); + GLOBALS.Unfreeze(); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndPattern); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); - Freeze(); - Tony->Put(nDirection,2); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Tony->Put(nDirection,2); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -890,9 +836,9 @@ DECLARE_CUSTOM_FUNCTION(TonyPutDown2)(CORO_PARAM, uint32, uint32, uint32, uint32 DECLARE_CUSTOM_FUNCTION(TonyPerTerra)(CORO_PARAM, uint32 dwParte, uint32, uint32, uint32) { if (dwParte == 0) - Tony->SetPattern(Tony->PAT_PERTERRALEFT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_PERTERRALEFT); else - Tony->SetPattern(Tony->PAT_PERTERRARIGHT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_PERTERRARIGHT); } DECLARE_CUSTOM_FUNCTION(TonySiRialza)(CORO_PARAM, uint32 dwParte, uint32, uint32, uint32) { @@ -902,18 +848,18 @@ DECLARE_CUSTOM_FUNCTION(TonySiRialza)(CORO_PARAM, uint32 dwParte, uint32, uint32 CORO_BEGIN_CODE(_ctx); if (dwParte == 0) - Tony->SetPattern(Tony->PAT_SIRIALZALEFT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_SIRIALZALEFT); else - Tony->SetPattern(Tony->PAT_SIRIALZARIGHT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_SIRIALZARIGHT); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndPattern); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(TonyPastorella)(CORO_PARAM, uint32 bIsPast, uint32, uint32, uint32) { - Tony->SetPastorella(bIsPast); + GLOBALS.Tony->SetPastorella(bIsPast); } DECLARE_CUSTOM_FUNCTION(TonyFischietto)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -922,104 +868,104 @@ DECLARE_CUSTOM_FUNCTION(TonyFischietto)(CORO_PARAM, uint32, uint32, uint32, uint CORO_BEGIN_CODE(_ctx); - Tony->SetPattern(Tony->PAT_FISCHIETTORIGHT); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndPattern); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_FISCHIETTORIGHT); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); - Tony->SetPattern(Tony->PAT_STANDRIGHT); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_STANDRIGHT); CORO_END_CODE; } void TonySetNumTexts(uint32 dwText) { - dwTonyNumTexts=dwText; - bTonyInTexts = false; + GLOBALS.dwTonyNumTexts = dwText; + GLOBALS.bTonyInTexts = false; } DECLARE_CUSTOM_FUNCTION(TonyRide)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_RIDE; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_RIDE; } DECLARE_CUSTOM_FUNCTION(TonyRidacchia)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_RIDE2; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_RIDE2; } DECLARE_CUSTOM_FUNCTION(TonyFianchi)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_FIANCHI; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_FIANCHI; } DECLARE_CUSTOM_FUNCTION(TonyCanta)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CANTA; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CANTA; } DECLARE_CUSTOM_FUNCTION(TonySiIndica)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_SIINDICA; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_SIINDICA; } DECLARE_CUSTOM_FUNCTION(TonySpaventatoConMani)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_SPAVENTATO; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_SPAVENTATO; } DECLARE_CUSTOM_FUNCTION(TonySpaventatoSenzaMani)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_SPAVENTATO2; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_SPAVENTATO2; } DECLARE_CUSTOM_FUNCTION(TonyConMartello)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONMARTELLO; - Tony->SetPattern(Tony->PAT_CONMARTELLO); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONMARTELLO; + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_CONMARTELLO); } DECLARE_CUSTOM_FUNCTION(TonyConBicchiere)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONBICCHIERE; - Tony->SetPattern(Tony->PAT_CONBICCHIERE); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONBICCHIERE; + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_CONBICCHIERE); } DECLARE_CUSTOM_FUNCTION(TonyConVerme)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONVERME; - Tony->SetPattern(Tony->PAT_CONVERME); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONVERME; + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_CONVERME); } DECLARE_CUSTOM_FUNCTION(TonyConCorda)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONCORDA; - Tony->SetPattern(Tony->PAT_CONCORDA); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONCORDA; + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_CONCORDA); } DECLARE_CUSTOM_FUNCTION(TonyConSegretaria)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONSEGRETARIA; - Tony->SetPattern(Tony->PAT_CONSEGRETARIA); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONSEGRETARIA; + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_CONSEGRETARIA); } DECLARE_CUSTOM_FUNCTION(TonyConConiglioANIM)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONCONIGLIO; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONCONIGLIO; } DECLARE_CUSTOM_FUNCTION(TonyConRicettaANIM)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONRICETTA; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONRICETTA; } DECLARE_CUSTOM_FUNCTION(TonyConCarteANIM)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONCARTE; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONCARTE; } DECLARE_CUSTOM_FUNCTION(TonyConPupazzoANIM)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_CONPUPAZZO; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONPUPAZZO; } DECLARE_CUSTOM_FUNCTION(TonyConPupazzoStart)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -1028,9 +974,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConPupazzoStart)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONPUPAZZOSTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONPUPAZZOSTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONPUPAZZOSTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONPUPAZZOSTATIC); CORO_END_CODE; } @@ -1041,9 +987,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConPupazzoEnd)(CORO_PARAM, uint32, uint32, uint32, u CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONPUPAZZOSTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONPUPAZZOSTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1054,9 +1000,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConConiglioStart)(CORO_PARAM, uint32, uint32, uint32 CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONCONIGLIOSTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONCONIGLIOSTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONCONIGLIOSTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONCONIGLIOSTATIC); CORO_END_CODE; } @@ -1067,9 +1013,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConConiglioEnd)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONCONIGLIOSTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONCONIGLIOSTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1080,9 +1026,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConRicettaStart)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONRICETTASTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONRICETTASTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONRICETTASTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONRICETTASTATIC); CORO_END_CODE; } @@ -1093,9 +1039,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConRicettaEnd)(CORO_PARAM, uint32, uint32, uint32, u CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONRICETTASTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONRICETTASTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1106,9 +1052,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConCarteStart)(CORO_PARAM, uint32, uint32, uint32, u CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONCARTESTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONCARTESTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONCARTESTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONCARTESTATIC); CORO_END_CODE; } @@ -1119,9 +1065,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConCarteEnd)(CORO_PARAM, uint32, uint32, uint32, uin CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONCARTESTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONCARTESTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1132,9 +1078,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConTaccuinoStart)(CORO_PARAM, uint32, uint32, uint32 CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONTACCUINOSTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONTACCUINOSTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONTACCUINOSTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONTACCUINOSTATIC); CORO_END_CODE; } @@ -1145,9 +1091,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConTaccuinoEnd)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONTACCUINOSTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONTACCUINOSTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1158,9 +1104,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConMegafonoStart)(CORO_PARAM, uint32, uint32, uint32 CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONMEGAFONOSTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONMEGAFONOSTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONMEGAFONOSTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONMEGAFONOSTATIC); CORO_END_CODE; } @@ -1171,9 +1117,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConMegafonoEnd)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONMEGAFONOSTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONMEGAFONOSTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1184,9 +1130,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConBarbaStart)(CORO_PARAM, uint32, uint32, uint32, u CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_CONBARBASTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_CONBARBASTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_CONBARBASTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_CONBARBASTATIC); CORO_END_CODE; } @@ -1197,9 +1143,9 @@ DECLARE_CUSTOM_FUNCTION(TonyConBarbaEnd)(CORO_PARAM, uint32, uint32, uint32, uin CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_CONBARBASTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_CONBARBASTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1210,9 +1156,9 @@ DECLARE_CUSTOM_FUNCTION(TonySpaventatoStart)(CORO_PARAM, uint32, uint32, uint32, CORO_BEGIN_CODE(_ctx); - nTonyNextTalkType = Tony->TALK_SPAVENTATOSTATIC; - bStaticTalk = true; - CORO_INVOKE_1(Tony->StartStatic, Tony->TALK_SPAVENTATOSTATIC); + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_SPAVENTATOSTATIC; + GLOBALS.bStaticTalk = true; + CORO_INVOKE_1(GLOBALS.Tony->StartStatic, GLOBALS.Tony->TALK_SPAVENTATOSTATIC); CORO_END_CODE; } @@ -1223,9 +1169,9 @@ DECLARE_CUSTOM_FUNCTION(TonySpaventatoEnd)(CORO_PARAM, uint32, uint32, uint32, u CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->EndStatic, Tony->TALK_SPAVENTATOSTATIC); - bStaticTalk = false; - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->EndStatic, GLOBALS.Tony->TALK_SPAVENTATOSTATIC); + GLOBALS.bStaticTalk = false; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; CORO_END_CODE; } @@ -1233,7 +1179,7 @@ DECLARE_CUSTOM_FUNCTION(TonySpaventatoEnd)(CORO_PARAM, uint32, uint32, uint32, u DECLARE_CUSTOM_FUNCTION(TonySchifato)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_SCHIFATO; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_SCHIFATO; } DECLARE_CUSTOM_FUNCTION(TonySniffaLeft)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -1242,8 +1188,8 @@ DECLARE_CUSTOM_FUNCTION(TonySniffaLeft)(CORO_PARAM, uint32, uint32, uint32, uint CORO_BEGIN_CODE(_ctx); - Tony->SetPattern(Tony->PAT_SNIFFA_LEFT); - CORO_INVOKE_0(Tony->WaitForEndPattern); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_SNIFFA_LEFT); + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); CORO_INVOKE_4(LeftToMe, 0, 0, 0, 0); CORO_END_CODE; @@ -1255,8 +1201,8 @@ DECLARE_CUSTOM_FUNCTION(TonySniffaRight)(CORO_PARAM, uint32, uint32, uint32, uin CORO_BEGIN_CODE(_ctx); - Tony->SetPattern(Tony->PAT_SNIFFA_RIGHT); - CORO_INVOKE_0(Tony->WaitForEndPattern); + GLOBALS.Tony->SetPattern(GLOBALS.Tony->PAT_SNIFFA_RIGHT); + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndPattern); CORO_INVOKE_4(RightToMe, 0, 0, 0, 0); CORO_END_CODE; @@ -1264,48 +1210,48 @@ DECLARE_CUSTOM_FUNCTION(TonySniffaRight)(CORO_PARAM, uint32, uint32, uint32, uin DECLARE_CUSTOM_FUNCTION(TonyNaah)(CORO_PARAM, uint32 dwText, uint32, uint32, uint32) { TonySetNumTexts(dwText); - nTonyNextTalkType = Tony->TALK_NAAH; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NAAH; } DECLARE_CUSTOM_FUNCTION(TonyMacbeth)(CORO_PARAM, uint32 nPos, uint32, uint32, uint32) { switch (nPos) { case 1: - nTonyNextTalkType = Tony->TALK_MACBETH1; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH1; break; case 2: - nTonyNextTalkType = Tony->TALK_MACBETH2; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH2; break; case 3: - nTonyNextTalkType = Tony->TALK_MACBETH3; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH3; break; case 4: - nTonyNextTalkType = Tony->TALK_MACBETH4; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH4; break; case 5: - nTonyNextTalkType = Tony->TALK_MACBETH5; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH5; break; case 6: - nTonyNextTalkType = Tony->TALK_MACBETH6; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH6; break; case 7: - nTonyNextTalkType = Tony->TALK_MACBETH7; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH7; break; case 8: - nTonyNextTalkType = Tony->TALK_MACBETH8; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH8; break; case 9: - nTonyNextTalkType = Tony->TALK_MACBETH9; + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_MACBETH9; break; } } DECLARE_CUSTOM_FUNCTION(EnableTony)(CORO_PARAM, uint32, uint32, uint32, uint32) { - Tony->Show(); + GLOBALS.Tony->Show(); } DECLARE_CUSTOM_FUNCTION(DisableTony)(CORO_PARAM, uint32 bShowOmbra, uint32, uint32, uint32) { - Tony->Hide(bShowOmbra); + GLOBALS.Tony->Hide(bShowOmbra); } DECLARE_CUSTOM_FUNCTION(WaitForPatternEnd)(CORO_PARAM, uint32 nItem, uint32, uint32, uint32) { @@ -1315,17 +1261,17 @@ DECLARE_CUSTOM_FUNCTION(WaitForPatternEnd)(CORO_PARAM, uint32 nItem, uint32, uin CORO_BEGIN_CODE(_ctx); - _ctx->item = Loc->GetItemFromCode(nItem); + _ctx->item = GLOBALS.Loc->GetItemFromCode(nItem); - if (!bSkipIdle && _ctx->item != NULL) - CORO_INVOKE_1(_ctx->item->WaitForEndPattern, hSkipIdle); + if (!GLOBALS.bSkipIdle && _ctx->item != NULL) + CORO_INVOKE_1(_ctx->item->WaitForEndPattern, GLOBALS.hSkipIdle); CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(SetTonyPosition)(CORO_PARAM, uint32 nX, uint32 nY, uint32 nLoc, uint32) { - Tony->SetPosition(RMPoint(nX, nY), nLoc); + GLOBALS.Tony->SetPosition(RMPoint(nX, nY), nLoc); } DECLARE_CUSTOM_FUNCTION(MoveTonyAndWait)(CORO_PARAM, uint32 nX, uint32 nY, uint32, uint32) { @@ -1334,16 +1280,16 @@ DECLARE_CUSTOM_FUNCTION(MoveTonyAndWait)(CORO_PARAM, uint32 nX, uint32 nY, uint3 CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_1(Tony->Move, RMPoint(nX, nY)); + CORO_INVOKE_1(GLOBALS.Tony->Move, RMPoint(nX, nY)); - if (!bSkipIdle) - CORO_INVOKE_0(Tony->WaitForEndMovement); + if (!GLOBALS.bSkipIdle) + CORO_INVOKE_0(GLOBALS.Tony->WaitForEndMovement); CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(MoveTony)(CORO_PARAM, uint32 nX, uint32 nY, uint32, uint32) { - Tony->Move(coroParam, RMPoint(nX, nY)); + GLOBALS.Tony->Move(coroParam, RMPoint(nX, nY)); } DECLARE_CUSTOM_FUNCTION(ScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, uint32 sX, uint32 sY) { @@ -1358,9 +1304,9 @@ DECLARE_CUSTOM_FUNCTION(ScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, uint32 _ctx->lx = (int32)nX; _ctx->ly = (int32)nY; - _ctx->pt = Loc->ScrollPosition(); + _ctx->pt = GLOBALS.Loc->ScrollPosition(); - while ((_ctx->lx != 0 || _ctx->ly != 0) && !bSkipIdle) { + while ((_ctx->lx != 0 || _ctx->ly != 0) && !GLOBALS.bSkipIdle) { if (_ctx->lx > 0) { _ctx->lx -= (int32)sX; if (_ctx->lx < 0) _ctx->lx = 0; _ctx->pt.Offset((int32)sX, 0); @@ -1377,12 +1323,12 @@ DECLARE_CUSTOM_FUNCTION(ScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, uint32 _ctx->pt.Offset(0, -(int32)sY); } - CORO_INVOKE_0(WaitFrame); + CORO_INVOKE_0(GLOBALS.WaitFrame); - Freeze(); - Loc->SetScrollPosition(_ctx->pt); - Tony->SetScrollPosition(_ctx->pt); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Loc->SetScrollPosition(_ctx->pt); + GLOBALS.Tony->SetScrollPosition(_ctx->pt); + GLOBALS.Unfreeze(); } CORO_END_CODE; @@ -1410,7 +1356,7 @@ DECLARE_CUSTOM_FUNCTION(SyncScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, ui _ctx->stepX = sX; _ctx->stepY = sY; - _ctx->startpt = Loc->ScrollPosition(); + _ctx->startpt = GLOBALS.Loc->ScrollPosition(); _ctx->dwStartTime = _vm->GetTime(); @@ -1419,7 +1365,7 @@ DECLARE_CUSTOM_FUNCTION(SyncScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, ui else _ctx->dwTotalTime = _ctx->dimy * (1000 / 35) / sY; - while ((_ctx->lx != 0 || _ctx->ly != 0) && !bSkipIdle) { + while ((_ctx->lx != 0 || _ctx->ly != 0) && !GLOBALS.bSkipIdle) { _ctx->dwCurTime = _vm->GetTime() - _ctx->dwStartTime; if (_ctx->dwCurTime > _ctx->dwTotalTime) break; @@ -1459,12 +1405,12 @@ DECLARE_CUSTOM_FUNCTION(SyncScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, ui _ctx->pt.Offset(0,-sY); } */ - CORO_INVOKE_0(WaitFrame); + CORO_INVOKE_0(GLOBALS.WaitFrame); - Freeze(); - Loc->SetScrollPosition(_ctx->pt); - Tony->SetScrollPosition(_ctx->pt); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Loc->SetScrollPosition(_ctx->pt); + GLOBALS.Tony->SetScrollPosition(_ctx->pt); + GLOBALS.Unfreeze(); } @@ -1482,10 +1428,10 @@ DECLARE_CUSTOM_FUNCTION(SyncScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, ui _ctx->pt.y = _ctx->startpt.y - _ctx->dimy; } - Freeze(); - Loc->SetScrollPosition(_ctx->pt); - Tony->SetScrollPosition(_ctx->pt); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Loc->SetScrollPosition(_ctx->pt); + GLOBALS.Tony->SetScrollPosition(_ctx->pt); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -1494,21 +1440,21 @@ DECLARE_CUSTOM_FUNCTION(SyncScrollLocation)(CORO_PARAM, uint32 nX, uint32 nY, ui DECLARE_CUSTOM_FUNCTION(ChangeHotspot)(CORO_PARAM, uint32 dwCode, uint32 nX, uint32 nY, uint32) { int i; - for (i = 0; i < curChangedHotspot; i++) - if (ChangedHotspot[i].dwCode == dwCode) { - ChangedHotspot[i].nX=nX; - ChangedHotspot[i].nY=nY; + for (i = 0; i < GLOBALS.curChangedHotspot; i++) + if (GLOBALS.ChangedHotspot[i].dwCode == dwCode) { + GLOBALS.ChangedHotspot[i].nX=nX; + GLOBALS.ChangedHotspot[i].nY=nY; break; } - if (i == curChangedHotspot) { - ChangedHotspot[i].dwCode=dwCode; - ChangedHotspot[i].nX=nX; - ChangedHotspot[i].nY=nY; - curChangedHotspot++; + if (i == GLOBALS.curChangedHotspot) { + GLOBALS.ChangedHotspot[i].dwCode=dwCode; + GLOBALS.ChangedHotspot[i].nX=nX; + GLOBALS.ChangedHotspot[i].nY=nY; + GLOBALS.curChangedHotspot++; } - Loc->GetItemFromCode(dwCode)->ChangeHotspot(RMPoint(nX, nY)); + GLOBALS.Loc->GetItemFromCode(dwCode)->ChangeHotspot(RMPoint(nX, nY)); } @@ -1535,12 +1481,12 @@ DECLARE_CUSTOM_FUNCTION(TremaSchermo)(CORO_PARAM, uint32 nScosse, uint32, uint32 _ctx->diry = 1; while (_vm->GetTime() < _ctx->curTime + nScosse) { - CORO_INVOKE_0(WaitFrame); + CORO_INVOKE_0(GLOBALS.WaitFrame); - Freeze(); - Loc->SetFixedScroll(RMPoint(1 * _ctx->dirx, 1 * _ctx->diry)); - Tony->SetFixedScroll(RMPoint(1 * _ctx->dirx, 1 * _ctx->diry)); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Loc->SetFixedScroll(RMPoint(1 * _ctx->dirx, 1 * _ctx->diry)); + GLOBALS.Tony->SetFixedScroll(RMPoint(1 * _ctx->dirx, 1 * _ctx->diry)); + GLOBALS.Unfreeze(); _ctx->i = _vm->_randomSource.getRandomNumber(2); @@ -1550,10 +1496,10 @@ DECLARE_CUSTOM_FUNCTION(TremaSchermo)(CORO_PARAM, uint32 nScosse, uint32, uint32 _ctx->diry = -_ctx->diry; } - Freeze(); - Loc->SetFixedScroll(RMPoint(0, 0)); - Tony->SetFixedScroll(RMPoint(0, 0)); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Loc->SetFixedScroll(RMPoint(0, 0)); + GLOBALS.Tony->SetFixedScroll(RMPoint(0, 0)); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -1566,36 +1512,36 @@ DECLARE_CUSTOM_FUNCTION(TremaSchermo)(CORO_PARAM, uint32 nScosse, uint32, uint32 DECLARE_CUSTOM_FUNCTION(CharSetCode)(CORO_PARAM, uint32 nChar, uint32 nCode, uint32, uint32) { assert(nChar < 16); - Character[nChar].code = nCode; - Character[nChar].item = Loc->GetItemFromCode(nCode); - Character[nChar].r = 255; - Character[nChar].g = 255; - Character[nChar].b = 255; - Character[nChar].talkpattern = 0; - Character[nChar].starttalkpattern = 0; - Character[nChar].endtalkpattern = 0; - Character[nChar].standpattern = 0; + GLOBALS.Character[nChar].code = nCode; + GLOBALS.Character[nChar].item = GLOBALS.Loc->GetItemFromCode(nCode); + GLOBALS.Character[nChar].r = 255; + GLOBALS.Character[nChar].g = 255; + GLOBALS.Character[nChar].b = 255; + GLOBALS.Character[nChar].talkpattern = 0; + GLOBALS.Character[nChar].starttalkpattern = 0; + GLOBALS.Character[nChar].endtalkpattern = 0; + GLOBALS.Character[nChar].standpattern = 0; - IsMChar[nChar] = false; + GLOBALS.IsMChar[nChar] = false; } DECLARE_CUSTOM_FUNCTION(CharSetColor)(CORO_PARAM, uint32 nChar, uint32 r, uint32 g, uint32 b) { assert(nChar<16); - Character[nChar].r = r; - Character[nChar].g = g; - Character[nChar].b = b; + GLOBALS.Character[nChar].r = r; + GLOBALS.Character[nChar].g = g; + GLOBALS.Character[nChar].b = b; } DECLARE_CUSTOM_FUNCTION(CharSetTalkPattern)(CORO_PARAM, uint32 nChar, uint32 tp, uint32 sp, uint32) { assert(nChar<16); - Character[nChar].talkpattern = tp; - Character[nChar].standpattern = sp; + GLOBALS.Character[nChar].talkpattern = tp; + GLOBALS.Character[nChar].standpattern = sp; } DECLARE_CUSTOM_FUNCTION(CharSetStartEndTalkPattern)(CORO_PARAM, uint32 nChar, uint32 sp, uint32 ep, uint32) { assert(nChar<16); - Character[nChar].starttalkpattern=sp; - Character[nChar].endtalkpattern=ep; + GLOBALS.Character[nChar].starttalkpattern=sp; + GLOBALS.Character[nChar].endtalkpattern=ep; } DECLARE_CUSTOM_FUNCTION(CharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMessage, uint32 bIsBack, uint32) { @@ -1615,40 +1561,40 @@ DECLARE_CUSTOM_FUNCTION(CharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMess _ctx->curOffset = 0; assert(nChar < 16); - _ctx->pt = Character[nChar].item->CalculatePos() - RMPoint(-60, 20) - Loc->ScrollPosition(); + _ctx->pt = GLOBALS.Character[nChar].item->CalculatePos() - RMPoint(-60, 20) - GLOBALS.Loc->ScrollPosition(); - if (Character[nChar].starttalkpattern != 0) { - Freeze(); - Character[nChar].item->SetPattern(Character[nChar].starttalkpattern); - Unfreeze(); + if (GLOBALS.Character[nChar].starttalkpattern != 0) { + GLOBALS.Freeze(); + GLOBALS.Character[nChar].item->SetPattern(GLOBALS.Character[nChar].starttalkpattern); + GLOBALS.Unfreeze(); - CORO_INVOKE_0(Character[nChar].item->WaitForEndPattern); + CORO_INVOKE_0(GLOBALS.Character[nChar].item->WaitForEndPattern); } - Freeze(); - Character[nChar].item->SetPattern(Character[nChar].talkpattern); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Character[nChar].item->SetPattern(GLOBALS.Character[nChar].talkpattern); + GLOBALS.Unfreeze(); _ctx->curVoc = SearchVoiceHeader(0, dwMessage); _ctx->voice = NULL; if (_ctx->curVoc) { // Si posiziona all'interno del database delle voci all'inizio della prima // fseek(_vm->m_vdbFP, _ctx->curVoc->offset, SEEK_SET); - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); _vm->_vdbFP.seek(_ctx->curVoc->offset); _ctx->curOffset = _ctx->curVoc->offset; - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } - for (_ctx->i = 0; _ctx->i<_ctx->msg->NumPeriods() && !bSkipIdle; _ctx->i++) { + for (_ctx->i = 0; _ctx->i<_ctx->msg->NumPeriods() && !GLOBALS.bSkipIdle; _ctx->i++) { if (bIsBack) { - curBackText = _ctx->text = new RMTextDialogScrolling(Loc); - if (bTonyIsSpeaking) - CORO_INVOKE_0(curBackText->Hide); + GLOBALS.curBackText = _ctx->text = new RMTextDialogScrolling(GLOBALS.Loc); + if (GLOBALS.bTonyIsSpeaking) + CORO_INVOKE_0(GLOBALS.curBackText->Hide); } else _ctx->text = new RMTextDialog; - _ctx->text->SetInput(Input); + _ctx->text->SetInput(GLOBALS.Input); // Skipping _ctx->text->SetSkipStatus(!bIsBack); @@ -1657,7 +1603,7 @@ DECLARE_CUSTOM_FUNCTION(CharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMess _ctx->text->SetAlignType(RMText::HCENTER,RMText::VBOTTOM); // Colore - _ctx->text->SetColor(Character[nChar].r,Character[nChar].g,Character[nChar].b); + _ctx->text->SetColor(GLOBALS.Character[nChar].r,GLOBALS.Character[nChar].g,GLOBALS.Character[nChar].b); // Scrive il testo _ctx->text->WriteText((*_ctx->msg)[_ctx->i],0); @@ -1666,13 +1612,13 @@ DECLARE_CUSTOM_FUNCTION(CharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMess _ctx->text->SetPosition(_ctx->pt); // Setta l'always display - if (bAlwaysDisplay) { _ctx->text->SetAlwaysDisplay(); _ctx->text->ForceTime(); } + if (GLOBALS.bAlwaysDisplay) { _ctx->text->SetAlwaysDisplay(); _ctx->text->ForceTime(); } // Registra il testo - LinkGraphicTask(_ctx->text); + GLOBALS.LinkGraphicTask(_ctx->text); if (_ctx->curVoc) { - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); _vm->_theSound.CreateSfx(&_ctx->voice); _vm->_vdbFP.seek(_ctx->curOffset); _ctx->voice->LoadVoiceFromVDB(_vm->_vdbFP); @@ -1681,11 +1627,11 @@ DECLARE_CUSTOM_FUNCTION(CharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMess _ctx->voice->Play(); _ctx->text->SetCustomSkipHandle2(_ctx->voice->hEndOfBuffer); _ctx->curOffset = _vm->_vdbFP.pos(); - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } // Aspetta la fine della visualizzazione - _ctx->text->SetCustomSkipHandle(hSkipIdle); + _ctx->text->SetCustomSkipHandle(GLOBALS.hSkipIdle); CORO_INVOKE_0(_ctx->text->WaitForEndDisplay); if (_ctx->curVoc) { @@ -1695,83 +1641,81 @@ DECLARE_CUSTOM_FUNCTION(CharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMess } - curBackText=NULL; + GLOBALS.curBackText = NULL; delete _ctx->text; } - if (Character[nChar].endtalkpattern != 0) { - Freeze(); - Character[nChar].item->SetPattern(Character[nChar].endtalkpattern); - Unfreeze(); - CORO_INVOKE_0(Character[nChar].item->WaitForEndPattern); + if (GLOBALS.Character[nChar].endtalkpattern != 0) { + GLOBALS.Freeze(); + GLOBALS.Character[nChar].item->SetPattern(GLOBALS.Character[nChar].endtalkpattern); + GLOBALS.Unfreeze(); + CORO_INVOKE_0(GLOBALS.Character[nChar].item->WaitForEndPattern); } - Freeze(); - Character[nChar].item->SetPattern(Character[nChar].standpattern); - Unfreeze(); + GLOBALS.Freeze(); + GLOBALS.Character[nChar].item->SetPattern(GLOBALS.Character[nChar].standpattern); + GLOBALS.Unfreeze(); delete _ctx->msg; CORO_END_CODE; } DECLARE_CUSTOM_FUNCTION(AddInventory)(CORO_PARAM, uint32 dwCode, uint32, uint32, uint32) { - Inventory->AddItem(dwCode); + GLOBALS.Inventory->AddItem(dwCode); } DECLARE_CUSTOM_FUNCTION(RemoveInventory)(CORO_PARAM, uint32 dwCode, uint32, uint32, uint32) { - Inventory->RemoveItem(dwCode); + GLOBALS.Inventory->RemoveItem(dwCode); } DECLARE_CUSTOM_FUNCTION(ChangeInventoryStatus)(CORO_PARAM, uint32 dwCode, uint32 dwStatus, uint32, uint32) { - Inventory->ChangeItemStatus(dwCode,dwStatus); + GLOBALS.Inventory->ChangeItemStatus(dwCode,dwStatus); } - - /* * Mastri Personaggi */ DECLARE_CUSTOM_FUNCTION(MCharSetCode)(CORO_PARAM, uint32 nChar, uint32 nCode, uint32, uint32) { assert(nChar < 10); - MCharacter[nChar].code=nCode; + GLOBALS.MCharacter[nChar].code=nCode; if (nCode== 0) - MCharacter[nChar].item=NULL; + GLOBALS.MCharacter[nChar].item=NULL; else - MCharacter[nChar].item=Loc->GetItemFromCode(nCode); - MCharacter[nChar].r=255; - MCharacter[nChar].g=255; - MCharacter[nChar].b=255; - MCharacter[nChar].x=-1; - MCharacter[nChar].y=-1; - MCharacter[nChar].bAlwaysBack = 0; + GLOBALS.MCharacter[nChar].item=GLOBALS.Loc->GetItemFromCode(nCode); + GLOBALS.MCharacter[nChar].r=255; + GLOBALS.MCharacter[nChar].g=255; + GLOBALS.MCharacter[nChar].b=255; + GLOBALS.MCharacter[nChar].x=-1; + GLOBALS.MCharacter[nChar].y=-1; + GLOBALS.MCharacter[nChar].bAlwaysBack = 0; for (int i = 0; i < 10; i++) - MCharacter[nChar].numtalks[i] = 1; + GLOBALS.MCharacter[nChar].numtalks[i] = 1; - MCharacter[nChar].curgroup = 0; + GLOBALS.MCharacter[nChar].curgroup = 0; - IsMChar[nChar] = true; + GLOBALS.IsMChar[nChar] = true; } DECLARE_CUSTOM_FUNCTION(MCharResetCode)(CORO_PARAM, uint32 nChar, uint32, uint32, uint32) { - MCharacter[nChar].item=Loc->GetItemFromCode(MCharacter[nChar].code); + GLOBALS.MCharacter[nChar].item=GLOBALS.Loc->GetItemFromCode(GLOBALS.MCharacter[nChar].code); } DECLARE_CUSTOM_FUNCTION(MCharSetPosition)(CORO_PARAM, uint32 nChar, uint32 nX, uint32 nY, uint32) { assert(nChar < 10); - MCharacter[nChar].x=nX; - MCharacter[nChar].y=nY; + GLOBALS.MCharacter[nChar].x=nX; + GLOBALS.MCharacter[nChar].y=nY; } DECLARE_CUSTOM_FUNCTION(MCharSetColor)(CORO_PARAM, uint32 nChar, uint32 r, uint32 g, uint32 b) { assert(nChar < 10); - MCharacter[nChar].r=r; - MCharacter[nChar].g=g; - MCharacter[nChar].b=b; + GLOBALS.MCharacter[nChar].r=r; + GLOBALS.MCharacter[nChar].g=g; + GLOBALS.MCharacter[nChar].b=b; } @@ -1779,7 +1723,7 @@ DECLARE_CUSTOM_FUNCTION(MCharSetNumTalksInGroup)(CORO_PARAM, uint32 nChar, uint3 assert(nChar < 10); assert(nGroup < 10); - MCharacter[nChar].numtalks[nGroup]=nTalks; + GLOBALS.MCharacter[nChar].numtalks[nGroup]=nTalks; } @@ -1788,20 +1732,20 @@ DECLARE_CUSTOM_FUNCTION(MCharSetCurrentGroup)(CORO_PARAM, uint32 nChar, uint32 n assert(nChar < 10); assert(nGroup < 10); - MCharacter[nChar].curgroup = nGroup; + GLOBALS.MCharacter[nChar].curgroup = nGroup; } DECLARE_CUSTOM_FUNCTION(MCharSetNumTexts)(CORO_PARAM, uint32 nChar, uint32 nTexts, uint32, uint32) { assert(nChar < 10); - MCharacter[nChar].numtexts=nTexts-1; - MCharacter[nChar].bInTexts = false; + GLOBALS.MCharacter[nChar].numtexts=nTexts-1; + GLOBALS.MCharacter[nChar].bInTexts = false; } DECLARE_CUSTOM_FUNCTION(MCharSetAlwaysBack)(CORO_PARAM, uint32 nChar, uint32 bAlwaysBack, uint32, uint32) { assert(nChar < 10); - MCharacter[nChar].bAlwaysBack=bAlwaysBack; + GLOBALS.MCharacter[nChar].bAlwaysBack=bAlwaysBack; } @@ -1825,21 +1769,21 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes assert(nChar < 10); - bIsBack |= MCharacter[nChar].bAlwaysBack ? 1 : 0; + bIsBack |= GLOBALS.MCharacter[nChar].bAlwaysBack ? 1 : 0; // Calcola la posizione del testo in base al frame corrente - if (MCharacter[nChar].x==-1) - _ctx->pt=MCharacter[nChar].item->CalculatePos()-RMPoint(-60,20)-Loc->ScrollPosition(); + if (GLOBALS.MCharacter[nChar].x==-1) + _ctx->pt=GLOBALS.MCharacter[nChar].item->CalculatePos()-RMPoint(-60,20)-GLOBALS.Loc->ScrollPosition(); else - _ctx->pt=RMPoint(MCharacter[nChar].x,MCharacter[nChar].y); + _ctx->pt=RMPoint(GLOBALS.MCharacter[nChar].x,GLOBALS.MCharacter[nChar].y); // Parametro per le azioni speciali: random tra le parlate - _ctx->parm = (MCharacter[nChar].curgroup * 10) + _vm->_randomSource.getRandomNumber( - MCharacter[nChar].numtalks[MCharacter[nChar].curgroup] - 1) + 1; + _ctx->parm = (GLOBALS.MCharacter[nChar].curgroup * 10) + _vm->_randomSource.getRandomNumber( + GLOBALS.MCharacter[nChar].numtalks[GLOBALS.MCharacter[nChar].curgroup] - 1) + 1; // Cerca di eseguire la funzione custom per inizializzare la parlata - if (MCharacter[nChar].item) { - _ctx->h = mpalQueryDoAction(30, MCharacter[nChar].item->MpalCode(), _ctx->parm); + if (GLOBALS.MCharacter[nChar].item) { + _ctx->h = mpalQueryDoAction(30, GLOBALS.MCharacter[nChar].item->MpalCode(), _ctx->parm); if (_ctx->h != CORO_INVALID_PID_VALUE) { CORO_INVOKE_2(CoroScheduler.waitForSingleObject, _ctx->h, CORO_INFINITE); } @@ -1849,24 +1793,24 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes _ctx->voice = NULL; if (_ctx->curVoc) { // Si posiziona all'interno del database delle voci all'inizio della prima - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); // fseek(_vm->m_vdbFP, curVoc->offset, SEEK_SET); _vm->_vdbFP.seek(_ctx->curVoc->offset); _ctx->curOffset = _ctx->curVoc->offset; - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } - for (_ctx->i = 0; _ctx->i < _ctx->msg->NumPeriods() && !bSkipIdle; _ctx->i++) { + for (_ctx->i = 0; _ctx->i < _ctx->msg->NumPeriods() && !GLOBALS.bSkipIdle; _ctx->i++) { // Crea l'oggetto diverso se è back o no if (bIsBack) { - curBackText=_ctx->text = new RMTextDialogScrolling(Loc); - if (bTonyIsSpeaking) - CORO_INVOKE_0(curBackText->Hide); + GLOBALS.curBackText = _ctx->text = new RMTextDialogScrolling(GLOBALS.Loc); + if (GLOBALS.bTonyIsSpeaking) + CORO_INVOKE_0(GLOBALS.curBackText->Hide); } else _ctx->text = new RMTextDialog; - _ctx->text->SetInput(Input); + _ctx->text->SetInput(GLOBALS.Input); // Skipping _ctx->text->SetSkipStatus(!bIsBack); @@ -1875,7 +1819,7 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes _ctx->text->SetAlignType(RMText::HCENTER,RMText::VBOTTOM); // Colore - _ctx->text->SetColor(MCharacter[nChar].r,MCharacter[nChar].g,MCharacter[nChar].b); + _ctx->text->SetColor(GLOBALS.MCharacter[nChar].r,GLOBALS.MCharacter[nChar].g,GLOBALS.MCharacter[nChar].b); // Scrive il testo _ctx->text->WriteText((*_ctx->msg)[_ctx->i], nFont); @@ -1884,13 +1828,13 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes _ctx->text->SetPosition(_ctx->pt); // Setta l'always display - if (bAlwaysDisplay) { _ctx->text->SetAlwaysDisplay(); _ctx->text->ForceTime(); } + if (GLOBALS.bAlwaysDisplay) { _ctx->text->SetAlwaysDisplay(); _ctx->text->ForceTime(); } // Registra il testo - LinkGraphicTask(_ctx->text); + GLOBALS.LinkGraphicTask(_ctx->text); if (_ctx->curVoc) { - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); _vm->_theSound.CreateSfx(&_ctx->voice); _vm->_vdbFP.seek(_ctx->curOffset); _ctx->voice->LoadVoiceFromVDB(_vm->_vdbFP); @@ -1899,11 +1843,11 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes _ctx->voice->Play(); _ctx->text->SetCustomSkipHandle2(_ctx->voice->hEndOfBuffer); _ctx->curOffset = _vm->_vdbFP.pos(); - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } // Aspetta la fine della visualizzazione - _ctx->text->SetCustomSkipHandle(hSkipIdle); + _ctx->text->SetCustomSkipHandle(GLOBALS.hSkipIdle); CORO_INVOKE_0(_ctx->text->WaitForEndDisplay); if (_ctx->curVoc) { @@ -1912,15 +1856,15 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes _ctx->voice = NULL; } - curBackText = NULL; + GLOBALS.curBackText = NULL; delete _ctx->text; delete _ctx->msg; } // Cerca di eseguire la funzione custom per chiudere la parlata - if (MCharacter[nChar].item) { - _ctx->h = mpalQueryDoAction(31, MCharacter[nChar].item->MpalCode(), _ctx->parm); + if (GLOBALS.MCharacter[nChar].item) { + _ctx->h = mpalQueryDoAction(31, GLOBALS.MCharacter[nChar].item->MpalCode(), _ctx->parm); if (_ctx->h != CORO_INVALID_PID_VALUE) CORO_INVOKE_2(CoroScheduler.waitForSingleObject, _ctx->h, CORO_INFINITE); } @@ -1957,7 +1901,7 @@ DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg // La SendDialogMessage può andare in background se è un personaggio in MCHAR settato // con la SetAlwaysBack - if (nPers != 0 && IsMChar[nPers] && MCharacter[nPers].bAlwaysBack) + if (nPers != 0 && GLOBALS.IsMChar[nPers] && GLOBALS.MCharacter[nPers].bAlwaysBack) _ctx->bIsBack = true; _ctx->curVoc = SearchVoiceHeader(curDialog, nMsg); @@ -1965,14 +1909,14 @@ DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg if (_ctx->curVoc) { // Si posiziona all'interno del database delle voci all'inizio della prima - g_system->lockMutex(vdb); + g_system->lockMutex(GLOBALS.vdb); // fseek(_vm->m_vdbFP, _ctx->curVoc->offset, SEEK_SET); _vm->_vdbFP.seek(_ctx->curVoc->offset); _vm->_theSound.CreateSfx(&_ctx->voice); _ctx->voice->LoadVoiceFromVDB(_vm->_vdbFP); _ctx->voice->SetLoop(false); if (_ctx->bIsBack) _ctx->voice->SetVolume(55); - g_system->unlockMutex(vdb); + g_system->unlockMutex(GLOBALS.vdb); } _ctx->string = mpalQueryDialogPeriod(nMsg); @@ -1980,89 +1924,89 @@ DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg if (nPers == 0) { _ctx->text = new RMTextDialog; _ctx->text->SetColor(0,255,0); - _ctx->text->SetPosition(Tony->Position()-RMPoint(0,130)-Loc->ScrollPosition()); + _ctx->text->SetPosition(GLOBALS.Tony->Position()-RMPoint(0,130)-GLOBALS.Loc->ScrollPosition()); _ctx->text->WriteText(_ctx->string,0); - if (dwTonyNumTexts > 0) { - if (!bTonyInTexts) { - if (nTonyNextTalkType != Tony->TALK_NORMAL) { - CORO_INVOKE_1(Tony->StartTalk, nTonyNextTalkType); - if (!bStaticTalk) - nTonyNextTalkType = Tony->TALK_NORMAL; + if (GLOBALS.dwTonyNumTexts > 0) { + if (!GLOBALS.bTonyInTexts) { + if (GLOBALS.nTonyNextTalkType != GLOBALS.Tony->TALK_NORMAL) { + CORO_INVOKE_1(GLOBALS.Tony->StartTalk, GLOBALS.nTonyNextTalkType); + if (!GLOBALS.bStaticTalk) + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; } else - CORO_INVOKE_1(Tony->StartTalk, Tony->TALK_NORMAL); + CORO_INVOKE_1(GLOBALS.Tony->StartTalk, GLOBALS.Tony->TALK_NORMAL); - bTonyInTexts = true; + GLOBALS.bTonyInTexts = true; } - dwTonyNumTexts--; + GLOBALS.dwTonyNumTexts--; } else { - CORO_INVOKE_1(Tony->StartTalk, nTonyNextTalkType); - if (!bStaticTalk) - nTonyNextTalkType = Tony->TALK_NORMAL; + CORO_INVOKE_1(GLOBALS.Tony->StartTalk, GLOBALS.nTonyNextTalkType); + if (!GLOBALS.bStaticTalk) + GLOBALS.nTonyNextTalkType = GLOBALS.Tony->TALK_NORMAL; } - } else if (!IsMChar[nPers]) { + } else if (!GLOBALS.IsMChar[nPers]) { _ctx->text = new RMTextDialog; - _ctx->pt = Character[nPers].item->CalculatePos() - RMPoint(-60, 20) - Loc->ScrollPosition(); + _ctx->pt = GLOBALS.Character[nPers].item->CalculatePos() - RMPoint(-60, 20) - GLOBALS.Loc->ScrollPosition(); - if (Character[nPers].starttalkpattern != 0) { - Freeze(); - Character[nPers].item->SetPattern(Character[nPers].starttalkpattern); - Unfreeze(); - CORO_INVOKE_0(Character[nPers].item->WaitForEndPattern); + if (GLOBALS.Character[nPers].starttalkpattern != 0) { + GLOBALS.Freeze(); + GLOBALS.Character[nPers].item->SetPattern(GLOBALS.Character[nPers].starttalkpattern); + GLOBALS.Unfreeze(); + CORO_INVOKE_0(GLOBALS.Character[nPers].item->WaitForEndPattern); } - Character[nPers].item->SetPattern(Character[nPers].talkpattern); + GLOBALS.Character[nPers].item->SetPattern(GLOBALS.Character[nPers].talkpattern); - _ctx->text->SetColor(Character[nPers].r, Character[nPers].g,Character[nPers].b); + _ctx->text->SetColor(GLOBALS.Character[nPers].r, GLOBALS.Character[nPers].g,GLOBALS.Character[nPers].b); _ctx->text->WriteText(_ctx->string, 0); _ctx->text->SetPosition(_ctx->pt); } else { - if (MCharacter[nPers].x == -1) - _ctx->pt = MCharacter[nPers].item->CalculatePos() - RMPoint(-60, 20) - Loc->ScrollPosition(); + if (GLOBALS.MCharacter[nPers].x == -1) + _ctx->pt = GLOBALS.MCharacter[nPers].item->CalculatePos() - RMPoint(-60, 20) - GLOBALS.Loc->ScrollPosition(); else - _ctx->pt = RMPoint(MCharacter[nPers].x, MCharacter[nPers].y); + _ctx->pt = RMPoint(GLOBALS.MCharacter[nPers].x, GLOBALS.MCharacter[nPers].y); // Parametro per le azioni speciali: random tra le parlate - _ctx->parm = (MCharacter[nPers].curgroup * 10) + _vm->_randomSource.getRandomNumber( - MCharacter[nPers].numtalks[MCharacter[nPers].curgroup] - 1) + 1; + _ctx->parm = (GLOBALS.MCharacter[nPers].curgroup * 10) + _vm->_randomSource.getRandomNumber( + GLOBALS.MCharacter[nPers].numtalks[GLOBALS.MCharacter[nPers].curgroup] - 1) + 1; - if (MCharacter[nPers].numtexts != 0 && MCharacter[nPers].bInTexts) { - MCharacter[nPers].numtexts--; + if (GLOBALS.MCharacter[nPers].numtexts != 0 && GLOBALS.MCharacter[nPers].bInTexts) { + GLOBALS.MCharacter[nPers].numtexts--; } else { // Cerca di eseguire la funzione custom per inizializzare la parlata - _ctx->h = mpalQueryDoAction(30, MCharacter[nPers].item->MpalCode(), _ctx->parm); + _ctx->h = mpalQueryDoAction(30, GLOBALS.MCharacter[nPers].item->MpalCode(), _ctx->parm); if (_ctx->h != CORO_INVALID_PID_VALUE) CORO_INVOKE_2(CoroScheduler.waitForSingleObject, _ctx->h, CORO_INFINITE); - MCharacter[nPers].curTalk = _ctx->parm; + GLOBALS.MCharacter[nPers].curTalk = _ctx->parm; - if (MCharacter[nPers].numtexts != 0) { - MCharacter[nPers].bInTexts = true; - MCharacter[nPers].numtexts--; + if (GLOBALS.MCharacter[nPers].numtexts != 0) { + GLOBALS.MCharacter[nPers].bInTexts = true; + GLOBALS.MCharacter[nPers].numtexts--; } } - if (MCharacter[nPers].bAlwaysBack) { - _ctx->text = curBackText = new RMTextDialogScrolling(Loc); - if (bTonyIsSpeaking) - CORO_INVOKE_0(curBackText->Hide); + if (GLOBALS.MCharacter[nPers].bAlwaysBack) { + _ctx->text = GLOBALS.curBackText = new RMTextDialogScrolling(GLOBALS.Loc); + if (GLOBALS.bTonyIsSpeaking) + CORO_INVOKE_0(GLOBALS.curBackText->Hide); _ctx->bIsBack = true; } else _ctx->text = new RMTextDialog; - _ctx->text->SetSkipStatus(!MCharacter[nPers].bAlwaysBack); - _ctx->text->SetColor(MCharacter[nPers].r,MCharacter[nPers].g,MCharacter[nPers].b); + _ctx->text->SetSkipStatus(!GLOBALS.MCharacter[nPers].bAlwaysBack); + _ctx->text->SetColor(GLOBALS.MCharacter[nPers].r,GLOBALS.MCharacter[nPers].g,GLOBALS.MCharacter[nPers].b); _ctx->text->WriteText(_ctx->string,0); _ctx->text->SetPosition(_ctx->pt); } - if (!bSkipIdle) { - _ctx->text->SetInput(Input); - if (bAlwaysDisplay) { _ctx->text->SetAlwaysDisplay(); _ctx->text->ForceTime(); } + if (!GLOBALS.bSkipIdle) { + _ctx->text->SetInput(GLOBALS.Input); + if (GLOBALS.bAlwaysDisplay) { _ctx->text->SetAlwaysDisplay(); _ctx->text->ForceTime(); } _ctx->text->SetAlignType(RMText::HCENTER,RMText::VBOTTOM); - LinkGraphicTask(_ctx->text); + GLOBALS.LinkGraphicTask(_ctx->text); if (_ctx->curVoc) { _ctx->voice->Play(); @@ -2070,7 +2014,7 @@ DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg } // Aspetta la fine della visualizzazione - _ctx->text->SetCustomSkipHandle(hSkipIdle); + _ctx->text->SetCustomSkipHandle(GLOBALS.hSkipIdle); CORO_INVOKE_0(_ctx->text->WaitForEndDisplay); } @@ -2081,36 +2025,36 @@ DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg } if (nPers != 0) { - if (!IsMChar[nPers]) { - if (Character[nPers].endtalkpattern != 0) { - Freeze(); - Character[nPers].item->SetPattern(Character[nPers].endtalkpattern); - Unfreeze(); - CORO_INVOKE_0(Character[nPers].item->WaitForEndPattern); + if (!GLOBALS.IsMChar[nPers]) { + if (GLOBALS.Character[nPers].endtalkpattern != 0) { + GLOBALS.Freeze(); + GLOBALS.Character[nPers].item->SetPattern(GLOBALS.Character[nPers].endtalkpattern); + GLOBALS.Unfreeze(); + CORO_INVOKE_0(GLOBALS.Character[nPers].item->WaitForEndPattern); } - Character[nPers].item->SetPattern(Character[nPers].standpattern); + GLOBALS.Character[nPers].item->SetPattern(GLOBALS.Character[nPers].standpattern); delete _ctx->text; } else { - if ((MCharacter[nPers].bInTexts && MCharacter[nPers].numtexts== 0) || !MCharacter[nPers].bInTexts) { + if ((GLOBALS.MCharacter[nPers].bInTexts && GLOBALS.MCharacter[nPers].numtexts== 0) || !GLOBALS.MCharacter[nPers].bInTexts) { // Cerca di eseguire la funzione custom per chiudere la parlata - MCharacter[nPers].curTalk = (MCharacter[nPers].curTalk%10) + MCharacter[nPers].curgroup*10; - _ctx->h = mpalQueryDoAction(31,MCharacter[nPers].item->MpalCode(),MCharacter[nPers].curTalk); + GLOBALS.MCharacter[nPers].curTalk = (GLOBALS.MCharacter[nPers].curTalk%10) + GLOBALS.MCharacter[nPers].curgroup*10; + _ctx->h = mpalQueryDoAction(31,GLOBALS.MCharacter[nPers].item->MpalCode(),GLOBALS.MCharacter[nPers].curTalk); if (_ctx->h != CORO_INVALID_PID_VALUE) CORO_INVOKE_2(CoroScheduler.waitForSingleObject, _ctx->h, CORO_INFINITE); - MCharacter[nPers].bInTexts = false; - MCharacter[nPers].numtexts = 0; + GLOBALS.MCharacter[nPers].bInTexts = false; + GLOBALS.MCharacter[nPers].numtexts = 0; } - curBackText = NULL; + GLOBALS.curBackText = NULL; delete _ctx->text; } } else { - if ((dwTonyNumTexts== 0 && bTonyInTexts) || !bTonyInTexts) { - CORO_INVOKE_0(Tony->EndTalk); - dwTonyNumTexts = 0; - bTonyInTexts = false; + if ((GLOBALS.dwTonyNumTexts== 0 && GLOBALS.bTonyInTexts) || !GLOBALS.bTonyInTexts) { + CORO_INVOKE_0(GLOBALS.Tony->EndTalk); + GLOBALS.dwTonyNumTexts = 0; + GLOBALS.bTonyInTexts = false; } delete _ctx->text; @@ -2172,18 +2116,18 @@ DECLARE_CUSTOM_FUNCTION(StartDialog)(CORO_PARAM, uint32 nDialog, uint32 nStartGr } // Attiva l'oggetto - LinkGraphicTask(&_ctx->dc); + GLOBALS.LinkGraphicTask(&_ctx->dc); CORO_INVOKE_0(_ctx->dc.Show); // Disegna il puntatore - Pointer->SetSpecialPointer(Pointer->PTR_NONE); + GLOBALS.Pointer->SetSpecialPointer(GLOBALS.Pointer->PTR_NONE); MainShowMouse(); - while (!(Input->MouseLeftClicked() && ((_ctx->sel = _ctx->dc.GetSelection()) != -1))) { - CORO_INVOKE_0(WaitFrame); - Freeze(); - CORO_INVOKE_1(_ctx->dc.DoFrame, Input->MousePos()); - Unfreeze(); + while (!(GLOBALS.Input->MouseLeftClicked() && ((_ctx->sel = _ctx->dc.GetSelection()) != -1))) { + CORO_INVOKE_0(GLOBALS.WaitFrame); + GLOBALS.Freeze(); + CORO_INVOKE_1(_ctx->dc.DoFrame, GLOBALS.Input->MousePos()); + GLOBALS.Unfreeze(); } // Nascondi il puntatore @@ -2243,10 +2187,6 @@ DECLARE_CUSTOM_FUNCTION(ReleaseOwnership)(CORO_PARAM, uint32 num, uint32, uint32 * */ -int curSonoriz = 0; - -bool bFadeOutStop; - void ThreadFadeInMusic(CORO_PARAM, const void *nMusic) { CORO_BEGIN_CONTEXT; int i; @@ -2286,14 +2226,14 @@ void ThreadFadeOutMusic(CORO_PARAM, const void *nMusic) { debug("Start FadeOut Music"); - for (_ctx->i = 16; _ctx->i > 0 && !bFadeOutStop; _ctx->i--) { + for (_ctx->i = 16; _ctx->i > 0 && !GLOBALS.bFadeOutStop; _ctx->i--) { if (_ctx->i * 4 < _ctx->startVolume) _vm->SetMusicVolume(nChannel, _ctx->i * 4); CORO_INVOKE_1(CoroScheduler.sleep, 100); } - if (!bFadeOutStop) + if (!GLOBALS.bFadeOutStop) _vm->SetMusicVolume(nChannel, 0); // Se è uno stacchetto ferma tutto @@ -2308,16 +2248,16 @@ void ThreadFadeOutMusic(CORO_PARAM, const void *nMusic) { } DECLARE_CUSTOM_FUNCTION(FadeInSonoriz)(CORO_PARAM, uint32, uint32, uint32, uint32) { - CoroScheduler.createProcess(ThreadFadeInMusic, &curSonoriz, sizeof(int)); + CoroScheduler.createProcess(ThreadFadeInMusic, &GLOBALS.curSonoriz, sizeof(int)); } DECLARE_CUSTOM_FUNCTION(FadeOutSonoriz)(CORO_PARAM, uint32, uint32, uint32, uint32) { - bFadeOutStop = false; - CoroScheduler.createProcess(ThreadFadeOutMusic, &curSonoriz, sizeof(int)); + GLOBALS.bFadeOutStop = false; + CoroScheduler.createProcess(ThreadFadeOutMusic, &GLOBALS.curSonoriz, sizeof(int)); } DECLARE_CUSTOM_FUNCTION(FadeOutStacchetto)(CORO_PARAM, uint32, uint32, uint32, uint32) { - bFadeOutStop = false; + GLOBALS.bFadeOutStop = false; int channel = 2; CoroScheduler.createProcess(ThreadFadeOutMusic, &channel, sizeof(int)); } @@ -2328,7 +2268,7 @@ DECLARE_CUSTOM_FUNCTION(FadeInStacchetto)(CORO_PARAM, uint32, uint32, uint32, ui } DECLARE_CUSTOM_FUNCTION(StopSonoriz)(CORO_PARAM, uint32, uint32, uint32, uint32) { - _vm->StopMusic(curSonoriz); + _vm->StopMusic(GLOBALS.curSonoriz); } DECLARE_CUSTOM_FUNCTION(StopStacchetto)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -2336,12 +2276,12 @@ DECLARE_CUSTOM_FUNCTION(StopStacchetto)(CORO_PARAM, uint32, uint32, uint32, uint } DECLARE_CUSTOM_FUNCTION(MuteSonoriz)(CORO_PARAM, uint32, uint32, uint32, uint32) { - _vm->SetMusicVolume(curSonoriz, 0); + _vm->SetMusicVolume(GLOBALS.curSonoriz, 0); } DECLARE_CUSTOM_FUNCTION(DemuteSonoriz)(CORO_PARAM, uint32, uint32, uint32, uint32) { - bFadeOutStop = true; - _vm->SetMusicVolume(curSonoriz, 64); + GLOBALS.bFadeOutStop = true; + _vm->SetMusicVolume(GLOBALS.curSonoriz, 64); } DECLARE_CUSTOM_FUNCTION(MuteStacchetto)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -2352,135 +2292,26 @@ DECLARE_CUSTOM_FUNCTION(DemuteStacchetto)(CORO_PARAM, uint32, uint32, uint32, ui _vm->SetMusicVolume(2, 64); } -struct MusicFileEntry { - const char *name; - int sync; -}; -const MusicFileEntry musicFiles[] = { -/* - { "PREGAME1.ADP", 0 }, { "SONO1.ADP", 0 }, - { "SONO2.ADP", 0 }, { "SONO3.ADP", 0 }, - { "CADUTA.ADP",0 }, { "RISVEGLIO.ADP", 0 }, - { "BACKGROUND.ADP", 0 }, { "PREGAME3.ADP", 0 }, - { "BARBUTA1.ADP", 2450 }, { "BARBUTA2.ADP", 0 }, -*/ - { "00.ADP", 0 }, { "01.ADP", 0 }, - { "02.ADP", 0 }, { "03.ADP", 0 }, - { "04.ADP",0 }, { "05.ADP", 0 }, - { "06.ADP", 0 }, { "07.ADP", 0 }, - { "08.ADP", 2450 }, { "09.ADP", 0 }, - -/* - { "BARBUTA3.ADP", 0 }, { "15-RUFUS.ADP", 0 }, - { "20-MAMMA.ADP", 0 }, { "32-MAMMARADIO.ADP", 0 }, - { "24-TUNNELOV-MIDI.ADP", 0 }, { "34-RAZZO.ADP", 0 }, - { "27-ZUCC1.ADP", 0 }, { "BEAST.ADP", 0 }, - { "22-MORTIMER.ADP", 0 }, { "25-PUB-OVATTATO.ADP", 0 }, -*/ - { "10.ADP", 0 }, { "11.ADP", 0 }, - { "12.ADP", 0 }, { "13.ADP", 0 }, - { "14.ADP", 0 }, { "15.ADP", 0 }, - { "16.ADP", 0 }, { "17.ADP", 0 }, - { "18.ADP", 0 }, { "19.ADP", 0 }, -/* - { "25-PUB.ADP", 0 }, { "ALBERGO.ADP", 0 }, - { "37.ADP", 0 }, { "26-PIRAT.ADP", 0 }, - { "LORENZBACK.ADP", 0 }, { "LORENZ3.ADP", 0 }, - { "CASTLE.ADP", 0 }, { "53-BACKR.ADP", 0 }, - { "16-SMIL1.ADP", 1670 }, { "16-SMIL2.ADP", 0 }, -*/ - { "20.ADP", 0 }, { "21.ADP", 0 }, - { "22.ADP", 0 }, { "23.ADP", 0 }, - { "24.ADP", 0 }, { "25.ADP", 0 }, - { "26.ADP", 0 }, { "27.ADP", 0 }, - { "28.ADP", 1670 }, { "29.ADP", 0 }, -/* - { "16-SMILE.ADP", 0 }, { "16-DIALOG2.ADP", 0 }, - { "07-SHAKE1.ADP", 2900 }, { "07-SHAKE2.ADP", 0 }, - { "07-SHAKE3.ADP", 0 }, { "46-BEEE.ADP", 0 }, - { "434748.ADP", 0 }, { "TORRE.ADP", 0 }, - { "50-DRAGO.ADP", 0 }, { "56-OPERA.ADP", 0 }, -*/ - { "30.ADP", 0 }, { "31.ADP", 0 }, - { "32.ADP", 2900 }, { "33.ADP", 0 }, - { "34.ADP", 0 }, { "35.ADP", 0 }, - { "36.ADP", 0 }, { "37.ADP", 0 }, - { "38.ADP", 0 }, { "39.ADP", 0 }, -/* - { "FLAUTARP.ADP", 0 }, { "01-2001.ADP", 1920 }, - { "02-INTROPANORAMICA.ADP", 1560 }, { "03-PANORAMICA.ADP", 1920 }, - { "04-INTERNI.ADP", 1920 }, { "05-CADEPIUMA.ADP", 1920 }, - { "06-SCENDESCALE.ADP", 1920 }, { "07-THRILL.ADP", 1920 }, - { "08-CADUTAZUCCA.ADP", 1920 }, { "09-PIUMAALEGGIA.ADP", 1920 }, -*/ - { "40.ADP", 0 }, { "41.ADP", 1920 }, - { "42.ADP", 1560 }, { "43.ADP", 1920 }, - { "44.ADP", 1920 }, { "45.ADP", 1920 }, - { "46.ADP", 1920 }, { "47.ADP", 1920 }, - { "48.ADP", 1920 }, { "49.ADP", 1920 }, - -/* - { "10-JACKZUCCONA.ADP", 1920 }, { "11-JACKIMPRECAALLAGRANDELUNA.ADP", 1920 }, - { "12-GRANDELUNALOGO.ADP", 1920 }, { "60-BACKGROUND.ADP", 0 }, - { "TONYSTAR.ADP", 0 }, { "FUNNY.ADP", 0 }, - { "60-INIZIODIALOGO.ADP", 0 }, { "60-DIALOGO.ADP", 0 }, - { "60-JACKFELICE.ADP", 0 }, { "24-TONYVIOLENTATO.ADP", 0 } -*/ - { "50.ADP", 1920 }, { "51.ADP", 1920 }, - { "52.ADP", 1920 }, { "53.ADP", 0 }, - { "54.ADP", 0 }, { "55.ADP", 0 }, - { "56.ADP", 0 }, { "57.ADP", 0 }, - { "58.ADP", 0 }, { "59.ADP", 0 } -}; - - -const char *staccFileNames[] = { -/* - "05-MUCCA.ADP", "06-HALOW.ADP", - "LETTERAINIZIO.ADP", "LETTERAPAURA.ADP", - "LETTERAFINE.ADP", "PREGAME2.ADP", - "07-TIMOT.ADP", "15-SHOTRUFUS.ADP", - "15-SHOTTONY.ADP", "27-ZUCC2.ADP", -*/ - "S00.ADP", "S01.ADP", - "S02.ADP", "S03.ADP", - "S04.ADP", "S05.ADP", - "S06.ADP", "S07.ADP", - "S08.ADP", "S09.ADP", - -/* - "53-DLOGO.ADP", "16-DIALOG1.ADP", - "TORRE1.ADP", "GARG1.ADP", - "LORENZ1.ADP", "24-FIGHT.ADP", - "08-MACBETH-PREPARA.ADP", "08-MACBETH-RECITA.ADP", - "GATTO1.ADP" -*/ - "S10.ADP", "S11.ADP", - "S12.ADP", "S13.ADP", - "S14.ADP", "S15.ADP", - "S16.ADP", "S17.ADP", - "S18.ADP" -}; void CustPlayMusic(uint32 nChannel, const char *mFN, uint32 nFX, bool bLoop, int nSync = 0) { if (nSync == 0) nSync = 2000; debug("Start CustPlayMusic"); - PlayMusic(nChannel, mFN, nFX, bLoop, nSync); + GLOBALS.PlayMusic(nChannel, mFN, nFX, bLoop, nSync); debug("End CustPlayMusic"); } DECLARE_CUSTOM_FUNCTION(PlaySonoriz)(CORO_PARAM, uint32 nMusic, uint32 nFX, uint32 bNoLoop, uint32) { if (nFX == 0 || nFX == 1 || nFX==2) { debug("PlaySonoriz stop fadeout"); - bFadeOutStop = true; + GLOBALS.bFadeOutStop = true; } - lastMusic = nMusic; - CustPlayMusic(curSonoriz, musicFiles[nMusic].name, nFX, bNoLoop ? false : true, musicFiles[nMusic].sync); + GLOBALS.lastMusic = nMusic; + CustPlayMusic(GLOBALS.curSonoriz, musicFiles[nMusic].name, nFX, bNoLoop ? false : true, musicFiles[nMusic].sync); } DECLARE_CUSTOM_FUNCTION(PlayStacchetto)(CORO_PARAM, uint32 nMusic, uint32 nFX, uint32 bLoop, uint32) { @@ -2489,9 +2320,9 @@ DECLARE_CUSTOM_FUNCTION(PlayStacchetto)(CORO_PARAM, uint32 nMusic, uint32 nFX, u DECLARE_CUSTOM_FUNCTION(PlayItemSfx)(CORO_PARAM, uint32 nItem, uint32 nSFX, uint32, uint32) { if (nItem== 0) { - Tony->PlaySfx(nSFX); + GLOBALS.Tony->PlaySfx(nSFX); } else { - RMItem *item = Loc->GetItemFromCode(nItem); + RMItem *item = GLOBALS.Loc->GetItemFromCode(nItem); if (item) item->PlaySfx(nSFX); } @@ -2504,22 +2335,22 @@ void RestoreMusic(CORO_PARAM) { CORO_BEGIN_CODE(_ctx); - CORO_INVOKE_4(PlaySonoriz, lastMusic, 0, 0, 0); + CORO_INVOKE_4(PlaySonoriz, GLOBALS.lastMusic, 0, 0, 0); - if (lastTappeto != 0) - CustPlayMusic(4, tappetiFile[lastTappeto], 0, true); + if (GLOBALS.lastTappeto != 0) + CustPlayMusic(4, tappetiFile[GLOBALS.lastTappeto], 0, true); CORO_END_CODE; } void SaveMusic(Common::OutSaveFile *f) { - f->writeByte(lastMusic); - f->writeByte(lastTappeto); + f->writeByte(GLOBALS.lastMusic); + f->writeByte(GLOBALS.lastTappeto); } void LoadMusic(Common::InSaveFile *f) { - lastMusic = f->readByte(); - lastTappeto = f->readByte(); + GLOBALS.lastMusic = f->readByte(); + GLOBALS.lastTappeto = f->readByte(); } @@ -2553,17 +2384,17 @@ DECLARE_CUSTOM_FUNCTION(StacchettoFadeEnd)(CORO_PARAM, uint32 nStacc, uint32 bLo DECLARE_CUSTOM_FUNCTION(MustSkipIdleStart)(CORO_PARAM, uint32, uint32, uint32, uint32) { - bSkipIdle = true; - CoroScheduler.setEvent(hSkipIdle); + GLOBALS.bSkipIdle = true; + CoroScheduler.setEvent(GLOBALS.hSkipIdle); } DECLARE_CUSTOM_FUNCTION(MustSkipIdleEnd)(CORO_PARAM, uint32, uint32, uint32, uint32) { - bSkipIdle = false; - CoroScheduler.resetEvent(hSkipIdle); + GLOBALS.bSkipIdle = false; + CoroScheduler.resetEvent(GLOBALS.hSkipIdle); } DECLARE_CUSTOM_FUNCTION(PatIrqFreeze)(CORO_PARAM, uint32 bStatus, uint32, uint32, uint32) { - bPatIrqFreeze = bStatus; + GLOBALS.bPatIrqFreeze = bStatus; } DECLARE_CUSTOM_FUNCTION(OpenInitLoadMenu)(CORO_PARAM, uint32, uint32, uint32, uint32) { @@ -2572,9 +2403,9 @@ DECLARE_CUSTOM_FUNCTION(OpenInitLoadMenu)(CORO_PARAM, uint32, uint32, uint32, ui CORO_BEGIN_CODE(_ctx); - Freeze(); + GLOBALS.Freeze(); CORO_INVOKE_0(_vm->OpenInitLoadMenu); - Unfreeze(); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -2585,9 +2416,9 @@ DECLARE_CUSTOM_FUNCTION(OpenInitOptions)(CORO_PARAM, uint32, uint32, uint32, uin CORO_BEGIN_CODE(_ctx); - Freeze(); + GLOBALS.Freeze(); CORO_INVOKE_0(_vm->OpenInitOptions); - Unfreeze(); + GLOBALS.Unfreeze(); CORO_END_CODE; } @@ -2610,7 +2441,7 @@ DECLARE_CUSTOM_FUNCTION(DoCredits)(CORO_PARAM, uint32 nMsg, uint32 dwTime, uint3 _ctx->text = new RMTextDialog[_ctx->msg->NumPeriods()]; for (_ctx->i = 0; _ctx->i < _ctx->msg->NumPeriods(); _ctx->i++) { - _ctx->text[_ctx->i].SetInput(Input); + _ctx->text[_ctx->i].SetInput(GLOBALS.Input); // Alignment if ((*_ctx->msg)[_ctx->i][0] == '@') { @@ -2633,14 +2464,14 @@ DECLARE_CUSTOM_FUNCTION(DoCredits)(CORO_PARAM, uint32 nMsg, uint32 dwTime, uint3 _ctx->text[_ctx->i].SetCustomSkipHandle(_ctx->hDisable); // Registra il testo - LinkGraphicTask(&_ctx->text[_ctx->i]); + GLOBALS.LinkGraphicTask(&_ctx->text[_ctx->i]); } _ctx->startTime = _vm->GetTime(); while (_ctx->startTime + dwTime * 1000 > _vm->GetTime()) { - CORO_INVOKE_0(WaitFrame); - if (Input->MouseLeftClicked() || Input->MouseRightClicked()) + CORO_INVOKE_0(GLOBALS.WaitFrame); + if (GLOBALS.Input->MouseLeftClicked() || GLOBALS.Input->MouseRightClicked()) break; if (_vm->GetEngine()->GetInput().GetAsyncKeyState(Common::KEYCODE_TAB)) break; @@ -2648,8 +2479,8 @@ DECLARE_CUSTOM_FUNCTION(DoCredits)(CORO_PARAM, uint32 nMsg, uint32 dwTime, uint3 CoroScheduler.setEvent(_ctx->hDisable); - CORO_INVOKE_0(WaitFrame); - CORO_INVOKE_0(WaitFrame); + CORO_INVOKE_0(GLOBALS.WaitFrame); + CORO_INVOKE_0(GLOBALS.WaitFrame); delete[] _ctx->text; delete _ctx->msg; @@ -2809,77 +2640,76 @@ BEGIN_CUSTOM_FUNCTION_MAP() END_CUSTOM_FUNCTION_MAP() void SetupGlobalVars(RMTony *tony, RMPointer *ptr, RMGameBoxes *box, RMLocation *loc, RMInventory *inv, RMInput *input) { - Tony = tony; - Pointer = ptr; - Boxes = box; - Loc = loc; - Inventory = inv; - Input = input; - - LoadLocation = MainLoadLocation; - UnloadLocation = MainUnloadLocation; - LinkGraphicTask = MainLinkGraphicTask; - Freeze = MainFreeze; - Unfreeze = MainUnfreeze; - WaitFrame = MainWaitFrame; - PlayMusic = MainPlayMusic; - InitWipe = MainInitWipe; - CloseWipe = MainCloseWipe; - WaitWipeEnd = MainWaitWipeEnd; - DisableGUI = MainDisableGUI; - EnableGUI = MainEnableGUI; - SetPalesati = MainSetPalesati; - - vdb = g_system->createMutex(); - - bAlwaysDisplay = false; + GLOBALS.Tony = tony; + GLOBALS.Pointer = ptr; + GLOBALS.Boxes = box; + GLOBALS.Loc = loc; + GLOBALS.Inventory = inv; + GLOBALS.Input = input; + + GLOBALS.LoadLocation = MainLoadLocation; + GLOBALS.UnloadLocation = MainUnloadLocation; + GLOBALS.LinkGraphicTask = MainLinkGraphicTask; + GLOBALS.Freeze = MainFreeze; + GLOBALS.Unfreeze = MainUnfreeze; + GLOBALS.WaitFrame = MainWaitFrame; + GLOBALS.PlayMusic = MainPlayMusic; + GLOBALS.InitWipe = MainInitWipe; + GLOBALS.CloseWipe = MainCloseWipe; + GLOBALS.WaitWipeEnd = MainWaitWipeEnd; + GLOBALS.DisableGUI = MainDisableGUI; + GLOBALS.EnableGUI = MainEnableGUI; + GLOBALS.SetPalesati = MainSetPalesati; + + GLOBALS.vdb = g_system->createMutex(); + + GLOBALS.bAlwaysDisplay = false; int i; - for (i = 0;i < 10; i++) +/* for (i = 0;i < 10; i++) cs[i] = g_system->createMutex(); -/* for (i = 0;i < 10; i++) mut[i] = CreateMutex(NULL, false, NULL); */ for (i = 0; i < 200; i++) - tappeti[i] = 0; - - tappeti[6] = T_GRILLI; - tappeti[7] = T_GRILLI; - tappeti[8] = T_GRILLIOV; - tappeti[10] = T_GRILLI; - tappeti[12] = T_GRILLI; - tappeti[13] = T_GRILLIOV; - tappeti[15] = T_GRILLI; - tappeti[16] = T_GRILLIVENTO; - tappeti[18] = T_GRILLI; - tappeti[19] = T_GRILLIVENTO; - tappeti[20] = T_GRILLI; - tappeti[23] = T_GRILLI; - tappeti[26] = T_MAREMETA; - tappeti[27] = T_GRILLI; - tappeti[28] = T_GRILLIVENTO; - tappeti[31] = T_GRILLI; - tappeti[33] = T_MARE; - tappeti[35] = T_MARE; - tappeti[36] = T_GRILLI; - tappeti[37] = T_GRILLI; - tappeti[40] = T_GRILLI; - tappeti[41] = T_GRILLI; - tappeti[42] = T_GRILLI; - tappeti[45] = T_GRILLI; - tappeti[51] = T_GRILLI; - tappeti[52] = T_GRILLIVENTO1; - tappeti[53] = T_GRILLI; - tappeti[54] = T_GRILLI; - tappeti[57] = T_VENTO; - tappeti[58] = T_VENTO; - tappeti[60] = T_VENTO; + GLOBALS.tappeti[i] = 0; + + GLOBALS.tappeti[6] = T_GRILLI; + GLOBALS.tappeti[7] = T_GRILLI; + GLOBALS.tappeti[8] = T_GRILLIOV; + GLOBALS.tappeti[10] = T_GRILLI; + GLOBALS.tappeti[12] = T_GRILLI; + GLOBALS.tappeti[13] = T_GRILLIOV; + GLOBALS.tappeti[15] = T_GRILLI; + GLOBALS.tappeti[16] = T_GRILLIVENTO; + GLOBALS.tappeti[18] = T_GRILLI; + GLOBALS.tappeti[19] = T_GRILLIVENTO; + GLOBALS.tappeti[20] = T_GRILLI; + GLOBALS.tappeti[23] = T_GRILLI; + GLOBALS.tappeti[26] = T_MAREMETA; + GLOBALS.tappeti[27] = T_GRILLI; + GLOBALS.tappeti[28] = T_GRILLIVENTO; + GLOBALS.tappeti[31] = T_GRILLI; + GLOBALS.tappeti[33] = T_MARE; + GLOBALS.tappeti[35] = T_MARE; + GLOBALS.tappeti[36] = T_GRILLI; + GLOBALS.tappeti[37] = T_GRILLI; + GLOBALS.tappeti[40] = T_GRILLI; + GLOBALS.tappeti[41] = T_GRILLI; + GLOBALS.tappeti[42] = T_GRILLI; + GLOBALS.tappeti[45] = T_GRILLI; + GLOBALS.tappeti[51] = T_GRILLI; + GLOBALS.tappeti[52] = T_GRILLIVENTO1; + GLOBALS.tappeti[53] = T_GRILLI; + GLOBALS.tappeti[54] = T_GRILLI; + GLOBALS.tappeti[57] = T_VENTO; + GLOBALS.tappeti[58] = T_VENTO; + GLOBALS.tappeti[60] = T_VENTO; // Crea l'evento per skippare le idle - hSkipIdle = CoroScheduler.createEvent(true, false); + GLOBALS.hSkipIdle = CoroScheduler.createEvent(true, false); } } // end of namespace Tony diff --git a/engines/tony/font.cpp b/engines/tony/font.cpp index f7f3fb3f8c..dee3c3228a 100644 --- a/engines/tony/font.cpp +++ b/engines/tony/font.cpp @@ -2003,7 +2003,7 @@ void RMText::WriteText(const RMString &text, RMFontColor *font, int *time) { } if (time != NULL) - *time = 1000 + numchar * (11 - nCfgTextSpeed) * 14; + *time = 1000 + numchar * (11 - GLOBALS.nCfgTextSpeed) * 14; } void RMText::ClipOnScreen(RMGfxPrimitive *prim) { @@ -2128,8 +2128,8 @@ void RMTextDialog::RemoveThis(CORO_PARAM, bool &result) { // Frase NON di background if (m_bSkipStatus) { - if (!(bCfgDubbing && hCustomSkip2 != CORO_INVALID_PID_VALUE)) - if (bCfgTimerizedText) { + if (!(GLOBALS.bCfgDubbing && hCustomSkip2 != CORO_INVALID_PID_VALUE)) + if (GLOBALS.bCfgTimerizedText) { if (!m_bForceNoTime) if (_vm->GetTime() > (uint32)m_time + m_startTime) return; @@ -2146,7 +2146,7 @@ void RMTextDialog::RemoveThis(CORO_PARAM, bool &result) { } // Frase di background else { - if (!(bCfgDubbing && hCustomSkip2 != CORO_INVALID_PID_VALUE)) + if (!(GLOBALS.bCfgDubbing && hCustomSkip2 != CORO_INVALID_PID_VALUE)) if (!m_bForceNoTime) if (_vm->GetTime() > (uint32)m_time + m_startTime) return; @@ -2164,7 +2164,7 @@ void RMTextDialog::RemoveThis(CORO_PARAM, bool &result) { return; } - if (bCfgDubbing && hCustomSkip2 != CORO_INVALID_PID_VALUE) { + if (GLOBALS.bCfgDubbing && hCustomSkip2 != CORO_INVALID_PID_VALUE) { CORO_INVOKE_3(CoroScheduler.waitForSingleObject, hCustomSkip2, 0, &_ctx->expired); // == WAIT_OBJECT_0 if (!_ctx->expired) @@ -2192,7 +2192,7 @@ void RMTextDialog::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *p m_startTime = _vm->GetTime(); if (m_bShowed) { - if (bCfgSottotitoli || m_bAlwaysDisplay) { + if (GLOBALS.bCfgSottotitoli || m_bAlwaysDisplay) { prim->Dst().TopLeft() = dst; CORO_INVOKE_2(RMText::Draw, bigBuf, prim); } diff --git a/engines/tony/game.cpp b/engines/tony/game.cpp index 758170c848..b21498a5e8 100644 --- a/engines/tony/game.cpp +++ b/engines/tony/game.cpp @@ -63,32 +63,6 @@ namespace Tony { using namespace MPAL; /****************************************/ -/* Variabili globali di configurazione */ -/****************************************/ - -// FIXME: Move into a class instance -bool bCfgInvLocked; -bool bCfgInvNoScroll; -bool bCfgTimerizedText; -bool bCfgInvUp; -bool bCfgAnni30; -bool bCfgAntiAlias; -bool bCfgSottotitoli; -bool bCfgTransparence; -bool bCfgInterTips; -bool bCfgDubbing; -bool bCfgMusic; -bool bCfgSFX; -int nCfgTonySpeed; -int nCfgTextSpeed; -int nCfgDubbingVolume; -int nCfgMusicVolume; -int nCfgSFXVolume; -bool bSkipSfxNoLoop; - -bool bPatIrqFreeze; - -/****************************************/ /* Funzioni globali per la DLL Custom */ /****************************************/ @@ -699,57 +673,57 @@ void RMOptionScreen::InitState(CORO_PARAM) { if (m_nState == MENUGAME) { assert(m_ButtonGame_Lock == NULL); m_ButtonGame_Lock = new RMOptionButton(20008,RMPoint(176, 262), true); - m_ButtonGame_Lock->SetActiveState(bCfgInvLocked); + m_ButtonGame_Lock->SetActiveState(GLOBALS.bCfgInvLocked); assert(m_ButtonGame_TimerizedText == NULL); m_ButtonGame_TimerizedText = new RMOptionButton(20009,RMPoint(463, 273), true); - m_ButtonGame_TimerizedText->SetActiveState(!bCfgTimerizedText); + m_ButtonGame_TimerizedText->SetActiveState(!GLOBALS.bCfgTimerizedText); assert(m_ButtonGame_Scrolling == NULL); m_ButtonGame_Scrolling = new RMOptionButton(20010, RMPoint(315, 263), true); - m_ButtonGame_Scrolling->SetActiveState(bCfgInvNoScroll); + m_ButtonGame_Scrolling->SetActiveState(GLOBALS.bCfgInvNoScroll); assert(m_ButtonGame_InterUp == NULL); m_ButtonGame_InterUp = new RMOptionButton(20011,RMPoint(36, 258), true); - m_ButtonGame_InterUp->SetActiveState(bCfgInvUp); + m_ButtonGame_InterUp->SetActiveState(GLOBALS.bCfgInvUp); assert(m_SlideTextSpeed == NULL); - m_SlideTextSpeed = new RMOptionSlide(RMPoint(165, 122), 10, nCfgTextSpeed); + m_SlideTextSpeed = new RMOptionSlide(RMPoint(165, 122), 10, GLOBALS.nCfgTextSpeed); assert(m_SlideTonySpeed == NULL); - m_SlideTonySpeed = new RMOptionSlide(RMPoint(165, 226), 5, nCfgTonySpeed); + m_SlideTonySpeed = new RMOptionSlide(RMPoint(165, 226), 5, GLOBALS.nCfgTonySpeed); } // Menu Graphics else if (m_nState == MENUGFX) { assert(m_ButtonGfx_Anni30 == NULL); m_ButtonGfx_Anni30 = new RMOptionButton(20015,RMPoint(247, 178), true); - m_ButtonGfx_Anni30->SetActiveState(bCfgAnni30); + m_ButtonGfx_Anni30->SetActiveState(GLOBALS.bCfgAnni30); assert(m_ButtonGfx_AntiAlias == NULL); m_ButtonGfx_AntiAlias = new RMOptionButton(20016, RMPoint(430, 83), true); - m_ButtonGfx_AntiAlias->SetActiveState(!bCfgAntiAlias); + m_ButtonGfx_AntiAlias->SetActiveState(!GLOBALS.bCfgAntiAlias); assert(m_ButtonGfx_Sottotitoli == NULL); m_ButtonGfx_Sottotitoli = new RMOptionButton(20017,RMPoint(98, 82), true); - m_ButtonGfx_Sottotitoli->SetActiveState(!bCfgSottotitoli); + m_ButtonGfx_Sottotitoli->SetActiveState(!GLOBALS.bCfgSottotitoli); assert(m_ButtonGfx_Tips == NULL); m_ButtonGfx_Tips = new RMOptionButton(20018,RMPoint(431, 246), true); - m_ButtonGfx_Tips->SetActiveState(bCfgInterTips); + m_ButtonGfx_Tips->SetActiveState(GLOBALS.bCfgInterTips); assert(m_ButtonGfx_Trans == NULL); m_ButtonGfx_Trans = new RMOptionButton(20019,RMPoint(126, 271), true); - m_ButtonGfx_Trans->SetActiveState(!bCfgTransparence); + m_ButtonGfx_Trans->SetActiveState(!GLOBALS.bCfgTransparence); } else if (m_nState == MENUSOUND) { assert(m_SliderSound_Dubbing == NULL); - m_SliderSound_Dubbing = new RMOptionSlide(RMPoint(165, 122), 10, nCfgDubbingVolume); + m_SliderSound_Dubbing = new RMOptionSlide(RMPoint(165, 122), 10, GLOBALS.nCfgDubbingVolume); assert(m_SliderSound_Music == NULL); - m_SliderSound_Music = new RMOptionSlide(RMPoint(165, 226), 10, nCfgMusicVolume); + m_SliderSound_Music = new RMOptionSlide(RMPoint(165, 226), 10, GLOBALS.nCfgMusicVolume); assert(m_SliderSound_SFX == NULL); - m_SliderSound_SFX = new RMOptionSlide(RMPoint(165, 330), 10, nCfgSFXVolume); + m_SliderSound_SFX = new RMOptionSlide(RMPoint(165, 330), 10, GLOBALS.nCfgSFXVolume); assert(m_ButtonSound_DubbingOn == NULL); m_ButtonSound_DubbingOn = new RMOptionButton(20033, RMPoint(339, 75), true); - m_ButtonSound_DubbingOn->SetActiveState(bCfgDubbing); + m_ButtonSound_DubbingOn->SetActiveState(GLOBALS.bCfgDubbing); assert(m_ButtonSound_MusicOn == NULL); m_ButtonSound_MusicOn = new RMOptionButton(20034,RMPoint(338, 179), true); - m_ButtonSound_MusicOn->SetActiveState(bCfgMusic); + m_ButtonSound_MusicOn->SetActiveState(GLOBALS.bCfgMusic); assert(m_ButtonSound_SFXOn == NULL); m_ButtonSound_SFXOn = new RMOptionButton(20035,RMPoint(338, 283), true); - m_ButtonSound_SFXOn->SetActiveState(bCfgSFX); + m_ButtonSound_SFXOn->SetActiveState(GLOBALS.bCfgSFX); } } @@ -815,71 +789,71 @@ void RMOptionScreen::CloseState(void) { } if (m_nState == MENUGAME) { - bCfgInvLocked = m_ButtonGame_Lock->IsActive(); + GLOBALS.bCfgInvLocked = m_ButtonGame_Lock->IsActive(); delete m_ButtonGame_Lock; m_ButtonGame_Lock = NULL; - bCfgTimerizedText = !m_ButtonGame_TimerizedText->IsActive(); + GLOBALS.bCfgTimerizedText = !m_ButtonGame_TimerizedText->IsActive(); delete m_ButtonGame_TimerizedText; m_ButtonGame_TimerizedText = NULL; - bCfgInvNoScroll = m_ButtonGame_Scrolling->IsActive(); + GLOBALS.bCfgInvNoScroll = m_ButtonGame_Scrolling->IsActive(); delete m_ButtonGame_Scrolling; m_ButtonGame_Scrolling = NULL; - bCfgInvUp = m_ButtonGame_InterUp->IsActive(); + GLOBALS.bCfgInvUp = m_ButtonGame_InterUp->IsActive(); delete m_ButtonGame_InterUp; m_ButtonGame_InterUp = NULL; - nCfgTextSpeed = m_SlideTextSpeed->GetValue(); + GLOBALS.nCfgTextSpeed = m_SlideTextSpeed->GetValue(); delete m_SlideTextSpeed; m_SlideTextSpeed = NULL; - nCfgTonySpeed = m_SlideTonySpeed->GetValue(); + GLOBALS.nCfgTonySpeed = m_SlideTonySpeed->GetValue(); delete m_SlideTonySpeed; m_SlideTonySpeed = NULL; } else if (m_nState == MENUGFX) { - bCfgAnni30 = m_ButtonGfx_Anni30->IsActive(); + GLOBALS.bCfgAnni30 = m_ButtonGfx_Anni30->IsActive(); delete m_ButtonGfx_Anni30; m_ButtonGfx_Anni30 = NULL; - bCfgAntiAlias = !m_ButtonGfx_AntiAlias->IsActive(); + GLOBALS.bCfgAntiAlias = !m_ButtonGfx_AntiAlias->IsActive(); delete m_ButtonGfx_AntiAlias; m_ButtonGfx_AntiAlias = NULL; - bCfgSottotitoli = !m_ButtonGfx_Sottotitoli->IsActive(); + GLOBALS.bCfgSottotitoli = !m_ButtonGfx_Sottotitoli->IsActive(); delete m_ButtonGfx_Sottotitoli; m_ButtonGfx_Sottotitoli = NULL; - bCfgInterTips = m_ButtonGfx_Tips->IsActive(); + GLOBALS.bCfgInterTips = m_ButtonGfx_Tips->IsActive(); delete m_ButtonGfx_Tips; m_ButtonGfx_Tips = NULL; - bCfgTransparence = !m_ButtonGfx_Trans->IsActive(); + GLOBALS.bCfgTransparence = !m_ButtonGfx_Trans->IsActive(); delete m_ButtonGfx_Trans; m_ButtonGfx_Trans = NULL; } else if (m_nState == MENUSOUND) { - nCfgDubbingVolume = m_SliderSound_Dubbing->GetValue(); + GLOBALS.nCfgDubbingVolume = m_SliderSound_Dubbing->GetValue(); delete m_SliderSound_Dubbing; m_SliderSound_Dubbing = NULL; - nCfgMusicVolume = m_SliderSound_Music->GetValue(); + GLOBALS.nCfgMusicVolume = m_SliderSound_Music->GetValue(); delete m_SliderSound_Music; m_SliderSound_Music = NULL; - nCfgSFXVolume = m_SliderSound_SFX->GetValue(); + GLOBALS.nCfgSFXVolume = m_SliderSound_SFX->GetValue(); delete m_SliderSound_SFX; m_SliderSound_SFX = NULL; - bCfgDubbing = m_ButtonSound_DubbingOn->IsActive(); + GLOBALS.bCfgDubbing = m_ButtonSound_DubbingOn->IsActive(); delete m_ButtonSound_DubbingOn; m_ButtonSound_DubbingOn = NULL; - bCfgMusic = m_ButtonSound_MusicOn->IsActive(); + GLOBALS.bCfgMusic = m_ButtonSound_MusicOn->IsActive(); delete m_ButtonSound_MusicOn; m_ButtonSound_MusicOn = NULL; - bCfgSFX = m_ButtonSound_SFXOn->IsActive(); + GLOBALS.bCfgSFX = m_ButtonSound_SFXOn->IsActive(); delete m_ButtonSound_SFXOn; m_ButtonSound_SFXOn = NULL; } @@ -1261,19 +1235,19 @@ void RMOptionScreen::DoFrame(CORO_PARAM, RMInput *input) { if (m_nState == MENUGFX) { // Queste opzioni hanno effetto immediato if (m_ButtonGfx_Anni30->IsActive()) - bCfgAnni30 = true; + GLOBALS.bCfgAnni30 = true; else - bCfgAnni30 = false; + GLOBALS.bCfgAnni30 = false; if (m_ButtonGfx_AntiAlias->IsActive()) - bCfgAntiAlias = false; + GLOBALS.bCfgAntiAlias = false; else - bCfgAntiAlias = true; + GLOBALS.bCfgAntiAlias = true; if (m_ButtonGfx_Trans->IsActive()) - bCfgTransparence = false; + GLOBALS.bCfgTransparence = false; else - bCfgTransparence = true; + GLOBALS.bCfgTransparence = true; } } } diff --git a/engines/tony/game.h b/engines/tony/game.h index 8cd64ec7d2..80482f39da 100644 --- a/engines/tony/game.h +++ b/engines/tony/game.h @@ -72,26 +72,6 @@ namespace Tony { (buf8)->Init(*raw, raw->Width(), raw->Height(), true); \ delete raw; -extern bool bCfgInvLocked; -extern bool bCfgInvNoScroll; -extern bool bCfgTimerizedText; -extern bool bCfgInvUp; -extern bool bCfgAnni30; -extern bool bCfgAntiAlias; -extern bool bCfgSottotitoli; -extern bool bCfgTransparence; -extern bool bCfgInterTips; -extern bool bCfgDubbing; -extern bool bCfgMusic; -extern bool bCfgSFX; -extern int nCfgTonySpeed; -extern int nCfgTextSpeed; -extern int nCfgDubbingVolume; -extern int nCfgMusicVolume; -extern int nCfgSFXVolume; -extern bool bSkipSfxNoLoop; - -extern bool bPatIrqFreeze; class RMPointer : public RMGfxTask { private: diff --git a/engines/tony/gfxcore.cpp b/engines/tony/gfxcore.cpp index 49dd36cfe7..0c5ffa8096 100644 --- a/engines/tony/gfxcore.cpp +++ b/engines/tony/gfxcore.cpp @@ -47,6 +47,7 @@ #include "tony/gfxengine.h" #include "tony/mpal/mpalutils.h" +#include "tony/tony.h" namespace Tony { @@ -1437,7 +1438,7 @@ void RMGfxSourceBuffer8RLEWordAB::RLEDecompressLine(uint16 *dst, byte *src, int int i, n; int r, g, b, r2, g2, b2; - if (!bCfgTransparence) { + if (!GLOBALS.bCfgTransparence) { RMGfxSourceBuffer8RLEWord::RLEDecompressLine(dst, src, nStartSkip, nLength); return; } @@ -1799,7 +1800,7 @@ void RMGfxSourceBuffer8RLEByteAA::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RM CORO_BEGIN_CODE(_ctx); CORO_INVOKE_2(RMGfxSourceBuffer8RLE::Draw, bigBuf, prim); - if (bCfgAntiAlias) + if (GLOBALS.bCfgAntiAlias) DrawAA(bigBuf,prim); CORO_END_CODE; @@ -1837,7 +1838,7 @@ void RMGfxSourceBuffer8RLEWordAA::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RM CORO_BEGIN_CODE(_ctx); CORO_INVOKE_2(RMGfxSourceBuffer8RLE::Draw, bigBuf, prim); - if (bCfgAntiAlias) + if (GLOBALS.bCfgAntiAlias) DrawAA(bigBuf,prim); CORO_END_CODE; diff --git a/engines/tony/gfxengine.cpp b/engines/tony/gfxengine.cpp index 8f7d27dafc..bf1a08f245 100644 --- a/engines/tony/gfxengine.cpp +++ b/engines/tony/gfxengine.cpp @@ -54,17 +54,11 @@ namespace Tony { -extern bool bIdleExited; -extern bool bPatIrqFreeze; -extern bool bSkipSfxNoLoop; - /****************************************************************************\ * Metodi di RMGfxEngine \****************************************************************************/ -bool bIdleExited; - void ExitAllIdles(CORO_PARAM, const void *param) { CORO_BEGIN_CONTEXT; CORO_END_CONTEXT(_ctx); @@ -74,12 +68,12 @@ void ExitAllIdles(CORO_PARAM, const void *param) { CORO_BEGIN_CODE(_ctx); // Chiude le idle - bSkipSfxNoLoop = true; + GLOBALS.bSkipSfxNoLoop = true; CORO_INVOKE_2(mpalEndIdlePoll, nCurLoc, NULL); - bIdleExited = true; - bSkipSfxNoLoop = false; + GLOBALS.bIdleExited = true; + GLOBALS.bSkipSfxNoLoop = false; CORO_END_CODE; } @@ -149,11 +143,11 @@ void RMGfxEngine::OpenOptionScreen(CORO_PARAM, int type) { // Esce la IDLE onde evitare la morte prematura in caricamento m_bMustEnterMenu = true; if (type == 1 || type == 2) { - bIdleExited = true; + GLOBALS.bIdleExited = true; } else { CORO_INVOKE_0(m_tony.StopNoAction); - bIdleExited = false; + GLOBALS.bIdleExited = false; CoroScheduler.createProcess(ExitAllIdles, &m_nCurLoc, sizeof(int)); } @@ -173,10 +167,10 @@ void RMGfxEngine::DoFrame(CORO_PARAM, bool bDrawLocation) { // Poll dei dispositivi di input m_input.Poll(); - if (m_bMustEnterMenu && bIdleExited) { + if (m_bMustEnterMenu && GLOBALS.bIdleExited) { m_bOption = true; m_bMustEnterMenu = false; - bIdleExited = false; + GLOBALS.bIdleExited = false; } if (m_bOption) { @@ -401,10 +395,10 @@ void RMGfxEngine::ItemIrq(uint32 dwItem, int nPattern, int nStatus) { item=This->m_loc.GetItemFromCode(dwItem); if (item != NULL) { if (nPattern!=-1) { - if (bPatIrqFreeze) + if (GLOBALS.bPatIrqFreeze) MainFreeze(); item->SetPattern(nPattern,true); - if (bPatIrqFreeze) + if (GLOBALS.bPatIrqFreeze) MainUnfreeze(); } if (nStatus!=-1) @@ -604,16 +598,16 @@ void RMGfxEngine::Init(/*HINSTANCE hInst*/) { - bPatIrqFreeze = true; + GLOBALS.bPatIrqFreeze = true; // GUI attivabile m_bGUIOption = true; m_bGUIInterface = true; m_bGUIInventory = true; - bSkipSfxNoLoop = false; + GLOBALS.bSkipSfxNoLoop = false; m_bMustEnterMenu = false; - bIdleExited = false; + GLOBALS.bIdleExited = false; m_bOption = false; m_bWiping = false; m_hWipeEvent = CoroScheduler.createEvent(false, false); @@ -806,23 +800,23 @@ void RMGfxEngine::SaveState(const char *fn, byte *curThumb, const char *name, bo CharsSaveAll(f); // Save the options - f->writeByte(bCfgInvLocked); - f->writeByte(bCfgInvNoScroll); - f->writeByte(bCfgTimerizedText); - f->writeByte(bCfgInvUp); - f->writeByte(bCfgAnni30); - f->writeByte(bCfgAntiAlias); - f->writeByte(bCfgSottotitoli); - f->writeByte(bCfgTransparence); - f->writeByte(bCfgInterTips); - f->writeByte(bCfgDubbing); - f->writeByte(bCfgMusic); - f->writeByte(bCfgSFX); - f->writeByte(nCfgTonySpeed); - f->writeByte(nCfgTextSpeed); - f->writeByte(nCfgDubbingVolume); - f->writeByte(nCfgMusicVolume); - f->writeByte(nCfgSFXVolume); + f->writeByte(GLOBALS.bCfgInvLocked); + f->writeByte(GLOBALS.bCfgInvNoScroll); + f->writeByte(GLOBALS.bCfgTimerizedText); + f->writeByte(GLOBALS.bCfgInvUp); + f->writeByte(GLOBALS.bCfgAnni30); + f->writeByte(GLOBALS.bCfgAntiAlias); + f->writeByte(GLOBALS.bCfgSottotitoli); + f->writeByte(GLOBALS.bCfgTransparence); + f->writeByte(GLOBALS.bCfgInterTips); + f->writeByte(GLOBALS.bCfgDubbing); + f->writeByte(GLOBALS.bCfgMusic); + f->writeByte(GLOBALS.bCfgSFX); + f->writeByte(GLOBALS.nCfgTonySpeed); + f->writeByte(GLOBALS.nCfgTextSpeed); + f->writeByte(GLOBALS.nCfgDubbingVolume); + f->writeByte(GLOBALS.nCfgMusicVolume); + f->writeByte(GLOBALS.nCfgSFXVolume); // Save the hotspots SaveChangedHotspot(f); @@ -942,23 +936,23 @@ void RMGfxEngine::LoadState(CORO_PARAM, const char *fn) { if (_ctx->ver >= 6) { // Load options - bCfgInvLocked = _ctx->f->readByte(); - bCfgInvNoScroll = _ctx->f->readByte(); - bCfgTimerizedText = _ctx->f->readByte(); - bCfgInvUp = _ctx->f->readByte(); - bCfgAnni30 = _ctx->f->readByte(); - bCfgAntiAlias = _ctx->f->readByte(); - bCfgSottotitoli = _ctx->f->readByte(); - bCfgTransparence = _ctx->f->readByte(); - bCfgInterTips = _ctx->f->readByte(); - bCfgDubbing = _ctx->f->readByte(); - bCfgMusic = _ctx->f->readByte(); - bCfgSFX = _ctx->f->readByte(); - nCfgTonySpeed = _ctx->f->readByte(); - nCfgTextSpeed = _ctx->f->readByte(); - nCfgDubbingVolume = _ctx->f->readByte(); - nCfgMusicVolume = _ctx->f->readByte(); - nCfgSFXVolume = _ctx->f->readByte(); + GLOBALS.bCfgInvLocked = _ctx->f->readByte(); + GLOBALS.bCfgInvNoScroll = _ctx->f->readByte(); + GLOBALS.bCfgTimerizedText = _ctx->f->readByte(); + GLOBALS.bCfgInvUp = _ctx->f->readByte(); + GLOBALS.bCfgAnni30 = _ctx->f->readByte(); + GLOBALS.bCfgAntiAlias = _ctx->f->readByte(); + GLOBALS.bCfgSottotitoli = _ctx->f->readByte(); + GLOBALS.bCfgTransparence = _ctx->f->readByte(); + GLOBALS.bCfgInterTips = _ctx->f->readByte(); + GLOBALS.bCfgDubbing = _ctx->f->readByte(); + GLOBALS.bCfgMusic = _ctx->f->readByte(); + GLOBALS.bCfgSFX = _ctx->f->readByte(); + GLOBALS.nCfgTonySpeed = _ctx->f->readByte(); + GLOBALS.nCfgTextSpeed = _ctx->f->readByte(); + GLOBALS.nCfgDubbingVolume = _ctx->f->readByte(); + GLOBALS.nCfgMusicVolume = _ctx->f->readByte(); + GLOBALS.nCfgSFXVolume = _ctx->f->readByte(); // Load hotspots LoadChangedHotspot(_ctx->f); diff --git a/engines/tony/globals.cpp b/engines/tony/globals.cpp new file mode 100644 index 0000000000..c39ba215b4 --- /dev/null +++ b/engines/tony/globals.cpp @@ -0,0 +1,93 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "tony/globals.h" + +namespace Tony { + +Globals::Globals() { + nextLoop = false; + nextChannel = 0; + nextSync = 0; + curChannel = 0; + flipflop = 0; + curBackText = NULL; + Tony = NULL; + Pointer = NULL; + Boxes = NULL; + Loc = NULL; + Inventory = NULL; + Input = NULL; + LoadLocation = NULL; + UnloadLocation = NULL; + LinkGraphicTask = NULL; + Freeze = NULL; + Unfreeze = NULL; + WaitFrame = NULL; + PlayMusic = NULL; + WaitWipeEnd = NULL; + CloseWipe = NULL; + InitWipe = NULL; + EnableGUI = NULL; + DisableGUI = NULL; + SetPalesati = NULL; + + dwTonyNumTexts = 0; + bTonyInTexts = false; + bStaticTalk = false; + bPatIrqFreeze = false; + bCfgInvLocked = false; + bCfgInvNoScroll = false; + bCfgTimerizedText = false; + bCfgInvUp = false; + bCfgAnni30 = false; + bCfgAntiAlias = false; + bCfgSottotitoli = false; + bCfgTransparence = false; + bCfgInterTips = false; + bCfgDubbing = false; + bCfgMusic = false; + bCfgSFX = false; + nCfgTonySpeed = 0; + nCfgTextSpeed = 0; + nCfgDubbingVolume = 0; + nCfgMusicVolume = 0; + nCfgSFXVolume = 0; + bIdleExited = false; + bSkipSfxNoLoop = false; + bNoOcchioDiBue = false; + curDialog = 0; + curSonoriz = 0; + bFadeOutStop = false; + +// OSystem::MutexRef cs[10]; +// OSystem::MutexRef vdb; + Common::fill(&mut[0], &mut[10], (HANDLE)NULL); + bSkipIdle = false; + hSkipIdle = 0; + lastMusic = 0; + lastTappeto = 0; + Common::fill(&tappeti[0], &tappeti[200], 0); + SFM_nLoc = 0; +} + +} // End of namespace Tony diff --git a/engines/tony/globals.h b/engines/tony/globals.h new file mode 100644 index 0000000000..7f6f8ed880 --- /dev/null +++ b/engines/tony/globals.h @@ -0,0 +1,232 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef TONY_GLOBALS +#define TONY_GLOBALS + +#include "common/savefile.h" +#include "tony/adv.h" +#include "tony/input.h" +#include "tony/inventory.h" +#include "tony/loc.h" +#include "tony/tonychar.h" + +namespace Tony { + +#define T_GRILLI 1 +#define T_GRILLIOV 2 +#define T_GRILLIVENTO 3 +#define T_GRILLIVENTO1 4 +#define T_VENTO 5 +#define T_MARE 6 +#define T_MAREMETA 7 + + +struct CharacterStruct { + uint32 code; + RMItem *item; + byte r, g, b; + int talkpattern; + int standpattern; + int starttalkpattern, endtalkpattern; + int numtexts; + + void Save(Common::OutSaveFile *f) { + f->writeUint32LE(code); + f->writeUint32LE(0); + f->writeByte(r); + f->writeByte(g); + f->writeByte(b); + f->writeUint32LE(talkpattern); + f->writeUint32LE(standpattern); + f->writeUint32LE(starttalkpattern); + f->writeUint32LE(endtalkpattern); + f->writeUint32LE(numtexts); + } + void Load(Common::InSaveFile *f) { + code = f->readUint32LE(); + f->readUint32LE(); + item = NULL; + r = f->readByte(); + g = f->readByte(); + b = f->readByte(); + talkpattern = f->readUint32LE(); + standpattern = f->readUint32LE(); + starttalkpattern = f->readUint32LE(); + endtalkpattern = f->readUint32LE(); + numtexts = f->readUint32LE(); + } +}; + +struct MCharacterStruct { + uint32 code; + RMItem *item; + byte r, g, b; + int x, y; + int numtalks[10]; + int curgroup; + int numtexts; + bool bInTexts; + int curTalk; + bool bAlwaysBack; + + void Save(Common::OutSaveFile *f) { + f->writeUint32LE(code); + f->writeUint32LE(0); + f->writeByte(r); + f->writeByte(g); + f->writeByte(b); + f->writeUint32LE(x); + f->writeUint32LE(y); + for (int i = 0; i < 10; ++i) + f->writeUint32LE(numtalks[i]); + f->writeUint32LE(curgroup); + f->writeUint32LE(numtexts); + f->writeByte(bInTexts); + f->writeUint32LE(curTalk); + f->writeByte(bAlwaysBack); + } + void Load(Common::InSaveFile *f) { + code = f->readUint32LE(); + f->readUint32LE(); + item = NULL; + r = f->readByte(); + g = f->readByte(); + b = f->readByte(); + x = f->readUint32LE(); + y = f->readUint32LE(); + for (int i = 0; i < 10; ++i) + numtalks[i] = f->readUint32LE(); + curgroup = f->readUint32LE(); + numtexts = f->readUint32LE(); + bInTexts = f->readByte(); + curTalk = f->readUint32LE(); + bAlwaysBack = f->readByte(); + } +}; + +struct ChangedHotspotStruct { + uint32 dwCode; + uint32 nX, nY; + + void Save(Common::OutSaveFile *f) { + f->writeUint32LE(dwCode); + f->writeUint32LE(nX); + f->writeUint32LE(nY); + } + void Load(Common::InSaveFile *f) { + dwCode = f->readUint32LE(); + nX = f->readUint32LE(); + nY = f->readUint32LE(); + } +}; + +class Globals { +public: + Globals(); + + char nextMusic[MAX_PATH]; + bool nextLoop; + int nextChannel; + int nextSync; + int curChannel; + int flipflop; + // OSystem::MutexRef csMusic; + CharacterStruct Character[16]; + MCharacterStruct MCharacter[10]; + ChangedHotspotStruct ChangedHotspot[256]; + bool IsMChar[16]; + bool bAlwaysDisplay; + RMPoint saveTonyPos; + int saveTonyLoc; + RMTextDialog *curBackText; + bool bTonyIsSpeaking; + int curChangedHotspot; + bool bPatIrqFreeze; + bool bCfgInvLocked; + bool bCfgInvNoScroll; + bool bCfgTimerizedText; + bool bCfgInvUp; + bool bCfgAnni30; + bool bCfgAntiAlias; + bool bCfgSottotitoli; + bool bCfgTransparence; + bool bCfgInterTips; + bool bCfgDubbing; + bool bCfgMusic; + bool bCfgSFX; + int nCfgTonySpeed; + int nCfgTextSpeed; + int nCfgDubbingVolume; + int nCfgMusicVolume; + int nCfgSFXVolume; + bool bSkipSfxNoLoop; + bool bIdleExited; + bool bNoOcchioDiBue; + int curDialog; + int curSonoriz; + bool bFadeOutStop; + + RMTony *Tony; + RMPointer *Pointer; + RMGameBoxes *Boxes; + RMLocation *Loc; + RMInventory *Inventory; + RMInput *Input; + + uint32 (*LoadLocation)(int, RMPoint, RMPoint start); + void (*UnloadLocation)(CORO_PARAM, bool bDoOnExit, uint32 *result); + void (*LinkGraphicTask)(RMGfxTask *task); + void (*Freeze)(void); + void (*Unfreeze)(void); + void (*WaitFrame)(CORO_PARAM); + void (*PlayMusic)(int nChannel, const char *fileName, int nFX, bool bLoop, int nSync); + void (*WaitWipeEnd)(CORO_PARAM); + void (*CloseWipe)(void); + void (*InitWipe)(int type); + void (*EnableGUI)(void); + void (*DisableGUI)(void); + void (*SetPalesati)(bool bpal); + + uint32 dwTonyNumTexts; + bool bTonyInTexts; + bool bStaticTalk; + RMTony::TALKTYPE nTonyNextTalkType; + + RMPoint StartLocPos[256]; + OSystem::MutexRef cs[10]; + OSystem::MutexRef vdb; + HANDLE mut[10]; + + bool bSkipIdle; + uint32 hSkipIdle; + + int lastMusic, lastTappeto; + + int tappeti[200]; + RMPoint SFM_pt; + int SFM_nLoc; +}; + +} // End of namespace Tony + +#endif // TONY_GLOBALS diff --git a/engines/tony/inventory.cpp b/engines/tony/inventory.cpp index 468ec225a5..fbc0918e10 100644 --- a/engines/tony/inventory.cpp +++ b/engines/tony/inventory.cpp @@ -84,7 +84,7 @@ RMInventory::~RMInventory() { } bool RMInventory::CheckPointInside(const RMPoint &pt) { - if (!bCfgInvUp) + if (!GLOBALS.bCfgInvUp) return pt.y > RM_SY - 70; else return pt.y < 70; @@ -226,7 +226,7 @@ void RMInventory::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *pr if (m_state == SELECTING) { - if (!bCfgInvUp) { + if (!GLOBALS.bCfgInvUp) { _ctx->pos.Set((m_nSelectObj+1)*64 - 20,RM_SY - 113); _ctx->pos2.Set((m_nSelectObj+1)*64 + 34,RM_SY - 150); } else { @@ -240,7 +240,7 @@ void RMInventory::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *pr // Disegna l'interfaccina stupida CORO_INVOKE_2(miniInterface.Draw, bigBuf, _ctx->p); - if (bCfgInterTips) { + if (GLOBALS.bCfgInterTips) { if (miniAction == 1) // Esamina CORO_INVOKE_2(m_hints[0].Draw, bigBuf, _ctx->p2); else if (miniAction == 2) // Parla @@ -563,7 +563,7 @@ void RMInventory::DoFrame(RMGfxTargetBuffer &bigBuf, RMPointer &ptr, RMPoint mpo } if (_vm->GetEngine()->GetInput().GetAsyncKeyState(Common::KEYCODE_i)) { - bCfgInvLocked = !bCfgInvLocked; + GLOBALS.bCfgInvLocked = !GLOBALS.bCfgInvLocked; } if (m_bCombining) {//m_state == COMBINING) @@ -571,9 +571,9 @@ void RMInventory::DoFrame(RMGfxTargetBuffer &bigBuf, RMPointer &ptr, RMPoint mpo ptr.SetSpecialPointer(RMPointer::PTR_CUSTOM); } - if (!bCfgInvUp) { - if ((m_state == CLOSED) && (mpos.y > RM_SY - 10 || bCfgInvLocked) && bCanOpen) { - if (!bCfgInvNoScroll) { + if (!GLOBALS.bCfgInvUp) { + if ((m_state == CLOSED) && (mpos.y > RM_SY - 10 || GLOBALS.bCfgInvLocked) && bCanOpen) { + if (!GLOBALS.bCfgInvNoScroll) { m_state = OPENING; m_curPutY = RM_SY - 1; m_curPutTime=_vm->GetTime(); @@ -582,8 +582,8 @@ void RMInventory::DoFrame(RMGfxTargetBuffer &bigBuf, RMPointer &ptr, RMPoint mpo m_curPutY = RM_SY - 68; } } else if (m_state == OPENED) { - if ((mpos.y < RM_SY - 70 && !bCfgInvLocked) || !bCanOpen) { - if (!bCfgInvNoScroll) { + if ((mpos.y < RM_SY - 70 && !GLOBALS.bCfgInvLocked) || !bCanOpen) { + if (!GLOBALS.bCfgInvNoScroll) { m_state = CLOSING; m_curPutY = RM_SY - 68; m_curPutTime = _vm->GetTime(); @@ -612,8 +612,8 @@ void RMInventory::DoFrame(RMGfxTargetBuffer &bigBuf, RMPointer &ptr, RMPoint mpo m_state = CLOSED; } } else { - if ((m_state == CLOSED) && (mpos.y<10 || bCfgInvLocked) && bCanOpen) { - if (!bCfgInvNoScroll) { + if ((m_state == CLOSED) && (mpos.y<10 || GLOBALS.bCfgInvLocked) && bCanOpen) { + if (!GLOBALS.bCfgInvNoScroll) { m_state = OPENING; m_curPutY =- 68; m_curPutTime = _vm->GetTime(); @@ -623,8 +623,8 @@ void RMInventory::DoFrame(RMGfxTargetBuffer &bigBuf, RMPointer &ptr, RMPoint mpo } } else if (m_state == OPENED) { - if ((mpos.y>70 && !bCfgInvLocked) || !bCanOpen) { - if (!bCfgInvNoScroll) { + if ((mpos.y>70 && !GLOBALS.bCfgInvLocked) || !bCanOpen) { + if (!GLOBALS.bCfgInvNoScroll) { m_state = CLOSING; m_curPutY = -2; m_curPutTime = _vm->GetTime(); @@ -657,7 +657,7 @@ void RMInventory::DoFrame(RMGfxTargetBuffer &bigBuf, RMPointer &ptr, RMPoint mpo int startx = (m_nSelectObj + 1) * 64 - 20; int starty; - if (!bCfgInvUp) + if (!GLOBALS.bCfgInvUp) starty=RM_SY-109; else starty=70; @@ -828,7 +828,7 @@ void RMInterface::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *pr _vm->PlayUtilSFX(1); } - if (bCfgInterTips) { + if (GLOBALS.bCfgInterTips) { prim->Dst().TopLeft() = m_openStart + RMPoint(70, 177); CORO_INVOKE_2(m_hints[_ctx->h].Draw, bigBuf, prim); } diff --git a/engines/tony/loc.cpp b/engines/tony/loc.cpp index 32754bbb51..306322f2ad 100644 --- a/engines/tony/loc.cpp +++ b/engines/tony/loc.cpp @@ -55,8 +55,6 @@ namespace Tony { using namespace ::Tony::MPAL; -extern bool bSkipSfxNoLoop; - /****************************************************************************\ * Metodi di RMPalette @@ -186,7 +184,7 @@ void RMPattern::StopSfx(RMSfx *sfx) { if (m_slots[i].m_type == SOUND) { if (sfx[m_slots[i].m_data].m_name[0] == '_') sfx[m_slots[i].m_data].Stop(); - else if (bSkipSfxNoLoop) + else if (GLOBALS.bSkipSfxNoLoop) sfx[m_slots[i].m_data].Stop(); } } diff --git a/engines/tony/module.mk b/engines/tony/module.mk index af0b3acd2c..6512391d04 100644 --- a/engines/tony/module.mk +++ b/engines/tony/module.mk @@ -7,6 +7,7 @@ MODULE_OBJS := \ game.o \ gfxcore.o \ gfxengine.o \ + globals.o \ input.o \ inventory.o \ loc.o \ diff --git a/engines/tony/sound.cpp b/engines/tony/sound.cpp index 01968ea579..53d3b962d2 100644 --- a/engines/tony/sound.cpp +++ b/engines/tony/sound.cpp @@ -51,13 +51,6 @@ namespace Tony { -extern bool bCfgMusic; -extern bool bCfgSFX; -extern bool bCfgDubbing; -extern int nCfgSFXVolume; -extern int nCfgMusicVolume; -extern int nCfgDubbingVolume; - /****************************************************************************\ * Defines @@ -1527,15 +1520,15 @@ void FPSFX::SetVolume(int dwVolume) { lastVolume = dwVolume; if (bIsVoice) { - if (!bCfgDubbing) dwVolume = 0; + if (!GLOBALS.bCfgDubbing) dwVolume = 0; else { - dwVolume -= (10 - nCfgDubbingVolume) * 2; + dwVolume -= (10 - GLOBALS.nCfgDubbingVolume) * 2; if (dwVolume<0) dwVolume = 0; } } else { - if (!bCfgSFX) dwVolume = 0; + if (!GLOBALS.bCfgSFX) dwVolume = 0; else { - dwVolume -= (10 - nCfgSFXVolume) * 2; + dwVolume -= (10 - GLOBALS.nCfgSFXVolume) * 2; if (dwVolume < 0) dwVolume = 0; } } @@ -2273,9 +2266,9 @@ void FPSTREAM::SetVolume(int dwVolume) { lastVolume = dwVolume; - if (!bCfgMusic) dwVolume = 0; + if (!GLOBALS.bCfgMusic) dwVolume = 0; else { - dwVolume -= (10 - nCfgMusicVolume) * 2; + dwVolume -= (10 - GLOBALS.nCfgMusicVolume) * 2; if (dwVolume<0) dwVolume = 0; } diff --git a/engines/tony/tony.cpp b/engines/tony/tony.cpp index 56b68419fd..1b4a11df0c 100644 --- a/engines/tony/tony.cpp +++ b/engines/tony/tony.cpp @@ -119,23 +119,23 @@ Common::ErrorCode TonyEngine::Init() { m_curThumbnail = new uint16[160 * 120]; // Configurazione di default - bCfgInvLocked = false; - bCfgInvNoScroll = false; - bCfgTimerizedText = true; - bCfgInvUp = false; - bCfgAnni30 = false; - bCfgAntiAlias = false; - bCfgTransparence = true; - bCfgInterTips = true; - bCfgSottotitoli = true; - nCfgTonySpeed = 3; - nCfgTextSpeed = 5; - bCfgDubbing = true; - bCfgMusic = true; - bCfgSFX = true; - nCfgDubbingVolume = 10; - nCfgMusicVolume = 7; - nCfgSFXVolume = 10; + GLOBALS.bCfgInvLocked = false; + GLOBALS.bCfgInvNoScroll = false; + GLOBALS.bCfgTimerizedText = true; + GLOBALS.bCfgInvUp = false; + GLOBALS.bCfgAnni30 = false; + GLOBALS.bCfgAntiAlias = false; + GLOBALS.bCfgTransparence = true; + GLOBALS.bCfgInterTips = true; + GLOBALS.bCfgSottotitoli = true; + GLOBALS.nCfgTonySpeed = 3; + GLOBALS.nCfgTextSpeed = 5; + GLOBALS.bCfgDubbing = true; + GLOBALS.bCfgMusic = true; + GLOBALS.bCfgSFX = true; + GLOBALS.nCfgDubbingVolume = 10; + GLOBALS.nCfgMusicVolume = 7; + GLOBALS.nCfgSFXVolume = 10; m_bQuitNow = false; return Common::kNoError; @@ -152,21 +152,12 @@ void TonyEngine::GUIError(const Common::String &msg) { GUIErrorMessage(msg); } -char nextMusic[MAX_PATH]; -bool nextLoop; -int nextChannel; -int nextSync; -int curChannel; -int flipflop=0; -OSystem::MutexRef csMusic; - - void TonyEngine::PlayMusic(int nChannel, const char *fn, int nFX, bool bLoop, int nSync) { warning("TODO: TonyEngine::PlayMusic"); - g_system->lockMutex(csMusic); +// g_system->lockMutex(csMusic); if (nChannel < 4) - if (flipflop) + if (GLOBALS.flipflop) nChannel = nChannel + 1; switch (nFX) { @@ -243,7 +234,7 @@ void TonyEngine::PlayMusic(int nChannel, const char *fn, int nFX, bool bLoop, in } #endif - g_system->unlockMutex(csMusic); +// g_system->unlockMutex(csMusic); } void TonyEngine::PlaySFX(int nChannel, int nFX) { @@ -264,14 +255,14 @@ void TonyEngine::PlaySFX(int nChannel, int nFX) { } void TonyEngine::StopMusic(int nChannel) { - g_system->lockMutex(csMusic); +// g_system->lockMutex(csMusic); if (nChannel < 4) - m_stream[nChannel+flipflop]->Stop(); + m_stream[nChannel + GLOBALS.flipflop]->Stop(); else m_stream[nChannel]->Stop(); - g_system->unlockMutex(csMusic); +// g_system->unlockMutex(csMusic); } void TonyEngine::StopSFX(int nChannel) { @@ -279,7 +270,7 @@ void TonyEngine::StopSFX(int nChannel) { } void TonyEngine::PlayUtilSFX(int nChannel, int nFX) { - if (m_utilSfx[nChannel]==NULL) + if (m_utilSfx[nChannel] == NULL) return; switch (nFX) { @@ -355,7 +346,7 @@ void TonyEngine::InitMusic() { } // Crea la critical section per la musica - csMusic = g_system->createMutex(); +// csMusic = g_system->createMutex(); // Carica effetti sonori // PreloadUtilSFX(0,"AccendiOpzione.ADP"); @@ -372,7 +363,7 @@ void TonyEngine::CloseMusic() { m_stream[i]->Release(); } - g_system->deleteMutex(csMusic); +// g_system->deleteMutex(csMusic); UnloadAllSFX(); UnloadAllUtilSFX(); diff --git a/engines/tony/tony.h b/engines/tony/tony.h index 4a80970bb9..c1ad6756c2 100644 --- a/engines/tony/tony.h +++ b/engines/tony/tony.h @@ -38,6 +38,7 @@ #include "tony/loc.h" #include "tony/utils.h" #include "tony/window.h" +#include "tony/globals.h" /** * This is the namespace of the Tony engine. @@ -51,6 +52,8 @@ namespace Tony { using namespace MPAL; +class Globals; + enum { kTonyDebugAnimations = 1 << 0, kTonyDebugActions = 1 << 1, @@ -97,6 +100,7 @@ public: Common::File _vdbFP; Common::Array<VoiceHeader> _voices; FPSOUND _theSound; + Globals _globals; enum DATADIR { DD_BASE = 1, @@ -209,6 +213,8 @@ public: // Global reference to the TonyEngine object extern TonyEngine *_vm; +#define GLOBALS _vm->_globals + } // End of namespace Tony #endif /* TONY_H */ diff --git a/engines/tony/tonychar.cpp b/engines/tony/tonychar.cpp index 0e59779229..072e822c36 100644 --- a/engines/tony/tonychar.cpp +++ b/engines/tony/tonychar.cpp @@ -153,7 +153,7 @@ void RMTony::DoFrame(CORO_PARAM, RMGfxTargetBuffer *bigBuf, int curLoc) { if (!m_nInList && m_bShow) bigBuf->AddPrim(new RMGfxPrimitive(this)); - SetSpeed(nCfgTonySpeed); + SetSpeed(GLOBALS.nCfgTonySpeed); // Esegue il movimento normale del personaggio _ctx->time = _vm->GetTime(); |