[Scummvm-git-logs] scummvm master -> 7ddb8b70b67f7f549482ab749709917fcddbdbfb

aquadran noreply at scummvm.org
Sat Jan 1 14:57:01 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7ddb8b70b6 DEVTOOLS: Avoid global constructors


Commit: 7ddb8b70b67f7f549482ab749709917fcddbdbfb
    https://github.com/scummvm/scummvm/commit/7ddb8b70b67f7f549482ab749709917fcddbdbfb
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2022-01-01T15:56:57+01:00

Commit Message:
DEVTOOLS: Avoid global constructors

Changed paths:
    devtools/create_titanic/create_titanic_dat.cpp
    devtools/create_titanic/file.h
    devtools/create_titanic/script_preresponses.cpp
    devtools/create_titanic/script_quotes.cpp
    devtools/create_titanic/script_ranges.cpp
    devtools/create_titanic/script_responses.cpp
    devtools/create_titanic/script_states.cpp
    devtools/create_titanic/tag_maps.cpp


diff --git a/devtools/create_titanic/create_titanic_dat.cpp b/devtools/create_titanic/create_titanic_dat.cpp
index 107ba79b8fc..0c93a6ce302 100644
--- a/devtools/create_titanic/create_titanic_dat.cpp
+++ b/devtools/create_titanic/create_titanic_dat.cpp
@@ -52,8 +52,8 @@
 #define VERSION_NUMBER 5
 #define HEADER_SIZE 0x1700
 
-Common::File inputFile, outputFile;
-Common::PEResources resEng, resGer;
+Common::File *inputFile, *outputFile;
+Common::PEResources *resEng, *resGer;
 uint headerOffset = 6;
 uint dataOffset = HEADER_SIZE;
 
