- added range check for light sprites

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1143 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
lalien
2007-08-01 10:15:43 +00:00
parent b07d18f9f4
commit d5d3294024
+16 -5
View File
@@ -3048,9 +3048,9 @@ BOOLEAN LightSave(INT32 iLight, STR pFilename)
***************************************************************************************/ ***************************************************************************************/
INT32 LightLoad(STR pFilename) INT32 LightLoad(STR pFilename)
{ {
HWFILE hFile; HWFILE hFile;
LIGHT_NODE *pNewLight=NULL, *pLastLight=NULL; LIGHT_NODE *pNewLight=NULL, *pLastLight=NULL;
INT32 iLight; INT32 iLight;
if((iLight=LightGetFree())==(-1)) if((iLight=LightGetFree())==(-1))
return(-1); return(-1);
@@ -3198,7 +3198,7 @@ BOOLEAN LightSetColors(SGPPaletteEntry *pPal, UINT8 ubNumColors)
********************************************************************************/ ********************************************************************************/
INT32 LightSpriteGetFree(void) INT32 LightSpriteGetFree(void)
{ {
INT32 iCount; INT32 iCount;
for(iCount=0; iCount < MAX_LIGHT_SPRITES; iCount++) for(iCount=0; iCount < MAX_LIGHT_SPRITES; iCount++)
{ {
@@ -3218,11 +3218,12 @@ INT32 iCount;
********************************************************************************/ ********************************************************************************/
INT32 LightSpriteCreate(STR pName, UINT32 uiLightType) INT32 LightSpriteCreate(STR pName, UINT32 uiLightType)
{ {
INT32 iSprite; INT32 iSprite;
if((iSprite=LightSpriteGetFree())!=(-1)) if((iSprite=LightSpriteGetFree())!=(-1))
{ {
memset(&LightSprites[iSprite], 0, sizeof(LIGHT_SPRITE)); memset(&LightSprites[iSprite], 0, sizeof(LIGHT_SPRITE));
LightSprites[iSprite].iX=WORLD_COLS+1; LightSprites[iSprite].iX=WORLD_COLS+1;
LightSprites[iSprite].iY=WORLD_ROWS+1; LightSprites[iSprite].iY=WORLD_ROWS+1;
LightSprites[iSprite].iOldX=WORLD_COLS+1; LightSprites[iSprite].iOldX=WORLD_COLS+1;
@@ -3247,6 +3248,11 @@ INT32 iSprite;
********************************************************************************/ ********************************************************************************/
BOOLEAN LightSpriteFake(INT32 iSprite) BOOLEAN LightSpriteFake(INT32 iSprite)
{ {
if ( (iSprite >= MAX_LIGHT_SPRITES ) || (iSprite < 0) )
{
return FALSE;
}
if(LightSprites[iSprite].uiFlags&LIGHT_SPR_ACTIVE) if(LightSprites[iSprite].uiFlags&LIGHT_SPR_ACTIVE)
{ {
LightSprites[iSprite].uiFlags|=MERC_LIGHT; LightSprites[iSprite].uiFlags|=MERC_LIGHT;
@@ -3431,6 +3437,11 @@ BOOLEAN LightSpritePosition(INT32 iSprite, INT16 iX, INT16 iY)
********************************************************************************/ ********************************************************************************/
BOOLEAN LightSpriteRoofStatus(INT32 iSprite, BOOLEAN fOnRoof) BOOLEAN LightSpriteRoofStatus(INT32 iSprite, BOOLEAN fOnRoof)
{ {
if ( (iSprite >= MAX_LIGHT_SPRITES ) || (iSprite < 0) )
{
return FALSE;
}
if(fOnRoof && (LightSprites[iSprite].uiFlags&LIGHT_SPR_ONROOF)) if(fOnRoof && (LightSprites[iSprite].uiFlags&LIGHT_SPR_ONROOF))
return(FALSE); return(FALSE);