[Scummvm-cvs-logs] SF.net SVN: scummvm: [25972] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Sun Mar 4 14:27:30 CET 2007


Revision: 25972
          http://scummvm.svn.sourceforge.net/scummvm/?rev=25972&view=rev
Author:   peres001
Date:     2007-03-04 05:27:29 -0800 (Sun, 04 Mar 2007)

Log Message:
-----------
wrapped loader routines into a new class named Disk. The new class is also responsible for handling Archives in place of the Parallaction engine.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/animation.cpp
    scummvm/trunk/engines/parallaction/callables.cpp
    scummvm/trunk/engines/parallaction/dialogue.cpp
    scummvm/trunk/engines/parallaction/disk.cpp
    scummvm/trunk/engines/parallaction/disk.h
    scummvm/trunk/engines/parallaction/graphics.cpp
    scummvm/trunk/engines/parallaction/inventory.cpp
    scummvm/trunk/engines/parallaction/location.cpp
    scummvm/trunk/engines/parallaction/menu.cpp
    scummvm/trunk/engines/parallaction/parallaction.cpp
    scummvm/trunk/engines/parallaction/parallaction.h
    scummvm/trunk/engines/parallaction/saveload.cpp
    scummvm/trunk/engines/parallaction/zone.cpp

Modified: scummvm/trunk/engines/parallaction/animation.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/animation.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/animation.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -128,7 +128,7 @@
 				}
 			}
 
-			loadFrames(vC8, &vD0->_cnv);
+			_disk->loadFrames(vC8, &vD0->_cnv);
 //			int16 _ax = _vm->_graphics->loadCnv(vC8, &vD0->_cnv);
 //			if (_ax == -1) exit(-1);
 		}
@@ -253,7 +253,7 @@
 
 	// the largest script in Nippon Safes is 3,668 bytes, so 4 kb is well enough
 	char* src = (char*)malloc(0x1000);
-	loadScript(filename, src);
+	_disk->loadScript(filename, src);
 
 	_numLocals = 0;
 

Modified: scummvm/trunk/engines/parallaction/callables.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/callables.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/callables.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -353,7 +353,6 @@
 void _c_testResult(void *parm) {
 	_vm->_graphics->swapBuffers();
 	_vm->parseLocation("common");
-	_vm->_archive.close();
 
 	_vm->_graphics->setFont("slide");
 	_vm->_graphics->_proportionalFont = false;

Modified: scummvm/trunk/engines/parallaction/dialogue.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/dialogue.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/dialogue.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -229,7 +229,7 @@
 		debugC(1, kDebugDialogue, "runDialogue: special trick for 'museum' location");
 	}
 
-	loadTalk(_vm->_characterName, &_characterFace);
+	_vm->_disk->loadTalk(_vm->_characterName, &_characterFace);
 
 	_vm->_graphics->setFont("comic");
 
@@ -241,7 +241,7 @@
 		debugC(1, kDebugDialogue, "runDialogue: using default character head");
 	} else {
 		debugC(1, kDebugDialogue, "runDialogue: loading 2nd character head '%s'", _vm->_characterName);
-		loadTalk(data->_name, &v6E);
+		_vm->_disk->loadTalk(data->_name, &v6E);
 		debugC(1, kDebugDialogue, "runDialogue: 2nd character head loaded");
 	}
 
