[Scummvm-cvs-logs] SF.net SVN: scummvm: [26776] scummvm/trunk/engines/lure
dreammaster at users.sourceforge.net
dreammaster at users.sourceforge.net
Mon May 7 14:10:32 CEST 2007
Revision: 26776
http://scummvm.svn.sourceforge.net/scummvm/?rev=26776&view=rev
Author: dreammaster
Date: 2007-05-07 05:10:32 -0700 (Mon, 07 May 2007)
Log Message:
-----------
Added saving of room exit join data in savefiles
Modified Paths:
--------------
scummvm/trunk/engines/lure/res.cpp
scummvm/trunk/engines/lure/res_struct.cpp
scummvm/trunk/engines/lure/res_struct.h
Modified: scummvm/trunk/engines/lure/res.cpp
===================================================================
--- scummvm/trunk/engines/lure/res.cpp 2007-05-07 08:47:40 UTC (rev 26775)
+++ scummvm/trunk/engines/lure/res.cpp 2007-05-07 12:10:32 UTC (rev 26776)
@@ -649,6 +649,7 @@
_fieldList.saveToStream(stream);
_randomActions.saveToStream(stream);
_barmanLists.saveToStream(stream);
+ _exitJoins.saveToStream(stream);
}
void Resources::loadFromStream(Common::ReadStream *stream) {
@@ -662,6 +663,8 @@
_randomActions.loadFromStream(stream);
debugC(ERROR_DETAILED, kLureDebugScripts, "Loading barman lists");
_barmanLists.loadFromStream(stream);
+ debugC(ERROR_DETAILED, kLureDebugScripts, "Loading room exit joins");
+ _exitJoins.loadFromStream(stream);
debugC(ERROR_DETAILED, kLureDebugScripts, "Finished loading");
}
Modified: scummvm/trunk/engines/lure/res_struct.cpp
===================================================================
--- scummvm/trunk/engines/lure/res_struct.cpp 2007-05-07 08:47:40 UTC (rev 26775)
+++ scummvm/trunk/engines/lure/res_struct.cpp 2007-05-07 12:10:32 UTC (rev 26776)
@@ -211,14 +211,14 @@
uint16 *pOut = &dataOut[DECODED_PATHS_WIDTH * DECODED_PATHS_HEIGHT - 1];
byte v;
int paddingCtr;
- int charWidth = (characterWidth - 1) >> 3;
+ int charWidth = characterWidth >> 3;
int charCtr = 0;
bool charState = false;
// Handle padding for last row, including left/right edge padding, as
// well as the right column of the second row
for (paddingCtr = 0; paddingCtr < (DECODED_PATHS_WIDTH + 1); ++paddingCtr)
- *pOut-- = 0;
+ *pOut-- = 0xffff;
for (int y = 0; y < ROOM_PATHS_HEIGHT; ++y) {
charState = false;
@@ -258,15 +258,15 @@
}
// Store 2 words to allow off-screen row-start/prior row end
- *pOut-- = 0;
- *pOut-- = 0;
+ *pOut-- = 0xffff;
+ *pOut-- = 0xffff;
charState = false;
}
// Handle padding for final top row - no need for end column, as end of prior
// row provided padding for it
for (paddingCtr = 0; paddingCtr < (ROOM_PATHS_WIDTH + 1); ++paddingCtr)
- *pOut-- = 0;
+ *pOut-- = 0xffff;
}
// Room exit joins class
@@ -285,6 +285,44 @@
blocked = rec->blocked;
}
+void RoomExitJoinList::saveToStream(WriteStream *stream) {
+ for (RoomExitJoinList::iterator i = begin(); i != end(); ++i) {
+ RoomExitJoinData *rec = *i;
+ stream->writeUint16LE(rec->hotspot1Id);
+ stream->writeUint16LE(rec->hotspot2Id);
+ stream->writeByte(rec->h1CurrentFrame);
+ stream->writeByte(rec->h1DestFrame);
+ stream->writeByte(rec->h2CurrentFrame);
+ stream->writeByte(rec->h2DestFrame);
+ stream->writeByte(rec->blocked);
+ }
+
+ // Write end of list marker
+ stream->writeUint16LE(0xffff);
+}
+
+void RoomExitJoinList::loadFromStream(ReadStream *stream) {
+ for (RoomExitJoinList::iterator i = begin(); i != end(); ++i) {
+ RoomExitJoinData *rec = *i;
+
+ uint16 hotspot1Id = stream->readUint16LE();
+ if (hotspot1Id == 0xffff) error("Invalid room exit join list");
+ uint16 hotspot2Id = stream->readUint16LE();
+
+ if ((rec->hotspot1Id != hotspot1Id) || (rec->hotspot2Id != hotspot2Id))
+ break;
+
+ rec->h1CurrentFrame = stream->readByte();
+ rec->h1DestFrame = stream->readByte();
+ rec->h2CurrentFrame = stream->readByte();
+ rec->h2DestFrame = stream->readByte();
+ rec->blocked = stream->readByte();
+ }
+
+ // Read final end of list marker
+ stream->readUint16LE();
+}
+
// Hotspot action record
HotspotActionData::HotspotActionData(HotspotActionResource *rec) {
Modified: scummvm/trunk/engines/lure/res_struct.h
===================================================================
--- scummvm/trunk/engines/lure/res_struct.h 2007-05-07 08:47:40 UTC (rev 26775)
+++ scummvm/trunk/engines/lure/res_struct.h 2007-05-07 12:10:32 UTC (rev 26776)
@@ -359,7 +359,11 @@
uint32 unknown;
};
-typedef ManagedList<RoomExitJoinData *> RoomExitJoinList;
+class RoomExitJoinList: public ManagedList<RoomExitJoinData *> {
+public:
+ void saveToStream(WriteStream *stream);
+ void loadFromStream(ReadStream *stream);
+};
class HotspotActionData {
public:
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