fix PSTN bug found in save 1299509 (hopefully won't break anything)

This commit is contained in:
jacob1 2013-08-29 20:59:37 -04:00
parent c3d3f9fc2a
commit b17ef7f938

View File

@ -167,7 +167,7 @@ int Element_PSTN::update(UPDATE_FUNC_ARGS)
//#TPT-Directive ElementHeader Element_PSTN static int CanMoveStack(Simulation * sim, int stackX, int stackY, int directionX, int directionY, int maxSize, int amount, bool retract, int block) //#TPT-Directive ElementHeader Element_PSTN static int CanMoveStack(Simulation * sim, int stackX, int stackY, int directionX, int directionY, int maxSize, int amount, bool retract, int block)
int Element_PSTN::CanMoveStack(Simulation * sim, int stackX, int stackY, int directionX, int directionY, int maxSize, int amount, bool retract, int block) int Element_PSTN::CanMoveStack(Simulation * sim, int stackX, int stackY, int directionX, int directionY, int maxSize, int amount, bool retract, int block)
{ {
int posX, posY, r, spaces = 0, currentPos = 0; int posX, posY, r, spaces = 0, currentPos = 0, num = 0;
if (amount <= 0) if (amount <= 0)
return 0; return 0;
for(posX = stackX, posY = stackY; currentPos < maxSize + amount && currentPos < XRES-1; posX += directionX, posY += directionY) { for(posX = stackX, posY = stackY; currentPos < maxSize + amount && currentPos < XRES-1; posX += directionX, posY += directionY) {
@ -176,7 +176,7 @@ int Element_PSTN::CanMoveStack(Simulation * sim, int stackX, int stackY, int dir
} }
r = sim->pmap[posY][posX]; r = sim->pmap[posY][posX];
if (sim->IsWallBlocking(posX, posY, 0) || (block && (r&0xFF) == block)) if (sim->IsWallBlocking(posX, posY, 0) || (block && (r&0xFF) == block))
return spaces; return num;
if(!r) { if(!r) {
spaces++; spaces++;
tempParts[currentPos++] = -1; tempParts[currentPos++] = -1;
@ -186,8 +186,9 @@ int Element_PSTN::CanMoveStack(Simulation * sim, int stackX, int stackY, int dir
if(spaces < maxSize && currentPos < maxSize && (!retract || ((r&0xFF) == PT_FRME) && posX == stackX && posY == stackY)) if(spaces < maxSize && currentPos < maxSize && (!retract || ((r&0xFF) == PT_FRME) && posX == stackX && posY == stackY))
tempParts[currentPos++] = r>>8; tempParts[currentPos++] = r>>8;
else else
return spaces; return num;
} }
num++;
} }
if (spaces) if (spaces)
return currentPos; return currentPos;