#ifndef __MAP_UNIT_CACHER_H__ #define __MAP_UNIT_CACHER_H__ //============================================================================================================================= /// MapUnitCacher /** @author Kim Min Wook < taiyo@webzen.co.kr > @since 2004. 1. 28 @remarks - ¸Ê À¯´Ö ( ¿ÀºêÁ§Æ®, Ç® µî)À» ·ÎµåÇÏ°í °´Ã¼ °ü¸®ÇÏ´Â ÀÛ¾÷ @note - Ç®¸¸ ó¸®. - */ //============================================================================================================================= #define MAP_GRASS_KEY_START 100000 #define MAP_SPEED_TREE_KEY_START 200000 #pragma once #include #include class CWzUnitDraw; class CWzUnit; class CDrawBase; class CWzArchive; class CWorldBase; class MapWzUnitDraw { public: enum eUNIT_TYPE { UT_OBJECT, UT_GRASS, }; MapWzUnitDraw() : pUnitDraw( NULL ), dwAttribute(0), wzId( 0 ) { } ~MapWzUnitDraw() {} DWORD dwUniqueID; WzVector wzRot; WzID wzId; DWORD dwAttribute; CWzUnitDraw * pUnitDraw; BYTE byAttr; //< Ç®¿¡¼­¸¸ »ç¿ë WzColor wzColor; //< À̵¿µÇ¾úÀ» ¶§¿¡´Â color¸¦ ¾÷µ¥ÀÌÆ® ÇØÁà¾ß ÇÑ´Ù. int iPhysicsType; }; class MapUnitCacher { enum { CHUNK_OBJECT = 0x1781, CHUNK_GRASS = 0x1783, }; class MapWzUnit { public: CWzUnit * m_pwzUnit; WzID m_wiID; int m_iPhysicsType; }; public: MapUnitCacher(); ~MapUnitCacher(); VOID Init( CDrawBase * pDraw); VOID LoadMapGrassUnit( VOID ); ///< Ç®Àº ½ºÅ©¸³Æ® ÆÄÀÏÀÌ Àü¿ªÀûÀÓ Çѹø¸¸ ·Îµù VOID LoadMapGrassUnitDraw( CWorldBase * pWorldBase ); VOID UnloadAll(); CWzUnit * GetMapUnit( WzID dwMapUnitID ); MapWzUnitDraw * GetMapUnitDraw( DWORD dwID ); VOID SetHide(BOOL bHide); VOID SetFirst(); MapWzUnitDraw * GetNext(); private: WzColor _getTerrainColor( CWorldBase * pWorldBase, WzVector * pWvPos ); DWORD m_dwUniqueID; util::SolarHashTable * m_pMapUnitDrawHashTable; ///< ¸Ê»ó¿¡ Á¸ÀçÇÏ´Â Ç® °´Ã¼ ( ·£´õ¸µ ´ë»ó °´Ã¼ hash ) util::SolarHashTable * m_pMapUnitHashTable; util::CMemoryPoolFactory * m_pWzUnitPool; CDrawBase * m_pDraw; }; #endif // __MAP_UNIT_CACHER_H__