From 13d1357b213fc918dbc05cfd62685f19e0e9de1c Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 15 Jul 2002 01:38:52 +0000 Subject: [PATCH] fixed pause mode; changed semantics of getRandomNumber slightly svn-id: r4544 --- actor.h | 4 +++- script_v1.cpp | 4 ++-- script_v2.cpp | 4 ++-- scummvm.cpp | 18 ++++++++++-------- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/actor.h b/actor.h index d2a4f8fdf20..461af3a6208 100644 --- a/actor.h +++ b/actor.h @@ -63,7 +63,9 @@ struct CostumeData { for (int i = 0; i < 16; i++) { active[i] = 0; curpos[i] = start[i] = end[i] = frame[i] = 0xFFFF; -}}}; + } + } +}; class Actor { diff --git a/script_v1.cpp b/script_v1.cpp index b2d54d31355..422083291e8 100644 --- a/script_v1.cpp +++ b/script_v1.cpp @@ -783,7 +783,7 @@ void Scumm::o5_actorSet() getWordVararg(args); for (i = 0; i < 16; i++) if (args[i] != 0xFF) - a->palette[i] = args[i] /* & 0x0F */; + a->palette[i] = args[i]; #endif break; case 16: /* width */ @@ -1393,7 +1393,7 @@ void Scumm::o5_getObjectState() void Scumm::o5_getRandomNr() { getResultPos(); - setResult(getRandomNumber(getVarOrDirectByte(0x80) + 1)); + setResult(getRandomNumber(getVarOrDirectByte(0x80))); } void Scumm::o5_getScriptRunning() diff --git a/script_v2.cpp b/script_v2.cpp index b8d8b3bfede..37ff8be4e90 100644 --- a/script_v2.cpp +++ b/script_v2.cpp @@ -1511,7 +1511,7 @@ void Scumm::o6_loadRoomWithEgo() void Scumm::o6_getRandomNumber() { int rnd; - rnd = getRandomNumber(pop() + 1); + rnd = getRandomNumber(pop()); _vars[VAR_V6_RANDOM_NR] = rnd; push(rnd); } @@ -1520,7 +1520,7 @@ void Scumm::o6_getRandomNumberRange() { int max = pop(); int min = pop(); - int rnd = getRandomNumber(max - min + 1) + min; + int rnd = getRandomNumberRng(min, max); _vars[VAR_V6_RANDOM_NR] = rnd; push(rnd); } diff --git a/scummvm.cpp b/scummvm.cpp index cd017ff7943..3dbe9f813df 100644 --- a/scummvm.cpp +++ b/scummvm.cpp @@ -47,12 +47,12 @@ uint Scumm::getRandomNumber(uint max) /* TODO: my own random number generator */ _randSeed1 = 0xDEADBEEF * (_randSeed1 + 1); _randSeed1 = (_randSeed1 >> 13) | (_randSeed1 << 19); - return _randSeed1 % max; + return _randSeed1 % (max + 1); } uint Scumm::getRandomNumberRng(uint min, uint max) { - return getRandomNumber(max - min + 1) + min; + return getRandomNumber(max - min) + min; } @@ -1260,6 +1260,14 @@ void Scumm::waitForTimer(int msec_delay) { for(;;) { while (_system->poll_event(&event)) { + + // if newgui is running, copy event to EventList, and let the GUI handle it itself + // we might consider this approach for ScummLoop as well, and clean up the current mess + if (_newgui->isActive()) { + _newgui->handleEvent(event); + continue; + } + switch(event.event_code) { case OSystem::EVENT_KEYDOWN: if (event.kbd.keycode >= '0' && event.kbd.keycode<='9' @@ -1315,12 +1323,6 @@ void Scumm::waitForTimer(int msec_delay) { _rightBtnPressed &= ~msDown; break; } - - // if newgui is running, copy event to EventList, and let the GUI handle it itself - // we might consider this approach for ScummLoop as well, and clean up the current mess - if (_newgui->isActive()) - _newgui->handleEvent(event); - } #ifdef COMPRESSED_SOUND_FILE if (updateMP3CD() == -1)