scummvm/engines/tony/globals.h
2012-06-02 11:07:56 +10:00

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