home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / directx / foxbear / tile.c < prev    next >
C/C++ Source or Header  |  1997-07-14  |  3KB  |  153 lines

  1. /*==========================================================================
  2.  *
  3.  *  Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved.
  4.  *  Copyright (C) 1994-1995 ATI Technologies Inc. All Rights Reserved.
  5.  *
  6.  *  File:    tile.c
  7.  *  Content:    tile loading and initialization functions
  8.  *
  9.  ***************************************************************************/
  10. #include "foxbear.h"
  11.  
  12. /*
  13.  * CreateTiles
  14.  */
  15. HBITMAPLIST *CreateTiles( HBITMAPLIST *phBitmapList, USHORT n )
  16. {
  17.     HBITMAPLIST *hTileList;
  18.     USHORT     i;
  19.  
  20.     hTileList = CMemAlloc( n, sizeof (HBITMAPLIST) );
  21.  
  22.     if( hTileList == NULL )
  23.     {
  24.     ErrorMessage( "hTileList in CreateTiles" );
  25.     }
  26.  
  27.     for( i = 0; i < n; ++i )
  28.     {
  29.     hTileList[i].hBM = phBitmapList[i].hBM;
  30.     }
  31.     return hTileList;
  32.  
  33. } /* CreateTiles */
  34.  
  35. /*
  36.  * DestroyTiles
  37.  */
  38. BOOL DestroyTiles( HBITMAPLIST *phTileList )
  39. {
  40.     MemFree( phTileList );
  41.  
  42.     return TRUE;
  43.  
  44. } /* DestroyTiles */
  45.  
  46. /*
  47.  * getData
  48.  */
  49. LPSTR getData(LPSTR fileName)
  50. {
  51.     LPSTR       p = NULL;
  52.     HRSRC    hRes;
  53.  
  54.     hRes = FindResource(NULL, fileName, RT_RCDATA);
  55.  
  56.     if( hRes != NULL )
  57.     {
  58.         p = LockResource(LoadResource(NULL, hRes));
  59.     }
  60.  
  61.     return p;
  62.  
  63. } /* getData */
  64.  
  65. /*
  66.  * CreatePosList
  67.  */
  68. HPOSLIST *CreatePosList( LPSTR fileName, USHORT width, USHORT height )
  69. {
  70.     HPOSLIST    *hPosList;
  71.     USHORT    pos;
  72.     LPSTR    p;
  73.  
  74.     p = getData( fileName );
  75.  
  76.     if( p == NULL )
  77.     {
  78.     ErrorMessage( "p in CreatePosList" );
  79.     }
  80.  
  81.     hPosList = CMemAlloc( width * height, sizeof (USHORT) );
  82.  
  83.     if( hPosList == NULL )
  84.     {
  85.     ErrorMessage( "posList in CreatePosList" );
  86.     }
  87.  
  88.     for( pos = 0; pos < width * height; ++pos )
  89.     {
  90.     hPosList[pos] = (USHORT) getint(&p, 0) - 1;
  91.     }
  92.  
  93.     return hPosList;
  94.  
  95. } /* CreatePosList */
  96.  
  97. /*
  98.  * CreateSurfaceList
  99.  */
  100. HSURFACELIST *CreateSurfaceList( LPSTR fileName, USHORT width, USHORT height )
  101. {
  102.     HSURFACELIST    *hSurfaceList;
  103.     USHORT        pos;
  104.     USHORT        value;
  105.     LPSTR        p;
  106.  
  107.     p = getData( fileName );
  108.  
  109.     if( p == NULL )
  110.     {
  111.     ErrorMessage( "p in CreateSurfaceList" );
  112.     }
  113.  
  114.     hSurfaceList = CMemAlloc( width * height, sizeof (HSURFACELIST) );
  115.  
  116.     if( hSurfaceList == NULL )
  117.     {
  118.     ErrorMessage( "posList in CreateSurfaceList" );
  119.     }
  120.  
  121.     for( pos = 0; pos < width * height; ++pos )
  122.     {
  123.     value = (USHORT) getint(&p, 0);
  124.  
  125.     if( value == 0 )
  126.     {
  127.         hSurfaceList[pos] = FALSE;
  128.     }
  129.     else
  130.     {
  131.         hSurfaceList[pos] = TRUE;
  132.     }
  133.     }
  134.  
  135.     return hSurfaceList;
  136.  
  137. } /* CreateSurfaceList */
  138.  
  139. /*
  140.  * DestoryPosList
  141.  */
  142. BOOL DestroyPosList ( HPOSLIST *posList )
  143. {
  144.     if( posList == NULL )
  145.     {
  146.     ErrorMessage( "posList in DestroyPosList" );
  147.     }
  148.  
  149.     MemFree( posList );
  150.     return TRUE;
  151.  
  152. } /* DestroyPosList */
  153.