[Scummvm-cvs-logs] SF.net SVN: scummvm: [32237] scummvm/trunk/engines/lure
dreammaster at users.sourceforge.net
dreammaster at users.sourceforge.net
Sat May 24 02:54:04 CEST 2008
Revision: 32237
http://scummvm.svn.sourceforge.net/scummvm/?rev=32237&view=rev
Author: dreammaster
Date: 2008-05-23 17:54:04 -0700 (Fri, 23 May 2008)
Log Message:
-----------
Changed the delayed sequence list from using a system milliseconds expiry point to a milliseconds countdown - this should fix potential problems that could arise if a modal dialog was kept on-screen too long
Modified Paths:
--------------
scummvm/trunk/engines/lure/game.cpp
scummvm/trunk/engines/lure/res_struct.cpp
Modified: scummvm/trunk/engines/lure/game.cpp
===================================================================
--- scummvm/trunk/engines/lure/game.cpp 2008-05-24 00:08:13 UTC (rev 32236)
+++ scummvm/trunk/engines/lure/game.cpp 2008-05-24 00:54:04 UTC (rev 32237)
@@ -167,6 +167,7 @@
if (system.getMillis() > timerVal + GAME_FRAME_DELAY) {
timerVal = system.getMillis();
nextFrame();
+ res.delayList().tick();
Sound.musicInterface_ContinuePlaying();
}
@@ -177,8 +178,6 @@
tickCheck();
}
- res.delayList().tick();
-
while (events.pollEvent()) {
if (events.type() == Common::EVENT_KEYDOWN) {
uint16 roomNum = room.roomNumber();
Modified: scummvm/trunk/engines/lure/res_struct.cpp
===================================================================
--- scummvm/trunk/engines/lure/res_struct.cpp 2008-05-24 00:08:13 UTC (rev 32236)
+++ scummvm/trunk/engines/lure/res_struct.cpp 2008-05-24 00:54:04 UTC (rev 32237)
@@ -762,8 +762,8 @@
SequenceDelayData::SequenceDelayData(uint16 delay, uint16 seqOffset, bool canClearFlag) {
OSystem &system = *g_system;
- // The delay is in number of seconds
- timeoutCtr = system.getMillis() + delay * 1000;
+ // The delay is in number of seconds - convert it to remaining milliseconds
+ timeoutCtr = delay * 1000;
sequenceOffset = seqOffset;
canClear = canClearFlag;
}
@@ -784,21 +784,23 @@
}
void SequenceDelayList::tick() {
- uint32 currTime = g_system->getMillis();
SequenceDelayList::iterator i;
- debugC(ERROR_DETAILED, kLureDebugScripts, "Delay List check start at time %d", currTime);
+ debugC(ERROR_DETAILED, kLureDebugScripts, "Delay List check start at time %d",
+ g_system->getMillis());
for (i = begin(); i != end(); i++) {
SequenceDelayData *entry = (*i).get();
debugC(ERROR_DETAILED, kLureDebugScripts, "Delay List check %xh at time %d", entry->sequenceOffset, entry->timeoutCtr);
- if (currTime >= entry->timeoutCtr) {
+ if (entry->timeoutCtr <= GAME_FRAME_DELAY) {
// Timeout reached - delete entry from list and execute the sequence
uint16 seqOffset = entry->sequenceOffset;
erase(i);
Script::execute(seqOffset);
return;
+ } else {
+ entry->timeoutCtr -= GAME_FRAME_DELAY;
}
}
}
@@ -816,14 +818,12 @@
}
void SequenceDelayList::saveToStream(WriteStream *stream) {
- uint32 currTime = g_system->getMillis();
SequenceDelayList::iterator i;
for (i = begin(); i != end(); ++i) {
SequenceDelayData *entry = (*i).get();
stream->writeUint16LE(entry->sequenceOffset);
- stream->writeUint32LE((currTime > entry->timeoutCtr ) ? 0 :
- entry->timeoutCtr - currTime);
+ stream->writeUint32LE(entry->timeoutCtr);
stream->writeByte(entry->canClear);
}
@@ -833,10 +833,9 @@
void SequenceDelayList::loadFromStream(ReadStream *stream) {
clear(true);
uint16 seqOffset;
- uint32 currTime = g_system->getMillis();
while ((seqOffset = stream->readUint16LE()) != 0) {
- uint32 delay = currTime + stream->readUint32LE();
+ uint32 delay = stream->readUint32LE();
bool canClear = stream->readByte() != 0;
push_back(SequenceDelayList::value_type(SequenceDelayData::load(delay, seqOffset, canClear)));
}
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