DataHandler.h
上传用户:tt_chan
上传日期:2009-12-03
资源大小:4523k
文件大小:2k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #pragma once
  2. #pragma pack(1)
  3. typedef struct tagMAPFILEHEADER
  4. {
  5. CHAR szDesc[20];
  6. SHORT shVer;
  7. SHORT shWidth;
  8. SHORT shHeight;
  9. CHAR cEventFileIdx;
  10. CHAR cFogColor;
  11. }MAPFILEHEADER, *LPMAPFILEHEADER;
  12. typedef struct tagTILEINFO
  13. {
  14. CHAR cFileIdx;
  15. SHORT shTileIdx;
  16. }TILEINFO, *LPTILEINFO;
  17. typedef struct tagCELLINFO
  18. {
  19. CHAR cFlag;
  20. BYTE bObj1Ani;
  21. BYTE bObj2Ani;
  22. CHAR cFileIdx;
  23. SHORT shObj1;
  24. SHORT shObj2;
  25. SHORT shLigntNEvent;
  26. }CELLINFO, *LPCELLINFO;
  27. #pragma pack(8)
  28. #define OS_MOVINGOBJECT 1
  29. #define OS_ITEMOBJECT 2
  30. #define OS_EVENTOBJECT 3
  31. #define OS_GATEOBJECT 4
  32. #define OS_SWITCHOBJECT 5
  33. #define OS_MAPEVENT 6
  34. #define OS_DOOR 7
  35. #define OS_ROON 8
  36. typedef struct tag_TOSOBJECT
  37. {
  38. BYTE btType;
  39. VOID *pObject;
  40. DWORD dwAddTime;
  41. } _TOSOBJECT, *_LPTOSOBJECT;
  42. class CMapCellInfo
  43. {
  44. public:
  45. // CRITICAL_SECTION m_cs;
  46. CHAR m_chFlag;
  47. SHORT m_sLightNEvent;
  48. CWHList<_LPTOSOBJECT>* m_xpObjectList;
  49. CMapCellInfo();
  50. ~CMapCellInfo();
  51. };
  52. class CMirMap
  53. {
  54. public:
  55. MAPFILEHEADER m_stMapFH;
  56. CMapCellInfo* m_pMapCellInfo;
  57. char m_szMapName[16];
  58. char m_szMapTextName[40];
  59. BYTE m_btSeries; // 瘤开 盔家 加己
  60. BYTE m_btSeriesVal; // 瘤开 盔家 加己蔼
  61. public:
  62. CMirMap();
  63. ~CMirMap();
  64. BOOL LoadMapData(char *pszName);
  65. VOID FreeMapData();
  66. BOOL CanMove(int nX, int nY, int nFlag = FALSE);
  67. BOOL CanSafeWalk(int nX, int nY);
  68. BOOL MoveToMovingObject(int nX, int nY, int nTargetX, int nTargetY, CCharObject* pObject);
  69. BOOL RemoveObject(int nX, int nY, BYTE btType, VOID* pRemoveObject);
  70. BOOL AddNewObject(int nX, int nY, BYTE btType, VOID* pAddObject);
  71. CEvent* GetEvent(int nX, int nY);
  72. CMapItem* GetItem(int nX, int nY);
  73. CCharObject* GetObject(int nX, int nY);
  74. void GetMapObject(int nX, int nY, int nArea, CWHList<CCharObject*>* pList);
  75. void GetAllObject(int nX, int nY, CWHList<CCharObject*>* pList);
  76. int GetDupCount(int nX, int nY);
  77. BOOL GetDropPosition(int nOrgX, int nOrgY, int nRange, int &nX, int &nY);
  78. int CheckDoorEvent(int nX, int nY, int &nEvent);
  79. int CheckEvent(int nX, int nY);
  80. BOOL IsValidObject(int nX, int nY, int nCheckRange, CCharObject* pCharObject);
  81. __inline CMapCellInfo* GetMapCellInfo(int nX, int nY) 
  82. if ((nX >= 0 && nX < m_stMapFH.shWidth) && (nY >= 0 && nY < m_stMapFH.shHeight)) 
  83. return &m_pMapCellInfo[nX * m_stMapFH.shHeight + nY]; 
  84. return NULL; 
  85. }
  86. };