mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-24 05:01:43 +00:00
301 lines
7.3 KiB
C++
301 lines
7.3 KiB
C++
/* 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/gfxengine.h"
|
|
#include "tony/input.h"
|
|
#include "tony/inventory.h"
|
|
#include "tony/loc.h"
|
|
#include "tony/tonychar.h"
|
|
#include "tony/mpal/mpal.h"
|
|
#include "tony/mpal/mpaldll.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
|
|
|
|
|
|
#define MAX_PATH 255
|
|
|
|
|
|
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();
|
|
}
|
|
};
|
|
|
|
|
|
/**
|
|
* Description of a call to a custom function.
|
|
*/
|
|
typedef struct {
|
|
int nCf;
|
|
|
|
int arg1, arg2, arg3, arg4;
|
|
} CFCALL;
|
|
typedef CFCALL *LPCFCALL;
|
|
typedef LPCFCALL *LPLPCFCALL;
|
|
|
|
|
|
/****************************************************************************\
|
|
* Global variables
|
|
\****************************************************************************/
|
|
|
|
/**
|
|
* Globals class
|
|
*/
|
|
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;
|
|
RMGfxEngine *GfxEngine;
|
|
|
|
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];
|
|
uint32 mut[10];
|
|
|
|
bool bSkipIdle;
|
|
uint32 hSkipIdle;
|
|
|
|
int lastMusic, lastTappeto;
|
|
|
|
int tappeti[200];
|
|
RMPoint SFM_pt;
|
|
int SFM_nLoc;
|
|
|
|
/**
|
|
* @defgroup MPAL variables
|
|
*
|
|
*/
|
|
uint32 mpalError;
|
|
LPITEMIRQFUNCTION lpiifCustom;
|
|
LPLPCUSTOMFUNCTION lplpFunctions;
|
|
Common::String *lplpFunctionStrings;
|
|
uint16 nObjs;
|
|
uint16 nVars;
|
|
HGLOBAL hVars;
|
|
LPMPALVAR lpmvVars;
|
|
uint16 nMsgs;
|
|
HGLOBAL hMsgs;
|
|
LPMPALMSG lpmmMsgs;
|
|
uint16 nDialogs;
|
|
HGLOBAL hDialogs;
|
|
LPMPALDIALOG lpmdDialogs;
|
|
uint16 nItems;
|
|
HGLOBAL hItems;
|
|
LPMPALITEM lpmiItems;
|
|
uint16 nLocations;
|
|
HGLOBAL hLocations;
|
|
LPMPALLOCATION lpmlLocations;
|
|
uint16 nScripts;
|
|
HGLOBAL hScripts;
|
|
LPMPALSCRIPT lpmsScripts;
|
|
Common::File hMpr;
|
|
uint16 nResources;
|
|
uint32 *lpResources;
|
|
bool bExecutingAction;
|
|
bool bExecutingDialog;
|
|
uint32 nPollingLocations[MAXPOLLINGLOCATIONS];
|
|
uint32 hEndPollingLocations[MAXPOLLINGLOCATIONS];
|
|
uint32 PollingThreads[MAXPOLLINGLOCATIONS];
|
|
uint32 hAskChoice;
|
|
uint32 hDoneChoice;
|
|
uint32 nExecutingAction;
|
|
uint32 nExecutingDialog;
|
|
uint32 nExecutingChoice;
|
|
uint32 nSelectedChoice;
|
|
};
|
|
|
|
} // End of namespace Tony
|
|
|
|
#endif // TONY_GLOBALS
|