TONY: Some more cleanup

This commit is contained in:
Strangerke 2012-09-06 08:26:08 +02:00
parent 0856f33498
commit c91a72a9d5
5 changed files with 79 additions and 150 deletions

View file

@ -41,73 +41,8 @@
namespace Tony { namespace Tony {
const char *ambianceFile[] = {
"None",
"1.ADP", // Grilli.WAV
"2.ADP", // Grilli-Ovattati.WAV
"3.ADP", // Grilli-Vento.WAV
"3.ADP", // Grilli-Vento1.WAV
"5.ADP", // Vento1.WAV
"4.ADP", // Mare1.WAV
"6.ADP" // Mare1.WAV half volume
};
struct MusicFileEntry {
const char *name;
int sync;
};
const MusicFileEntry musicFiles[] = {
{"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},
{"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},
{"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},
{"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},
{"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},
{"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 *jingleFileNames[] = {
"S00.ADP", "S01.ADP",
"S02.ADP", "S03.ADP",
"S04.ADP", "S05.ADP",
"S06.ADP", "S07.ADP",
"S08.ADP", "S09.ADP",
"S10.ADP", "S11.ADP",
"S12.ADP", "S13.ADP",
"S14.ADP", "S15.ADP",
"S16.ADP", "S17.ADP",
"S18.ADP"
};
void ReapplyChangedHotspot() { void ReapplyChangedHotspot() {
int i; for (int i = 0; i < GLOBALS._curChangedHotspot; i++)
for (i = 0; i < GLOBALS._curChangedHotspot; i++)
GLOBALS._loc->getItemFromCode(GLOBALS._changedHotspot[i]._dwCode)->changeHotspot(RMPoint(GLOBALS._changedHotspot[i]._nX, GLOBALS._changedHotspot[i]._nY)); GLOBALS._loc->getItemFromCode(GLOBALS._changedHotspot[i]._dwCode)->changeHotspot(RMPoint(GLOBALS._changedHotspot[i]._nX, GLOBALS._changedHotspot[i]._nY));
} }
@ -543,7 +478,7 @@ DECLARE_CUSTOM_FUNCTION(ChangeLocation)(CORO_PARAM, uint32 nLoc, uint32 tX, uint
if (GLOBALS._lastTappeto != GLOBALS._ambiance[nLoc]) { if (GLOBALS._lastTappeto != GLOBALS._ambiance[nLoc]) {
GLOBALS._lastTappeto = GLOBALS._ambiance[nLoc]; GLOBALS._lastTappeto = GLOBALS._ambiance[nLoc];
if (GLOBALS._lastTappeto != 0) if (GLOBALS._lastTappeto != 0)
g_vm->playMusic(4, ambianceFile[GLOBALS._lastTappeto], 0, true, 2000); g_vm->playMusic(4, kAmbianceFile[GLOBALS._lastTappeto], 0, true, 2000);
} }
if (!GLOBALS._bNoBullsEye) { if (!GLOBALS._bNoBullsEye) {
@ -608,8 +543,6 @@ DECLARE_CUSTOM_FUNCTION(CustDisableGUI)(CORO_PARAM, uint32, uint32, uint32, uint
GLOBALS.DisableGUI(); GLOBALS.DisableGUI();
} }
void TonyGenericTake1(CORO_PARAM, uint32 nDirection) { void TonyGenericTake1(CORO_PARAM, uint32 nDirection) {
CORO_BEGIN_CONTEXT; CORO_BEGIN_CONTEXT;
CORO_END_CONTEXT(_ctx); CORO_END_CONTEXT(_ctx);
@ -699,13 +632,10 @@ DECLARE_CUSTOM_FUNCTION(TonyTakeDown2)(CORO_PARAM, uint32, uint32, uint32, uint3
TonyGenericTake2(coroParam, 2); TonyGenericTake2(coroParam, 2);
} }
DECLARE_CUSTOM_FUNCTION(TonyPutUp1)(CORO_PARAM, uint32, uint32, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(TonyPutUp1)(CORO_PARAM, uint32, uint32, uint32, uint32) {
TonyGenericPut1(coroParam, 0); TonyGenericPut1(coroParam, 0);
} }
DECLARE_CUSTOM_FUNCTION(TonyPutMid1)(CORO_PARAM, uint32, uint32, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(TonyPutMid1)(CORO_PARAM, uint32, uint32, uint32, uint32) {
TonyGenericPut1(coroParam, 1); TonyGenericPut1(coroParam, 1);
} }
@ -718,7 +648,6 @@ DECLARE_CUSTOM_FUNCTION(TonyPutUp2)(CORO_PARAM, uint32, uint32, uint32, uint32)
TonyGenericPut2(coroParam, 0); TonyGenericPut2(coroParam, 0);
} }
DECLARE_CUSTOM_FUNCTION(TonyPutMid2)(CORO_PARAM, uint32, uint32, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(TonyPutMid2)(CORO_PARAM, uint32, uint32, uint32, uint32) {
TonyGenericPut2(coroParam, 1); TonyGenericPut2(coroParam, 1);
} }
@ -771,7 +700,6 @@ DECLARE_CUSTOM_FUNCTION(TonyWhistle)(CORO_PARAM, uint32, uint32, uint32, uint32)
CORO_END_CODE; CORO_END_CODE;
} }
void TonySetNumTexts(uint32 dwText) { void TonySetNumTexts(uint32 dwText) {
GLOBALS._dwTonyNumTexts = dwText; GLOBALS._dwTonyNumTexts = dwText;
GLOBALS._bTonyInTexts = false; GLOBALS._bTonyInTexts = false;
@ -1580,7 +1508,6 @@ DECLARE_CUSTOM_FUNCTION(MCharSetPosition)(CORO_PARAM, uint32 nChar, uint32 nX, u
GLOBALS._mCharacter[nChar]._y = nY; GLOBALS._mCharacter[nChar]._y = nY;
} }
DECLARE_CUSTOM_FUNCTION(MCharSetColor)(CORO_PARAM, uint32 nChar, uint32 r, uint32 g, uint32 b) { DECLARE_CUSTOM_FUNCTION(MCharSetColor)(CORO_PARAM, uint32 nChar, uint32 r, uint32 g, uint32 b) {
assert(nChar < 10); assert(nChar < 10);
GLOBALS._mCharacter[nChar]._r = r; GLOBALS._mCharacter[nChar]._r = r;
@ -1588,7 +1515,6 @@ DECLARE_CUSTOM_FUNCTION(MCharSetColor)(CORO_PARAM, uint32 nChar, uint32 r, uint3
GLOBALS._mCharacter[nChar]._b = b; GLOBALS._mCharacter[nChar]._b = b;
} }
DECLARE_CUSTOM_FUNCTION(MCharSetNumTalksInGroup)(CORO_PARAM, uint32 nChar, uint32 nGroup, uint32 nTalks, uint32) { DECLARE_CUSTOM_FUNCTION(MCharSetNumTalksInGroup)(CORO_PARAM, uint32 nChar, uint32 nGroup, uint32 nTalks, uint32) {
assert(nChar < 10); assert(nChar < 10);
assert(nGroup < 10); assert(nGroup < 10);
@ -1596,7 +1522,6 @@ DECLARE_CUSTOM_FUNCTION(MCharSetNumTalksInGroup)(CORO_PARAM, uint32 nChar, uint3
GLOBALS._mCharacter[nChar]._numTalks[nGroup] = nTalks; GLOBALS._mCharacter[nChar]._numTalks[nGroup] = nTalks;
} }
DECLARE_CUSTOM_FUNCTION(MCharSetCurrentGroup)(CORO_PARAM, uint32 nChar, uint32 nGroup, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(MCharSetCurrentGroup)(CORO_PARAM, uint32 nChar, uint32 nGroup, uint32, uint32) {
assert(nChar < 10); assert(nChar < 10);
assert(nGroup < 10); assert(nGroup < 10);
@ -1617,7 +1542,6 @@ DECLARE_CUSTOM_FUNCTION(MCharSetAlwaysBack)(CORO_PARAM, uint32 nChar, uint32 bAl
GLOBALS._mCharacter[nChar]._bAlwaysBack = bAlwaysBack; GLOBALS._mCharacter[nChar]._bAlwaysBack = bAlwaysBack;
} }
DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMessage, uint32 bIsBack, uint32 nFont) { DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMessage, uint32 bIsBack, uint32 nFont) {
CORO_BEGIN_CONTEXT; CORO_BEGIN_CONTEXT;
RMMessage *msg; RMMessage *msg;
@ -1662,7 +1586,6 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes
_ctx->voice = NULL; _ctx->voice = NULL;
if (_ctx->curVoc) { if (_ctx->curVoc) {
// Position within the database of entries, beginning at the first // Position within the database of entries, beginning at the first
// fseek(g_vm->m_vdbFP, curVoc->offset, SEEK_SET);
g_vm->_vdbFP.seek(_ctx->curVoc->_offset); g_vm->_vdbFP.seek(_ctx->curVoc->_offset);
_ctx->curOffset = _ctx->curVoc->_offset; _ctx->curOffset = _ctx->curVoc->_offset;
} }
@ -1744,8 +1667,6 @@ DECLARE_CUSTOM_FUNCTION(MCharSendMessage)(CORO_PARAM, uint32 nChar, uint32 dwMes
* Dialogs * Dialogs
*/ */
int g_curDialog;
DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg, uint32, uint32) {
CORO_BEGIN_CONTEXT; CORO_BEGIN_CONTEXT;
char *string; char *string;
@ -1766,7 +1687,7 @@ DECLARE_CUSTOM_FUNCTION(SendDialogMessage)(CORO_PARAM, uint32 nPers, uint32 nMsg
if (nPers != 0 && GLOBALS._isMChar[nPers] && GLOBALS._mCharacter[nPers]._bAlwaysBack) if (nPers != 0 && GLOBALS._isMChar[nPers] && GLOBALS._mCharacter[nPers]._bAlwaysBack)
_ctx->bIsBack = true; _ctx->bIsBack = true;
_ctx->curVoc = SearchVoiceHeader(g_curDialog, nMsg); _ctx->curVoc = SearchVoiceHeader(GLOBALS._curDialog, nMsg);
_ctx->voice = NULL; _ctx->voice = NULL;
if (_ctx->curVoc) { if (_ctx->curVoc) {
@ -1939,7 +1860,7 @@ DECLARE_CUSTOM_FUNCTION(StartDialog)(CORO_PARAM, uint32 nDialog, uint32 nStartGr
CORO_BEGIN_CODE(_ctx); CORO_BEGIN_CODE(_ctx);
g_curDialog = nDialog; GLOBALS._curDialog = nDialog;
// Call MPAL to start the dialog // Call MPAL to start the dialog
mpalQueryDoDialog(nDialog, nStartGroup); mpalQueryDoDialog(nDialog, nStartGroup);
@ -2174,11 +2095,11 @@ DECLARE_CUSTOM_FUNCTION(PlaySoundEffect)(CORO_PARAM, uint32 nMusic, uint32 nFX,
} }
GLOBALS._lastMusic = nMusic; GLOBALS._lastMusic = nMusic;
CustPlayMusic(GLOBALS._curSoundEffect, musicFiles[nMusic].name, nFX, bNoLoop ? false : true, musicFiles[nMusic].sync); CustPlayMusic(GLOBALS._curSoundEffect, kMusicFiles[nMusic]._name, nFX, bNoLoop ? false : true, kMusicFiles[nMusic]._sync);
} }
DECLARE_CUSTOM_FUNCTION(PlayJingle)(CORO_PARAM, uint32 nMusic, uint32 nFX, uint32 bLoop, uint32) { DECLARE_CUSTOM_FUNCTION(PlayJingle)(CORO_PARAM, uint32 nMusic, uint32 nFX, uint32 bLoop, uint32) {
CustPlayMusic(2, jingleFileNames[nMusic], nFX, bLoop); CustPlayMusic(2, kJingleFileNames[nMusic], nFX, bLoop);
} }
DECLARE_CUSTOM_FUNCTION(PlayItemSfx)(CORO_PARAM, uint32 nItem, uint32 nSFX, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(PlayItemSfx)(CORO_PARAM, uint32 nItem, uint32 nSFX, uint32, uint32) {
@ -2201,7 +2122,7 @@ void RestoreMusic(CORO_PARAM) {
CORO_INVOKE_4(PlaySoundEffect, GLOBALS._lastMusic, 0, 0, 0); CORO_INVOKE_4(PlaySoundEffect, GLOBALS._lastMusic, 0, 0, 0);
if (GLOBALS._lastTappeto != 0) if (GLOBALS._lastTappeto != 0)
CustPlayMusic(4, ambianceFile[GLOBALS._lastTappeto], 0, true); CustPlayMusic(4, kAmbianceFile[GLOBALS._lastTappeto], 0, true);
CORO_END_CODE; CORO_END_CODE;
} }
@ -2216,7 +2137,6 @@ void LoadMusic(Common::InSaveFile *f) {
GLOBALS._lastTappeto = f->readByte(); GLOBALS._lastTappeto = f->readByte();
} }
DECLARE_CUSTOM_FUNCTION(JingleFadeStart)(CORO_PARAM, uint32 nJingle, uint32 bLoop, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(JingleFadeStart)(CORO_PARAM, uint32 nJingle, uint32 bLoop, uint32, uint32) {
CORO_BEGIN_CONTEXT; CORO_BEGIN_CONTEXT;
CORO_END_CONTEXT(_ctx); CORO_END_CONTEXT(_ctx);
@ -2243,9 +2163,6 @@ DECLARE_CUSTOM_FUNCTION(JingleFadeEnd)(CORO_PARAM, uint32 nJingle, uint32 bLoop,
CORO_END_CODE; CORO_END_CODE;
} }
DECLARE_CUSTOM_FUNCTION(MustSkipIdleStart)(CORO_PARAM, uint32, uint32, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(MustSkipIdleStart)(CORO_PARAM, uint32, uint32, uint32, uint32) {
GLOBALS._bSkipIdle = true; GLOBALS._bSkipIdle = true;
CoroScheduler.setEvent(GLOBALS._hSkipIdle); CoroScheduler.setEvent(GLOBALS._hSkipIdle);
@ -2282,7 +2199,6 @@ DECLARE_CUSTOM_FUNCTION(OpenInitOptions)(CORO_PARAM, uint32, uint32, uint32, uin
CORO_END_CODE; CORO_END_CODE;
} }
DECLARE_CUSTOM_FUNCTION(DoCredits)(CORO_PARAM, uint32 nMsg, uint32 dwTime, uint32, uint32) { DECLARE_CUSTOM_FUNCTION(DoCredits)(CORO_PARAM, uint32 nMsg, uint32 dwTime, uint32, uint32) {
CORO_BEGIN_CONTEXT; CORO_BEGIN_CONTEXT;
RMMessage *msg; RMMessage *msg;
@ -2355,8 +2271,6 @@ DECLARE_CUSTOM_FUNCTION(DoCredits)(CORO_PARAM, uint32 nMsg, uint32 dwTime, uint3
CORO_END_CODE; CORO_END_CODE;
} }
BEGIN_CUSTOM_FUNCTION_MAP() BEGIN_CUSTOM_FUNCTION_MAP()
ASSIGN(1, CustLoadLocation) ASSIGN(1, CustLoadLocation)
@ -2507,7 +2421,7 @@ ASSIGN(201, MustSkipIdleEnd);
END_CUSTOM_FUNCTION_MAP() END_CUSTOM_FUNCTION_MAP()
void processKilledCallback(Common::PROCESS *p) { void processKilledCallback(Common::PROCESS *p) {
for (uint i = 0; i < 10; i++) for (uint i = 0; i < 10; i++) {
if (GLOBALS._mut[i]._ownerPid == p->pid) { if (GLOBALS._mut[i]._ownerPid == p->pid) {
// Handle scripts which don't call ReleaseOwnership, such as // Handle scripts which don't call ReleaseOwnership, such as
// the one in loc37's vEnter when Tony is chasing the mouse. // the one in loc37's vEnter when Tony is chasing the mouse.
@ -2517,6 +2431,7 @@ void processKilledCallback(Common::PROCESS *p) {
GLOBALS._mut[i]._lockCount = 0; GLOBALS._mut[i]._lockCount = 0;
CoroScheduler.setEvent(GLOBALS._mut[i]._eventId); CoroScheduler.setEvent(GLOBALS._mut[i]._eventId);
} }
}
} }
void setupGlobalVars(RMTony *tony, RMPointer *ptr, RMGameBoxes *box, RMLocation *loc, RMInventory *inv, RMInput *input) { void setupGlobalVars(RMTony *tony, RMPointer *ptr, RMGameBoxes *box, RMLocation *loc, RMInventory *inv, RMInput *input) {
@ -2531,13 +2446,12 @@ void setupGlobalVars(RMTony *tony, RMPointer *ptr, RMGameBoxes *box, RMLocation
GLOBALS.EnableGUI = mainEnableGUI; GLOBALS.EnableGUI = mainEnableGUI;
GLOBALS._bAlwaysDisplay = false; GLOBALS._bAlwaysDisplay = false;
int i;
CoroScheduler.setResourceCallback(processKilledCallback); CoroScheduler.setResourceCallback(processKilledCallback);
for (i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
GLOBALS._mut[i]._eventId = CoroScheduler.createEvent(false, true); GLOBALS._mut[i]._eventId = CoroScheduler.createEvent(false, true);
for (i = 0; i < 200; i++) for (int i = 0; i < 200; i++)
GLOBALS._ambiance[i] = 0; GLOBALS._ambiance[i] = 0;
GLOBALS._ambiance[6] = AMBIANCE_CRICKETS; GLOBALS._ambiance[6] = AMBIANCE_CRICKETS;

View file

@ -36,6 +36,48 @@ namespace Tony {
using namespace MPAL; using namespace MPAL;
struct MusicFileEntry {
const char *_name;
int _sync;
};
static const char *kAmbianceFile[] = {
"None",
"1.ADP", // Grilli.WAV
"2.ADP", // Grilli-Ovattati.WAV
"3.ADP", // Grilli-Vento.WAV
"3.ADP", // Grilli-Vento1.WAV
"5.ADP", // Vento1.WAV
"4.ADP", // Mare1.WAV
"6.ADP" // Mare1.WAV half volume
};
static const MusicFileEntry kMusicFiles[] = {
{"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}, {"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},
{"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}, {"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},
{"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}, {"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}
};
static const char *kJingleFileNames[] = {
"S00.ADP", "S01.ADP", "S02.ADP", "S03.ADP", "S04.ADP",
"S05.ADP", "S06.ADP", "S07.ADP", "S08.ADP", "S09.ADP",
"S10.ADP", "S11.ADP", "S12.ADP", "S13.ADP", "S14.ADP",
"S15.ADP", "S16.ADP", "S17.ADP", "S18.ADP"
};
#define INIT_CUSTOM_FUNCTION MapCustomFunctions #define INIT_CUSTOM_FUNCTION MapCustomFunctions
#define DECLARE_CUSTOM_FUNCTION(x) void x #define DECLARE_CUSTOM_FUNCTION(x) void x

View file

@ -84,10 +84,9 @@ void RMFont::unload() {
RMGfxPrimitive *RMFont::makeLetterPrimitive(byte bChar, int &nLength) { RMGfxPrimitive *RMFont::makeLetterPrimitive(byte bChar, int &nLength) {
RMFontPrimitive *prim; RMFontPrimitive *prim;
int nLett;
// Convert from character to glyph index // Convert from character to glyph index
nLett = convertToLetter(bChar); int nLett = convertToLetter(bChar);
assert(nLett < _nLetters); assert(nLett < _nLetters);
// Create primitive font // Create primitive font
@ -120,12 +119,11 @@ void RMFont::close() {
} }
int RMFont::stringLen(const Common::String &text) { int RMFont::stringLen(const Common::String &text) {
uint len, i;
if (text.empty()) if (text.empty())
return letterLength('\0'); return letterLength('\0');
len = 0; uint len = 0;
uint i;
for (i = 0; i < text.size() - 1; i++) for (i = 0; i < text.size() - 1; i++)
len += letterLength(text[i], text[i + 1]); len += letterLength(text[i], text[i + 1]);
len += letterLength(text[i]); len += letterLength(text[i]);
@ -157,7 +155,6 @@ void RMFontColor::setBaseColor(byte r1, byte g1, byte b1) {
int gstep = g / 14; int gstep = g / 14;
int bstep = b / 14; int bstep = b / 14;
int i;
byte pal[768 * 3]; byte pal[768 * 3];
// Check if we are already on the right color // Check if we are already on the right color
@ -169,7 +166,7 @@ void RMFontColor::setBaseColor(byte r1, byte g1, byte b1) {
_fontB = b1; _fontB = b1;
// Constructs a new palette for the font // Constructs a new palette for the font
for (i = 1; i < 16; i++) { for (int i = 1; i < 16; i++) {
pal[i * 3 + 0] = r >> 16; pal[i * 3 + 0] = r >> 16;
pal[i * 3 + 1] = g >> 16; pal[i * 3 + 1] = g >> 16;
pal[i * 3 + 2] = b >> 16; pal[i * 3 + 2] = b >> 16;
@ -184,7 +181,7 @@ void RMFontColor::setBaseColor(byte r1, byte g1, byte b1) {
pal[15 * 3 + 2] += 8; pal[15 * 3 + 2] += 8;
// Puts in all the letters // Puts in all the letters
for (i = 0; i < _nLetters; i++) for (int i = 0; i < _nLetters; i++)
_letter[i].loadPaletteWA(pal); _letter[i].loadPaletteWA(pal);
} }
@ -204,8 +201,6 @@ int RMFontWithTables::letterLength(int nChar, int nNext) {
\****************************************************************************/ \****************************************************************************/
void RMFontDialog::init() { void RMFontDialog::init() {
int i;
// bernie: Number of characters in the font // bernie: Number of characters in the font
int nchars = int nchars =
112 // base 112 // base
@ -222,7 +217,7 @@ void RMFontDialog::init() {
_hDefault = 18; _hDefault = 18;
Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0');
for (i = 0; i < 256; i++) { for (int i = 0; i < 256; i++) {
_cTable[i] = g_vm->_cTableDialog[i]; _cTable[i] = g_vm->_cTableDialog[i];
_lTable[i] = g_vm->_lTableDialog[i]; _lTable[i] = g_vm->_lTableDialog[i];
} }
@ -234,8 +229,6 @@ void RMFontDialog::init() {
\****************************************************************************/ \****************************************************************************/
void RMFontMacc::init() { void RMFontMacc::init() {
int i;
// bernie: Number of characters in the font // bernie: Number of characters in the font
int nchars = int nchars =
102 // base 102 // base
@ -245,7 +238,6 @@ void RMFontMacc::init() {
+ 8 // francais + 8 // francais
+ 5; // deutsch + 5; // deutsch
load(RES_F_MACC, nchars, 11, 16); load(RES_F_MACC, nchars, 11, 16);
// Default // Default
@ -253,7 +245,7 @@ void RMFontMacc::init() {
_hDefault = 17; _hDefault = 17;
Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0');
for (i = 0; i < 256; i++) { for (int i = 0; i < 256; i++) {
_cTable[i] = g_vm->_cTableMacc[i]; _cTable[i] = g_vm->_cTableMacc[i];
_lTable[i] = g_vm->_lTableMacc[i]; _lTable[i] = g_vm->_lTableMacc[i];
} }
@ -264,8 +256,6 @@ void RMFontMacc::init() {
\****************************************************************************/ \****************************************************************************/
void RMFontCredits::init() { void RMFontCredits::init() {
int i;
// bernie: Number of characters in the font // bernie: Number of characters in the font
int nchars = int nchars =
112 // base 112 // base
@ -275,7 +265,6 @@ void RMFontCredits::init() {
+ 8 // french + 8 // french
+ 2; // deutsch + 2; // deutsch
load(RES_F_CREDITS, nchars, 27, 28, RES_F_CPAL); load(RES_F_CREDITS, nchars, 27, 28, RES_F_CPAL);
// Default // Default
@ -283,7 +272,7 @@ void RMFontCredits::init() {
_hDefault = 28; _hDefault = 28;
Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0');
for (i = 0; i < 256; i++) { for (int i = 0; i < 256; i++) {
_cTable[i] = g_vm->_cTableCred[i]; _cTable[i] = g_vm->_cTableCred[i];
_lTable[i] = g_vm->_lTableCred[i]; _lTable[i] = g_vm->_lTableCred[i];
} }
@ -305,10 +294,7 @@ void RMFontObj::setBothCase(int nChar, int nNext, signed char spiazz) {
_l2Table[TOLOWER(nChar)][TOLOWER(nNext)] = spiazz; _l2Table[TOLOWER(nChar)][TOLOWER(nNext)] = spiazz;
} }
void RMFontObj::init() { void RMFontObj::init() {
int i;
//bernie: Number of characters in the font (solo maiuscolo) //bernie: Number of characters in the font (solo maiuscolo)
int nchars = int nchars =
85 // base 85 // base
@ -318,7 +304,6 @@ void RMFontObj::init() {
+ 0 // francais (no uppercase chars) + 0 // francais (no uppercase chars)
+ 1; // deutsch + 1; // deutsch
load(RES_F_OBJ, nchars, 25, 30); load(RES_F_OBJ, nchars, 25, 30);
// Initialize the font table // Initialize the font table
@ -326,7 +311,7 @@ void RMFontObj::init() {
_hDefault = 30; _hDefault = 30;
Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0');
for (i = 0; i < 256; i++) { for (int i = 0; i < 256; i++) {
_cTable[i] = g_vm->_cTableObj[i]; _cTable[i] = g_vm->_cTableObj[i];
_lTable[i] = g_vm->_lTableObj[i]; _lTable[i] = g_vm->_lTableObj[i];
} }
@ -345,7 +330,6 @@ void RMFontObj::init() {
setBothCase('R', 'U', 3); setBothCase('R', 'U', 3);
} }
/****************************************************************************\ /****************************************************************************\
* RMText Methods * RMText Methods
\****************************************************************************/ \****************************************************************************/
@ -409,11 +393,6 @@ void RMText::writeText(const Common::String &text, int nFont, int *time) {
void RMText::writeText(Common::String text, RMFontColor *font, int *time) { void RMText::writeText(Common::String text, RMFontColor *font, int *time) {
RMGfxPrimitive *prim; RMGfxPrimitive *prim;
uint p, old_p;
int j, x, y;
int len;
int numchar;
int width, height;
// Set the base color // Set the base color
font->setBaseColor(_textR, _textG, _textB); font->setBaseColor(_textR, _textG, _textB);
@ -428,8 +407,9 @@ void RMText::writeText(Common::String text, RMFontColor *font, int *time) {
// Divide the words into lines. In this cycle, X contains the maximum length reached by a line, // Divide the words into lines. In this cycle, X contains the maximum length reached by a line,
// and the number of lines // and the number of lines
Common::Array<Common::String> lines; Common::Array<Common::String> lines;
p = 0; uint p = 0;
j = x = 0; int j = 0;
int x = 0;
while (p < text.size()) { while (p < text.size()) {
j += font->stringLen(text[p]); j += font->stringLen(text[p]);
if (j > (((_aHorType == HLEFTPAR) && (lines.size() > 0)) ? _maxLineLength - 25 : _maxLineLength)) { if (j > (((_aHorType == HLEFTPAR) && (lines.size() > 0)) ? _maxLineLength - 25 : _maxLineLength)) {
@ -443,7 +423,7 @@ void RMText::writeText(Common::String text, RMFontColor *font, int *time) {
// width of a line caused discontinuation of the whole sentence. // width of a line caused discontinuation of the whole sentence.
// This workaround has the partial word broken up so it will still display // This workaround has the partial word broken up so it will still display
// //
old_p = p; uint old_p = p;
while (text[p] != ' ' && text[p] != '-' && p > 0) while (text[p] != ' ' && text[p] != '-' && p > 0)
p--; p--;
@ -475,8 +455,8 @@ void RMText::writeText(Common::String text, RMFontColor *font, int *time) {
x += 8; x += 8;
// Starting position for the surface: X1, Y // Starting position for the surface: X1, Y
width = x; int width = x;
height = (lines.size() - 1) * font->letterHeight() + font->_fontDimy; int height = (lines.size() - 1) * font->letterHeight() + font->_fontDimy;
// Create the surface // Create the surface
create(width, height); create(width, height);
@ -484,8 +464,8 @@ void RMText::writeText(Common::String text, RMFontColor *font, int *time) {
p = 0; p = 0;
y = 0; int y = 0;
numchar = 0; int numchar = 0;
for (uint i = 0; i < lines.size(); ++i) { for (uint i = 0; i < lines.size(); ++i) {
const Common::String &line = lines[i]; const Common::String &line = lines[i];
@ -522,6 +502,7 @@ void RMText::writeText(Common::String text, RMFontColor *font, int *time) {
continue; continue;
} }
int len;
prim = font->makeLetterPrimitive(line[p], len); prim = font->makeLetterPrimitive(line[p], len);
prim->getDst()._x1 = x; prim->getDst()._x1 = x;
prim->getDst()._y1 = y; prim->getDst()._y1 = y;
@ -987,8 +968,6 @@ void RMDialogChoice::close() {
} }
void RMDialogChoice::setNumChoices(int num) { void RMDialogChoice::setNumChoices(int num) {
int i;
_numChoices = num; _numChoices = num;
_curAdded = 0; _curAdded = 0;
@ -997,7 +976,7 @@ void RMDialogChoice::setNumChoices(int num) {
_ptDrawStrings = new RMPoint[num]; _ptDrawStrings = new RMPoint[num];
// Initialization // Initialization
for (i = 0; i < _numChoices; i++) { for (int i = 0; i < _numChoices; i++) {
_drawedStrings[i].setColor(0, 255, 0); _drawedStrings[i].setColor(0, 255, 0);
_drawedStrings[i].setAlignType(RMText::HLEFTPAR, RMText::VTOP); _drawedStrings[i].setAlignType(RMText::HLEFTPAR, RMText::VTOP);
_drawedStrings[i].setMaxLineLength(600); _drawedStrings[i].setMaxLineLength(600);

View file

@ -34,7 +34,6 @@
#include "tony/mpal/memory.h" #include "tony/mpal/memory.h"
#include "tony/mpal/mpal.h" #include "tony/mpal/mpal.h"
#include "tony/mpal/mpalutils.h" #include "tony/mpal/mpalutils.h"
#include "tony/custom.h"
#include "tony/game.h" #include "tony/game.h"
#include "tony/gfxengine.h" #include "tony/gfxengine.h"
#include "tony/tony.h" #include "tony/tony.h"

View file

@ -1386,11 +1386,7 @@ bool doSelection(uint32 i, uint32 dwData) {
*/ */
bool mpalInit(const char *lpszMpcFileName, const char *lpszMprFileName, bool mpalInit(const char *lpszMpcFileName, const char *lpszMprFileName,
LPLPCUSTOMFUNCTION lplpcfArray, Common::String *lpcfStrings) { LPLPCUSTOMFUNCTION lplpcfArray, Common::String *lpcfStrings) {
Common::File hMpc;
byte buf[5]; byte buf[5];
uint32 nBytesRead;
bool bCompress;
uint32 dwSizeDecomp, dwSizeComp;
byte *cmpbuf; byte *cmpbuf;
// Save the array of custom functions // Save the array of custom functions
@ -1398,21 +1394,22 @@ bool mpalInit(const char *lpszMpcFileName, const char *lpszMprFileName,
GLOBALS._lplpFunctionStrings = lpcfStrings; GLOBALS._lplpFunctionStrings = lpcfStrings;
// OPen the MPC file for reading // OPen the MPC file for reading
Common::File hMpc;
if (!hMpc.open(lpszMpcFileName)) if (!hMpc.open(lpszMpcFileName))
return false; return false;
// Read and check the header // Read and check the header
nBytesRead = hMpc.read(buf, 5); uint32 nBytesRead = hMpc.read(buf, 5);
if (nBytesRead != 5) if (nBytesRead != 5)
return false; return false;
if (buf[0] != 'M' || buf[1] != 'P' || buf[2] != 'C' || buf[3] != 0x20) if (buf[0] != 'M' || buf[1] != 'P' || buf[2] != 'C' || buf[3] != 0x20)
return false; return false;
bCompress = buf[4]; bool bCompress = buf[4];
// Reads the size of the uncompressed file, and allocate memory // Reads the size of the uncompressed file, and allocate memory
dwSizeDecomp = hMpc.readUint32LE(); uint32 dwSizeDecomp = hMpc.readUint32LE();
if (hMpc.err()) if (hMpc.err())
return false; return false;
@ -1422,7 +1419,7 @@ bool mpalInit(const char *lpszMpcFileName, const char *lpszMprFileName,
if (bCompress) { if (bCompress) {
// Get the compressed size and read the data in // Get the compressed size and read the data in
dwSizeComp = hMpc.readUint32LE(); uint32 dwSizeComp = hMpc.readUint32LE();
if (hMpc.err()) if (hMpc.err())
return false; return false;
@ -1463,7 +1460,7 @@ bool mpalInit(const char *lpszMpcFileName, const char *lpszMprFileName,
// Seek to the end of the file to read overall information // Seek to the end of the file to read overall information
GLOBALS._hMpr.seek(-12, SEEK_END); GLOBALS._hMpr.seek(-12, SEEK_END);
dwSizeComp = GLOBALS._hMpr.readUint32LE(); uint32 dwSizeComp = GLOBALS._hMpr.readUint32LE();
if (GLOBALS._hMpr.err()) if (GLOBALS._hMpr.err())
return false; return false;
@ -1941,11 +1938,9 @@ uint32 mpalGetError() {
* @returns TRUE if the script 'was launched, FALSE on failure * @returns TRUE if the script 'was launched, FALSE on failure
*/ */
bool mpalExecuteScript(int nScript) { bool mpalExecuteScript(int nScript) {
LpMpalScript s;
LockScripts(); LockScripts();
int n = scriptGetOrderFromNum(nScript); int n = scriptGetOrderFromNum(nScript);
s = (LpMpalScript)globalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(MpalScript)); LpMpalScript s = (LpMpalScript)globalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(MpalScript));
if (s == NULL) if (s == NULL)
return false; return false;