mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
- 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:
+16
-5
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user