[Scummvm-cvs-logs] SF.net SVN: scummvm:[33366] scummvm/trunk/engines/cine/various.cpp
buddha_ at users.sourceforge.net
buddha_ at users.sourceforge.net
Mon Jul 28 12:44:55 CEST 2008
Revision: 33366
http://scummvm.svn.sourceforge.net/scummvm/?rev=33366&view=rev
Author: buddha_
Date: 2008-07-28 10:44:54 +0000 (Mon, 28 Jul 2008)
Log Message:
-----------
Cut Future Wars savegame loading routine into parts that can be reused when loading the Operation Stealth savegame format.
Modified Paths:
--------------
scummvm/trunk/engines/cine/various.cpp
Modified: scummvm/trunk/engines/cine/various.cpp
===================================================================
--- scummvm/trunk/engines/cine/various.cpp 2008-07-28 10:09:00 UTC (rev 33365)
+++ scummvm/trunk/engines/cine/various.cpp 2008-07-28 10:44:54 UTC (rev 33366)
@@ -609,14 +609,78 @@
checkForPendingDataLoadSwitch = 0;
}
+bool loadObjectTable(Common::SeekableReadStream &in) {
+ in.readUint16BE(); // Entry count
+ in.readUint16BE(); // Entry size
+
+ for (int i = 0; i < NUM_MAX_OBJECT; i++) {
+ objectTable[i].x = in.readSint16BE();
+ objectTable[i].y = in.readSint16BE();
+ objectTable[i].mask = in.readUint16BE();
+ objectTable[i].frame = in.readSint16BE();
+ objectTable[i].costume = in.readSint16BE();
+ in.read(objectTable[i].name, 20);
+ objectTable[i].part = in.readUint16BE();
+ }
+ return !in.ioFailed();
+}
+
+bool loadZoneData(Common::SeekableReadStream &in) {
+ for (int i = 0; i < 16; i++) {
+ zoneData[i] = in.readUint16BE();
+ }
+ return !in.ioFailed();
+}
+
+bool loadCommandVariables(Common::SeekableReadStream &in) {
+ for (int i = 0; i < 4; i++) {
+ commandVar3[i] = in.readUint16BE();
+ }
+ return !in.ioFailed();
+}
+
+bool loadScreenParams(Common::SeekableReadStream &in) {
+ // TODO: handle screen params (really required ?)
+ in.readUint16BE();
+ in.readUint16BE();
+ in.readUint16BE();
+ in.readUint16BE();
+ in.readUint16BE();
+ in.readUint16BE();
+ return !in.ioFailed();
+}
+
+bool loadGlobalScripts(Common::SeekableReadStream &in) {
+ int size = in.readSint16BE();
+ for (int i = 0; i < size; i++) {
+ loadScriptFromSave(in, true);
+ }
+ return !in.ioFailed();
+}
+
+bool loadObjectScripts(Common::SeekableReadStream &in) {
+ int size = in.readSint16BE();
+ for (int i = 0; i < size; i++) {
+ loadScriptFromSave(in, false);
+ }
+ return !in.ioFailed();
+}
+
+bool loadOverlayList(Common::SeekableReadStream &in) {
+ int size = in.readSint16BE();
+ for (int i = 0; i < size; i++) {
+ loadOverlayFromSave(in);
+ }
+ return !in.ioFailed();
+}
+
+// TODO: Implement this function
bool CineEngine::loadTempSaveOS(Common::SeekableReadStream &in) {
warning("loadTempSaveOS: This is a stub. Temporary Operation Stealth savegame loading not yet implemented");
return false;
}
bool CineEngine::loadPlainSaveFW(Common::SeekableReadStream &in, CineSaveGameFormat saveGameFormat) {
- int16 i;
- int16 size;
char bgName[13];
// At savefile position 0x0000:
@@ -664,45 +728,19 @@
}
// At 0x005F:
- in.readUint16BE();
- // At 0x0061:
- in.readUint16BE();
+ loadObjectTable(in);
- // At 0x0063:
- for (i = 0; i < 255; i++) {
- // At 0x0063 + i * 32 + 0:
- objectTable[i].x = in.readSint16BE();
- // At 0x0063 + i * 32 + 2:
- objectTable[i].y = in.readSint16BE();
- // At 0x0063 + i * 32 + 4:
- objectTable[i].mask = in.readUint16BE();
- // At 0x0063 + i * 32 + 6:
- objectTable[i].frame = in.readSint16BE();
- // At 0x0063 + i * 32 + 8:
- objectTable[i].costume = in.readSint16BE();
- // At 0x0063 + i * 32 + 10:
- in.read(objectTable[i].name, 20);
- // At 0x0063 + i * 32 + 30:
- objectTable[i].part = in.readUint16BE();
- }
-
- // At 0x2043 (i.e. 0x0063 + 255 * 32):
+ // At 0x2043 (i.e. 0x005F + 2 * 2 + 255 * 32):
renderer->restorePalette(in);
// At 0x2083 (i.e. 0x2043 + 16 * 2 * 2):
globalVars.load(in, NUM_MAX_VAR);
// At 0x2281 (i.e. 0x2083 + 255 * 2):
- for (i = 0; i < 16; i++) {
- // At 0x2281 + i * 2:
- zoneData[i] = in.readUint16BE();
- }
+ loadZoneData(in);
// At 0x22A1 (i.e. 0x2281 + 16 * 2):
- for (i = 0; i < 4; i++) {
- // At 0x22A1 + i * 2:
- commandVar3[i] = in.readUint16BE();
- }
+ loadCommandVariables(in);
// At 0x22A9 (i.e. 0x22A1 + 4 * 2):
in.read(commandBuffer, 0x50);
@@ -743,29 +781,10 @@
// At 0x2315:
loadResourcesFromSave(in, saveGameFormat);
- // TODO: handle screen params (really required ?)
- in.readUint16BE();
- in.readUint16BE();
- in.readUint16BE();
- in.readUint16BE();
- in.readUint16BE();
- in.readUint16BE();
-
- size = in.readSint16BE();
- for (i = 0; i < size; i++) {
- loadScriptFromSave(in, true);
- }
-
- size = in.readSint16BE();
- for (i = 0; i < size; i++) {
- loadScriptFromSave(in, false);
- }
-
- size = in.readSint16BE();
- for (i = 0; i < size; i++) {
- loadOverlayFromSave(in);
- }
-
+ loadScreenParams(in);
+ loadGlobalScripts(in);
+ loadObjectScripts(in);
+ loadOverlayList(in);
loadBgIncrustFromSave(in);
if (strlen(currentMsgName)) {
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