fixed hardcoded number -> constant stuff (patches by janssen)
svn-id: r3483
This commit is contained in:
parent
406b5e63c7
commit
595d9534c3
9 changed files with 64 additions and 54 deletions
18
actor.cpp
18
actor.cpp
|
@ -574,7 +574,7 @@ void Scumm::showActors() {
|
|||
int i;
|
||||
Actor *a;
|
||||
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
a = derefActor(i);
|
||||
if (a->room == _currentRoom)
|
||||
showActor(a);
|
||||
|
@ -608,7 +608,7 @@ void Scumm::clearMsgQueue() {
|
|||
void Scumm::walkActors() {
|
||||
int i;
|
||||
Actor *a;
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
a = derefActor(i);
|
||||
if (a->room==_currentRoom)
|
||||
walkActor(a);
|
||||
|
@ -620,12 +620,12 @@ void Scumm::playActorSounds() {
|
|||
int i;
|
||||
Actor *a;
|
||||
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
a = derefActor(i);
|
||||
if (a->cost.animCounter2 && a->room==_currentRoom && a->sound) {
|
||||
_currentScript = 0xFF;
|
||||
addSoundToQueue(a->sound[0]);
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
a = derefActor(i);
|
||||
a->cost.animCounter2 = 0;
|
||||
}
|
||||
|
@ -708,10 +708,10 @@ void Scumm::walkActor(Actor *a) {
|
|||
|
||||
void Scumm::processActors() {
|
||||
int i;
|
||||
Actor *actors[13],*a,**ac,**ac2,*tmp;
|
||||
Actor *actors[NUM_ACTORS],*a,**ac,**ac2,*tmp;
|
||||
int numactors = 0, cnt,cnt2;
|
||||
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
a = derefActor(i);
|
||||
if (a->room == _currentRoom)
|
||||
actors[numactors++] = a;
|
||||
|
@ -814,7 +814,7 @@ void Scumm::setActorRedrawFlags() {
|
|||
for (i=0; i<40; i++) {
|
||||
bits = actorDrawBits[_screenStartStrip+i];
|
||||
if (bits&0x3FFF) {
|
||||
for(j=0; j<13; j++) {
|
||||
for(j=0; j<NUM_ACTORS; j++) {
|
||||
if ((bits&(1<<j)) && bits!=(1<<j)) {
|
||||
Actor *a = derefActor(j);
|
||||
a->needRedraw = true;
|
||||
|
@ -832,7 +832,7 @@ int Scumm::getActorFromPos(int x, int y) {
|
|||
drawbits = actorDrawBits[x>>3];
|
||||
if (!(drawbits & 0x3FFF))
|
||||
return 0;
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
Actor *a = derefActor(i);
|
||||
if (drawbits&(1<<i) && !getClass(i, 32) && y >= a->top && y <= a->bottom) {
|
||||
return i;
|
||||
|
@ -966,7 +966,7 @@ bool Scumm::isCostumeInUse(int cost) {
|
|||
Actor *a;
|
||||
|
||||
if (_roomResource!=0)
|
||||
for (i=1; i<13; i++) {
|
||||
for (i=1; i<NUM_ACTORS; i++) {
|
||||
a = derefActor(i);
|
||||
if (a->room == _currentRoom && a->costume == cost)
|
||||
return true;
|
||||
|
|
|
@ -165,7 +165,7 @@ void ScummDebugger::printActors(int act) {
|
|||
printf("+--------------------------------------------------------------+\n");
|
||||
printf("|# |room| x y |elev|cos|width|box|mov|zp|frame|scale|spd|dir|\n");
|
||||
printf("+--+----+--------+----+---+-----+---+---+--+-----+-----+---+---+\n");
|
||||
for(i=1; i<13; i++) {
|
||||
for(i=1; i<NUM_ACTORS; i++) {
|
||||
if (act==-1 || act==i) {
|
||||
a = &_s->actor[i];
|
||||
if (a->visible)
|
||||
|
|
4
gfx.cpp
4
gfx.cpp
|
@ -295,7 +295,7 @@ void Scumm::setCameraFollows(Actor *a) {
|
|||
t-_screenStartStrip > cd->_rightTrigger)
|
||||
setCameraAt(a->x);
|
||||
|
||||
for (i=1,a=getFirstActor(); ++a,i<13; i++) {
|
||||
for (i=1,a=getFirstActor(); ++a,i<NUM_ACTORS; i++) {
|
||||
if (a->room==_currentRoom)
|
||||
a->needRedraw = true;
|
||||
}
|
||||
|
@ -1632,7 +1632,7 @@ void Scumm::resetActorBgs() {
|
|||
}
|
||||
}
|
||||
|
||||
for(i=1,a=getFirstActor(); ++a,i<13; i++) {
|
||||
for(i=1,a=getFirstActor(); ++a,i<NUM_ACTORS; i++) {
|
||||
a->needBgReset = false;
|
||||
}
|
||||
}
|
||||
|
|
5
gui.h
5
gui.h
|
@ -1,3 +1,6 @@
|
|||
#if !defined(gui_h)
|
||||
#define gui_h
|
||||
|
||||
enum {
|
||||
GUI_NONE = 0,
|
||||
GUI_TEXT = 1,
|
||||
|
@ -73,3 +76,5 @@ struct Gui {
|
|||
void queryMessage(const char *msg, const char *alts);
|
||||
byte getDefaultColor(int color);
|
||||
};
|
||||
|
||||
#endif
|
42
resource.cpp
42
resource.cpp
|
@ -175,7 +175,7 @@ void Scumm::readIndexFileV5(int mode) {
|
|||
|
||||
switch(blocktype) {
|
||||
case MKID('DCHR'):
|
||||
readResTypeList(6,MKID('CHAR'),"charset");
|
||||
readResTypeList(rtCharset,MKID('CHAR'),"charset");
|
||||
break;
|
||||
|
||||
case MKID('DOBJ'):
|
||||
|
@ -200,15 +200,15 @@ void Scumm::readIndexFileV5(int mode) {
|
|||
break;
|
||||
|
||||
case MKID('DROO'):
|
||||
readResTypeList(1,MKID('ROOM'),"room");
|
||||
readResTypeList(rtRoom,MKID('ROOM'),"room");
|
||||
break;
|
||||
|
||||
case MKID('DSCR'):
|
||||
readResTypeList(2,MKID('SCRP'),"script");
|
||||
readResTypeList(rtScript,MKID('SCRP'),"script");
|
||||
break;
|
||||
|
||||
case MKID('DCOS'):
|
||||
readResTypeList(3,MKID('COST'),"costume");
|
||||
readResTypeList(rtCostume,MKID('COST'),"costume");
|
||||
break;
|
||||
|
||||
case MKID('MAXS'):
|
||||
|
@ -224,7 +224,7 @@ void Scumm::readIndexFileV5(int mode) {
|
|||
break;
|
||||
|
||||
case MKID('DSOU'):
|
||||
readResTypeList(4,MKID('SOUN'),"sound");
|
||||
readResTypeList(rtSound,MKID('SOUN'),"sound");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -265,7 +265,7 @@ void Scumm::readIndexFileV6() {
|
|||
|
||||
switch(blocktype) {
|
||||
case MKID('DCHR'):
|
||||
readResTypeList(6,MKID('CHAR'),"charset");
|
||||
readResTypeList(rtCharset,MKID('CHAR'),"charset");
|
||||
break;
|
||||
|
||||
case MKID('DOBJ'):
|
||||
|
@ -284,15 +284,15 @@ void Scumm::readIndexFileV6() {
|
|||
break;
|
||||
|
||||
case MKID('DROO'):
|
||||
readResTypeList(1,MKID('ROOM'),"room");
|
||||
readResTypeList(rtRoom,MKID('ROOM'),"room");
|
||||
break;
|
||||
|
||||
case MKID('DSCR'):
|
||||
readResTypeList(2,MKID('SCRP'),"script");
|
||||
readResTypeList(rtScript,MKID('SCRP'),"script");
|
||||
break;
|
||||
|
||||
case MKID('DCOS'):
|
||||
readResTypeList(3,MKID('COST'),"costume");
|
||||
readResTypeList(rtCostume,MKID('COST'),"costume");
|
||||
break;
|
||||
|
||||
case MKID('MAXS'):
|
||||
|
@ -300,7 +300,7 @@ void Scumm::readIndexFileV6() {
|
|||
break;
|
||||
|
||||
case MKID('DSOU'):
|
||||
readResTypeList(4,MKID('SOUN'),"sound");
|
||||
readResTypeList(rtSound,MKID('SOUN'),"sound");
|
||||
break;
|
||||
|
||||
case MKID('AARY'):
|
||||
|
@ -412,7 +412,7 @@ void Scumm::ensureResourceLoaded(int type, int i) {
|
|||
|
||||
debug(9, "ensureResourceLoaded(%d,%d)", type, i);
|
||||
|
||||
if (type==1 && i>127) {
|
||||
if (type==rtRoom && i>127) {
|
||||
i = _resourceMapper[i&127];
|
||||
}
|
||||
|
||||
|
@ -425,7 +425,7 @@ void Scumm::ensureResourceLoaded(int type, int i) {
|
|||
|
||||
loadResource(type, i);
|
||||
|
||||
if (type==1 && i==_roomResource)
|
||||
if (type==rtRoom && i==_roomResource)
|
||||
_vars[VAR_ROOM_FLAG] = 1;
|
||||
}
|
||||
|
||||
|
@ -442,7 +442,7 @@ int Scumm::loadResource(int type, int index) {
|
|||
res.name[type],index);
|
||||
}
|
||||
|
||||
if (type==1) {
|
||||
if (type==rtRoom) {
|
||||
fileOffs = 0;
|
||||
} else {
|
||||
fileOffs = res.roomoffs[type][index];
|
||||
|
@ -455,7 +455,7 @@ int Scumm::loadResource(int type, int index) {
|
|||
openRoom(roomNr);
|
||||
|
||||
fileSeek(_fileHandle, fileOffs + _fileOffset, SEEK_SET);
|
||||
if (type==4) {
|
||||
if (type==rtSound) {
|
||||
fileReadDwordLE();
|
||||
fileReadDwordLE();
|
||||
return readSoundResource(type, index);
|
||||
|
@ -475,7 +475,7 @@ int Scumm::loadResource(int type, int index) {
|
|||
|
||||
/* dump the resource */
|
||||
#ifdef DUMP_SCRIPTS
|
||||
if(type==2) {
|
||||
if(type==rtScript) {
|
||||
dumpResource("script-", index, getResourceAddress(rtScript, index));
|
||||
}
|
||||
#endif
|
||||
|
@ -526,7 +526,7 @@ int Scumm::readSoundResource(int type, int index) {
|
|||
}
|
||||
|
||||
int Scumm::getResourceRoomNr(int type, int index) {
|
||||
if (type==1)
|
||||
if (type==rtRoom)
|
||||
return index;
|
||||
return res.roomno[type][index];
|
||||
}
|
||||
|
@ -602,7 +602,7 @@ byte *Scumm::createResource(int type, int index, uint32 size) {
|
|||
}
|
||||
|
||||
void Scumm::validateResource(const char *str, int type, int index) {
|
||||
if (type<1 || type>16 || index<0 || index >= res.num[type]) {
|
||||
if (type<rtFirst || type>rtLast || (uint)index >= (uint)res.num[type]) {
|
||||
error("%d Illegal Glob type %d num %d", str, type, index);
|
||||
}
|
||||
}
|
||||
|
@ -686,7 +686,7 @@ void Scumm::increaseResourceCounter() {
|
|||
int i,j;
|
||||
byte counter;
|
||||
|
||||
for (i=1; i<=16; i++) {
|
||||
for (i=rtFirst; i<=rtLast; i++) {
|
||||
for(j=res.num[i]; --j>=0;) {
|
||||
counter = res.flags[i][j] & 0x7F;
|
||||
if (counter && counter < 0x7F) {
|
||||
|
@ -717,7 +717,7 @@ void Scumm::expireResources(uint32 size) {
|
|||
best_type = 0;
|
||||
best_counter = 2;
|
||||
|
||||
for (i=1; i<=16; i++)
|
||||
for (i=rtFirst; i<=rtLast; i++)
|
||||
if (res.mode[i]) {
|
||||
for(j=res.num[i]; --j>=0;) {
|
||||
flag = res.flags[i][j];
|
||||
|
@ -741,7 +741,7 @@ void Scumm::expireResources(uint32 size) {
|
|||
|
||||
void Scumm::freeResources() {
|
||||
int i,j;
|
||||
for (i=1; i<=16; i++) {
|
||||
for (i=rtFirst; i<=rtLast; i++) {
|
||||
for(j=res.num[i]; --j>=0;) {
|
||||
if (isResourceLoaded(i,j))
|
||||
nukeResource(i,j);
|
||||
|
@ -786,7 +786,7 @@ void Scumm::resourceStats() {
|
|||
uint32 lockedSize = 0, lockedNum = 0;
|
||||
byte flag;
|
||||
|
||||
for (i=1; i<=16; i++)
|
||||
for (i=rtFirst; i<=rtLast; i++)
|
||||
for(j=res.num[i]; --j>=0;) {
|
||||
flag = res.flags[i][j];
|
||||
if (flag&0x80 && res.address[i][j]) {
|
||||
|
|
12
saveload.cpp
12
saveload.cpp
|
@ -95,7 +95,7 @@ bool Scumm::loadState(int slot, bool compat) {
|
|||
memset(_inventory, 0, sizeof(_inventory[0])*_numInventory);
|
||||
|
||||
/* Nuke all resources */
|
||||
for (i=1; i<=16; i++)
|
||||
for (i=rtFirst; i<=rtLast; i++)
|
||||
if (i!=rtTemp && i!=rtBuffer)
|
||||
for(j=0; j<res.num[i]; j++) {
|
||||
nukeResource(i,j);
|
||||
|
@ -452,7 +452,7 @@ void Scumm::saveOrLoad(Serializer *s) {
|
|||
s->saveLoadArrayOf(string, 6, sizeof(string[0]), stringTabEntries);
|
||||
s->saveLoadArrayOf(_colorCycle, 16, sizeof(_colorCycle[0]), colorCycleEntries);
|
||||
|
||||
for (i=1; i<=16; i++)
|
||||
for (i=rtFirst; i<=rtLast; i++)
|
||||
if (res.mode[i]==0)
|
||||
for(j=1; j<res.num[i]; j++)
|
||||
saveLoadResource(s,i,j);
|
||||
|
@ -464,7 +464,7 @@ void Scumm::saveOrLoad(Serializer *s) {
|
|||
|
||||
/* Save or load a list of the locked objects */
|
||||
if (s->isSaving()) {
|
||||
for (i=1; i<=16; i++)
|
||||
for (i=rtFirst; i<=rtLast; i++)
|
||||
for(j=1; j<res.num[i]; j++) {
|
||||
if (res.flags[i][j]&0x80) {
|
||||
s->saveByte(i);
|
||||
|
@ -486,7 +486,7 @@ void Scumm::saveLoadResource(Serializer *ser, int type, int index) {
|
|||
byte flag;
|
||||
|
||||
/* don't save/load these resource types */
|
||||
if (type==13 || type==12 || type==10 || res.mode[type])
|
||||
if (type==rtFlObject || type==rtTemp || type==rtBuffer || res.mode[type])
|
||||
return;
|
||||
|
||||
if (ser->isSaving()) {
|
||||
|
@ -501,7 +501,7 @@ void Scumm::saveLoadResource(Serializer *ser, int type, int index) {
|
|||
ser->saveUint32(size);
|
||||
ser->saveLoadBytes(ptr+sizeof(ResHeader),size);
|
||||
|
||||
if (type==5) {
|
||||
if (type==rtInventory) {
|
||||
ser->saveWord(_inventory[index]);
|
||||
}
|
||||
} else {
|
||||
|
@ -509,7 +509,7 @@ void Scumm::saveLoadResource(Serializer *ser, int type, int index) {
|
|||
if (size) {
|
||||
createResource(type, index, size);
|
||||
ser->saveLoadBytes(getResourceAddress(type, index), size);
|
||||
if (type==5) {
|
||||
if (type==rtInventory) {
|
||||
_inventory[index] = ser->loadWord();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2004,7 +2004,7 @@ void Scumm::o6_miscOps() {
|
|||
case 6:
|
||||
_fullRedraw = 1;
|
||||
redrawBGAreas();
|
||||
for (i=0; i<13; i++)
|
||||
for (i=0; i<NUM_ACTORS; i++)
|
||||
derefActor(i)->needRedraw = true;
|
||||
processActors();
|
||||
screenEffect(args[1]);
|
||||
|
|
23
scumm.h
23
scumm.h
|
@ -29,6 +29,7 @@ struct Actor;
|
|||
typedef void (Scumm::*OpcodeProc)();
|
||||
|
||||
#define NUM_SCRIPT_SLOT 25
|
||||
#define NUM_ACTORS 13
|
||||
|
||||
#pragma START_PACK_STRUCTS
|
||||
|
||||
|
@ -289,6 +290,7 @@ enum ScummVars {
|
|||
};
|
||||
|
||||
enum ResTypes {
|
||||
rtFirst = 1,
|
||||
rtRoom = 1,
|
||||
rtScript = 2,
|
||||
rtCostume = 3,
|
||||
|
@ -305,6 +307,9 @@ enum ResTypes {
|
|||
rtMatrix = 14,
|
||||
rtBox = 15,
|
||||
rtObjectName = 16,
|
||||
rtLast = 16,
|
||||
|
||||
rtNumTypes = 17,
|
||||
|
||||
};
|
||||
|
||||
|
@ -759,14 +764,14 @@ struct Scumm {
|
|||
int16 _palManipCounter;
|
||||
|
||||
struct {
|
||||
byte mode[17];
|
||||
uint16 num[17];
|
||||
uint32 tags[17];
|
||||
const char *name[17];
|
||||
byte **address[17];
|
||||
byte *flags[17];
|
||||
byte *roomno[17];
|
||||
uint32 *roomoffs[17];
|
||||
byte mode[rtNumTypes];
|
||||
uint16 num[rtNumTypes];
|
||||
uint32 tags[rtNumTypes];
|
||||
const char *name[rtNumTypes];
|
||||
byte **address[rtNumTypes];
|
||||
byte *flags[rtNumTypes];
|
||||
byte *roomno[rtNumTypes];
|
||||
uint32 *roomoffs[rtNumTypes];
|
||||
} res;
|
||||
|
||||
struct {
|
||||
|
@ -784,7 +789,7 @@ struct Scumm {
|
|||
int16 x,y;
|
||||
} mouse;
|
||||
|
||||
Actor actor[13];
|
||||
Actor actor[NUM_ACTORS];
|
||||
|
||||
uint16 actorDrawBits[200];
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ void Scumm::scummInit() {
|
|||
setShake(0);
|
||||
setupCursor();
|
||||
|
||||
for (i=1,a=getFirstActor(); ++a,i<13; i++) {
|
||||
for (i=1,a=getFirstActor(); ++a,i<NUM_ACTORS; i++) {
|
||||
a->number = i;
|
||||
initActor(a, 1);
|
||||
}
|
||||
|
@ -287,7 +287,7 @@ int Scumm::scummLoop(int delta) {
|
|||
charset._hasMask = false;
|
||||
redrawVerbs();
|
||||
_fullRedraw = true;
|
||||
for (i=0,a=getFirstActor(); i<13; i++,a++)
|
||||
for (i=0,a=getFirstActor(); i<NUM_ACTORS; i++,a++)
|
||||
a->needRedraw = 1;
|
||||
}
|
||||
|
||||
|
@ -484,7 +484,7 @@ void Scumm::startScene(int room, Actor *a, int objectNr) {
|
|||
killScriptsAndResources();
|
||||
stopCycle(0);
|
||||
|
||||
for(i=1,at=getFirstActor(); ++at,i<13; i++) {
|
||||
for(i=1,at=getFirstActor(); ++at,i<NUM_ACTORS; i++) {
|
||||
if (at->visible)
|
||||
hideActor(at);
|
||||
}
|
||||
|
@ -836,7 +836,7 @@ void Scumm::convertKeysToClicks() {
|
|||
}
|
||||
|
||||
Actor *Scumm::derefActorSafe(int id, const char *errmsg) {
|
||||
if (id<1 || id>=13)
|
||||
if (id<1 || id>=NUM_ACTORS)
|
||||
error("Invalid actor %d in %s", id, errmsg);
|
||||
return derefActor(id);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue