TILE.C

/*========================================================================== 
*
* Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved.
* Copyright (C) 1994-1995 ATI Technologies Inc. All Rights Reserved.
*
* File:tile.c
* Content:tile loading and initialization functions
*
***************************************************************************/
#include "foxbear.h"

/*
* CreateTiles
*/
HBITMAPLIST *CreateTiles( HBITMAPLIST *phBitmapList, USHORT n )
{
HBITMAPLIST *hTileList;
USHORT i;

hTileList = CMemAlloc( n, sizeof (HBITMAPLIST) );

if( hTileList == NULL )
{
ErrorMessage( "hTileList in CreateTiles" );
}

for( i = 0; i < n; ++i )
{
hTileList[i].hBM = phBitmapList[i].hBM;
}
return hTileList;

} /* CreateTiles */

/*
* DestroyTiles
*/
BOOL DestroyTiles( HBITMAPLIST *phTileList )
{
MemFree( phTileList );

return TRUE;

} /* DestroyTiles */

/*
* getData
*/
LPSTR getData(LPSTR fileName)
{
LPSTR p = NULL;
HRSRChRes;

hRes = FindResource(NULL, fileName, RT_RCDATA);

if( hRes != NULL )
{
p = LockResource(LoadResource(NULL, hRes));
}

return p;

} /* getData */

/*
* CreatePosList
*/
HPOSLIST *CreatePosList( LPSTR fileName, USHORT width, USHORT height )
{
HPOSLIST*hPosList;
USHORTpos;
LPSTRp;

p = getData( fileName );

if( p == NULL )
{
ErrorMessage( "p in CreatePosList" );
}

hPosList = CMemAlloc( width * height, sizeof (USHORT) );

if( hPosList == NULL )
{
ErrorMessage( "posList in CreatePosList" );
}

for( pos = 0; pos < width * height; ++pos )
{
hPosList[pos] = (USHORT) getint(&p, 0) - 1;
}

return hPosList;

} /* CreatePosList */

/*
* CreateSurfaceList
*/
HSURFACELIST *CreateSurfaceList( LPSTR fileName, USHORT width, USHORT height )
{
HSURFACELIST*hSurfaceList;
USHORTpos;
USHORTvalue;
LPSTRp;

p = getData( fileName );

if( p == NULL )
{
ErrorMessage( "p in CreateSurfaceList" );
}

hSurfaceList = CMemAlloc( width * height, sizeof (HSURFACELIST) );

if( hSurfaceList == NULL )
{
ErrorMessage( "posList in CreateSurfaceList" );
}

for( pos = 0; pos < width * height; ++pos )
{
value = (USHORT) getint(&p, 0);

if( value == 0 )
{
hSurfaceList[pos] = FALSE;
}
else
{
hSurfaceList[pos] = TRUE;
}
}

return hSurfaceList;

} /* CreateSurfaceList */

/*
* DestoryPosList
*/
BOOL DestroyPosList ( HPOSLIST *posList )
{
if( posList == NULL )
{
ErrorMessage( "posList in DestroyPosList" );
}

MemFree( posList );
return TRUE;

} /* DestroyPosList */