@@ -509,12 +509,9 @@
 	debugC(1, kDebugDialogue, "runDialogue: exit dialogue ok");
 
 	if (!scumm_stricmp(_location, "museum")) {
+		_vm->_disk->selectArchive("disk1");
+		_vm->_disk->loadFrames("dino", &_tempFrames);
 
-		_vm->_archive.close();
-		strcpy(_vm->_disk, "disk1");
-		_vm->_archive.open(_vm->_disk);
-		loadFrames("dino", &_tempFrames);
-
 		memcpy(&_yourself._cnv, &_tempFrames, sizeof(Cnv));
 
 		debugC(1, kDebugDialogue, "runDialogue: special trick for 'museum' location ok");

Modified: scummvm/trunk/engines/parallaction/disk.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/disk.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -27,10 +27,19 @@
 
 namespace Parallaction {
 
+Disk::Disk(Parallaction* vm) : _vm(vm) {
+
+}
+
+Disk::~Disk() {
+	_archive.close();
+}
+
+
 //
 // decompress a graphics block
 //
-uint16 decompressChunk(byte *src, byte *dst, uint16 size) {
+uint16 Disk::decompressChunk(byte *src, byte *dst, uint16 size) {
 
 	uint16 written = 0;
 	uint16 read = 0;
@@ -66,7 +75,7 @@
 //
 // loads a cnv from an external file
 //
-void loadExternalCnv(const char *filename, Cnv *cnv) {
+void Disk::loadExternalCnv(const char *filename, Cnv *cnv) {
 //	printf("Graphics::loadExternalCnv(%s)...", filename);
 
 	char path[PATH_LEN];
@@ -98,7 +107,7 @@
 	return;
 }
 
-void loadExternalStaticCnv(const char *filename, StaticCnv *cnv) {
+void Disk::loadExternalStaticCnv(const char *filename, StaticCnv *cnv) {
 
 	char path[PATH_LEN];
 
@@ -125,30 +134,30 @@
 	return;
 }
 
-void loadCnv(const char *filename, Cnv *cnv) {
+void Disk::loadCnv(const char *filename, Cnv *cnv) {
 //	printf("Graphics::loadCnv(%s)\n", filename);
 
 	char path[PATH_LEN];
 
 	strcpy(path, filename);
-	if (!_vm->_archive.openArchivedFile(path)) {
+	if (!_archive.openArchivedFile(path)) {
 		sprintf(path, "%s.pp", filename);
-		if (!_vm->_archive.openArchivedFile(path))
+		if (!_archive.openArchivedFile(path))
 			errorFileNotFound(path);
 	}
 
-	cnv->_count = _vm->_archive.readByte();
-	cnv->_width = _vm->_archive.readByte();
-	cnv->_height = _vm->_archive.readByte();
+	cnv->_count = _archive.readByte();
+	cnv->_width = _archive.readByte();
+	cnv->_height = _archive.readByte();
 
 	uint16 framesize = cnv->_width*cnv->_height;
 
 	cnv->_array = (byte**)malloc(cnv->_count * sizeof(byte*));
 
-	uint32 size = _vm->_archive.size() - 3;
+	uint32 size = _archive.size() - 3;
 
 	byte *buf = (byte*)malloc(size);
-	_vm->_archive.read(buf, size);
+	_archive.read(buf, size);
 
 	byte *s = buf;
 
@@ -161,14 +170,14 @@
 		s += read;
 	}
 
-	_vm->_archive.closeArchivedFile();
+	_archive.closeArchivedFile();
 
 	free(buf);
 
 	return;
 }
 
-void loadTalk(const char *name, Cnv *cnv) {
+void Disk::loadTalk(const char *name, Cnv *cnv) {
 
 	char* ext = strstr(name, ".talk");
 	if (ext != NULL) {
@@ -196,7 +205,7 @@
 
 }
 
-void loadLocation(const char *name, char* script) {
+void Disk::loadLocation(const char *name, char* script) {
 
 	char archivefile[PATH_LEN];
 
@@ -211,44 +220,44 @@
 	strcat(archivefile, name);
 	strcat(archivefile, ".loc");
 
-	_vm->_archive.close();
+	_archive.close();
 
 	_vm->_languageDir[2] = '\0';
-	_vm->_archive.open(_vm->_languageDir);
+	_archive.open(_vm->_languageDir);
 	_vm->_languageDir[2] = '/';
 
-	if (!_vm->_archive.openArchivedFile(archivefile)) {
+	if (!_archive.openArchivedFile(archivefile)) {
 		sprintf(archivefile, "%s%s.loc", _vm->_languageDir, name);
-		if (!_vm->_archive.openArchivedFile(archivefile))
+		if (!_archive.openArchivedFile(archivefile))
 			error("can't find location file '%s'", name);
 	}
 
-	uint32 count = _vm->_archive.size();
-	_vm->_archive.read(script, count);
-	_vm->_archive.closeArchivedFile();
-	_vm->_archive.close();
+	uint32 count = _archive.size();
+	_archive.read(script, count);
+	_archive.closeArchivedFile();
+	_archive.close();
 
 }
 
-void loadScript(const char* name, char *script) {
+void Disk::loadScript(const char* name, char *script) {
 
 	char vC8[PATH_LEN];
 
 	sprintf(vC8, "%s.script", name);
 
-	if (!_vm->_archive.openArchivedFile(vC8))
+	if (!_archive.openArchivedFile(vC8))
 		errorFileNotFound(vC8);
 
-	uint32 size = _vm->_archive.size();
+	uint32 size = _archive.size();
 
-	_vm->_archive.read(script, size);
+	_archive.read(script, size);
 	script[size] = '\0';
 
-	_vm->_archive.closeArchivedFile();
+	_archive.closeArchivedFile();
 
 }
 
-void loadHead(const char* name, StaticCnv* cnv) {
+void Disk::loadHead(const char* name, StaticCnv* cnv) {
 
 	char path[PATH_LEN];
 
@@ -264,11 +273,11 @@
 }
 
 
-void loadPointer(StaticCnv* cnv) {
+void Disk::loadPointer(StaticCnv* cnv) {
 	loadExternalStaticCnv("pointer", cnv);
 }
 
-void loadFont(const char* name, Cnv* cnv) {
+void Disk::loadFont(const char* name, Cnv* cnv) {
 	char path[PATH_LEN];
 
 	sprintf(path, "%scnv", name);
@@ -277,7 +286,7 @@
 
 // loads character's icons set
 
-void loadObjects(const char *name, Cnv* cnv) {
+void Disk::loadObjects(const char *name, Cnv* cnv) {
 
 	if (!scumm_strnicmp("mini", name, 4)) {
 		name += 4;
@@ -292,29 +301,29 @@
 }
 
 
-void loadStatic(const char* name, StaticCnv* cnv) {
+void Disk::loadStatic(const char* name, StaticCnv* cnv) {
 
 	char path[PATH_LEN];
 
 	strcpy(path, name);
-	if (!_vm->_archive.openArchivedFile(path)) {
+	if (!_archive.openArchivedFile(path)) {
 		sprintf(path, "%s.pp", name);
-		if (!_vm->_archive.openArchivedFile(path))
+		if (!_archive.openArchivedFile(path))
 			errorFileNotFound(path);
 	}
 
-	_vm->_archive.skip(1);
-	cnv->_width = _vm->_archive.readByte();
-	cnv->_height = _vm->_archive.readByte();
+	_archive.skip(1);
+	cnv->_width = _archive.readByte();
+	cnv->_height = _archive.readByte();
 
-	uint16 compressedsize = _vm->_archive.size() - 3;
+	uint16 compressedsize = _archive.size() - 3;
 	byte *compressed = (byte*)malloc(compressedsize);
 
 	uint16 size = cnv->_width*cnv->_height;
 	cnv->_data0 = (byte*)malloc(size);
 
-	_vm->_archive.read(compressed, compressedsize);
-	_vm->_archive.closeArchivedFile();
+	_archive.read(compressed, compressedsize);
+	_archive.closeArchivedFile();
 
 	decompressChunk(compressed, cnv->_data0, size);
 	free(compressed);
@@ -322,7 +331,7 @@
 	return;
 }
 
-void loadFrames(const char* name, Cnv* cnv) {
+void Disk::loadFrames(const char* name, Cnv* cnv) {
 
 	loadCnv(name, cnv);
 
@@ -339,7 +348,7 @@
 //
 
 
-void unpackBackgroundScanline(byte *src, byte *screen, byte *mask, byte *path) {
+void Disk::unpackBackgroundScanline(byte *src, byte *screen, byte *mask, byte *path) {
 
 	// update mask, path and screen
 	for (uint16 i = 0; i < SCREEN_WIDTH; i++) {
@@ -351,20 +360,20 @@
 	return;
 }
 
-void loadBackground(const char *filename) {
+void Disk::loadBackground(const char *filename) {
 //	printf("Graphics::loadBackground(%s)\n", filename);
 
-	if (!_vm->_archive.openArchivedFile(filename))
+	if (!_archive.openArchivedFile(filename))
 		errorFileNotFound(filename);
 
-	_vm->_graphics->parseBackground(_vm->_archive);
+	_vm->_graphics->parseBackground(_archive);
 
 	byte *bg = (byte*)calloc(1, SCREEN_WIDTH*SCREEN_HEIGHT);
 	byte *mask = (byte*)calloc(1, SCREENMASK_WIDTH*SCREEN_HEIGHT);
 	byte *path = (byte*)calloc(1, SCREENPATH_WIDTH*SCREEN_HEIGHT);
 
 	byte *v4 = (byte*)malloc(SCREEN_SIZE);
-	_vm->_archive.read(v4, SCREEN_SIZE);
+	_archive.read(v4, SCREEN_SIZE);
 
 	byte v144[SCREEN_WIDTH];
 
@@ -393,20 +402,20 @@
 //	mask and path are normally combined (via OR) into the background picture itself
 //	read the comment on the top of this file for more
 //
-void loadMaskAndPath(const char *name) {
+void Disk::loadMaskAndPath(const char *name) {
 	char path[PATH_LEN];
 	sprintf(path, "%s.msk", name);
 
-	if (!_vm->_archive.openArchivedFile(path))
+	if (!_archive.openArchivedFile(path))
 		errorFileNotFound(name);
 
 	byte *maskBuf = (byte*)calloc(1, SCREENMASK_WIDTH*SCREEN_HEIGHT);
 	byte *pathBuf = (byte*)calloc(1, SCREENPATH_WIDTH*SCREEN_HEIGHT);
 
-	_vm->_graphics->parseDepths(_vm->_archive);
+	_vm->_graphics->parseDepths(_archive);
 
-	_vm->_archive.read(pathBuf, SCREENPATH_WIDTH*SCREEN_HEIGHT);
-	_vm->_archive.read(maskBuf, SCREENMASK_WIDTH*SCREEN_HEIGHT);
+	_archive.read(pathBuf, SCREENPATH_WIDTH*SCREEN_HEIGHT);
+	_archive.read(maskBuf, SCREENMASK_WIDTH*SCREEN_HEIGHT);
 
 	_vm->_graphics->setMask(maskBuf);
 	_vm->_graphics->setPath(pathBuf);
@@ -414,13 +423,13 @@
 	return;
 }
 
-void loadSlide(const char *filename) {
+void Disk::loadSlide(const char *filename) {
 	char path[PATH_LEN];
 	sprintf(path, "%s.slide", filename);
 	loadBackground(path);
 }
 
-void loadScenery(const char *name, const char *mask) {
+void Disk::loadScenery(const char *name, const char *mask) {
 	char path[PATH_LEN];
 	sprintf(path, "%s.dyn", name);
 	loadBackground(path);
@@ -432,4 +441,9 @@
 
 }
 
+void Disk::selectArchive(const char *name) {
+	_archive.close();
+	_archive.open(name);
+}
+
 } // namespace Parallaction

Modified: scummvm/trunk/engines/parallaction/disk.h
===================================================================
--- scummvm/trunk/engines/parallaction/disk.h	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/disk.h	2007-03-04 13:27:29 UTC (rev 25972)
@@ -37,6 +37,9 @@
 
 #define DIRECTORY_OFFSET_IN_FILE	0x4000
 
+class Parallaction;
+class Graphics;
+
 class Archive : public Common::SeekableReadStream {
 
 protected:
@@ -72,18 +75,42 @@
 	uint32 read(void *dataPtr, uint32 dataSize);
 };
 
-void loadLocation(const char *name, char* script);
-void loadScript(const char* name, char *script);
-void loadTalk(const char *name, Cnv *cnv);
-void loadObjects(const char *name, Cnv *cnv);
-void loadPointer(StaticCnv* cnv);
-void loadHead(const char* name, StaticCnv* cnv);
-void loadFont(const char* name, Cnv* cnv);
-void loadStatic(const char* name, StaticCnv* cnv);
-void loadFrames(const char* name, Cnv* cnv);
-void loadSlide(const char *filename);
-void loadScenery(const char* background, const char* mask);
+class Disk {
 
+private:
+	uint16 decompressChunk(byte *src, byte *dst, uint16 size);
+	void unpackBackgroundScanline(byte *src, byte *screen, byte *mask, byte *path);
+	void loadExternalCnv(const char *filename, Cnv *cnv);
+	void loadCnv(const char *filename, Cnv *cnv);
+	void loadExternalStaticCnv(const char *filename, StaticCnv *cnv);
+	void loadBackground(const char *filename);
+	void loadMaskAndPath(const char *name);
+
+protected:
+	Archive			_archive;
+
+	Parallaction 	*_vm;
+	Graphics		*_gfx;
+
+public:
+	Disk(Parallaction *vm);
+	virtual ~Disk();
+
+	void selectArchive(const char *name);
+
+	void loadLocation(const char *name, char* script);
+	void loadScript(const char* name, char *script);
+	void loadTalk(const char *name, Cnv *cnv);
+	void loadObjects(const char *name, Cnv *cnv);
+	void loadPointer(StaticCnv* cnv);
+	void loadHead(const char* name, StaticCnv* cnv);
+	void loadFont(const char* name, Cnv* cnv);
+	void loadStatic(const char* name, StaticCnv* cnv);
+	void loadFrames(const char* name, Cnv* cnv);
+	void loadSlide(const char *filename);
+	void loadScenery(const char* background, const char* mask);
+};
+
 } // namespace Parallaction
 
 

Modified: scummvm/trunk/engines/parallaction/graphics.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/graphics.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/graphics.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -509,7 +509,7 @@
 
 void Graphics::initMouse(uint16 arg_0) {
 
-	loadPointer(&_mouseComposedArrow);
+	_vm->_disk->loadPointer(&_mouseComposedArrow);
 
 	byte temp[16*16];
 	memcpy(temp, _mouseArrow, 16*16);
@@ -800,7 +800,7 @@
 	if (_font._array != NULL)
 		freeCnv(&_font);
 
-	loadFont(name, &_font);
+	_vm->_disk->loadFont(name, &_font);
 }
 
 

Modified: scummvm/trunk/engines/parallaction/inventory.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/inventory.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/inventory.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -372,7 +372,7 @@
 
 
 void refreshInventory(const char *character) {
-	loadObjects(character, &_characterInventory);
+	_vm->_disk->loadObjects(character, &_characterInventory);
 	redrawInventory();
 	_vm->_graphics->freeCnv(&_characterInventory);
 
@@ -381,7 +381,7 @@
 
 
 void refreshInventoryItem(const char *character, uint16 index) {
-	loadObjects(character, &_characterInventory);
+	_vm->_disk->loadObjects(character, &_characterInventory);
 	drawInventoryItem(index, &_inventory[index]);
 	_vm->_graphics->freeCnv(&_characterInventory);
 

Modified: scummvm/trunk/engines/parallaction/location.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/location.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/location.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -48,7 +48,7 @@
 	_vm->_graphics->setFont("topaz");
 
 	location_src = (char*)malloc(0x4000);
-	loadLocation(filename, location_src);
+	_disk->loadLocation(filename, location_src);
 	_locationScript = new Script(location_src);
 
 	fillBuffers(*_locationScript, true);
@@ -105,8 +105,7 @@
 			}
 		}
 		if (!scumm_stricmp(_tokens[0], "DISK")) {
-			strcpy(_disk, _tokens[1]);
-			_archive.open(_disk);
+			_disk->selectArchive(_tokens[1]);
 		}
 		if (!scumm_stricmp(_tokens[0], "LOCALFLAGS")) {
 			_si = 1;	// _localFlagNames[0] = 'visited'
@@ -277,7 +276,7 @@
 		_vm->_graphics->palUnk0(palette);
 	}
 
-	loadScenery(background, mask);
+	_vm->_disk->loadScenery(background, mask);
 
 	return;
 }
@@ -355,19 +354,19 @@
 		*tmp = '\0';
 
 		if (!scumm_strnicmp(tmp+1, "slide", 5)) {
-			loadSlide(_newLocation);
-			_vm->_graphics->palUnk0(_palette);
-			_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
+			_disk->loadSlide(_newLocation);
+			_graphics->palUnk0(_palette);
+			_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
 
 			debugC(1, kDebugLocation, "changeLocation: new background set");
 
-			_vm->_graphics->_proportionalFont = false;
-			_vm->_graphics->setFont("slide");
+			_graphics->_proportionalFont = false;
+			_graphics->setFont("slide");
 
 			uint16 _ax = strlen(_slideText[0]);
 			_ax <<= 3;	// text width
 			uint16 _dx = (SCREEN_WIDTH - _ax) >> 1; // center text
-			_vm->_graphics->displayString(_dx, 14, _slideText[0]); // displays text on screen
+			_graphics->displayString(_dx, 14, _slideText[0]); // displays text on screen
 
 			waitUntilLeftClick();
 
@@ -397,7 +396,7 @@
 	strcpy(_saveData1, _newLocation);
 
 	parseLocation(_newLocation);
-	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBit2);
+	_graphics->copyScreen(Graphics::kBitBack, Graphics::kBit2);
 	debugC(1, kDebugLocation, "changeLocation: new location '%s' parsed", _newLocation);
 
 	_yourself._zone.pos._oldposition._x = -1000;
@@ -416,14 +415,14 @@
 
 	byte palette[PALETTE_SIZE];
 	for (uint16 _si = 0; _si < PALETTE_SIZE; _si++) palette[_si] = 0;
-	_vm->_graphics->palUnk0(palette);
-	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
+	_graphics->palUnk0(palette);
+	_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
 	if (_locationCommands) {
 		runCommands(_locationCommands);
 		runJobs();
-		_vm->_graphics->swapBuffers();
+		_graphics->swapBuffers();
 		runJobs();
-		_vm->_graphics->swapBuffers();
+		_graphics->swapBuffers();
 	}
 
 	if (_locationComment) {
@@ -432,9 +431,9 @@
 	}
 
 	runJobs();
-	_vm->_graphics->swapBuffers();
+	_graphics->swapBuffers();
 
-	_vm->_graphics->palUnk0(_palette);
+	_graphics->palUnk0(_palette);
 	if (_locationACommands) {
 		runCommands(_locationACommands);
 		debugC(1, kDebugLocation, "changeLocation: location acommands run");

Modified: scummvm/trunk/engines/parallaction/menu.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/menu.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/menu.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -101,24 +101,24 @@
 
 void Menu::start() {
 
-	_vm->_archive.open("disk1");
+	_vm->_disk->selectArchive("disk1");
 	_vm->_graphics->_proportionalFont = false;
 
 	_vm->_graphics->setFont("slide");
 
-	loadSlide("intro");
+	_vm->_disk->loadSlide("intro");
 	_vm->_graphics->palUnk0(_palette);
 	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
 
 	g_system->delayMillis(2000);
 
-	loadSlide("minintro");
+	_vm->_disk->loadSlide("minintro");
 	_vm->_graphics->palUnk0(_palette);
 	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
 
 	g_system->delayMillis(2000);
 
-	loadSlide("lingua");
+	_vm->_disk->loadSlide("lingua");
 	_vm->_graphics->palUnk0(_palette);
 	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
 
@@ -146,7 +146,7 @@
 		break;
 	}
 
-	loadSlide("restore");
+	_vm->_disk->loadSlide("restore");
 	_vm->_graphics->palUnk0(_palette);
 	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBitFront);
 
@@ -157,8 +157,6 @@
 		newGame();
 	}
 
-	_vm->_archive.close();
-
 	return;
 }
 
@@ -167,7 +165,7 @@
 
 	const char **v14 = introMsg3;
 
-	loadScenery("test", NULL);
+	_vm->_disk->loadScenery("test", NULL);
 	_vm->_graphics->palUnk0(_palette);
 	_vm->_graphics->swapBuffers();
 
@@ -196,8 +194,6 @@
 	if (_mouseButtons != kMouseRightUp)
 		return;    // show intro
 
-	_vm->_archive.close();
-
 	selectCharacter();
 
 	char *v4 = strchr(_location, '.') + 1;
@@ -284,7 +280,6 @@
 	strcpy(_engine->_characterName, "dough");
 
 	_vm->loadGame();
-	_vm->_archive.close();
 
 	return 1;  // load game
 }
@@ -315,9 +310,9 @@
 	_vm->_graphics->_proportionalFont = false;
 
 	_vm->_graphics->setFont("slide");
-	_vm->_archive.open("disk1");
+	_vm->_disk->selectArchive("disk1");
 
-	loadSlide("password");
+	_vm->_disk->loadSlide("password");
 	_vm->_graphics->copyScreen(Graphics::kBitBack, Graphics::kBit2);
 	_vm->_graphics->palUnk0(_palette);
 
@@ -411,7 +406,6 @@
 	_vm->_graphics->setPalette(palette);
 
 	_engineFlags |= kEngineChangeLocation;
-	_vm->_archive.close();
 
 	free(v14._data0);
 

Modified: scummvm/trunk/engines/parallaction/parallaction.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/parallaction.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -162,6 +162,7 @@
 
 	// FIXME
 	_vm = this;
+	_disk = new Disk(this);
 
 	_skipMenu = false;
 
@@ -203,6 +204,7 @@
 
 Parallaction::~Parallaction() {
 	delete _midiPlayer;
+	delete _disk;
 }
 
 
@@ -850,18 +852,15 @@
 			freeCharacterFrames();
 		}
 
-		_archive.close();
+		_disk->selectArchive("disk1");
 
-		strcpy(_disk, "disk1");
-		_archive.open("disk1");
-
 		char path[PATH_LEN];
 		strcpy(path, v32);
-		loadFrames(path, &_tempFrames);
+		_disk->loadFrames(path, &_tempFrames);
 
 		if (name[0] != 'D') {
 			sprintf(path, "mini%s", v32);
-			loadFrames(path, &_miniCharacterFrames);
+			_disk->loadFrames(path, &_miniCharacterFrames);
 
 			sprintf(path, "%s.tab", name);
 			initTable(path, _objectsNames);

Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/parallaction.h	2007-03-04 13:27:29 UTC (rev 25972)
@@ -264,7 +264,7 @@
 	Menu*	_menu;
 	char	_characterName[30];
 	char	_languageDir[6];
-	char	_disk[6];
+	Disk*	_disk;
 
 	char	_locationNames[120][32];
 	int16	_currentLocationIndex;
@@ -274,8 +274,6 @@
 
 	Script	*_locationScript;
 
-	Archive	_archive;
-
 protected:		// data
 
 	struct InputData {

Modified: scummvm/trunk/engines/parallaction/saveload.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/saveload.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/saveload.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -134,7 +134,6 @@
 	refreshInventory(_vm->_characterName);
 
 	parseLocation("common");
-	_archive.close();
 
 	strcat(_location, _vm->_characterName);
 	_engineFlags |= kEngineChangeLocation;

Modified: scummvm/trunk/engines/parallaction/zone.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/zone.cpp	2007-03-04 12:55:25 UTC (rev 25971)
+++ scummvm/trunk/engines/parallaction/zone.cpp	2007-03-04 13:27:29 UTC (rev 25972)
@@ -279,7 +279,7 @@
 				strcpy(vC8, _tokens[1]);
 
 				StaticCnv vE0;
-				loadFrames(vC8, doorcnv);
+				_disk->loadFrames(vC8, doorcnv);
 
 //				printf("door width: %i, height: %i", doorcnv->_width, doorcnv->_height );
 
@@ -293,9 +293,9 @@
 //				vE0._data1 = doorcnv->field_8[_ax];
 
 				vE0._data2 = u->door->_background = (byte*)malloc(vE0._width*vE0._height);
-				_vm->_graphics->backupCnvBackground(&vE0, z->_limits._left, z->_limits._top);
+				_graphics->backupCnvBackground(&vE0, z->_limits._left, z->_limits._top);
 
-				_vm->_graphics->flatBlitCnv(&vE0, z->_limits._left, z->_limits._top, Graphics::kBitBack, vE0._data1);
+				_graphics->flatBlitCnv(&vE0, z->_limits._left, z->_limits._top, Graphics::kBitBack, vE0._data1);
 			}
 
 			if (!scumm_stricmp(_tokens[0],	"startpos")) {
@@ -309,12 +309,12 @@
 			if (!scumm_stricmp(_tokens[0], "file")) {
 				StaticCnv *vE4 = &u->get->_cnv;
 				strcpy(vC8, _tokens[1]);
-				loadStatic(vC8, vE4);
+				_disk->loadStatic(vC8, vE4);
 				vE4->_data2 = (byte*)malloc(vE4->_width*vE4->_height);
 
 				if ((z->_flags & kFlagsRemove) == 0) {
-					_vm->_graphics->backupCnvBackgroundTransparent(vE4, z->_limits._left, z->_limits._top);
-					_vm->_graphics->flatBlitCnv(vE4, z->_limits._left, z->_limits._top, Graphics::kBitBack, vE4->_data1);
+					_graphics->backupCnvBackgroundTransparent(vE4, z->_limits._left, z->_limits._top);
+					_graphics->flatBlitCnv(vE4, z->_limits._left, z->_limits._top, Graphics::kBitBack, vE4->_data1);
 				}
 			}
 
@@ -365,7 +365,7 @@
 void displayCharacterComment(ExamineData *data) {
 	if (data->_description == NULL) return;
 
-	loadTalk(_vm->_characterName, &_characterFace);
+	_vm->_disk->loadTalk(_vm->_characterName, &_characterFace);
 
 	StaticCnv v3C;
 	v3C._width = _characterFace._width;
@@ -412,12 +412,12 @@
 
 	char v68[PATH_LEN];
 	strcpy(v68, data->_filename);
-	loadStatic(v68, &data->_cnv);
+	_vm->_disk->loadStatic(v68, &data->_cnv);
 	_vm->_graphics->flatBlitCnv(&data->_cnv, 140, (SCREEN_HEIGHT - data->_cnv._height)/2, Graphics::kBitFront, data->_cnv._data1);
 	_vm->_graphics->freeStaticCnv(&data->_cnv);
 
 	StaticCnv cnv;
-	loadHead(_vm->_characterName, &cnv);
+	_vm->_disk->loadHead(_vm->_characterName, &cnv);
 
 	int16 v6A = 0, v6C = 0;
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list