aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/disk.cpp
diff options
context:
space:
mode:
authorTravis Howell2007-06-16 11:13:36 +0000
committerTravis Howell2007-06-16 11:13:36 +0000
commit987aaa6d81bf4aff816d5fc0ea69cf02262547bb (patch)
treee2f13686cb1a028cc50f4100f0c026528b321540 /engines/parallaction/disk.cpp
parentae3a2b70fb3ca2298688a48af513db5e771660e2 (diff)
downloadscummvm-rg350-987aaa6d81bf4aff816d5fc0ea69cf02262547bb.tar.gz
scummvm-rg350-987aaa6d81bf4aff816d5fc0ea69cf02262547bb.tar.bz2
scummvm-rg350-987aaa6d81bf4aff816d5fc0ea69cf02262547bb.zip
Reduce code duplication.
svn-id: r27459
Diffstat (limited to 'engines/parallaction/disk.cpp')
-rw-r--r--engines/parallaction/disk.cpp165
1 files changed, 26 insertions, 139 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