#include "StdAfx.h" #include #include #include #include "AreaTileLoadHelper.h" #include "Define.h" //---------------------------------------------------------------------------- /** */ CAreaTileHelper::CAreaTileHelper() { m_pAreaTileInfoHashTable = new util::SolarHashTable; m_pAreaTileInfoHashTable->Initialize( 100 ); m_TotalTileCount = 0; } //---------------------------------------------------------------------------- /** */ CAreaTileHelper::~CAreaTileHelper() { if (m_pAreaTileInfoHashTable) { m_pAreaTileInfoHashTable->SetFirst(); while (AREA_TILE_INFO* tile_info = m_pAreaTileInfoHashTable->GetNext()) { SAFE_DELETE(tile_info); } m_pAreaTileInfoHashTable->RemoveAll(); SAFE_DELETE(m_pAreaTileInfoHashTable); } m_TotalTileCount = 0; } //---------------------------------------------------------------------------- /** */ BOOL CAreaTileHelper::SaveAreaTile( TCHAR* szFileName ) { CWzArchive saveArchive; if(!saveArchive.SaveFile(szFileName)) { return FALSE; } DWORD dwVersion = VERSION_AREA_TILE; saveArchive << dwVersion; int iAreaNum=m_pAreaTileInfoHashTable->GetDataNum(); (saveArchive) << iAreaNum; //°ø°£ °¹¼ö m_pAreaTileInfoHashTable->SetFirst(); while (AREA_TILE_INFO* area_info = m_pAreaTileInfoHashTable->GetNext()) { saveArchive << area_info->iAreaID; //°ø°£ ¹øÈ£ saveArchive << area_info->wNumberOfTiles; //ŸÀÏ °¹¼ö for (int i = 0; i < area_info->wNumberOfTiles; ++i) { saveArchive << area_info->piTileIndex[i]; //ŸÀÏ À妽º } } saveArchive.Close(); return TRUE; } //---------------------------------------------------------------------------- /** */ BOOL CAreaTileHelper::LoadAreaTile( TCHAR* szFileName, CDiscAccess* pDiscAccess ) { DWORD dwVersion; int iAreaNum; CWzArchive loadArchive; if( pDiscAccess != NULL ) { loadArchive.SetDiscAccess( pDiscAccess ); } if( !loadArchive.LoadFile( szFileName)) return FALSE; loadArchive >> dwVersion; loadArchive >> iAreaNum; //°ø°£ °¹¼ö for(int i=0;i>pAreaInfo->iAreaID; //°ø°£ ¹øÈ£ loadArchive >>pAreaInfo->wNumberOfTiles; //ŸÀÏ °¹¼ö pAreaInfo->piTileIndex = new int[pAreaInfo->wNumberOfTiles]; for(int j=0;jwNumberOfTiles;j++) { loadArchive >>pAreaInfo->piTileIndex[j]; //ŸÀÏ À妽º } m_TotalTileCount += pAreaInfo->wNumberOfTiles; m_pAreaTileInfoHashTable->Add( pAreaInfo, pAreaInfo->iAreaID ); } loadArchive.Close(); return TRUE; } /* BOOL Map::LoadMapWAT(CAreaTileHelper * pAreaTileLoadHelper) { char szBufStr[_MAX_PATH] = { 0, }; char szDrive[_MAX_PATH] = { 0, }; char szDir[_MAX_PATH] = { 0, }; char szFName[_MAX_FNAME] = { 0, }; char szExt[_MAX_EXT] = { 0, }; char szWATFileName[MAX_PATH]= { 0, }; _splitpath(GetFullFileName(), szDrive, szDir, NULL, NULL); ZeroMemory(m_szFilePath,sizeof(m_szFilePath)); if (szDrive[0] == 0) { _stprintf(m_szFilePath,_T("%s"),szDir); } else { _stprintf(m_szFilePath,_T("%s\\%s"),szDrive,szDir); } StrCopy(szWATFileName, m_szFullFileName); szWATFileName[strlen(m_szFullFileName)- 3] = 0; strcat(szWATFileName, "wat"); CDiscAccess discAcess;//ÆÄÀÏÀÌ ÀÖ³ª °Ë»ç DA_FILE dfFile=discAcess.OpenFile(EDI_ACTIVE, szWATFileName, DA_READ, DA_READ, SM_READ | SM_WRITE , OD_OPEN_EXISTING); if ( INVALID_DA_FILE == dfFile) { return FALSE; } discAcess.CloseFile( dfFile); return pAreaTileLoadHelper->LoadAreaTile(szWATFileName); } */