diff options
-rw-r--r-- | engines/parallaction/disk.cpp | 165 | ||||
-rw-r--r-- | engines/parallaction/disk.h | 32 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 4 |
3 files changed, 32 insertions, 169 deletions
diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index 83792de1d7..1761224a0c 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -1019,12 +1019,7 @@ void AmigaDisk::loadScenery(const char* background, const char* mask) { return; } - -AmigaFullDisk::AmigaFullDisk(Parallaction *vm) : AmigaDisk(vm) { -} - - -void AmigaFullDisk::loadSlide(const char *name) { +void AmigaDisk::loadSlide(const char *name) { debugC(1, kDebugDisk, "AmigaDisk::loadSlide '%s'", name); char path[PATH_LEN]; @@ -1038,7 +1033,7 @@ void AmigaFullDisk::loadSlide(const char *name) { return; } -Cnv* AmigaFullDisk::loadFrames(const char* name) { +Cnv* AmigaDisk::loadFrames(const char* name) { debugC(1, kDebugDisk, "AmigaDisk::loadFrames '%s'", name); Common::SeekableReadStream *s; @@ -1056,9 +1051,7 @@ Cnv* AmigaFullDisk::loadFrames(const char* name) { return cnv; } - - -StaticCnv* AmigaFullDisk::loadHead(const char* name) { +StaticCnv* AmigaDisk::loadHead(const char* name) { debugC(1, kDebugDisk, "AmigaDisk::loadHead '%s'", name); char path[PATH_LEN]; @@ -1073,11 +1066,15 @@ StaticCnv* AmigaFullDisk::loadHead(const char* name) { } -Cnv* AmigaFullDisk::loadObjects(const char *name) { +Cnv* AmigaDisk::loadObjects(const char *name) { debugC(1, kDebugDisk, "AmigaDisk::loadObjects"); char path[PATH_LEN]; - sprintf(path, "objs/%s.objs", name); + if (_vm->getFeatures() & GF_DEMO) + sprintf(path, "objs/%s.objs", name); + else + sprintf(path, "%s.objs", name); + Common::SeekableReadStream *s = openArchivedFile(path, true); Cnv *cnv = makeCnv(*s); @@ -1087,13 +1084,17 @@ Cnv* AmigaFullDisk::loadObjects(const char *name) { } -Cnv* AmigaFullDisk::loadTalk(const char *name) { +Cnv* AmigaDisk::loadTalk(const char *name) { debugC(1, kDebugDisk, "AmigaDisk::loadTalk '%s'", name); Common::SeekableReadStream *s; char path[PATH_LEN]; - sprintf(path, "talk/%s.talk", name); + if (_vm->getFeatures() & GF_DEMO) + sprintf(path, "%s.talk", name); + else + sprintf(path, "talk/%s.talk", name); + s = openArchivedFile(path, false); if (s == NULL) { s = openArchivedFile(name, true); @@ -1105,7 +1106,7 @@ Cnv* AmigaFullDisk::loadTalk(const char *name) { return cnv; } -Table* AmigaFullDisk::loadTable(const char* name) { +Table* AmigaDisk::loadTable(const char* name) { debugC(1, kDebugDisk, "AmigaDisk::loadTable '%s'", name); char path[PATH_LEN]; @@ -1123,7 +1124,8 @@ Table* AmigaFullDisk::loadTable(const char* name) { dispose = true; stream = s; } else { - sprintf(path, "objs/%s.table", name); + if (!(_vm->getFeatures() & GF_DEMO)) + sprintf(path, "objs/%s.table", name); if (!_resArchive.openArchivedFile(path)) errorFileNotFound(path); @@ -1144,24 +1146,24 @@ Table* AmigaFullDisk::loadTable(const char* name) { return t; } -Font* AmigaFullDisk::loadFont(const char* name) { +Font* AmigaDisk::loadFont(const char* name) { debugC(1, kDebugDisk, "AmigaFullDisk::loadFont '%s'", name); char path[PATH_LEN]; sprintf(path, "%sfont", name); - if (_vm->getFeatures() & GF_LANG_MULT) { - if (!_resArchive.openArchivedFile(path)) - errorFileNotFound(path); - - return createFont(name, _resArchive); - } else { - // Italian version has separate font files? + if (_vm->getFeatures() & GF_LANG_IT) { + // Italian version has separate font files Common::File stream; if (!stream.open(path)) errorFileNotFound(path); return createFont(name, stream); + } else { + if (!_resArchive.openArchivedFile(path)) + errorFileNotFound(path); + + return createFont(name, _resArchive); } } @@ -1179,119 +1181,4 @@ Common::ReadStream* AmigaDisk::loadSound(const char* name) { return new DummyArchiveStream(_resArchive); } -AmigaDemoDisk::AmigaDemoDisk(Parallaction *vm) : AmigaDisk(vm) { -} - -Cnv* AmigaDemoDisk::loadTalk(const char *name) { - debugC(1, kDebugDisk, "AmigaDisk::loadTalk '%s'", name); - - Common::SeekableReadStream *s; - - char path[PATH_LEN]; - sprintf(path, "%s.talk", name); - s = openArchivedFile(path, false); - if (s == NULL) { - s = openArchivedFile(name, true); - } - - Cnv *cnv = makeCnv(*s); - delete s; - - return cnv; -} - -Cnv* AmigaDemoDisk::loadObjects(const char *name) { - debugC(1, kDebugDisk, "AmigaDisk::loadObjects"); - - char path[PATH_LEN]; - sprintf(path, "%s.objs", name); - Common::SeekableReadStream *s = openArchivedFile(path, true); - - Cnv *cnv = makeCnv(*s); - delete s; - - return cnv; -} - - -Cnv* AmigaDemoDisk::loadFrames(const char* name) { - debugC(1, kDebugDisk, "AmigaDisk::loadFrames '%s'", name); - - Common::SeekableReadStream *s = openArchivedFile(name, true); - Cnv *cnv = makeCnv(*s); - delete s; - - return cnv; -} - -void AmigaDemoDisk::loadSlide(const char *name) { - debugC(1, kDebugDisk, "AmigaDisk::loadSlide '%s'", name); - loadBackground(name); - return; -} - -StaticCnv* AmigaDemoDisk::loadHead(const char* name) { - debugC(1, kDebugDisk, "AmigaDisk::loadHead '%s'", name); - - char path[PATH_LEN]; - sprintf(path, "%s.head", name); - - Common::SeekableReadStream *s = openArchivedFile(path, true); - StaticCnv *cnv = makeStaticCnv(*s); - - delete s; - - return cnv; -} - -Table* AmigaDemoDisk::loadTable(const char* name) { - debugC(1, kDebugDisk, "AmigaDisk::loadTable '%s'", name); - - char path[PATH_LEN]; - sprintf(path, "%s.table", name); - - bool dispose = false; - - Common::SeekableReadStream *stream; - - if (!scumm_stricmp(name, "global")) { - Common::File *s = new Common::File; - if (!s->open(path)) - errorFileNotFound(path); - - dispose = true; - stream = s; - } else { - if (!_resArchive.openArchivedFile(path)) - errorFileNotFound(path); - - stream = &_resArchive; - } - - Table *t = new Table(100); - - fillBuffers(*stream); - while (scumm_stricmp(_tokens[0], "ENDTABLE")) { - t->addData(_tokens[0]); - fillBuffers(*stream); - } - - if (dispose) - delete stream; - - return t; -} - -Font* AmigaDemoDisk::loadFont(const char* name) { - debugC(1, kDebugDisk, "AmigaDisk::loadFont '%s'", name); - - char path[PATH_LEN]; - sprintf(path, "%sfont", name); - - if (!_resArchive.openArchivedFile(path)) - errorFileNotFound(path); - - return createFont(name, _resArchive); -} - } // namespace Parallaction diff --git a/engines/parallaction/disk.h b/engines/parallaction/disk.h index 2fab860158..bfef6d81df 100644 --- a/engines/parallaction/disk.h +++ b/engines/parallaction/disk.h @@ -176,42 +176,20 @@ public: Script* loadLocation(const char *name); Script* loadScript(const char* name); - StaticCnv* loadPointer(); - StaticCnv* loadStatic(const char* name); - void loadScenery(const char* background, const char* mask); - Common::ReadStream* loadMusic(const char* name); - Common::ReadStream* loadSound(const char* name); -}; - -class AmigaDemoDisk : public AmigaDisk { - -public: - AmigaDemoDisk(Parallaction *vm); - Cnv* loadTalk(const char *name); Cnv* loadObjects(const char *name); + StaticCnv* loadPointer(); StaticCnv* loadHead(const char* name); - Cnv* loadFrames(const char* name); - void loadSlide(const char *filename); - Table* loadTable(const char* name); Font* loadFont(const char* name); -}; - -class AmigaFullDisk : public AmigaDisk { - -public: - AmigaFullDisk(Parallaction *vm); - - Cnv* loadTalk(const char *name); - Cnv* loadObjects(const char *name); - StaticCnv* loadHead(const char* name); + StaticCnv* loadStatic(const char* name); Cnv* loadFrames(const char* name); void loadSlide(const char *filename); + void loadScenery(const char* background, const char* mask); Table* loadTable(const char* name); - Font* loadFont(const char* name); + Common::ReadStream* loadMusic(const char* name); + Common::ReadStream* loadSound(const char* name); }; - } // namespace Parallaction diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index c77d2c5556..494cfb8bd7 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -180,10 +180,8 @@ int Parallaction::init() { } else { if (getFeatures() & GF_DEMO) { strcpy(_location._name, "fognedemo"); - _disk = new AmigaDemoDisk(this); - } else { - _disk = new AmigaFullDisk(this); } + _disk = new AmigaDisk(this); _disk->selectArchive((_vm->getFeatures() & GF_DEMO) ? "disk0" : "disk1"); } |