@@ -1046,11 +1046,11 @@ void NORETURN_PRE error(const char *s, ...) {
 
 void writeEntryHeader(const char *name, uint offset, uint size, uint flags) {
 	assert(headerOffset < HEADER_SIZE);
-	outputFile.seek(headerOffset);
-	outputFile.writeLong(offset);
-	outputFile.writeLong(size);
-	outputFile.writeWord(flags);
-	outputFile.writeString(name);
+	outputFile->seek(headerOffset);
+	outputFile->writeLong(offset);
+	outputFile->writeLong(size);
+	outputFile->writeWord(flags);
+	outputFile->writeString(name);
 
 	headerOffset += 10 + strlen(name) + 1;
 }
@@ -1066,9 +1066,9 @@ void writeEntryHeader(const char *name, uint offset, uint size, bool isCompresse
 
 void writeFinalEntryHeader() {
 	assert(headerOffset <= (HEADER_SIZE - 8));
-	outputFile.seek(headerOffset);
-	outputFile.writeLong(0);
-	outputFile.writeLong(0);
+	outputFile->seek(headerOffset);
+	outputFile->writeLong(0);
+	outputFile->writeLong(0);
 }
 
 void writeCompressedRes(Common::File *src) {
@@ -1076,24 +1076,24 @@ void writeCompressedRes(Common::File *src) {
 }
 
 void writeStringArray(const char *name, uint offset, int count) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
-	inputFile.seek(offset - FILE_DIFF[_version]);
+	inputFile->seek(offset - FILE_DIFF[_version]);
 	uint *offsets = new uint[count];
 	for (int idx = 0; idx < count; ++idx)
-		offsets[idx] = inputFile.readLong();
+		offsets[idx] = inputFile->readLong();
 
 	// Iterate through reading each string
 	for (int idx = 0; idx < count; ++idx) {
 		if (offsets[idx]) {
-			inputFile.seek(offsets[idx] - FILE_DIFF[_version]);
-			outputFile.writeString(inputFile);
+			inputFile->seek(offsets[idx] - FILE_DIFF[_version]);
+			outputFile->writeString(*inputFile);
 		} else {
-			outputFile.writeString("");
+			outputFile->writeString("");
 		}
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 
@@ -1101,14 +1101,14 @@ void writeStringArray(const char *name, uint offset, int count) {
 }
 
 void writeStringArray(const char *name, const char *const *strings, int count) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	// Iterate through writing each string
 	for (int idx = 0; idx < count; ++idx) {
-		outputFile.writeString(strings[idx]);
+		outputFile->writeString(strings[idx]);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
@@ -1125,8 +1125,8 @@ Common::WinResourceID getResId(const char *id) {
 }
 
 void writeResource(const char *name, Common::File *file) {
-	outputFile.seek(dataOffset);
-	outputFile.write(*file, file->size());
+	outputFile->seek(dataOffset);
+	outputFile->write(*file, file->size());
 
 	writeEntryHeader(name, dataOffset, file->size());
 	dataOffset += file->size();
@@ -1134,8 +1134,8 @@ void writeResource(const char *name, Common::File *file) {
 }
 
 void writeResource(const char *resName, const char *sectionStr, uint32 resId, bool isEnglish = true) {
-	Common::PEResources &res = isEnglish ? resEng : resGer;
-	Common::File *file = res.getResource(getResId(sectionStr), resId);
+	Common::PEResources *res = isEnglish ? resEng : resGer;
+	Common::File *file = res->getResource(getResId(sectionStr), resId);
 	assert(file);
 	writeResource(resName, file);
 }
@@ -1150,8 +1150,8 @@ void writeResource(const char *sectionStr, uint32 resId, bool isEnglish = true)
 }
 
 void writeResource(const char *resName, const char *sectionStr, const char *resId, bool isEnglish = true) {
-	Common::PEResources &res = isEnglish ? resEng : resGer;
-	Common::File *file = res.getResource(getResId(sectionStr),
+	Common::PEResources *res = isEnglish ? resEng : resGer;
+	Common::File *file = res->getResource(getResId(sectionStr),
 		Common::WinResourceID(resId));
 	assert(file);
 	writeResource(resName, file);
@@ -1167,7 +1167,7 @@ void writeResource(const char *sectionStr, const char *resId, bool isEnglish = t
 }
 
 void writeBitmap(const char *name, Common::File *file) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	// Set up a memory stream for the compressed data, and wrap
 	// it with a zlib compressor
@@ -1192,7 +1192,7 @@ void writeBitmap(const char *name, Common::File *file) {
 	zlib->finalize();
 
 	// Write out the compressed data
-	outputFile.write(compressedData->getData(), compressedData->size());
+	outputFile->write(compressedData->getData(), compressedData->size());
 
 	writeEntryHeader(name, dataOffset, compressedData->size() + 14, true);
 	dataOffset += compressedData->size() + 14;
@@ -1206,8 +1206,8 @@ void writeBitmap(const char *sectionStr, const char *resId, bool isEnglish = tru
 	sprintf(nameBuffer, "%s/%s%s", sectionStr, resId,
 		isEnglish ? "" : "/DE");
 
-	Common::PEResources &res = isEnglish ? resEng : resGer;
-	Common::File *file = res.getResource(getResId(sectionStr),
+	Common::PEResources *res = isEnglish ? resEng : resGer;
+	Common::File *file = res->getResource(getResId(sectionStr),
 		Common::WinResourceID(resId));
 	assert(file);
 	writeBitmap(nameBuffer, file);
@@ -1218,125 +1218,125 @@ void writeBitmap(const char *sectionStr, uint32 resId, bool isEnglish = true) {
 	sprintf(nameBuffer, "%s/%u%s", sectionStr, resId,
 		isEnglish ? "" : "/DE");
 
-	Common::PEResources &res = isEnglish ? resEng : resGer;
-	Common::File *file = res.getResource(getResId(sectionStr),
+	Common::PEResources *res = isEnglish ? resEng : resGer;
+	Common::File *file = res->getResource(getResId(sectionStr),
 		Common::WinResourceID(resId));
 	assert(file);
 	writeBitmap(nameBuffer, file);
 }
 
 void writeNumbers() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	// Iterate through writing each string
 	for (int idx = 0; idx < 76; ++idx) {
-		outputFile.writeString(NUMBERS[idx]._text);
-		outputFile.writeLong(NUMBERS[idx]._value);
-		outputFile.writeLong(NUMBERS[idx]._flags);
+		outputFile->writeString(NUMBERS[idx]._text);
+		outputFile->writeLong(NUMBERS[idx]._value);
+		outputFile->writeLong(NUMBERS[idx]._flags);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("TEXT/NUMBERS", dataOffset, size);
 	dataOffset += size;
 }
 
 void writeString(uint offset) {
 	if (offset == 0) {
-		outputFile.writeByte(0);
+		outputFile->writeByte(0);
 	} else {
-		inputFile.seek(offset - FILE_DIFF[_version]);
+		inputFile->seek(offset - FILE_DIFF[_version]);
 		char c;
 		do {
-			c = inputFile.readByte();
-			outputFile.writeByte(c);
+			c = inputFile->readByte();
+			outputFile->writeByte(c);
 		} while (c);
 	}
 }
 
 void writeResponseTree() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	const uint OFFSETS[3] = { 0x619520, 0x618340, 0x617380 };
 	for (int idx = 0; idx < 1022; ++idx) {
-		inputFile.seek(OFFSETS[_version] - FILE_DIFF[_version] + idx * 8);
-		uint id = inputFile.readLong();
-		uint offset = inputFile.readLong();
+		inputFile->seek(OFFSETS[_version] - FILE_DIFF[_version] + idx * 8);
+		uint id = inputFile->readLong();
+		uint offset = inputFile->readLong();
 
-		outputFile.writeLong(id);
+		outputFile->writeLong(id);
 		if (!id) {
 			// An end of list id
 		} else if (offset >= OFFSETS[_version] && offset <= (OFFSETS[_version] + 0x1FF0)) {
 			// Offset to another table
-			outputFile.writeByte(0);
-			outputFile.writeLong((offset - OFFSETS[_version]) / 8);
+			outputFile->writeByte(0);
+			outputFile->writeLong((offset - OFFSETS[_version]) / 8);
 		} else {
 			// Offset to ASCIIZ string
-			outputFile.writeByte(1);
+			outputFile->writeByte(1);
 			writeString(offset);
 		}
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("TEXT/TREE", dataOffset, size);
 	dataOffset += size;
 }
 
 void writeSentenceEntries(const char *name, uint tableOffset) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	uint v1, category, v4, v9, v11, v12, v13;
 	uint offset3, offset5, offset6, offset7, offset8, offset10;
 
 	for (uint idx = 0; ; ++idx) {
-		inputFile.seek(tableOffset - FILE_DIFF[_version] + idx * 0x34);
-		v1 = inputFile.readLong();
+		inputFile->seek(tableOffset - FILE_DIFF[_version] + idx * 0x34);
+		v1 = inputFile->readLong();
 		if (!v1)
 			// Reached end of list
 			break;
 
 		// Read data fields
-		category = inputFile.readLong();
-		offset3 = inputFile.readLong();
-		v4 = inputFile.readLong();
-		offset5 = inputFile.readLong();
-		offset6 = inputFile.readLong();
-		offset7 = inputFile.readLong();
-		offset8 = inputFile.readLong();
-		v9 = inputFile.readLong();
-		offset10 = inputFile.readLong();
-		v11 = inputFile.readLong();
-		v12 = inputFile.readLong();
-		v13 = inputFile.readLong();
-
-		outputFile.writeLong(v1);
-		outputFile.writeLong(category);
+		category = inputFile->readLong();
+		offset3 = inputFile->readLong();
+		v4 = inputFile->readLong();
+		offset5 = inputFile->readLong();
+		offset6 = inputFile->readLong();
+		offset7 = inputFile->readLong();
+		offset8 = inputFile->readLong();
+		v9 = inputFile->readLong();
+		offset10 = inputFile->readLong();
+		v11 = inputFile->readLong();
+		v12 = inputFile->readLong();
+		v13 = inputFile->readLong();
+
+		outputFile->writeLong(v1);
+		outputFile->writeLong(category);
 		writeString(offset3);
-		outputFile.writeLong(v4);
+		outputFile->writeLong(v4);
 		writeString(offset5);
 		writeString(offset6);
 		writeString(offset7);
 		writeString(offset8);
-		outputFile.writeLong(v9);
+		outputFile->writeLong(v9);
 		writeString(offset10);
-		outputFile.writeLong(v11);
-		outputFile.writeLong(v12);
-		outputFile.writeLong(v13);
+		outputFile->writeLong(v11);
+		outputFile->writeLong(v12);
+		outputFile->writeLong(v13);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
 
 void writeWords(const char *name, uint tableOffset, int recordCount = 2) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 	int recordSize = recordCount * 4;
 
 	uint val, strOffset;
 	for (uint idx = 0; ; ++idx) {
-		inputFile.seek(tableOffset - FILE_DIFF[_version] + idx * recordSize);
-		val = inputFile.readLong();
-		strOffset = inputFile.readLong();
+		inputFile->seek(tableOffset - FILE_DIFF[_version] + idx * recordSize);
+		val = inputFile->readLong();
+		strOffset = inputFile->readLong();
 
 		if (!val) {
 			// Reached end of list
@@ -1344,99 +1344,99 @@ void writeWords(const char *name, uint tableOffset, int recordCount = 2) {
 			break;
 		}
 
-		outputFile.writeLong(val);
+		outputFile->writeLong(val);
 		writeString(strOffset);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
 
 void writeSentenceMappings(const char *name, uint offset, int numValues) {
-	inputFile.seek(offset - FILE_DIFF[_version]);
-	outputFile.seek(dataOffset);
+	inputFile->seek(offset - FILE_DIFF[_version]);
+	outputFile->seek(dataOffset);
 
 	uint id;
-	while ((id = inputFile.readLong()) != 0) {
-		outputFile.writeLong(id);
+	while ((id = inputFile->readLong()) != 0) {
+		outputFile->writeLong(id);
 
 		for (int ctr = 0; ctr < numValues; ++ctr)
-			outputFile.writeLong(inputFile.readLong());
+			outputFile->writeLong(inputFile->readLong());
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
 
 void writeStarfieldPoints() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	const int OFFSETS[3] = { 0x59DE4C, 0x59DBEC, 0x59CC1C };
-	inputFile.seek(OFFSETS[_version] - FILE_DIFF[_version]);
+	inputFile->seek(OFFSETS[_version] - FILE_DIFF[_version]);
 	uint size = 876 * 12;
 
-	outputFile.write(inputFile, size);
+	outputFile->write(inputFile, size);
 	writeEntryHeader("STARFIELD/POINTS", dataOffset, size);
 	dataOffset += size;
 }
 
 void writeStarfieldPoints2() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	const int OFFSETS[3] = { 0x5A2F28, 0x5A2CC8, 0x5A1CF8 };
 	for (int rootCtr = 0; rootCtr < 80; ++rootCtr) {
-		inputFile.seek(OFFSETS[_version] - FILE_DIFF[_version] + rootCtr * 8);
-		uint offset = inputFile.readUint32LE();
-		uint count = inputFile.readUint32LE();
+		inputFile->seek(OFFSETS[_version] - FILE_DIFF[_version] + rootCtr * 8);
+		uint offset = inputFile->readUint32LE();
+		uint count = inputFile->readUint32LE();
 
-		outputFile.writeLong(count);
-		inputFile.seek(offset - FILE_DIFF[_version]);
-		outputFile.write(inputFile, count * 4 * 4);
+		outputFile->writeLong(count);
+		inputFile->seek(offset - FILE_DIFF[_version]);
+		outputFile->write(inputFile, count * 4 * 4);
 	}
 
-	uint size = outputFile.size() - dataOffset;
-	outputFile.write(inputFile, size);
+	uint size = outputFile->size() - dataOffset;
+	outputFile->write(inputFile, size);
 	writeEntryHeader("STARFIELD/POINTS2", dataOffset, size);
 	dataOffset += size;
 }
 
 void writePhrases(const char *name, const CommonPhrase *phrases) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (uint idx = 0; phrases->_str; ++idx, ++phrases) {
-		outputFile.writeString(phrases->_str);
-		outputFile.writeLong(phrases->_dialogueId);
-		outputFile.writeLong(phrases->_roomNum);
-		outputFile.writeLong(phrases->_val1);
+		outputFile->writeString(phrases->_str);
+		outputFile->writeLong(phrases->_dialogueId);
+		outputFile->writeLong(phrases->_roomNum);
+		outputFile->writeLong(phrases->_val1);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("Phrases/Bellbot", dataOffset, size);
 	dataOffset += size;
 }
 
 void writeBarbotFrameRanges() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (int idx = 0; idx < 60; ++idx) {
-		outputFile.writeLong(BARBOT_FRAME_RANGES[idx]._startFrame);
-		outputFile.writeLong(BARBOT_FRAME_RANGES[idx]._endFrame);
+		outputFile->writeLong(BARBOT_FRAME_RANGES[idx]._startFrame);
+		outputFile->writeLong(BARBOT_FRAME_RANGES[idx]._endFrame);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("FRAMES/BARBOT", dataOffset, size);
 	dataOffset += size;
 }
 
 void writeMissiveOMatMessages() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (int idx = 0; idx < 3; ++idx)
-		outputFile.writeString(MISSIVEOMAT_MESSAGES[idx]);
+		outputFile->writeString(MISSIVEOMAT_MESSAGES[idx]);
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("TEXT/MISSIVEOMAT/WELCOME", dataOffset, size);
 	dataOffset += size;
 
@@ -1449,12 +1449,12 @@ void writeMissiveOMatMessages() {
 }
 
 void writeMissiveOMatMessagesDE() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (int idx = 0; idx < 3; ++idx)
-		outputFile.writeString(MISSIVEOMAT_MESSAGES_DE[idx]);
+		outputFile->writeString(MISSIVEOMAT_MESSAGES_DE[idx]);
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("TEXT/MISSIVEOMAT/WELCOME/DE", dataOffset, size);
 	dataOffset += size;
 
@@ -1465,17 +1465,17 @@ void writeMissiveOMatMessagesDE() {
 
 void writeBedheadGroup(const BedheadEntry *data, int count) {
 	for (int idx = 0; idx < count; ++idx, ++data) {
-		outputFile.writeString(data->_name1);
-		outputFile.writeString(data->_name2);
-		outputFile.writeString(data->_name3);
-		outputFile.writeString(data->_name4);
-		outputFile.writeLong(data->_startFrame);
-		outputFile.writeLong(data->_endFrame);
+		outputFile->writeString(data->_name1);
+		outputFile->writeString(data->_name2);
+		outputFile->writeString(data->_name3);
+		outputFile->writeString(data->_name4);
+		outputFile->writeLong(data->_startFrame);
+		outputFile->writeLong(data->_endFrame);
 	}
 }
 
 void writeBedheadData() {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	writeBedheadGroup(ON_CLOSED, 4);
 	writeBedheadGroup(ON_RESTING_TV, 2);
@@ -1488,7 +1488,7 @@ void writeBedheadData() {
 	writeBedheadGroup(OFF_OPEN_WRONG, 1);
 	writeBedheadGroup(OFF_RESTING_D_WRONG, 1);
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("DATA/BEDHEAD", dataOffset, size);
 	dataOffset += size;
 }
@@ -1500,27 +1500,27 @@ void writeParrotLobbyLinkUpdaterEntries() {
 	uint recordOffset = OFFSETS[_version], linkOffset;
 	byte vals[8];
 
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (int groupNum = 0; groupNum < 4; ++groupNum) {
 		for (int entryNum = 0; entryNum < COUNTS[groupNum];
 				++entryNum, recordOffset += 36) {
-			inputFile.seek(recordOffset - FILE_DIFF[_version]);
-			linkOffset = inputFile.readUint32LE();
+			inputFile->seek(recordOffset - FILE_DIFF[_version]);
+			linkOffset = inputFile->readUint32LE();
 			for (int idx = 0; idx < 8; ++idx)
-				vals[idx] = inputFile.readUint32LE();
+				vals[idx] = inputFile->readUint32LE();
 
 			// Write out the entry
-			inputFile.seek(linkOffset - FILE_DIFF[_version]);
-			outputFile.writeString(inputFile);
-			outputFile.write(vals, 8);
+			inputFile->seek(linkOffset - FILE_DIFF[_version]);
+			outputFile->writeString(*inputFile);
+			outputFile->write(vals, 8);
 		}
 
 		// Skip space between groups
 		recordOffset += SKIP[groupNum];
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader("DATA/PARROT_LOBBY_LINK_UPDATOR", dataOffset, size);
 	dataOffset += size;
 }
@@ -1528,14 +1528,14 @@ void writeParrotLobbyLinkUpdaterEntries() {
 void writeHeader() {
 	// Write out magic string
 	const char *MAGIC_STR = "SVTN";
-	outputFile.write(MAGIC_STR, 4);
+	outputFile->write(MAGIC_STR, 4);
 
 	// Write out version number
-	outputFile.writeWord(VERSION_NUMBER);
+	outputFile->writeWord(VERSION_NUMBER);
 }
 
 void writeData() {
-	for (int idx = 0; idx < (resGer.empty() ? 1 : 2); ++idx) {
+	for (int idx = 0; idx < (resGer->empty() ? 1 : 2); ++idx) {
 		bool isEnglish = idx == 0;
 
 		writeBitmap("Bitmap", "BACKDROP", isEnglish);
@@ -1809,22 +1809,26 @@ int main(int argc, char *argv[]) {
 		exit(0);
 	}
 
-	if (!inputFile.open(argv[1])) {
+	inputFile = new Common::File;
+	outputFile = new Common::File;
+	if (!inputFile->open(argv[1])) {
 		error("Could not open input file");
 	}
-	resEng.loadFromEXE(argv[1]);
+	resEng = new Common::PEResources;
+	resEng->loadFromEXE(argv[1]);
 
+	resGer = new Common::PEResources;
 	if (argc == 4) {
-		resGer.loadFromEXE(argv[2]);
+		resGer->loadFromEXE(argv[2]);
 	}
 
-	if (inputFile.size() == ENGLISH_10042C_FILESIZE)
+	if (inputFile->size() == ENGLISH_10042C_FILESIZE)
 		_version = ENGLISH_10042C;
-	else if (inputFile.size() == ENGLISH_10042B_FILESIZE)
+	else if (inputFile->size() == ENGLISH_10042B_FILESIZE)
 		_version = ENGLISH_10042B;
-	else if (inputFile.size() == ENGLISH_10042_FILESIZE)
+	else if (inputFile->size() == ENGLISH_10042_FILESIZE)
 		_version = ENGLISH_10042;
-	else if (inputFile.size() == GERMAN_10042D_FILESIZE) {
+	else if (inputFile->size() == GERMAN_10042D_FILESIZE) {
 		printf("German version detected. You must use an English versoin "
 			"for the primary input file\n");
 		exit(0);
@@ -1833,7 +1837,7 @@ int main(int argc, char *argv[]) {
 		exit(0);
 	}
 
-	if (!outputFile.open(argc == 4 ? argv[3] : "titanic.dat", Common::kFileWriteMode)) {
+	if (!outputFile->open(argc == 4 ? argv[3] : "titanic.dat", Common::kFileWriteMode)) {
 		printf("Could not open output file\n");
 		exit(0);
 	}
@@ -1842,12 +1846,16 @@ int main(int argc, char *argv[]) {
 	writeData();
 
 	if (argc == 4) {
-		inputFile.open(argv[2]);
+		inputFile->open(argv[2]);
 		_version = GERMAN;
 		writeGermanData();
 	}
 	writeFinalEntryHeader();
-	inputFile.close();
-	outputFile.close();
+	inputFile->close();
+	outputFile->close();
+	delete inputFile;
+	delete outputFile;
+	delete resEng;
+	delete resGer;
 	return 0;
 }
diff --git a/devtools/create_titanic/file.h b/devtools/create_titanic/file.h
index cd2e25bf9d0..e513f528758 100644
--- a/devtools/create_titanic/file.h
+++ b/devtools/create_titanic/file.h
@@ -209,6 +209,6 @@ public:
 
 }
 
-extern Common::File inputFile, outputFile;
+extern Common::File *inputFile, *outputFile;
 
 #endif
diff --git a/devtools/create_titanic/script_preresponses.cpp b/devtools/create_titanic/script_preresponses.cpp
index 545d95a700b..53709ae7373 100644
--- a/devtools/create_titanic/script_preresponses.cpp
+++ b/devtools/create_titanic/script_preresponses.cpp
@@ -235,14 +235,14 @@ static const PreResponse BELLBOT_PRERESPONSES_DE[] = {
 };
 
 void writeScriptPreResponses(const char *name, const PreResponse *states) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (; states->_src; ++states) {
-		outputFile.writeLong(states->_src);
-		outputFile.writeLong(states->_dest);
+		outputFile->writeLong(states->_src);
+		outputFile->writeLong(states->_dest);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
diff --git a/devtools/create_titanic/script_quotes.cpp b/devtools/create_titanic/script_quotes.cpp
index 662f4c6f21a..40f3be70711 100644
--- a/devtools/create_titanic/script_quotes.cpp
+++ b/devtools/create_titanic/script_quotes.cpp
@@ -446,18 +446,18 @@ static const ScriptQuote MAITRED_QUOTES[] = {
 
 void writeScriptQuotes(const char *name, const ScriptQuote *quotes,
 		uint rangeStart, uint rangeEnd, uint incr) {
-	outputFile.seek(dataOffset);
-	outputFile.writeLong(rangeStart);
-	outputFile.writeLong(rangeEnd);
-	outputFile.writeLong(incr);
+	outputFile->seek(dataOffset);
+	outputFile->writeLong(rangeStart);
+	outputFile->writeLong(rangeEnd);
+	outputFile->writeLong(incr);
 
 	for (; quotes->_index; ++quotes) {
-		outputFile.writeLong(quotes->_tag1);
-		outputFile.writeLong(quotes->_tag2);
-		outputFile.writeLong(quotes->_index);
+		outputFile->writeLong(quotes->_tag1);
+		outputFile->writeLong(quotes->_tag2);
+		outputFile->writeLong(quotes->_index);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
diff --git a/devtools/create_titanic/script_ranges.cpp b/devtools/create_titanic/script_ranges.cpp
index 1c57f247d16..22b3063af05 100644
--- a/devtools/create_titanic/script_ranges.cpp
+++ b/devtools/create_titanic/script_ranges.cpp
@@ -1767,20 +1767,20 @@ const ScriptRange SUCCUBUS_RANGES[19] = {
 };
 
 void writeScriptRange(const char *name, const ScriptRange *ranges, int count) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (int idx = 0; idx < count; ++idx) {
-		outputFile.writeLong(ranges[idx]._id);
-		outputFile.writeByte(ranges[idx]._isRandom);
-		outputFile.writeByte(ranges[idx]._isSequential);
+		outputFile->writeLong(ranges[idx]._id);
+		outputFile->writeByte(ranges[idx]._isRandom);
+		outputFile->writeByte(ranges[idx]._isSequential);
 
 		const uint *v = ranges[idx]._array;
 		do {
-			outputFile.writeLong(*v);
+			outputFile->writeLong(*v);
 		} while (*v++ != 0);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
diff --git a/devtools/create_titanic/script_responses.cpp b/devtools/create_titanic/script_responses.cpp
index 14bfccfe2bb..e8b3b2f5337 100644
--- a/devtools/create_titanic/script_responses.cpp
+++ b/devtools/create_titanic/script_responses.cpp
@@ -1271,10 +1271,10 @@ const int MAITRED_RESPONSES_DE[74][2] = {
 };
 
 void writeScriptResponses(const char *name, const int *tags, uint count, int valuesPerTag) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (uint idx = 0; idx < count * (valuesPerTag + 1); ++idx, ++tags)
-		outputFile.writeLong(*tags);
+		outputFile->writeLong(*tags);
 
 	writeEntryHeader(name, dataOffset, count * (valuesPerTag + 1) * 4);
 	dataOffset += count * (valuesPerTag + 1) * 4;
diff --git a/devtools/create_titanic/script_states.cpp b/devtools/create_titanic/script_states.cpp
index 11672cd1323..2b4201c5b36 100644
--- a/devtools/create_titanic/script_states.cpp
+++ b/devtools/create_titanic/script_states.cpp
@@ -504,28 +504,28 @@ static const UpdateState8 MAITRED_STATES[] = {
 };
 
 void writeUpdateStates(const char *name, const UpdateState8 *states) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (; states->_src; ++states) {
-		outputFile.writeLong(states->_src);
-		outputFile.writeLong(states->_dest);
+		outputFile->writeLong(states->_src);
+		outputFile->writeLong(states->_dest);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
 
 void writeUpdateStates(const char *name, const UpdateState12 *states) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (; states->_newId; ++states) {
-		outputFile.writeLong(states->_newId);
-		outputFile.writeLong(states->_newValue);
-		outputFile.writeLong(states->_idMatch);
+		outputFile->writeLong(states->_newId);
+		outputFile->writeLong(states->_newValue);
+		outputFile->writeLong(states->_idMatch);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }
diff --git a/devtools/create_titanic/tag_maps.cpp b/devtools/create_titanic/tag_maps.cpp
index ef547436088..9de24f0103a 100644
--- a/devtools/create_titanic/tag_maps.cpp
+++ b/devtools/create_titanic/tag_maps.cpp
@@ -686,14 +686,14 @@ static const TagMapping MAITRED_MAP_DE[105] = {
 };
 
 void writeTagMappings(const char *name, const TagMapping *map, int count) {
-	outputFile.seek(dataOffset);
+	outputFile->seek(dataOffset);
 
 	for (int idx = 0; idx < count; ++idx, ++map) {
-		outputFile.writeLong(map->_src);
-		outputFile.writeLong(map->_dest);
+		outputFile->writeLong(map->_src);
+		outputFile->writeLong(map->_dest);
 	}
 
-	uint size = outputFile.size() - dataOffset;
+	uint size = outputFile->size() - dataOffset;
 	writeEntryHeader(name, dataOffset, size);
 	dataOffset += size;
 }




More information about the Scummvm-git-logs mailing list