⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tilemanager.h

📁 墨香最新私服
💻 H
字号:
// TileManager.h: interface for the CTileManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TILEMANAGER_H__5FD3CE62_5211_46E8_9C7B_4B5CB5D006CA__INCLUDED_)
#define AFX_TILEMANAGER_H__5FD3CE62_5211_46E8_9C7B_4B5CB5D006CA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CObject;
class CTileGroup;
class CFixedTileInfo;

#define TILECOLLISON_DETAIL		50.f	// Á¤È®µµ.. ÀÛ°Ô ÇÒ¼ö·Ï ´À¸®Áö¸¸ Á¤È®ÇÑ Ã¼Å©¸¦ ÇÒ¼ö ÀÖµû
#define MAX_ObjectSize 3

/*
enum
{
	eDIR_North = 0,
	eDIR_East,
	eDIR_South,
	eDIR_West,

	eDIR_Max,
};*/


class CTileManager  
{
//protected:
/*
	int m_nTileWidth;
	int m_nTileHeight;
	
	CTile* m_pTile;


	CTile* GetTile(TILEINDEX* pTileIndex);
	CTile* GetTile(float fx, float fz);
	CTile* GetTile(int fx, int fz);
	*/

//	TILEINDEX GetTileIndex(float fx, float fz);
	
//	TILEINDEX m_AddPos[eDIR_Max][MAX_ADDPos];
//	float m_AddDistance[MAX_ADDPos];

//	TILEINDEX **m_ppObjectSizeRegion;


	CYHHashTable<CTileGroup> m_TileGroupTable;
	CYHHashTable<CFixedTileInfo> m_FixedTileInfoTable;

public:
	CTileManager();
	virtual ~CTileManager();
	BOOL LoadFixedTileInfo(MAPTYPE MapNum, char* pMapFile);
	void ReadMapFile(MAPTYPE MapNum, char* filename);
	BOOL CollisionCheck(VECTOR3* pStart,VECTOR3* pEnd,VECTOR3* pRtCollisonPos,CObject* pObject);		// Ãæµ¹Çϸé TRUE¹ÝȯÇϰí pRtCollisonPos¿¡ »õ·Î¿î Ÿ°Ù ¼³Á¤

	void AddObject(CObject* pObject);
	void RemoveObject(CObject* pObject);

	BOOL IsPreoccupied(CObject* pObject,VECTOR3* pPos);
//	BOOL IsPreoccupied(int size,TILEINDEX* pCenterTile,CObject* pObject = NULL);

	int GetPreoccupiedNum(CObject* pObject,VECTOR3* pPos);

	BOOL Preoccupy(CObject* pObject,VECTOR3* pPos);
	VECTOR3 GetNextCloserPos(CObject* pObject,VECTOR3* pTargetPos,VECTOR3* pCurPos,float closestDist, float limitDist);
	
	void AddTileAttrByAreaData(CObject* pObject,VECTOR3* pPos,AREATILE areatile);
	void RemoveTileAttrByAreaData(CObject* pObject,VECTOR3* pPos,AREATILE areatile);
	
	CFixedTileInfo* GetFixedTileInfo(MAPTYPE MapNum);
	CFixedTileInfo* GetFixedTileInfo(CObject* pObject);

	CTileGroup* GetTileGroup(CObject * pObject);
	CTileGroup* GetTileGroup(DWORD TileGroupID);

	BOOL CreateTileGroup(DWORD TileGroupID, MAPTYPE MapNum, float fStartX, float fStartZ, float fWidth, float fHeight);
	void DeleteTileGroup(DWORD TileGroupID);
	
	int GetTileWidth(MAPTYPE MapNum);

	BOOL IsInTile(int cellX, int cellY, CObject* pObject);
	BOOL CollisionTileWithTileIndex( int x, int y, CObject* pObject);
	BOOL CollisionTileWithTileIndex( int x, int y, MAPTYPE MapNum);
	BOOL CollisionTileWithPosition( float fx, float fy, CObject* pObject);
	BOOL CollisionTileWithPosition( float fx, float fy, MAPTYPE MapNum);

	BOOL CollisionLine(VECTOR3* pStart,VECTOR3* pEnd, VECTOR3 * Target, CObject* pObject);
};

#endif // !defined(AFX_TILEMANAGER_H__5FD3CE62_5211_46E8_9C7B_4B5CB5D006CA__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -