aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2007-12-20 09:43:46 +0000
committerMax Horn2007-12-20 09:43:46 +0000
commitf44a19608792ac884ca4654eb89514d848fdeedd (patch)
tree90c4c65f7449f7b6d564c354d20bbc7e98405b1e /engines
parent15a94b7c0c9d53ec2ae7fa4dce4c62daac6040ae (diff)
downloadscummvm-rg350-f44a19608792ac884ca4654eb89514d848fdeedd.tar.gz
scummvm-rg350-f44a19608792ac884ca4654eb89514d848fdeedd.tar.bz2
scummvm-rg350-f44a19608792ac884ca4654eb89514d848fdeedd.zip
Moved all time() calls in AGOS to a single new method AGOSEngine::getTime(); also replaced an evil function-static variable by a member variable (lastMinute)
svn-id: r29908
Diffstat (limited to 'engines')
-rw-r--r--engines/agos/agos.cpp6
-rw-r--r--engines/agos/agos.h7
-rw-r--r--engines/agos/event.cpp13
-rw-r--r--engines/agos/input.cpp22
-rw-r--r--engines/agos/saveload.cpp20
-rw-r--r--engines/agos/script_e1.cpp11
-rw-r--r--engines/agos/script_e2.cpp4
-rw-r--r--engines/agos/script_ff.cpp13
-rw-r--r--engines/agos/script_pp.cpp6
-rw-r--r--engines/agos/script_ww.cpp4
10 files changed, 49 insertions, 57 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index ccb53bec77..04d64acc26 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -275,6 +275,7 @@ AGOSEngine::AGOSEngine(OSystem *syst)
_gameStoppedClock = 0;
_gameTime = 0;
_lastTime = 0;
+ _lastMinute = 0;
_firstTimeStruct = 0;
_pendingDeleteTimeEvent = 0;
@@ -1051,4 +1052,9 @@ void AGOSEngine::shutdown() {
_system->quit();
}
+uint32 AGOSEngine::getTime() const {
+ // FIXME: calling time() is not portable, use OSystem::getMillis instead
+ return (uint32)time(NULL);
+}
+
} // End of namespace AGOS
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 2d7f871ed7..bccd5d9032 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -362,9 +362,12 @@ protected:
uint _numTextBoxes;
- uint _lastTime;
+ uint32 getTime() const;
+
+ uint32 _lastMinute; // Used in processSpecialKeys()
+ uint32 _lastTime;
uint32 _clockStopped, _gameStoppedClock, _gameTime;
- time_t _timeStore;
+ uint32 _timeStore;
TimeEvent *_firstTimeStruct, *_pendingDeleteTimeEvent;
diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp
index ad80b72926..5303e6db45 100644
--- a/engines/agos/event.cpp
+++ b/engines/agos/event.cpp
@@ -42,9 +42,7 @@ namespace AGOS {
void AGOSEngine::addTimeEvent(uint16 timeout, uint16 subroutine_id) {
TimeEvent *te = (TimeEvent *)malloc(sizeof(TimeEvent)), *first, *last = NULL;
- time_t cur_time;
-
- time(&cur_time);
+ uint32 cur_time = getTime();
if (getGameId() == GID_DIMP) {
timeout /= 2;
@@ -52,7 +50,7 @@ void AGOSEngine::addTimeEvent(uint16 timeout, uint16 subroutine_id) {
te->time = cur_time + timeout - _gameStoppedClock;
if (getGameType() == GType_FF && _clockStopped)
- te->time -= ((uint32)time(NULL) - _clockStopped);
+ te->time -= (getTime() - _clockStopped);
te->subroutine_id = subroutine_id;
first = _firstTimeStruct;
@@ -135,17 +133,16 @@ void AGOSEngine::killAllTimers() {
}
bool AGOSEngine::kickoffTimeEvents() {
- time_t cur_time;
+ uint32 cur_time;
TimeEvent *te;
bool result = false;
if (getGameType() == GType_FF && _clockStopped)
return result;
- time(&cur_time);
- cur_time -= _gameStoppedClock;
+ cur_time = getTime() - _gameStoppedClock;
- while ((te = _firstTimeStruct) != NULL && te->time <= (uint32)cur_time) {
+ while ((te = _firstTimeStruct) != NULL && te->time <= cur_time) {
result = true;
_pendingDeleteTimeEvent = te;
invokeTimeEvent(te);
diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp
index 453e2c3562..2ddb9811c3 100644
--- a/engines/agos/input.cpp
+++ b/engines/agos/input.cpp
@@ -362,8 +362,6 @@ out_of_here:
}
void AGOSEngine::hitarea_stuff_helper() {
- time_t cur_time;
-
if (getGameType() == GType_SIMON2 || getGameType() == GType_FF ||
getGameType() == GType_PP) {
if (_variableArray[254] || _variableArray[249]) {
@@ -383,8 +381,8 @@ void AGOSEngine::hitarea_stuff_helper() {
}
}
- time(&cur_time);
- if ((uint) cur_time != _lastTime) {
+ uint32 cur_time = getTime();
+ if (cur_time != _lastTime) {
_lastTime = cur_time;
if (kickoffTimeEvents())
permitInput();
@@ -459,16 +457,12 @@ bool AGOSEngine::processSpecialKeys() {
bool verbCode = false;
if (getGameId() == GID_DIMP) {
- static time_t lastMinute = 0;
- time_t t;
- time_t t1;
- t = time(&t);
- t1 = t / 30;
- if (!lastMinute)
- lastMinute = t1;
- if (t1 - lastMinute) {
- _variableArray[120] += (t1 - lastMinute);
- lastMinute = t1;
+ uint32 t1 = getTime() / 30;
+ if (!_lastMinute)
+ _lastMinute = t1;
+ if (t1 - _lastMinute) {
+ _variableArray[120] += (t1 - _lastMinute);
+ _lastMinute = t1;
}
}
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp
index d86515efc6..cb87e0ec05 100644
--- a/engines/agos/saveload.cpp
+++ b/engines/agos/saveload.cpp
@@ -250,7 +250,7 @@ void AGOSEngine::userGame(bool load) {
numSaveGames = countSaveGames();
- time_t saveTime = time(NULL);
+ uint32 saveTime = getTime();
haltAnimation();
restart:
@@ -331,7 +331,7 @@ restart:
}
restartAnimation();
- _gameStoppedClock = time(NULL) - saveTime + _gameStoppedClock;
+ _gameStoppedClock = getTime() - saveTime + _gameStoppedClock;
}
void AGOSEngine_Elvira2::listSaveGames(char *dst) {
@@ -415,7 +415,7 @@ void AGOSEngine_Elvira2::listSaveGames(char *dst) {
}
void AGOSEngine_Elvira2::userGame(bool load) {
- time_t saveTime;
+ uint32 saveTime;
int i, numSaveGames;
char *name;
bool b;
@@ -423,7 +423,7 @@ void AGOSEngine_Elvira2::userGame(bool load) {
_saveOrLoad = load;
- saveTime = time(NULL);
+ saveTime = getTime();
if (getGameType() == GType_ELVIRA2)
haltAnimation();
@@ -504,7 +504,7 @@ void AGOSEngine_Elvira2::userGame(bool load) {
get_out:;
disableFileBoxes();
- _gameStoppedClock = time(NULL) - saveTime + _gameStoppedClock;
+ _gameStoppedClock = getTime() - saveTime + _gameStoppedClock;
if (getGameType() == GType_ELVIRA2)
restartAnimation();
@@ -624,7 +624,7 @@ const byte hebrewKeyTable[96] = {
};
void AGOSEngine_Simon1::userGame(bool load) {
- time_t saveTime;
+ uint32 saveTime;
int i, numSaveGames, result;
WindowBlock *window;
char *name;
@@ -634,7 +634,7 @@ void AGOSEngine_Simon1::userGame(bool load) {
_saveOrLoad = load;
- saveTime = time(NULL);
+ saveTime = getTime();
numSaveGames = countSaveGames();
if (!load)
@@ -772,7 +772,7 @@ restart:;
get_out:;
disableFileBoxes();
- _gameStoppedClock = time(NULL) - saveTime + _gameStoppedClock;
+ _gameStoppedClock = getTime() - saveTime + _gameStoppedClock;
}
int AGOSEngine_Simon1::userGameGetKey(bool *b, char *buf, uint maxChar) {
@@ -1316,7 +1316,7 @@ bool AGOSEngine_Elvira2::saveGame(uint slot, const char *caption) {
uint32 curTime = 0;
if (getGameType() != GType_SIMON1 && getGameType() != GType_SIMON2)
- curTime = time(NULL);
+ curTime = getTime();
_lockWord |= 0x100;
@@ -1347,7 +1347,7 @@ bool AGOSEngine_Elvira2::saveGame(uint slot, const char *caption) {
f->writeUint32BE(i);
if (getGameType() == GType_FF && _clockStopped)
- gsc += ((uint32)time(NULL) - _clockStopped);
+ gsc += (getTime() - _clockStopped);
for (te = _firstTimeStruct; te; te = te->next) {
f->writeUint32BE(te->time - curTime + gsc);
f->writeUint16BE(te->subroutine_id);
diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp
index 064f5ccbfd..ed6780e162 100644
--- a/engines/agos/script_e1.cpp
+++ b/engines/agos/script_e1.cpp
@@ -825,16 +825,13 @@ void AGOSEngine_Elvira1::oe1_enableInput() {
void AGOSEngine_Elvira1::oe1_setTime() {
// 259: set time
- time(&_timeStore);
+ _timeStore = getTime();
}
void AGOSEngine_Elvira1::oe1_ifTime() {
// 260: if time
- time_t t;
-
uint a = getVarOrWord();
- time(&t);
- t -= a;
+ uint32 t = getTime() - a;
if (t >= _timeStore)
setScriptCondition(true);
else
@@ -897,7 +894,7 @@ void AGOSEngine_Elvira1::oe1_pauseGame() {
WindowBlock *window = _windowArray[4];
const char *message1, *message2;
- time_t pauseTime = time(NULL);
+ uint32 pauseTime = getTime();
haltAnimation();
restart:
@@ -970,7 +967,7 @@ restart:
}
restartAnimation();
- _gameStoppedClock = time(NULL) - pauseTime + _gameStoppedClock;
+ _gameStoppedClock = getTime() - pauseTime + _gameStoppedClock;
}
void AGOSEngine_Elvira1::oe1_printPlayerHit() {
diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp
index a8f5e35547..e1ee4d4c3e 100644
--- a/engines/agos/script_e2.cpp
+++ b/engines/agos/script_e2.cpp
@@ -378,7 +378,7 @@ void AGOSEngine_Elvira2::oe2_pauseGame() {
// 135: pause game
HitArea *ha;
- time_t pauseTime = time(NULL);
+ uint32 pauseTime = getTime();
haltAnimation();
for (;;) {
@@ -400,7 +400,7 @@ void AGOSEngine_Elvira2::oe2_pauseGame() {
}
restartAnimation();
- _gameStoppedClock = time(NULL) - pauseTime + _gameStoppedClock;
+ _gameStoppedClock = getTime() - pauseTime + _gameStoppedClock;
}
void AGOSEngine_Elvira2::oe2_setDoorOpen() {
diff --git a/engines/agos/script_ff.cpp b/engines/agos/script_ff.cpp
index 89c760b8bf..2bc04708f4 100644
--- a/engines/agos/script_ff.cpp
+++ b/engines/agos/script_ff.cpp
@@ -397,12 +397,8 @@ void AGOSEngine_Feeble::off_oracleTextUp() {
void AGOSEngine_Feeble::off_ifTime() {
// 124: if time
- time_t t;
-
uint a = getVarOrWord();
- time(&t);
- t -= _gameStoppedClock;
- t -= a;
+ uint32 t = getTime() - _gameStoppedClock - a;
if (t >= _timeStore)
setScriptCondition(true);
else
@@ -411,8 +407,7 @@ void AGOSEngine_Feeble::off_ifTime() {
void AGOSEngine_Feeble::off_setTime() {
// 131
- time(&_timeStore);
- _timeStore -= _gameStoppedClock;
+ _timeStore = getTime() - _gameStoppedClock;
}
void AGOSEngine_Feeble::off_saveUserGame() {
@@ -612,13 +607,13 @@ void AGOSEngine_Feeble::off_setPathValues() {
void AGOSEngine_Feeble::off_stopClock() {
// 193: pause clock
- _clockStopped = time(NULL);
+ _clockStopped = getTime();
}
void AGOSEngine_Feeble::off_restartClock() {
// 194: resume clock
if (_clockStopped != 0)
- _gameStoppedClock += time(NULL) - _clockStopped;
+ _gameStoppedClock += getTime() - _clockStopped;
_clockStopped = 0;
}
diff --git a/engines/agos/script_pp.cpp b/engines/agos/script_pp.cpp
index 7413934d5c..e1b37f2bd4 100644
--- a/engines/agos/script_pp.cpp
+++ b/engines/agos/script_pp.cpp
@@ -299,7 +299,7 @@ void AGOSEngine_PuzzlePack::opp_iconifyWindow() {
// 30
getNextWord();
if (_clockStopped != 0)
- _gameTime += time(NULL) - _clockStopped;
+ _gameTime += getTime() - _clockStopped;
_clockStopped = 0;
_system->setFeatureState(OSystem::kFeatureIconifyWindow, true);
}
@@ -379,7 +379,7 @@ void AGOSEngine_PuzzlePack::opp_sync() {
void AGOSEngine_PuzzlePack::opp_saveUserGame() {
// 132: save game
if (_clockStopped != 0)
- _gameTime += time(NULL) - _clockStopped;
+ _gameTime += getTime() - _clockStopped;
_clockStopped = 0;
if (getGameId() == GID_DIMP) {
@@ -452,7 +452,7 @@ void AGOSEngine_PuzzlePack::opp_setPathValues() {
void AGOSEngine_PuzzlePack::opp_restartClock() {
// 194: resume clock
if (_clockStopped != 0)
- _gameTime += time(NULL) - _clockStopped;
+ _gameTime += getTime() - _clockStopped;
_clockStopped = 0;
}
diff --git a/engines/agos/script_ww.cpp b/engines/agos/script_ww.cpp
index 94c6152315..fe21baf9bb 100644
--- a/engines/agos/script_ww.cpp
+++ b/engines/agos/script_ww.cpp
@@ -365,7 +365,7 @@ void AGOSEngine_Waxworks::oww_pauseGame() {
// 135: pause game
HitArea *ha;
- time_t pauseTime = time(NULL);
+ uint32 pauseTime = getTime();
haltAnimation();
for (;;) {
@@ -389,7 +389,7 @@ void AGOSEngine_Waxworks::oww_pauseGame() {
}
restartAnimation();
- _gameStoppedClock = time(NULL) - pauseTime + _gameStoppedClock;
+ _gameStoppedClock = getTime() - pauseTime + _gameStoppedClock;
}
void AGOSEngine_Waxworks::oww_boxMessage() {