From c6830b4138be54e056a7cf18b6b900c3e46ab4ff Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 2 May 2008 15:21:51 +0000 Subject: - Renamed TextDisplayer_v2 to TextDisplayer_HoF - Moved some character shape code to KyraEngine_v2 svn-id: r31821 --- engines/kyra/animator_mr.cpp | 2 +- engines/kyra/kyra_hof.cpp | 18 +++++++++--------- engines/kyra/kyra_mr.cpp | 24 ++++++++++++------------ engines/kyra/kyra_mr.h | 3 +-- engines/kyra/kyra_v2.cpp | 2 ++ engines/kyra/kyra_v2.h | 3 +++ engines/kyra/saveload_hof.cpp | 10 +++++----- engines/kyra/saveload_mr.cpp | 10 +++++----- engines/kyra/scene_mr.cpp | 2 +- engines/kyra/script_hof.cpp | 4 ++-- engines/kyra/script_mr.cpp | 4 ++-- engines/kyra/sequences_mr.cpp | 4 ++-- engines/kyra/text_hof.cpp | 20 ++++++++++---------- engines/kyra/text_hof.h | 4 ++-- engines/kyra/text_mr.cpp | 6 +++--- 15 files changed, 60 insertions(+), 56 deletions(-) diff --git a/engines/kyra/animator_mr.cpp b/engines/kyra/animator_mr.cpp index 8cf99c0290..18ed258276 100644 --- a/engines/kyra/animator_mr.cpp +++ b/engines/kyra/animator_mr.cpp @@ -422,7 +422,7 @@ void KyraEngine_MR::showIdleAnim() { }; char filename[14]; - snprintf(filename, 14, "MI0%s%.02d.EMC", facingTable[_mainCharacter.facing], _malcolmShapes); + snprintf(filename, 14, "MI0%s%.02d.EMC", facingTable[_mainCharacter.facing], _characterShapeFile); if (_res->exists(filename)) runTemporaryScript(filename, 1, 1, 1, 1); diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp index 0c68de430f..6b6a62ea55 100644 --- a/engines/kyra/kyra_hof.cpp +++ b/engines/kyra/kyra_hof.cpp @@ -192,7 +192,7 @@ int KyraEngine_HoF::init() { _debugger = new Debugger_v2(this); assert(_debugger); - _text = new TextDisplayer_v2(this, _screen); + _text = new TextDisplayer_HoF(this, _screen); assert(_text); _gui = new GUI_v2(this); assert(_gui); @@ -355,8 +355,8 @@ void KyraEngine_HoF::startup() { initItemList(30); loadButtonShapes(); resetItemList(); - _loadedZTable = 1; - loadZShapes(_loadedZTable); + _characterShapeFile = 1; + loadCharacterShapes(_characterShapeFile); initInventoryButtonList(); setupLangButtonShapes(); loadInventoryShapes(); @@ -1094,11 +1094,11 @@ void KyraEngine_HoF::loadItemShapes() { _screen->_curPage = 0; } -void KyraEngine_HoF::loadZShapes(int shapes) { +void KyraEngine_HoF::loadCharacterShapes(int shapes) { char file[10]; strcpy(file, "_ZX.SHP"); - _loadedZTable = shapes; + _characterShapeFile = shapes; file[2] = '0' + shapes; uint8 *data = _res->fileData(file, 0); @@ -1106,7 +1106,7 @@ void KyraEngine_HoF::loadZShapes(int shapes) { addShapeToPool(data, i, i-9); delete [] data; - _loadedZTable = shapes; + _characterShapeFile = shapes; } void KyraEngine_HoF::loadInventoryShapes() { @@ -1633,11 +1633,11 @@ void KyraEngine_HoF::showIdleAnim() { zanthRandomIdleChat(); } else { scriptAnimation = false; - if (_loadedZTable > 8) + if (_characterShapeFile > 8) return; - int scriptMin = scriptMinTable[_loadedZTable-1]; - int scriptMax = scriptMaxTable[_loadedZTable-1]; + int scriptMin = scriptMinTable[_characterShapeFile-1]; + int scriptMax = scriptMaxTable[_characterShapeFile-1]; int script = 0; if (scriptMin < scriptMax) { diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp index 8193473205..4548067b6d 100644 --- a/engines/kyra/kyra_mr.cpp +++ b/engines/kyra/kyra_mr.cpp @@ -57,7 +57,6 @@ KyraEngine_MR::KyraEngine_MR(OSystem *system, const GameFlags &flags) : KyraEngi memset(_sceneShapes, 0, sizeof(_sceneShapes)); memset(_sceneAnimMovie, 0, sizeof(_sceneAnimMovie)); _gfxBackUpRect = 0; - _malcolmShapes = 0; _paletteOverlay = 0; _sceneList = 0; memset(&_mainCharacter, 0, sizeof(_mainCharacter)); @@ -597,7 +596,8 @@ void KyraEngine_MR::startup() { musicUpdate(0); loadExtrasShapes(); musicUpdate(0); - loadMalcolmShapes(_malcolmShapes); + _characterShapeFile = 0; + loadCharacterShapes(_characterShapeFile); musicUpdate(0); initMainButtonList(true); loadInterfaceShapes(); @@ -746,8 +746,8 @@ void KyraEngine_MR::openTalkFile(int file) { #pragma mark - -void KyraEngine_MR::loadMalcolmShapes(int newShapes) { - debugC(9, kDebugLevelMain, "KyraEngine_MR::loadMalcolmShapes(%d)", newShapes); +void KyraEngine_MR::loadCharacterShapes(int newShapes) { + debugC(9, kDebugLevelMain, "KyraEngine_MR::loadCharacterShapes(%d)", newShapes); static const uint8 numberOffset[] = { 3, 3, 4, 4, 3, 3 }; static const uint8 startShape[] = { 0x32, 0x58, 0x78, 0x98, 0xB8, 0xD8 }; static const uint8 endShape[] = { 0x57, 0x77, 0x97, 0xB7, 0xD7, 0xF7 }; @@ -788,17 +788,17 @@ void KyraEngine_MR::loadMalcolmShapes(int newShapes) { } } - _malcolmShapes = newShapes; + _characterShapeFile = newShapes; updateMalcolmShapes(); } void KyraEngine_MR::updateMalcolmShapes() { debugC(9, kDebugLevelMain, "KyraEngine_MR::updateMalcolmShapes()"); - assert(_malcolmShapes >= 0 && _malcolmShapes < _shapeDescsSize); - _malcolmShapeXOffset = _shapeDescs[_malcolmShapes].xOffset; - _malcolmShapeYOffset = _shapeDescs[_malcolmShapes].yOffset; - _animObjects[0].width = _shapeDescs[_malcolmShapes].width; - _animObjects[0].height = _shapeDescs[_malcolmShapes].height; + assert(_characterShapeFile >= 0 && _characterShapeFile < _shapeDescsSize); + _malcolmShapeXOffset = _shapeDescs[_characterShapeFile].xOffset; + _malcolmShapeYOffset = _shapeDescs[_characterShapeFile].yOffset; + _animObjects[0].width = _shapeDescs[_characterShapeFile].width; + _animObjects[0].height = _shapeDescs[_characterShapeFile].height; } #pragma mark - @@ -913,7 +913,7 @@ void KyraEngine_MR::updateCharAnimFrame(int character, int *table) { void KyraEngine_MR::updateCharPal(int unk1) { debugC(9, kDebugLevelMain, "KyraEngine_MR::updateCharPal(%d)", unk1); int layer = _screen->getLayer(_mainCharacter.x1, _mainCharacter.y1) - 1; - const uint8 *src = _costPalBuffer + _malcolmShapes * 72; + const uint8 *src = _costPalBuffer + _characterShapeFile * 72; uint8 *dst = _screen->getPalette(0) + 432; const int8 *sceneDatPal = &_sceneDatPalette[layer * 3]; @@ -1552,7 +1552,7 @@ void KyraEngine_MR::changeChapter(int newChapter, int sceneId, int malcolmShapes memset(_newSceneDlgState, 0, sizeof(_newSceneDlgState)); if (malcolmShapes >= 0) - loadMalcolmShapes(malcolmShapes); + loadCharacterShapes(malcolmShapes); enterNewScene(sceneId, facing, 0, 0, 0); } diff --git a/engines/kyra/kyra_mr.h b/engines/kyra/kyra_mr.h index 36a83e0719..20f8349008 100644 --- a/engines/kyra/kyra_mr.h +++ b/engines/kyra/kyra_mr.h @@ -299,8 +299,7 @@ private: // shapes void initMouseShapes(); - int _malcolmShapes; - void loadMalcolmShapes(int newShapes); + void loadCharacterShapes(int newShapes); void updateMalcolmShapes(); int _malcolmShapeXOffset, _malcolmShapeYOffset; diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index cc10d2911b..ac8ae55bea 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -37,6 +37,8 @@ KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags) : KyraEngi _itemList = 0; _itemListSize = 0; + + _characterShapeFile = -1; } KyraEngine_v2::~KyraEngine_v2() { diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index 0e44da4934..e15d0a7acd 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -188,6 +188,9 @@ protected: void addShapeToPool(const uint8 *data, int realIndex, int shape); void addShapeToPool(uint8 *shpData, int index); void remShapeFromPool(int idx); + + int _characterShapeFile; + virtual void loadCharacterShapes(int shapes) = 0; // pathfinder int _movFacingTable[600]; diff --git a/engines/kyra/saveload_hof.cpp b/engines/kyra/saveload_hof.cpp index 75abdaa9e2..34bafe5d3c 100644 --- a/engines/kyra/saveload_hof.cpp +++ b/engines/kyra/saveload_hof.cpp @@ -53,7 +53,7 @@ void KyraEngine_HoF::saveGame(const char *fileName, const char *saveName) { //out->writeUint16BE(word_2AB05); out->writeSint16BE(_lastMusicCommand); out->writeByte(_newChapterFile); - out->writeByte(_loadedZTable); + out->writeByte(_characterShapeFile); out->writeByte(_cauldronState); out->writeByte(_colorCodeFlag1); out->writeByte(_colorCodeFlag2); @@ -152,7 +152,7 @@ void KyraEngine_HoF::loadGame(const char *fileName) { _lastMusicCommand = -1; } - int loadedZTable = _loadedZTable; + int loadedZTable = _characterShapeFile; Common::SeekableSubReadStreamEndian in(saveFile, saveFile->pos(), saveFile->size(), !header.originalSave, true); @@ -172,7 +172,7 @@ void KyraEngine_HoF::loadGame(const char *fileName) { in.readUint16(); _lastMusicCommand = in.readSint16(); _newChapterFile = in.readByte(); - _loadedZTable = in.readByte(); + _characterShapeFile = in.readByte(); _cauldronState = in.readByte(); _colorCodeFlag1 = in.readByte(); _colorCodeFlag2 = in.readByte(); @@ -286,8 +286,8 @@ void KyraEngine_HoF::loadGame(const char *fileName) { else debugC(1, kDebugLevelMain, "Loaded savegame '%s.'", header.description.c_str()); - if (loadedZTable != _loadedZTable) - loadZShapes(_loadedZTable); + if (loadedZTable != _characterShapeFile) + loadCharacterShapes(_characterShapeFile); _screen->loadBitmap("_PLAYFLD.CPS", 3, 3, 0); if (!queryGameFlag(1)) diff --git a/engines/kyra/saveload_mr.cpp b/engines/kyra/saveload_mr.cpp index f8030e69fb..e4e63c4599 100644 --- a/engines/kyra/saveload_mr.cpp +++ b/engines/kyra/saveload_mr.cpp @@ -48,7 +48,7 @@ void KyraEngine_MR::saveGame(const char *fileName, const char *saveName) { out->writeSint16BE(_lastMusicCommand); out->writeByte(_currentChapter); - out->writeByte(_malcolmShapes); + out->writeByte(_characterShapeFile); //XXX out->writeSint16BE(_score); out->writeSint16BE(_scoreMax); @@ -142,7 +142,7 @@ void KyraEngine_MR::loadGame(const char *fileName) { if (!_unkSceneScreenFlag1) _lastMusicCommand = -1; - int curShapes = _malcolmShapes; + int curShapes = _characterShapeFile; Common::SeekableSubReadStreamEndian in(saveFile, saveFile->pos(), saveFile->size(), !header.originalSave, true); @@ -157,7 +157,7 @@ void KyraEngine_MR::loadGame(const char *fileName) { // usually we have to save the flag set by opcode 10 here _lastMusicCommand = in.readSint16(); _currentChapter = in.readByte(); - _malcolmShapes = in.readByte(); + _characterShapeFile = in.readByte(); //XXX _score = in.readSint16(); _scoreMax = in.readSint16(); @@ -227,8 +227,8 @@ void KyraEngine_MR::loadGame(const char *fileName) { updateCharacterAnim(0); _loadingState = false; - if (curShapes != _malcolmShapes) - loadMalcolmShapes(_malcolmShapes); + if (curShapes != _characterShapeFile) + loadCharacterShapes(_characterShapeFile); _mainCharX = _mainCharacter.x2 = _mainCharacter.x1; _mainCharY = _mainCharacter.y2 = _mainCharacter.y1; diff --git a/engines/kyra/scene_mr.cpp b/engines/kyra/scene_mr.cpp index c5a1c28ce2..e5d933c25f 100644 --- a/engines/kyra/scene_mr.cpp +++ b/engines/kyra/scene_mr.cpp @@ -350,7 +350,7 @@ void KyraEngine_MR::loadScenePal() { _screen->generateOverlay(_screen->getPalette(2), _paletteOverlay, 0xF0, 0x19); uint8 *palette = _screen->getPalette(2) + 432; - const uint8 *costPal = _costPalBuffer + _malcolmShapes * 72; + const uint8 *costPal = _costPalBuffer + _characterShapeFile * 72; memcpy(palette, costPal, 24*3); } diff --git a/engines/kyra/script_hof.cpp b/engines/kyra/script_hof.cpp index 25c1499df6..dc2c825d72 100644 --- a/engines/kyra/script_hof.cpp +++ b/engines/kyra/script_hof.cpp @@ -677,7 +677,7 @@ int KyraEngine_HoF::o2_setCharPalEntry(EMCState *script) { int KyraEngine_HoF::o2_loadZShapes(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_loadZShapes(%p) (%d)", (const void *)script, stackPos(0)); - loadZShapes(stackPos(0)); + loadCharacterShapes(stackPos(0)); return 0; } @@ -1318,7 +1318,7 @@ int KyraEngine_HoF::o2_chapterChange(EMCState *script) { static const int zShapeList[] = { 1, 2, 2, 2, 4 }; assert(chapter > 1 && chapter <= ARRAYSIZE(zShapeList)); - loadZShapes(zShapeList[chapter-1]); + loadCharacterShapes(zShapeList[chapter-1]); enterNewScene(scene, (chapter == 2) ? 2 : 0, 0, 0, 0); diff --git a/engines/kyra/script_mr.cpp b/engines/kyra/script_mr.cpp index de535148d1..c43743179d 100644 --- a/engines/kyra/script_mr.cpp +++ b/engines/kyra/script_mr.cpp @@ -37,7 +37,7 @@ namespace Kyra { int KyraEngine_MR::o3_getMalcolmShapes(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_getMaloclmShapes(%p) ()", (const void *)script); - return _malcolmShapes; + return _characterShapeFile; } int KyraEngine_MR::o3_setCharacterPos(EMCState *script) { @@ -478,7 +478,7 @@ int KyraEngine_MR::o3_removeItemsFromScene(EMCState *script) { int KyraEngine_MR::o3_disguiseMalcolm(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o3_disguiseMalcolm(%p) (%d)", (const void *)script, stackPos(0)); - loadMalcolmShapes(stackPos(0)); + loadCharacterShapes(stackPos(0)); updateDlgIndex(); return 0; } diff --git a/engines/kyra/sequences_mr.cpp b/engines/kyra/sequences_mr.cpp index a09e4f7232..4db62f597f 100644 --- a/engines/kyra/sequences_mr.cpp +++ b/engines/kyra/sequences_mr.cpp @@ -43,7 +43,7 @@ void KyraEngine_MR::showBadConscience() { _badConscienceAnim = 6; else if (_currentChapter == 5 && _rnd.getRandomNumberRng(1, 100) <= 25) _badConscienceAnim = 7; - else if (_malcolmShapes == 9) + else if (_characterShapeFile == 9) _badConscienceAnim = 4; _badConsciencePosition = (_mainCharacter.x1 <= 160); @@ -250,7 +250,7 @@ void KyraEngine_MR::eelScript() { setGameFlag(0x171); - switch (_malcolmShapes-1) { + switch (_characterShapeFile-1) { case 0: runTemporaryScript("EELS01.EMC", 0, 0, 1, 1); break; diff --git a/engines/kyra/text_hof.cpp b/engines/kyra/text_hof.cpp index 43f28f9a00..9717b23a6a 100644 --- a/engines/kyra/text_hof.cpp +++ b/engines/kyra/text_hof.cpp @@ -32,19 +32,19 @@ namespace Kyra { -TextDisplayer_v2::TextDisplayer_v2(KyraEngine_HoF *vm, Screen_v2 *screen) +TextDisplayer_HoF::TextDisplayer_HoF(KyraEngine_HoF *vm, Screen_v2 *screen) : TextDisplayer(vm, screen), _vm(vm) { } -void TextDisplayer_v2::backupTalkTextMessageBkgd(int srcPage, int dstPage) { +void TextDisplayer_HoF::backupTalkTextMessageBkgd(int srcPage, int dstPage) { _screen->copyRegion(_talkCoords.x, _talkMessageY, 0, 144, _talkCoords.w, _talkMessageH, srcPage, dstPage); } -void TextDisplayer_v2::restoreTalkTextMessageBkgd(int srcPage, int dstPage) { +void TextDisplayer_HoF::restoreTalkTextMessageBkgd(int srcPage, int dstPage) { _screen->copyRegion(0, 144, _talkCoords.x, _talkMessageY, _talkCoords.w, _talkMessageH, srcPage, dstPage); } -void TextDisplayer_v2::restoreScreen() { +void TextDisplayer_HoF::restoreScreen() { _vm->restorePage3(); _vm->drawAnimObjects(); _screen->hideMouse(); @@ -54,7 +54,7 @@ void TextDisplayer_v2::restoreScreen() { _vm->refreshAnimObjects(0); } -void TextDisplayer_v2::printCustomCharacterText(const char *text, int x, int y, uint8 c1, int srcPage, int dstPage) { +void TextDisplayer_HoF::printCustomCharacterText(const char *text, int x, int y, uint8 c1, int srcPage, int dstPage) { text = preprocessString(text); int lineCount = buildMessageSubstrings(text); int w = getWidestLineWidth(lineCount); @@ -86,8 +86,8 @@ void TextDisplayer_v2::printCustomCharacterText(const char *text, int x, int y, _screen->showMouse(); } -char *TextDisplayer_v2::preprocessString(const char *str) { - debugC(9, kDebugLevelMain, "TextDisplayer_v2::preprocessString('%s')", str); +char *TextDisplayer_HoF::preprocessString(const char *str) { + debugC(9, kDebugLevelMain, "TextDisplayer_HoF::preprocessString('%s')", str); if (str != _talkBuffer) { assert(strlen(str) < sizeof(_talkBuffer) - 1); @@ -129,8 +129,8 @@ char *TextDisplayer_v2::preprocessString(const char *str) { return _talkBuffer; } -void TextDisplayer_v2::calcWidestLineBounds(int &x1, int &x2, int w, int x) { - debugC(9, kDebugLevelMain, "TextDisplayer_v2::calcWidestLineBounds(%d, %d)", w, x); +void TextDisplayer_HoF::calcWidestLineBounds(int &x1, int &x2, int w, int x) { + debugC(9, kDebugLevelMain, "TextDisplayer_HoF::calcWidestLineBounds(%d, %d)", w, x); x1 = x; x1 -= (w >> 1); x2 = x1 + w + 1; @@ -305,7 +305,7 @@ void KyraEngine_HoF::objectChatProcess(const char *script) { while (_emc->isValid(&_chatScriptState)) _emc->run(&_chatScriptState); - _newShapeFilename[2] = _loadedZTable + '0'; + _newShapeFilename[2] = _characterShapeFile + '0'; uint8 *shapeBuffer = _res->fileData(_newShapeFilename, 0); if (shapeBuffer) { int shapeCount = initNewShapes(shapeBuffer); diff --git a/engines/kyra/text_hof.h b/engines/kyra/text_hof.h index 0b26262f0e..ef1f481c19 100644 --- a/engines/kyra/text_hof.h +++ b/engines/kyra/text_hof.h @@ -33,10 +33,10 @@ namespace Kyra { class Screen_v2; class KyraEngine_HoF; -class TextDisplayer_v2 : public TextDisplayer { +class TextDisplayer_HoF : public TextDisplayer { friend class KyraEngine_HoF; public: - TextDisplayer_v2(KyraEngine_HoF *vm, Screen_v2 *screen); + TextDisplayer_HoF(KyraEngine_HoF *vm, Screen_v2 *screen); void backupTalkTextMessageBkgd(int srcPage, int dstPage); void restoreTalkTextMessageBkgd(int srcPage, int dstPage); diff --git a/engines/kyra/text_mr.cpp b/engines/kyra/text_mr.cpp index 4f3c350099..3e728cf538 100644 --- a/engines/kyra/text_mr.cpp +++ b/engines/kyra/text_mr.cpp @@ -576,11 +576,11 @@ void KyraEngine_MR::updateDlgIndex() { static const uint8 dlgIndexMoodEvil[] = { 0x06, 0x08, 0x0A, 0x09, 0x0B }; if (_malcolmsMood == 0) - dlgIndex = dlgIndexMoodNice[_malcolmShapes]; + dlgIndex = dlgIndexMoodNice[_characterShapeFile]; else if (_malcolmsMood == 1) - dlgIndex = dlgIndexMoodNormal[_malcolmShapes]; + dlgIndex = dlgIndexMoodNormal[_characterShapeFile]; else if (_malcolmsMood == 2) - dlgIndex = dlgIndexMoodEvil[_malcolmShapes]; + dlgIndex = dlgIndexMoodEvil[_characterShapeFile]; } else if (_currentChapter == 2) { if (dlgIndex >= 8) dlgIndex -= 4; -- cgit v1.2.3