From 45b721d3cc47c6682edbf3e8cf30c31ca72c5a3c Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Wed, 30 May 2007 18:43:28 +0000 Subject: cleanup, don't rely on assert() to ensure a gamefile/savefile is opened. Also removed the use of Common::File global objects. svn-id: r27021 --- engines/cine/part.cpp | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-) (limited to 'engines/cine/part.cpp') diff --git a/engines/cine/part.cpp b/engines/cine/part.cpp index 5b7016b91b..1182624cd7 100644 --- a/engines/cine/part.cpp +++ b/engines/cine/part.cpp @@ -36,36 +36,29 @@ PartBuffer *partBuffer; void loadPart(const char *partName) { uint16 i; - for (i = 0; i < NUM_MAX_PARTDATA; i++) { - partBuffer[i].partName[0] = 0; - partBuffer[i].offset = 0; - partBuffer[i].packedSize = 0; - partBuffer[i].unpackedSize = 0; - } - + memset(partBuffer, 0, sizeof(PartBuffer) * NUM_MAX_PARTDATA); numElementInPart = 0; - partFileHandle.close(); + g_cine->_partFileHandle.close(); checkDataDisk(-1); - partFileHandle.open(partName); - - assert(partFileHandle.isOpen()); + if (!g_cine->_partFileHandle.open(partName)) + error("loadPart(): Cannot open file %s", partName); setMouseCursor(MOUSE_CURSOR_DISK); - numElementInPart = partFileHandle.readUint16BE(); - partFileHandle.readUint16BE(); // entry size + numElementInPart = g_cine->_partFileHandle.readUint16BE(); + g_cine->_partFileHandle.readUint16BE(); // entry size strcpy(currentPartName, partName); for (i = 0; i < numElementInPart; i++) { - partFileHandle.read(partBuffer[i].partName, 14); - partBuffer[i].offset = partFileHandle.readUint32BE(); - partBuffer[i].packedSize = partFileHandle.readUint32BE(); - partBuffer[i].unpackedSize = partFileHandle.readUint32BE(); - partFileHandle.readUint32BE(); // unused + g_cine->_partFileHandle.read(partBuffer[i].partName, 14); + partBuffer[i].offset = g_cine->_partFileHandle.readUint32BE(); + partBuffer[i].packedSize = g_cine->_partFileHandle.readUint32BE(); + partBuffer[i].unpackedSize = g_cine->_partFileHandle.readUint32BE(); + g_cine->_partFileHandle.readUint32BE(); // unused } if (g_cine->getGameType() == Cine::GType_FW && g_cine->getPlatform() == Common::kPlatformPC && strcmp(partName, "BASESON.SND") != 0) @@ -376,8 +369,8 @@ int16 findFileInBundle(const char *fileName) { void readFromPart(int16 idx, byte *dataPtr) { setMouseCursor(MOUSE_CURSOR_DISK); - partFileHandle.seek(partBuffer[idx].offset, SEEK_SET); - partFileHandle.read(dataPtr, partBuffer[idx].packedSize); + g_cine->_partFileHandle.seek(partBuffer[idx].offset, SEEK_SET); + g_cine->_partFileHandle.read(dataPtr, partBuffer[idx].packedSize); } byte *readBundleFile(int16 foundFileIdx) { @@ -429,10 +422,9 @@ byte *readFile(const char *filename) { if (!in.isOpen()) error("readFile(): Cannot open file %s", filename); - byte *dataPtr; uint32 size = in.size(); - dataPtr = (byte *)malloc(size); + byte *dataPtr = (byte *)malloc(size); in.read(dataPtr, size); return dataPtr; @@ -450,12 +442,15 @@ void dumpBundle(const char *fileName) { for (int i = 0; i < numElementInPart; i++) { byte *data = readBundleFile(i); + debug(0, "%s", partBuffer[i].partName); + Common::File out; + if (out.open(Common::String("dumps/") + partBuffer[i].partName, Common::File::kFileWriteMode)) { + out.write(data, partBuffer[i].unpackedSize); + out.close(); + } - debug(0, "%s", partBuffer[i].partName); - out.open(Common::String("dumps/") + partBuffer[i].partName, Common::File::kFileWriteMode); - out.write(data, partBuffer[i].unpackedSize); - out.close(); + free(data); } loadPart(tmpPart); -- cgit v1.2.3