//============================================================================================================================= /// CAreaTileHelper /** @author Kim Ji Wan < kjws78@webzen.co.kr > @since 2007. 5. 23 @remarks - °ø°£»óÀÇ Å¸ÀÏÀ» ·Îµå,¼¼À̺ê @note - Ÿ¶ôÇÑ »ç¿øÀÇ ÁöÁø ±¸Çö¿¡ »ç¿ë ÁöÇüÀÇ ¹Ù¿îµù ¹Ú½º¿¡ ¼ÓÇÑ Å¸ÀÏÀ» ¿ÀºêÁ§Æ® À妽º¿Í ÇÔ²² ·Îµå,¼¼À̺ê ÇÑ´Ù. - */ //============================================================================================================================= #pragma once #include struct _AREA_TILE_INFO { INT iAreaID; WORD wNumberOfTiles; INT* piTileIndex; _AREA_TILE_INFO() : iAreaID(0), wNumberOfTiles(0), piTileIndex(NULL) {} }; class AREA_TILE_INFO : public _AREA_TILE_INFO { public: AREA_TILE_INFO() {} virtual ~AREA_TILE_INFO() { if( piTileIndex ) delete [] piTileIndex; } }; typedef util::SolarHashTable::iterator AREATILEINFO_ITERATOR; class CDiscAccess; class CAreaTileHelper { public: CAreaTileHelper(); ~CAreaTileHelper(); BOOL LoadAreaTile( TCHAR* szFileName, CDiscAccess* pDiscAccess = NULL ); BOOL SaveAreaTile( TCHAR* szFileName ); inline AREATILEINFO_ITERATOR Begin() { return m_pAreaTileInfoHashTable->begin(); } inline AREATILEINFO_ITERATOR End() { return m_pAreaTileInfoHashTable->end(); } inline void SetFirst() { m_pAreaTileInfoHashTable->SetFirst(); } inline AREA_TILE_INFO* GetNext() { return m_pAreaTileInfoHashTable->GetNext(); } inline AREA_TILE_INFO* GetAreaTileInfo( int iAreaID ) { return m_pAreaTileInfoHashTable->GetData( iAreaID ); } inline void AddAreaTileInfo(AREA_TILE_INFO* pInfo,DWORD dwKey) { m_pAreaTileInfoHashTable->Add( pInfo, dwKey); } inline DWORD GetTotalTileCount() { return m_TotalTileCount; } protected: util::SolarHashTable* m_pAreaTileInfoHashTable; DWORD m_TotalTileCount; };