DXIsoMap.h
上传用户:pfmy85
上传日期:2007-01-07
资源大小:22k
文件大小:3k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // DXIsoMap.h: interface for the CDXIsoMap class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_DXISOMAP_H__8CA0F312_2B07_11D3_9B58_0080C8E05391__INCLUDED_)
  5. #define AFX_DXISOMAP_H__8CA0F312_2B07_11D3_9B58_0080C8E05391__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "IsoType.h"
  10. class CDDDevice;
  11. class CDDSurface;
  12. class CPackFileManager;
  13. struct TILE
  14. {
  15.     BYTE    index;
  16.     BYTE    flag;
  17. };
  18. struct CELL
  19. {
  20.     TILE    base;
  21.     TILE    fringe;
  22. };
  23. class CDXIsoMap  
  24. {
  25. public:
  26. CDXIsoMap();
  27. virtual ~CDXIsoMap();
  28. public:
  29. bool Create(CDDSurface*  pTiles,
  30. int  nCellColumns, int  nCellRows, int  nFill);
  31. bool Create(CDDSurface* pTiles,
  32. LPCTSTR lpszFileName,
  33. CPackFileManager* pPackFileManager = NULL);
  34. bool Save(LPCTSTR lpszFileName);
  35. protected:
  36. bool Create(CDDSurface*  pTiles,
  37. int nCellColumns, int  nCellRows,
  38. CELL* pMapData);
  39. public:
  40. void SetViewRect(LPRECT lprcView);
  41. void Draw(CDDSurface*  pDestSurface, LPRECT lprcDest=NULL);
  42. void MoveTo(int nPosX, int nPosY);
  43. void ScrollX(int nOffset);
  44. void ScrollY(int nOffset);
  45. void Scroll(DIRECTION eDir);
  46. void AbsoluteCell(int nPixelX, int nPixelY,
  47. int &nCellX, int &nCellY, BOOL bAbsolutePixel = TRUE);
  48. void Cell2Pixel(int nCellX, int nCellY,
  49.    int &nPixelX, int &nPixelY,
  50.    BOOL bAbsolute=TRUE);
  51. CELL* GetCell(int nTx, int nTy);
  52. void NextCell(int &x, int &y, int nDirection);
  53. void DrawColAbove(CDDSurface *pDest, int nX, int nY);
  54. void DrawAbove(CDDSurface *pDest, int nX, int nY);
  55. protected:
  56. void BltTile(CDDSurface*  pDestSurface,
  57. int nDestX, int nDestY, CELL* pCell);
  58. void BltTileAbove(CDDSurface*  pDestSurface,
  59. int nDestX, int nDestY, CELL* pCell, int nHeight);
  60. protected:
  61. int m_nTotalWidth;
  62. int m_nTotalHeight;
  63. int* m_pPassValues;
  64. static const CHAR m_CellFigue[16][32];
  65. public:
  66. static const int m_nCellWidth; // Width of tile in pixel
  67. static const int m_nCellHeight; // Height of tile in pixel
  68. static const int m_nCellWidthShift; // Width shift of tile in pixel
  69. static const int m_nCellHeightShift; // Height shift of tile in pixel
  70.     static const BYTE m_CellIdxFlg; // Hight tile index bit
  71.     static const BYTE m_CellRmrFlg; // Remora
  72.     static const BYTE m_CellNpcFlg; // Npc locate here
  73.     static const BYTE m_CellLnkFlg; // Link to other world
  74. protected:
  75. int m_nPosTX; // Current absolute tile position of the screen's
  76. int m_nPosTY; // origin(top-left), in tile map
  77. int m_nPosX; // Current absolute pixel position of the screen's
  78. int m_nPosY; // origin(top-left) in map
  79. int m_nOffX; // Offset from top-left of the tile,
  80. int m_nOffY; // in witch screen's origin locate
  81. RECT m_rcDest; // Clip rect
  82. int m_nColumns; // Columns of map in tile
  83. int m_nRows; // Rows of map in tile
  84. int m_nSrcSurfaceCellRows; // Tile source surface's width in tile
  85. CELL* m_pMapData;
  86. bool m_bAutoDelete;
  87. CDDSurface* m_pTiles;
  88. };
  89. #endif // !defined(AFX_DXISOMAP_H__8CA0F312_2B07_11D3_9B58_0080C8E05391__INCLUDED_)