diff options
author | Nicola Mettifogo | 2007-04-15 20:57:56 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-04-15 20:57:56 +0000 |
commit | c43960b958fc7a6e7c1bf83c75cc5033a049f952 (patch) | |
tree | dce2c2ffc6a85733efbcca6d5a29b731799d681a /engines/parallaction | |
parent | 2c9116de3b1510807bebc39c10332b3bd19d2184 (diff) | |
download | scummvm-rg350-c43960b958fc7a6e7c1bf83c75cc5033a049f952.tar.gz scummvm-rg350-c43960b958fc7a6e7c1bf83c75cc5033a049f952.tar.bz2 scummvm-rg350-c43960b958fc7a6e7c1bf83c75cc5033a049f952.zip |
- Fonts are now preloaded at start.
- Replaced font string names with enums.
- Some slight simplification to Disk.
svn-id: r26518
Diffstat (limited to 'engines/parallaction')
-rw-r--r-- | engines/parallaction/callables.cpp | 8 | ||||
-rw-r--r-- | engines/parallaction/dialogue.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/disk.cpp | 5 | ||||
-rw-r--r-- | engines/parallaction/graphics.cpp | 21 | ||||
-rw-r--r-- | engines/parallaction/graphics.h | 9 | ||||
-rw-r--r-- | engines/parallaction/intro.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/location.cpp | 6 | ||||
-rw-r--r-- | engines/parallaction/menu.cpp | 4 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 4 | ||||
-rw-r--r-- | engines/parallaction/zone.cpp | 4 |
10 files changed, 41 insertions, 24 deletions
diff --git a/engines/parallaction/callables.cpp b/engines/parallaction/callables.cpp index 9117bbf686..ec3f713b7f 100644 --- a/engines/parallaction/callables.cpp +++ b/engines/parallaction/callables.cpp @@ -250,7 +250,7 @@ void _c_endComment(void *param) { r.moveTo(7, 7); _vm->_gfx->floodFill(Gfx::kBitFront, r, 1); - _vm->_gfx->setFont("comic"); + _vm->_gfx->setFont(kFontDialogue); _vm->_gfx->displayWrappedString(_vm->_location._endComment, 3, 5, 130, 0); uint32 di = 0; @@ -365,7 +365,7 @@ void _c_finito(void *parm) { _vm->_gfx->extendPalette(_vm->_gfx->_palette); if (gameCompleted) { - _vm->_gfx->setFont("slide"); + _vm->_gfx->setFont(kFontMenu); _vm->_gfx->_proportionalFont = false; uint16 _ax = _vm->_gfx->getStringWidth(v4C[_language]); _vm->_gfx->displayString((SCREEN_WIDTH - _ax)/2, 70, v4C[_language]); @@ -384,7 +384,7 @@ void _c_finito(void *parm) { _engineFlags |= kEngineChangeLocation; } else { - _vm->_gfx->setFont("slide"); + _vm->_gfx->setFont(kFontMenu); _vm->_gfx->_proportionalFont = false; uint16 _ax = _vm->_gfx->getStringWidth(v8C[_language]); _vm->_gfx->displayString((SCREEN_WIDTH - _ax)/2, 70, v8C[_language]); @@ -436,7 +436,7 @@ void _c_testResult(void *parm) { _vm->_gfx->swapBuffers(); _vm->parseLocation("common"); - _vm->_gfx->setFont("slide"); + _vm->_gfx->setFont(kFontMenu); _vm->_gfx->_proportionalFont = false; uint16 _ax = _vm->_gfx->getStringWidth(_slideText[0]); diff --git a/engines/parallaction/dialogue.cpp b/engines/parallaction/dialogue.cpp index 1206b25d4c..008278a0c5 100644 --- a/engines/parallaction/dialogue.cpp +++ b/engines/parallaction/dialogue.cpp @@ -348,7 +348,7 @@ void Parallaction::runDialogue(SpeakData *data) { enterDialogue(); - _gfx->setFont("comic"); + _gfx->setFont(kFontDialogue); bool isNpc = scumm_stricmp(data->_name, "yourself") && data->_name[0] != '\0'; Cnv *face = isNpc ? _disk->loadTalk(data->_name) : _char._talk; diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index c224ac5801..1ed4624429 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -920,10 +920,7 @@ Cnv* AmigaDisk::loadFont(const char* name) { debugC(1, kDebugDisk, "AmigaDisk::loadFont '%s'", name); char path[PATH_LEN]; - if (scumm_stricmp(name, "topaz")) - sprintf(path, "%sfont", name); - else - strcpy(path, "introfont"); + sprintf(path, "%sfont", name); if (!_resArchive.openArchivedFile(path)) errorFileNotFound(path); diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp index dfd67ff461..e37175e67b 100644 --- a/engines/parallaction/graphics.cpp +++ b/engines/parallaction/graphics.cpp @@ -706,10 +706,9 @@ void Gfx::getStringExtent(char *text, uint16 maxwidth, int16* width, int16* heig } -void Gfx::setFont(const char* name) { - if (_font) delete _font; - - _font = _vm->_disk->loadFont(name); +void Gfx::setFont(Fonts name) { + assert(name < 3); + _font = _fonts[name]; } @@ -904,6 +903,16 @@ Gfx::Gfx(Parallaction* vm) : initMouse( 0 ); + if (_vm->getPlatform() == Common::kPlatformPC) { + _fonts[kFontDialogue] = _vm->_disk->loadFont("comic"); + _fonts[kFontLabel] = _vm->_disk->loadFont("topaz"); + _fonts[kFontMenu] = _vm->_disk->loadFont("slide"); + } else { + _fonts[kFontDialogue] = _vm->_disk->loadFont("comic"); + _fonts[kFontLabel] = _vm->_disk->loadFont("intro"); + _fonts[kFontMenu] = _vm->_disk->loadFont("slide"); + } + _font = NULL; return; @@ -916,7 +925,9 @@ Gfx::~Gfx() { free(_buffers[kBitBack]); free(_buffers[kBit2]); - if (_font) delete _font; + delete _fonts[kFontDialogue]; + delete _fonts[kFontLabel]; + delete _fonts[kFontMenu]; return; } diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h index 893946ecc2..0126532a2f 100644 --- a/engines/parallaction/graphics.h +++ b/engines/parallaction/graphics.h @@ -117,6 +117,12 @@ class Parallaction; struct DoorData; struct GetData; +enum Fonts { + kFontDialogue = 0, + kFontLabel = 1, + kFontMenu = 2 +}; + class Gfx { public: @@ -189,7 +195,7 @@ public: void setMousePointer(int16 index); - void setFont(const char* name); + void setFont(Fonts name); public: Common::Point _labelPosition[2]; @@ -204,6 +210,7 @@ protected: static byte _mouseArrow[256]; StaticCnv *_mouseComposedArrow; Cnv *_font; + Cnv *_fonts[3]; protected: byte mapChar(byte c); diff --git a/engines/parallaction/intro.cpp b/engines/parallaction/intro.cpp index 6995b41644..96bc3f4a06 100644 --- a/engines/parallaction/intro.cpp +++ b/engines/parallaction/intro.cpp @@ -134,7 +134,7 @@ void _c_startIntro(void *parm) { void _c_endIntro(void *parm) { - _vm->_gfx->setFont("slide"); + _vm->_gfx->setFont(kFontMenu); _vm->_gfx->_proportionalFont = false; uint16 _di; diff --git a/engines/parallaction/location.cpp b/engines/parallaction/location.cpp index 8066c65afd..7d8bd59480 100644 --- a/engines/parallaction/location.cpp +++ b/engines/parallaction/location.cpp @@ -44,7 +44,7 @@ void Parallaction::parseLocation(const char *filename) { uint16 _si = 1; _gfx->_proportionalFont = false; - _gfx->setFont("topaz"); + _gfx->setFont(kFontLabel); Script *_locationScript = _disk->loadLocation(filename); @@ -273,7 +273,7 @@ void Parallaction::showSlide(const char *name) { debugC(1, kDebugLocation, "changeLocation: new background set"); _gfx->_proportionalFont = false; - _gfx->setFont("slide"); + _gfx->setFont(kFontMenu); uint16 _ax = strlen(_slideText[0]); _ax <<= 3; // text width @@ -438,7 +438,7 @@ void Parallaction::doLocationEnterTransition() { jobEraseAnimations(NULL, NULL); jobDisplayAnimations(NULL, NULL); - _gfx->setFont("comic"); + _gfx->setFont(kFontDialogue); _gfx->swapBuffers(); _gfx->copyScreen(Gfx::kBitFront, Gfx::kBitBack); diff --git a/engines/parallaction/menu.cpp b/engines/parallaction/menu.cpp index 6ae01a2774..f8ea0a0d7d 100644 --- a/engines/parallaction/menu.cpp +++ b/engines/parallaction/menu.cpp @@ -106,7 +106,7 @@ void Menu::start() { _vm->_disk->selectArchive((_vm->getPlatform() == Common::kPlatformPC) ? "disk1" : "disk0"); _vm->_gfx->_proportionalFont = false; - _vm->_gfx->setFont("slide"); + _vm->_gfx->setFont(kFontMenu); _vm->_disk->loadSlide("intro"); _vm->_gfx->extendPalette(_vm->_gfx->_palette); @@ -294,7 +294,7 @@ void Menu::selectCharacter() { _vm->_midiPlayer->stop(); _vm->_gfx->_proportionalFont = false; - _vm->_gfx->setFont("slide"); + _vm->_gfx->setFont(kFontMenu); _vm->_disk->selectArchive((_vm->getPlatform() == Common::kPlatformPC) ? "disk1" : "disk0"); diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index cc94da3094..ae7320eafe 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -174,8 +174,10 @@ int Parallaction::init() { if (getPlatform() == Common::kPlatformPC) _disk = new DosDisk(this); - else + else { _disk = new AmigaDisk(this); + _disk->selectArchive("disk0"); + } _engineFlags = 0; diff --git a/engines/parallaction/zone.cpp b/engines/parallaction/zone.cpp index d447992445..ef140fb61f 100644 --- a/engines/parallaction/zone.cpp +++ b/engines/parallaction/zone.cpp @@ -304,7 +304,7 @@ void Parallaction::displayCharacterComment(ExamineData *data) { v3C._data0 = _char._talk->getFramePtr(0); v3C._data1 = NULL; //_talk->field_8[0]; - _gfx->setFont("comic"); + _gfx->setFont(kFontDialogue); _gfx->flatBlitCnv(&v3C, 190, 80, Gfx::kBitFront); int16 v26, v28; @@ -343,7 +343,7 @@ void Parallaction::displayItemComment(ExamineData *data) { int16 v6A = 0, v6C = 0; - _gfx->setFont("comic"); + _gfx->setFont(kFontDialogue); _gfx->getStringExtent(data->_description, 130, &v6C, &v6A); Common::Rect r(v6C, v6A); r.moveTo(0, 90); |