aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorNicola Mettifogo2007-04-15 20:57:56 +0000
committerNicola Mettifogo2007-04-15 20:57:56 +0000
commitc43960b958fc7a6e7c1bf83c75cc5033a049f952 (patch)
treedce2c2ffc6a85733efbcca6d5a29b731799d681a /engines
parent2c9116de3b1510807bebc39c10332b3bd19d2184 (diff)
downloadscummvm-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')
-rw-r--r--engines/parallaction/callables.cpp8
-rw-r--r--engines/parallaction/dialogue.cpp2
-rw-r--r--engines/parallaction/disk.cpp5
-rw-r--r--engines/parallaction/graphics.cpp21
-rw-r--r--engines/parallaction/graphics.h9
-rw-r--r--engines/parallaction/intro.cpp2
-rw-r--r--engines/parallaction/location.cpp6
-rw-r--r--engines/parallaction/menu.cpp4
-rw-r--r--engines/parallaction/parallaction.cpp4
-rw-r--r--engines/parallaction/zone.cpp4
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);