DXMap.h
上传用户:wymy58
上传日期:2007-01-07
资源大小:2086k
文件大小:4k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // Copyright (C) 1998-1999 DXGuide.  All Rights Reserved.
  2. // File: DXMap.h
  3. #ifndef _DXMAP__H
  4. #define _DXMAP__H
  5. #if _MSC_VER >= 1000
  6. #pragma once
  7. #endif // _MSC_VER >= 1000
  8. class CDDDevice;
  9. class CDDSurface;
  10. class CPackFileManager;
  11. class CDXMap
  12. {
  13. public:
  14. CDXMap(void);
  15. virtual ~CDXMap();
  16. public:
  17. bool Create(CDDSurface*  pTiles,
  18. int  nCellWidthShift, int  nCellHeightShift,
  19. int  nCellColumns, int  nCellRows, int  nFill,
  20. LPRECT  lprcDest);
  21. bool Create(CDDSurface*  pTiles,
  22. int  nCellWidthShift, int  nCellHeightShift,
  23. LPCTSTR  lpszFileName, CDDDevice*  pDDDevice,
  24. CPackFileManager*  pPackFileManager = NULL);
  25. bool Create(CDDSurface*  pTiles,
  26. int  nCellWidthShift, int  nCellHeightShift,
  27. LPCTSTR  lpszFileName,
  28. LPRECT  lprcDest,
  29. CPackFileManager*  pPackFileManager = NULL);
  30. bool Create(CDDDevice*  pDDDevice,
  31. LPCTSTR  lpszFileName,
  32. LPRECT  lprcDest,
  33. CPackFileManager*  pPackFileManager = NULL,
  34. bool  bTrans = false);
  35. public:
  36. void SetPassValues(int*  pPassValues);
  37. protected:
  38. bool Create(CDDSurface*  pTiles,
  39. int  nCellWidthShift, int  nCellHeightShift,
  40. int  nCellColumns, int  nCellRows,
  41. int* pMapData,
  42. LPRECT  lprcDest);
  43. public:
  44. void Draw(CDDSurface*  pDestSurface,
  45. LPCRECT  lprcClip = NULL);
  46. void MoveTo(int  nPosX, int  nPosY);
  47. void ScrollUp(int  nOffset);
  48. void ScrollDown(int  nOffset);
  49. void ScrollLeft(int  nOffset);
  50. void ScrollRight(int  nOffset);
  51. void ScrollX(int  nOffset);
  52. void ScrollY(int  nOffset);
  53. void WrapScrollUp(int  nOffset);
  54. void WrapScrollDown(int  nOffset);
  55. void WrapScrollLeft(int  nOffset);
  56. void WrapScrollRight(int  nOffset);
  57. public:
  58. bool Save(LPCTSTR  lpszFileName);
  59. bool SaveMixed(LPCTSTR  lpszFileName);
  60. void Clear(void);
  61. void Fill(int  nTileNum);
  62. int GetTile(int  nMapCol, int  nMapRow) const;
  63. int GetTile(int  nIndex) const;
  64. int GetIndexFromPoint(int  nX, int  nY) const;
  65. int GetTileFromPoint(int  nX, int  nY) const;
  66. void CalcScreenPoint(int  nMapCol, int  nMapRow, int&  nX, int&  nY);
  67. int GetTilePassValue(int  nMapCol, int  nMapRow) const;
  68. int GetTilePassValue(int  nIndex) const;
  69. int GetPointPassValue(int  nX, int  nY) const;
  70. void SetTile(int  nMapCol, int  nMapRow, int  nTile);
  71. void SetTile(int  nIndex, int  nTile);
  72. int GetX(void) const;
  73. int GetY(void) const;
  74. int GetCellWidth(void) const;
  75. int GetCellHeight(void) const;
  76. int GetHoriCellNum(void) const;
  77. int GetVertCellNum(void) const;
  78. int GetTotalWidth(void) const;
  79. int GetTotalHeight(void) const;
  80. protected:
  81. void BltTile(CDDSurface*  pDestSurface,
  82. int  nDestX, int  nDestY,
  83. int  nWidth, int  nHeight);
  84. int GetTotalTileTypes(void) const;
  85. protected:
  86. int m_nTotalWidth;
  87. int m_nTotalHeight;
  88. int* m_pPassValues;
  89. protected:
  90. int m_nPosX;
  91. int m_nPosY;
  92. RECT m_rcDest;
  93. int m_nColumns;
  94. int m_nRows;
  95. int m_nCellWidth;
  96. int m_nCellHeight;
  97. int m_nCellWidthShift;
  98. int m_nCellHeightShift;
  99. int m_nSrcSurfaceCellRows;
  100. int* m_pMapData;
  101. bool m_bAutoDelete;
  102. CDDSurface* m_pTiles;
  103. protected:
  104. static const LPCTSTR m_lpcszMapFileSectionName;
  105. static const LPCTSTR m_lpcszMapNameEntryName;
  106. static const LPCTSTR m_lpcszMapWidthEntryName;
  107. static const LPCTSTR m_lpcszMapHeightEntryName;
  108. static const LPCTSTR m_lpcszTilesFileNameEntryName;
  109. static const LPCTSTR m_lpcszTileWidthShiftEntryName;
  110. static const LPCTSTR m_lpcszTileHeightShiftEntryName;
  111. static const LPCTSTR m_lpcszMapDataSectionName;
  112. static const LPCTSTR m_lpcszDataEntryFmt;
  113. static const LPCTSTR m_lpcszTilePassValueSectionName;
  114. static const LPCTSTR m_lpcszPassValueEntryFmt;
  115. };
  116. #include "DXMap.inl"
  117. #endif // _DXMAP__H