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++) {
active[i] = 0;
curpos[i] = start[i] = end[i] = frame[i] = 0xFFFF;
}}};
}
}
};
class Actor {

View file

@ -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()

View file

@ -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);
}

View file

@ -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)