aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2007-06-20 01:01:29 +0000
committerTravis Howell2007-06-20 01:01:29 +0000
commit61c91cafb9376b10d643269d55e409da6a87f667 (patch)
treec0fc06039884867cc12e58cc490529c5e064e242
parentb51f2f3212ae8a5abbdce4d947ec2d1cad1a0b6f (diff)
downloadscummvm-rg350-61c91cafb9376b10d643269d55e409da6a87f667.tar.gz
scummvm-rg350-61c91cafb9376b10d643269d55e409da6a87f667.tar.bz2
scummvm-rg350-61c91cafb9376b10d643269d55e409da6a87f667.zip
Cleanup.
svn-id: r27552
-rw-r--r--engines/agos/agos.cpp2
-rw-r--r--engines/agos/agos.h4
-rw-r--r--engines/agos/res.cpp219
-rw-r--r--engines/agos/string.cpp2
-rw-r--r--engines/agos/vga_ff.cpp2
5 files changed, 123 insertions, 106 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index cef31c7de1..1d44fc45b7 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -759,7 +759,7 @@ void AGOSEngine_Simon2::setupGame() {
_itemMemSize = 20000;
_tableMemSize = 100000;
// Check whether to use MT-32 MIDI tracks in Simon the Sorcerer 2
- if ((getGameType() == GType_SIMON2) && _nativeMT32)
+ if (getGameType() == GType_SIMON2 && _nativeMT32)
_musicIndexBase = (1128 + 612) / 4;
else
_musicIndexBase = 1128 / 4;
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 79a8bc0567..c8adddf3e2 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -574,7 +574,7 @@ protected:
void setupStringTable(byte *mem, int num);
void setupLocalStringTable(byte *mem, int num);
void readGamePcText(Common::SeekableReadStream *in);
- void readItemChildren(Common::SeekableReadStream *in, Item *item, uint tmp);
+ virtual void readItemChildren(Common::SeekableReadStream *in, Item *item, uint tmp);
void readItemFromGamePc(Common::SeekableReadStream *in, Item *item);
void loadGamePcFile();
void readGamePcFile(Common::SeekableReadStream *in);
@@ -1369,6 +1369,8 @@ protected:
const OpcodeEntryElvira2 *_opcodesElvira2;
+ virtual void readItemChildren(Common::SeekableReadStream *in, Item *item, uint tmp);
+
virtual bool loadGame(const char *filename, bool restartMode = false);
virtual bool saveGame(uint slot, const char *caption);
diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp
index f5936b7d85..977e8b1578 100644
--- a/engines/agos/res.cpp
+++ b/engines/agos/res.cpp
@@ -351,104 +351,130 @@ void AGOSEngine::readItemFromGamePc(Common::SeekableReadStream *in, Item *item)
void AGOSEngine::readItemChildren(Common::SeekableReadStream *in, Item *item, uint type) {
if (type == 1) {
- if (getGameType() == GType_ELVIRA1) {
- SubRoom *subRoom = (SubRoom *)allocateChildBlock(item, 1, sizeof(SubRoom));
- subRoom->roomShort = in->readUint32BE();
- subRoom->roomLong = in->readUint32BE();
- subRoom->flags = in->readUint16BE();
- } else {
- uint fr1 = in->readUint16BE();
- uint fr2 = in->readUint16BE();
- uint i, size;
- uint j, k;
- SubRoom *subRoom;
-
- size = SubRoom_SIZE;
- for (i = 0, j = fr2; i != 6; i++, j >>= 2)
- if (j & 3)
- size += sizeof(subRoom->roomExit[0]);
-
- subRoom = (SubRoom *)allocateChildBlock(item, 1, size);
- subRoom->subroutine_id = fr1;
- subRoom->roomExitStates = fr2;
-
- for (i = k = 0, j = fr2; i != 6; i++, j >>= 2)
- if (j & 3)
- subRoom->roomExit[k++] = (uint16)fileReadItemID(in);
- }
+ SubRoom *subRoom = (SubRoom *)allocateChildBlock(item, 1, sizeof(SubRoom));
+ subRoom->roomShort = in->readUint32BE();
+ subRoom->roomLong = in->readUint32BE();
+ subRoom->flags = in->readUint16BE();
} else if (type == 2) {
- if (getGameType() == GType_ELVIRA1) {
- SubObject *subObject = (SubObject *)allocateChildBlock(item, 2, sizeof(SubObject));
- in->readUint32BE();
- in->readUint32BE();
- in->readUint32BE();
- subObject->objectName = in->readUint32BE();
- subObject->objectSize = in->readUint16BE();
- subObject->objectWeight = in->readUint16BE();
- subObject->objectFlags = in->readUint16BE();
- } else {
- uint32 fr = in->readUint32BE();
- uint i, k, size;
- SubObject *subObject;
+ SubObject *subObject = (SubObject *)allocateChildBlock(item, 2, sizeof(SubObject));
+ in->readUint32BE();
+ in->readUint32BE();
+ in->readUint32BE();
+ subObject->objectName = in->readUint32BE();
+ subObject->objectSize = in->readUint16BE();
+ subObject->objectWeight = in->readUint16BE();
+ subObject->objectFlags = in->readUint16BE();
+ } else if (type == 4) {
+ SubGenExit *genExit = (SubGenExit *)allocateChildBlock(item, 4, sizeof(SubGenExit));
+ genExit->dest[0] = (uint16)fileReadItemID(in);
+ genExit->dest[1] = (uint16)fileReadItemID(in);
+ genExit->dest[2] = (uint16)fileReadItemID(in);
+ genExit->dest[3] = (uint16)fileReadItemID(in);
+ genExit->dest[4] = (uint16)fileReadItemID(in);
+ genExit->dest[5] = (uint16)fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ } else if (type == 7) {
+ SubContainer *container = (SubContainer *)allocateChildBlock(item, 7, sizeof(SubContainer));
+ container->volume = in->readUint16BE();
+ container->flags = in->readUint16BE();
+ } else if (type == 8) {
+ SubChain *chain = (SubChain *)allocateChildBlock(item, 8, sizeof(SubChain));
+ chain->chChained = (uint16)fileReadItemID(in);
+ } else if (type == 9) {
+ setUserFlag(item, 0, in->readUint16BE());
+ setUserFlag(item, 1, in->readUint16BE());
+ setUserFlag(item, 2, in->readUint16BE());
+ setUserFlag(item, 3, in->readUint16BE());
+ setUserFlag(item, 4, in->readUint16BE());
+ setUserFlag(item, 5, in->readUint16BE());
+ setUserFlag(item, 6, in->readUint16BE());
+ setUserFlag(item, 7, in->readUint16BE());
+ SubUserFlag *subUserFlag = (SubUserFlag *) findChildOfType(item, 9);
+ subUserFlag->userItems[0] = (uint16)fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ fileReadItemID(in);
+ } else if (type == 255) {
+ SubInherit *inherit = (SubInherit *)allocateChildBlock(item, 255, sizeof(SubInherit));
+ inherit->inMaster = (uint16)fileReadItemID(in);
+ } else {
+ error("readItemChildren: invalid type %d", type);
+ }
+}
- size = SubObject_SIZE;
- for (i = 0; i != 16; i++)
- if (fr & (1 << i))
- size += sizeof(subObject->objectFlagValue[0]);
+void AGOSEngine_Elvira2::readItemChildren(Common::SeekableReadStream *in, Item *item, uint type) {
+ if (type == 1) {
+ uint fr1 = in->readUint16BE();
+ uint fr2 = in->readUint16BE();
+ uint i, size;
+ uint j, k;
+ SubRoom *subRoom;
+
+ size = SubRoom_SIZE;
+ for (i = 0, j = fr2; i != 6; i++, j >>= 2)
+ if (j & 3)
+ size += sizeof(subRoom->roomExit[0]);
+
+ subRoom = (SubRoom *)allocateChildBlock(item, 1, size);
+ subRoom->subroutine_id = fr1;
+ subRoom->roomExitStates = fr2;
+
+ for (i = k = 0, j = fr2; i != 6; i++, j >>= 2)
+ if (j & 3)
+ subRoom->roomExit[k++] = (uint16)fileReadItemID(in);
+ } else if (type == 2) {
+ uint32 fr = in->readUint32BE();
+ uint i, k, size;
+ SubObject *subObject;
- subObject = (SubObject *)allocateChildBlock(item, 2, size);
- subObject->objectFlags = fr;
+ size = SubObject_SIZE;
+ for (i = 0; i != 16; i++)
+ if (fr & (1 << i))
+ size += sizeof(subObject->objectFlagValue[0]);
- k = 0;
- if (fr & 1) {
- subObject->objectFlagValue[k++] = (uint16)in->readUint32BE();
- }
- for (i = 1; i != 16; i++)
- if (fr & (1 << i))
- subObject->objectFlagValue[k++] = in->readUint16BE();
+ subObject = (SubObject *)allocateChildBlock(item, 2, size);
+ subObject->objectFlags = fr;
- if (getGameType() != GType_ELVIRA2)
- subObject->objectName = (uint16)in->readUint32BE();
+ k = 0;
+ if (fr & 1) {
+ subObject->objectFlagValue[k++] = (uint16)in->readUint32BE();
}
+ for (i = 1; i != 16; i++)
+ if (fr & (1 << i))
+ subObject->objectFlagValue[k++] = in->readUint16BE();
+
+ if (getGameType() != GType_ELVIRA2)
+ subObject->objectName = (uint16)in->readUint32BE();
} else if (type == 4) {
- if (getGameType() == GType_ELVIRA2) {
- uint i, j, k, size;
- uint id, x, y, z;
- SubSuperRoom *subSuperRoom;
-
- id = in->readUint16BE();
- x = in->readUint16BE();
- y = in->readUint16BE();
- z = in->readUint16BE();
-
- j = x * y * z;
- size = SubSuperRoom_SIZE;
- for (i = 0; i != j; i++)
- size += sizeof(subSuperRoom->roomExitStates[0]);
-
- subSuperRoom = (SubSuperRoom *)allocateChildBlock(item, 4, size);
- subSuperRoom->subroutine_id = id;
- subSuperRoom->roomX = x;
- subSuperRoom->roomY = y;
- subSuperRoom->roomZ = z;
-
- for (i = k = 0; i != j; i++)
- subSuperRoom->roomExitStates[k++] = in->readUint16BE();
- } else if (getGameType() == GType_ELVIRA1) {
- SubGenExit *genExit = (SubGenExit *)allocateChildBlock(item, 4, sizeof(SubGenExit));
- genExit->dest[0] = (uint16)fileReadItemID(in);
- genExit->dest[1] = (uint16)fileReadItemID(in);
- genExit->dest[2] = (uint16)fileReadItemID(in);
- genExit->dest[3] = (uint16)fileReadItemID(in);
- genExit->dest[4] = (uint16)fileReadItemID(in);
- genExit->dest[5] = (uint16)fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- }
+ assert(getGameType() == GType_ELVIRA2);
+
+ uint i, j, k, size;
+ uint id, x, y, z;
+ SubSuperRoom *subSuperRoom;
+
+ id = in->readUint16BE();
+ x = in->readUint16BE();
+ y = in->readUint16BE();
+ z = in->readUint16BE();
+
+ j = x * y * z;
+ size = SubSuperRoom_SIZE;
+ for (i = 0; i != j; i++)
+ size += sizeof(subSuperRoom->roomExitStates[0]);
+
+ subSuperRoom = (SubSuperRoom *)allocateChildBlock(item, 4, size);
+ subSuperRoom->subroutine_id = id;
+ subSuperRoom->roomX = x;
+ subSuperRoom->roomY = y;
+ subSuperRoom->roomZ = z;
+
+ for (i = k = 0; i != j; i++)
+ subSuperRoom->roomExitStates[k++] = in->readUint16BE();
} else if (type == 7) {
SubContainer *container = (SubContainer *)allocateChildBlock(item, 7, sizeof(SubContainer));
container->volume = in->readUint16BE();
@@ -461,17 +487,6 @@ void AGOSEngine::readItemChildren(Common::SeekableReadStream *in, Item *item, ui
setUserFlag(item, 1, in->readUint16BE());
setUserFlag(item, 2, in->readUint16BE());
setUserFlag(item, 3, in->readUint16BE());
- if (getGameType() == GType_ELVIRA1) {
- setUserFlag(item, 4, in->readUint16BE());
- setUserFlag(item, 5, in->readUint16BE());
- setUserFlag(item, 6, in->readUint16BE());
- setUserFlag(item, 7, in->readUint16BE());
- SubUserFlag *subUserFlag = (SubUserFlag *) findChildOfType(item, 9);
- subUserFlag->userItems[0] = (uint16)fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- fileReadItemID(in);
- }
} else if (type == 255) {
SubInherit *inherit = (SubInherit *)allocateChildBlock(item, 255, sizeof(SubInherit));
inherit->inMaster = (uint16)fileReadItemID(in);
diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp
index d9249d3305..9a84876a6e 100644
--- a/engines/agos/string.cpp
+++ b/engines/agos/string.cpp
@@ -304,7 +304,7 @@ void AGOSEngine::printScreenText(uint vgaSpriteId, uint color, const char *strin
lettersPerRowJustified = stringLength / (stringLength / lettersPerRow + 1) + 1;
talkDelay = (stringLength + 3) / 3;
- if ((getGameType() == GType_SIMON1) && (getFeatures() & GF_TALKIE)) {
+ if (getGameType() == GType_SIMON1 && (getFeatures() & GF_TALKIE)) {
if (_variableArray[141] == 0)
_variableArray[141] = 9;
_variableArray[85] = _variableArray[141] * talkDelay;
diff --git a/engines/agos/vga_ff.cpp b/engines/agos/vga_ff.cpp
index e1ee56002e..29b05e1e3c 100644
--- a/engines/agos/vga_ff.cpp
+++ b/engines/agos/vga_ff.cpp
@@ -217,7 +217,7 @@ void AGOSEngine::checkScrollX(int16 x, int16 xpos) {
if (_scrollXMax == 0 || x == 0)
return;
- if ((getGameType() == GType_FF) && (getBitFlag(80) || getBitFlag(82)))
+ if (getGameType() == GType_FF && (getBitFlag(80) || getBitFlag(82)))
return;
int16 tmp;