fixed pause mode; changed semantics of getRandomNumber slightly

svn-id: r4544
This commit is contained in:
Max Horn 2002-07-15 01:38:52 +00:00
parent f3e2b98c47
commit 13d1357b21
4 changed files with 17 additions and 13 deletions

View file

@ -63,7 +63,9 @@ struct CostumeData {
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
active[i] = 0; active[i] = 0;
curpos[i] = start[i] = end[i] = frame[i] = 0xFFFF; curpos[i] = start[i] = end[i] = frame[i] = 0xFFFF;
}}}; }
}
};
class Actor { class Actor {

View file

@ -783,7 +783,7 @@ void Scumm::o5_actorSet()
getWordVararg(args); getWordVararg(args);
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
if (args[i] != 0xFF) if (args[i] != 0xFF)
a->palette[i] = args[i] /* & 0x0F */; a->palette[i] = args[i];
#endif #endif
break; break;
case 16: /* width */ case 16: /* width */
@ -1393,7 +1393,7 @@ void Scumm::o5_getObjectState()
void Scumm::o5_getRandomNr() void Scumm::o5_getRandomNr()
{ {
getResultPos(); getResultPos();
setResult(getRandomNumber(getVarOrDirectByte(0x80) + 1)); setResult(getRandomNumber(getVarOrDirectByte(0x80)));
} }
void Scumm::o5_getScriptRunning() void Scumm::o5_getScriptRunning()

View file

@ -1511,7 +1511,7 @@ void Scumm::o6_loadRoomWithEgo()
void Scumm::o6_getRandomNumber() void Scumm::o6_getRandomNumber()
{ {
int rnd; int rnd;
rnd = getRandomNumber(pop() + 1); rnd = getRandomNumber(pop());
_vars[VAR_V6_RANDOM_NR] = rnd; _vars[VAR_V6_RANDOM_NR] = rnd;
push(rnd); push(rnd);
} }
@ -1520,7 +1520,7 @@ void Scumm::o6_getRandomNumberRange()
{ {
int max = pop(); int max = pop();
int min = pop(); int min = pop();
int rnd = getRandomNumber(max - min + 1) + min; int rnd = getRandomNumberRng(min, max);
_vars[VAR_V6_RANDOM_NR] = rnd; _vars[VAR_V6_RANDOM_NR] = rnd;
push(rnd); push(rnd);
} }

View file

@ -47,12 +47,12 @@ uint Scumm::getRandomNumber(uint max)
/* TODO: my own random number generator */ /* TODO: my own random number generator */
_randSeed1 = 0xDEADBEEF * (_randSeed1 + 1); _randSeed1 = 0xDEADBEEF * (_randSeed1 + 1);
_randSeed1 = (_randSeed1 >> 13) | (_randSeed1 << 19); _randSeed1 = (_randSeed1 >> 13) | (_randSeed1 << 19);
return _randSeed1 % max; return _randSeed1 % (max + 1);
} }
uint Scumm::getRandomNumberRng(uint min, uint max) 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(;;) { for(;;) {
while (_system->poll_event(&event)) { 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) { switch(event.event_code) {
case OSystem::EVENT_KEYDOWN: case OSystem::EVENT_KEYDOWN:
if (event.kbd.keycode >= '0' && event.kbd.keycode<='9' if (event.kbd.keycode >= '0' && event.kbd.keycode<='9'
@ -1315,12 +1323,6 @@ void Scumm::waitForTimer(int msec_delay) {
_rightBtnPressed &= ~msDown; _rightBtnPressed &= ~msDown;
break; 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 #ifdef COMPRESSED_SOUND_FILE
if (updateMP3CD() == -1) if (updateMP3CD() == -1)