1
This commit is contained in:
parent
47f7895977
commit
268e12d15a
3 changed files with 34 additions and 36 deletions
|
|
@ -269,7 +269,7 @@ DWORD CEtPackingFile::CalcChecksum( int nFileIndex )
|
|||
int i, nSize;
|
||||
DWORD dwChecksum = 0, *pdwBuffer;
|
||||
|
||||
// nSize를 4의 배수로 바꾼다..
|
||||
// nSize甫 4狼 硅荐肺 官槽促..
|
||||
nSize = m_vecPackingFileInfo[ nFileIndex ].dwCompressSize / 4;
|
||||
if( m_vecPackingFileInfo[ nFileIndex ].dwCompressSize % 4 )
|
||||
{
|
||||
|
|
@ -370,7 +370,7 @@ bool CEtPackingFile::OpenFileSystem(const char* strPath, bool bReadOnly /* = fal
|
|||
m_bIsReadOnly = bReadOnly;
|
||||
if( bReadOnly )
|
||||
{
|
||||
m_hFile = CreateFile(strPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, // 중복 Read 가능하게 수정.
|
||||
m_hFile = CreateFile(strPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, // 吝汗 Read 啊瓷窍霸 荐沥.
|
||||
FILE_ATTRIBUTE_NORMAL,NULL);
|
||||
}
|
||||
else
|
||||
|
|
@ -387,7 +387,7 @@ bool CEtPackingFile::OpenFileSystem(const char* strPath, bool bReadOnly /* = fal
|
|||
return false;
|
||||
}
|
||||
|
||||
// 파일 시스템 헤더를 로드한다.
|
||||
// 颇老 矫胶袍 庆歹甫 肺靛茄促.
|
||||
_Read( m_hFile, &m_PackingFileHeader, sizeof( SPackingFileHeader ) );
|
||||
if( ( m_PackingFileHeader.nVersion < PACKING_FILE_NOCHECKSUM_VERSION ) || ( m_PackingFileHeader.nVersion > PACKING_FILE_VERSION ) )
|
||||
{
|
||||
|
|
@ -395,10 +395,10 @@ bool CEtPackingFile::OpenFileSystem(const char* strPath, bool bReadOnly /* = fal
|
|||
return false;
|
||||
}
|
||||
|
||||
// 구버전 파일시스템에는 파일인포 옵셋이 안들어 있어서 파일끝에서 Seek으로 찾아야 한다.
|
||||
// 备滚傈 颇老矫胶袍俊绰 颇老牢器 可悸捞 救甸绢 乐绢辑 颇老场俊辑 Seek栏肺 茫酒具 茄促.
|
||||
if( m_PackingFileHeader.nVersion > PACKING_FILE_NOCHECKSUM_VERSION )
|
||||
{
|
||||
// bRequireHeaderWrite 값이 셋팅 돼 있으면 패치때 제대로 종료 안됐것임.. 잘못된 파일 시스템으로 인정..
|
||||
// bRequireHeaderWrite 蔼捞 悸泼 蹬 乐栏搁 菩摹锭 力措肺 辆丰 救灯巴烙.. 肋给等 颇老 矫胶袍栏肺 牢沥..
|
||||
if( m_PackingFileHeader.bRequireHeaderWrite == true )
|
||||
{
|
||||
//rlkt_pak
|
||||
|
|
@ -433,7 +433,7 @@ bool CEtPackingFile::OpenFileSystem(const char* strPath, bool bReadOnly /* = fal
|
|||
|
||||
GeneratePackingMap();
|
||||
|
||||
// 현재 디렉토리를 최상위 디렉토리로 바꾼다.
|
||||
// 泅犁 叼泛配府甫 弥惑困 叼泛配府肺 官槽促.
|
||||
ChangeDir("\\");
|
||||
|
||||
m_strPackingFileName = strPath;
|
||||
|
|
@ -455,14 +455,14 @@ bool CEtPackingFile::NewFileSystem(const char* strPath)
|
|||
return false;
|
||||
}
|
||||
|
||||
// 헤더 정보 만들기
|
||||
// 庆歹 沥焊 父甸扁
|
||||
memset( &m_PackingFileHeader, 0, sizeof( SPackingFileHeader ) );
|
||||
strcpy_s( m_PackingFileHeader.szHeaderString, 256, PACKING_FILE_STRING );
|
||||
m_PackingFileHeader.nVersion = PACKING_FILE_VERSION;
|
||||
m_PackingFileHeader.nFileCount = 0;
|
||||
m_PackingFileHeader.dwFileInfoOffset = PACKING_HEADER_RESERVED + sizeof( SPackingFileHeader );
|
||||
|
||||
// 헤더 기록
|
||||
// 庆歹 扁废
|
||||
if( _Write( m_hFile, &m_PackingFileHeader, sizeof( SPackingFileHeader ) ) == false )
|
||||
{
|
||||
return false;
|
||||
|
|
@ -627,24 +627,24 @@ CEtFileHandle *CEtPackingFile::OpenOnly( const char *strPath )
|
|||
|
||||
void CEtPackingFile::_Tokenize( const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters /* = " " */ )
|
||||
{
|
||||
// 맨 첫 글자가 구분자인 경우 무시
|
||||
// 盖 霉 臂磊啊 备盒磊牢 版快 公矫
|
||||
std::string::size_type lastPos = str.find_first_not_of( delimiters, 0 );
|
||||
// 구분자가 아닌 첫 글자를 찾는다
|
||||
// 备盒磊啊 酒囱 霉 臂磊甫 茫绰促
|
||||
std::string::size_type pos = str.find_first_of( delimiters, lastPos );
|
||||
|
||||
while( std::string::npos != pos || std::string::npos != lastPos )
|
||||
{
|
||||
// token을 찾았으니 vector에 추가한다
|
||||
// token阑 茫疽栏聪 vector俊 眠啊茄促
|
||||
tokens.push_back( str.substr( lastPos, pos - lastPos ) );
|
||||
// 구분자를 뛰어넘는다. "not_of"에 주의하라
|
||||
// 备盒磊甫 顿绢逞绰促. "not_of"俊 林狼窍扼
|
||||
lastPos = str.find_first_not_of( delimiters, pos );
|
||||
// 다음 구분자가 아닌 글자를 찾는다
|
||||
// 促澜 备盒磊啊 酒囱 臂磊甫 茫绰促
|
||||
pos = str.find_first_of( delimiters, lastPos );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// str 문자열 중에서 szOld 가 있으면 전부 szNew 로 변경한다.
|
||||
// str 巩磊凯 吝俊辑 szOld 啊 乐栏搁 傈何 szNew 肺 函版茄促.
|
||||
void CEtPackingFile::_AllReplace( std::string& str, std::string& szOld, std::string& szNew )
|
||||
{
|
||||
while (true)
|
||||
|
|
@ -801,7 +801,7 @@ bool CEtPackingFile::AddFile(const char* strPath)
|
|||
{
|
||||
if( m_hFile == INVALID_HANDLE_VALUE) return false;
|
||||
|
||||
// 추가할 실제 파일 로드
|
||||
// 眠啊且 角力 颇老 肺靛
|
||||
HANDLE hFile = INVALID_HANDLE_VALUE;
|
||||
|
||||
hFile = CreateFile( strPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL );
|
||||
|
|
@ -809,7 +809,7 @@ bool CEtPackingFile::AddFile(const char* strPath)
|
|||
if( hFile == INVALID_HANDLE_VALUE )
|
||||
return false;
|
||||
|
||||
// 파일 크기를 알아내서.
|
||||
// 颇老 农扁甫 舅酒郴辑.
|
||||
DWORD dwFileSize = GetFileSize(hFile, NULL);
|
||||
if( dwFileSize == INVALID_FILE_SIZE )
|
||||
{
|
||||
|
|
@ -853,7 +853,7 @@ bool CEtPackingFile::AddFile(const char* strName, char *pData, DWORD nSize)
|
|||
|
||||
if( g_bUseCompress )
|
||||
{
|
||||
// 압축한다.
|
||||
// 拘绵茄促.
|
||||
if(compress2( ( BYTE * )pDstData, (uLongf*)&lDstSize, ( BYTE * )pData, nSize, Z_BEST_SPEED) != Z_OK)
|
||||
{
|
||||
delete[] pDstData;
|
||||
|
|
@ -870,11 +870,11 @@ bool CEtPackingFile::AddFile(const char* strName, char *pData, DWORD nSize)
|
|||
|
||||
CopyMemory(&nSeedKey, pDstData, sizeof(DWORD));
|
||||
|
||||
// 적당한 시드 인덱스를 하나 골라서..
|
||||
// 利寸茄 矫靛 牢郸胶甫 窍唱 榜扼辑..
|
||||
DWORD nSeedCnt = nSeedKey%ET_SEED_CNT;
|
||||
DWORD nSeed = ET_ENCRYPT_SEED[nSeedCnt];
|
||||
|
||||
// 적당히.. XOR 로 변경하자 -_-
|
||||
// 利寸洒.. XOR 肺 函版窍磊 -_-
|
||||
_Encode( ( BYTE * )pDstData, lDstSize, nSeed );
|
||||
|
||||
char szName[ _MAX_PATH ];
|
||||
|
|
@ -903,7 +903,7 @@ bool CEtPackingFile::AddFile(const char* strName, char *pData, DWORD nSize)
|
|||
|
||||
_Seek( m_hFile, m_vecPackingFileInfo[ nFindEmptyIndex ].dwOffset, SEEK_SET );
|
||||
_Write( m_hFile, pDstData,lDstSize );
|
||||
// 파일 헤더 쓰는데 시간 많이 걸려서 표시만 해두고 CloseFileSystem()에서 헤더 한꺼번에 Write한다
|
||||
// 颇老 庆歹 静绰单 矫埃 腹捞 吧妨辑 钎矫父 秦滴绊 CloseFileSystem()俊辑 庆歹 茄波锅俊 Write茄促
|
||||
m_PackingFileHeader.bRequireHeaderWrite = true;
|
||||
m_PackingFileHeader.dwFileInfoOffset = ( DWORD )_Seek( m_hFile, 0, SEEK_CUR );
|
||||
}
|
||||
|
|
@ -979,7 +979,7 @@ int CEtPackingFile::ReservePatchFile( SPackingFileInfo *pFileInfo )
|
|||
PackingFileInfo.dwOffset = m_PackingFileHeader.dwFileInfoOffset;
|
||||
m_vecPackingFileInfo.push_back( PackingFileInfo );
|
||||
|
||||
// 예약만 걸고 헤더 Write는 예약이 다 끝난 후 패치 전 실행
|
||||
// 抗距父 吧绊 庆歹 Write绰 抗距捞 促 场抄 饶 菩摹 傈 角青
|
||||
m_PackingFileHeader.bRequireHeaderWrite = true;
|
||||
m_PackingFileHeader.dwFileInfoOffset += PackingFileInfo.dwCompressSize;
|
||||
|
||||
|
|
@ -1057,7 +1057,7 @@ bool CEtPackingFile::PatchFile( CEtFileHandle *pFileHandle )
|
|||
|
||||
_Seek( m_hFile, m_vecPackingFileInfo[ nFindEmptyIndex ].dwOffset, SEEK_SET );
|
||||
_Write( m_hFile, pFileHandle->m_pData, pFileHandle->m_FileInfo.dwCompressSize );
|
||||
// 파일 헤더 쓰는데 시간 많이 걸려서 표시만 해두고 CloseFileSystem()에서 헤더 한꺼번에 Write한다
|
||||
// 颇老 庆歹 静绰单 矫埃 腹捞 吧妨辑 钎矫父 秦滴绊 CloseFileSystem()俊辑 庆歹 茄波锅俊 Write茄促
|
||||
m_PackingFileHeader.bRequireHeaderWrite = true;
|
||||
m_PackingFileHeader.dwFileInfoOffset = ( DWORD )_Seek( m_hFile, 0, SEEK_CUR );
|
||||
}
|
||||
|
|
@ -1317,7 +1317,7 @@ bool CEtPackingFile::Patch( const char* strPatchPath, CPatchCallback* pCallpack,
|
|||
int j;
|
||||
for( j = 0; j < ( int )pvecSkipList->size(); j++ )
|
||||
{
|
||||
// 파일이름 앞에.. \ 붙어 있어서 그거 제외한 이름으로 비교해야 제대로 된다.
|
||||
// 颇老捞抚 菊俊.. \ 嘿绢 乐绢辑 弊芭 力寇茄 捞抚栏肺 厚背秦具 力措肺 等促.
|
||||
if( _stricmp( pPackingFileInfo->szFileName + 1, ( *pvecSkipList )[ j ].c_str() ) == 0 )
|
||||
{
|
||||
bSkip = true;
|
||||
|
|
@ -1455,15 +1455,13 @@ bool CEtFileSystem::AddPackingFile(const char* szPackingFileName, const char *sz
|
|||
return false;
|
||||
}
|
||||
|
||||
//TODO(Cussrro):돔놔栗都匡숭
|
||||
//TODO(Cussrro):导出资源文件
|
||||
//auto file_count = pPackingFile->GetFileCount();
|
||||
//for (int i = 0; i < file_count; i++)
|
||||
//{
|
||||
//for (int i = 0; i < file_count; i++) {
|
||||
// auto info = pPackingFile->GetFileInfo(i);
|
||||
// auto handle = pPackingFile->OpenFile(info->szFileName);
|
||||
// if (!info || !handle)
|
||||
// {
|
||||
// OutputDebugStringA("灌冷돕:");
|
||||
// if (!info || !handle) {
|
||||
// OutputDebugStringA("未找到:");
|
||||
// OutputDebugStringA(info->szFileName);
|
||||
// OutputDebugStringA("\n");
|
||||
// pPackingFile->CloseFile(handle);
|
||||
|
|
@ -1714,11 +1712,11 @@ void CEtFileSystem::FindFileListInFolder( const char *szFolderName, const char *
|
|||
}
|
||||
}
|
||||
|
||||
// 패킹파일 안에 있는 파일중에 \resource\ext로 시작하는 파일을 얻어오는 루틴인데,
|
||||
// 모든 파일을 다 뒤지기때문에, 매번 150ms의 딜레이가 생긴다.
|
||||
// 이게 점점 패킹파일안에 파일이 늘어나고, ext의 개수가 많아질수록 더 많은 수행시간이 필요하므로,
|
||||
// 이렇게 캐시를 둬서 얻어오는 형태로 하겠다.
|
||||
// 이렇게 하니 팩안쓰는 것과 비슷한 로딩속도를 보여준다.(TableDB로드 부분)
|
||||
// 菩欧颇老 救俊 乐绰 颇老吝俊 \resource\ext肺 矫累窍绰 颇老阑 掘绢坷绰 风凭牢单,
|
||||
// 葛电 颇老阑 促 第瘤扁锭巩俊, 概锅 150ms狼 掉饭捞啊 积变促.
|
||||
// 捞霸 痢痢 菩欧颇老救俊 颇老捞 疵绢唱绊, ext狼 俺荐啊 腹酒龙荐废 歹 腹篮 荐青矫埃捞 鞘夸窍骨肺,
|
||||
// 捞犯霸 某矫甫 抵辑 掘绢坷绰 屈怕肺 窍摆促.
|
||||
// 捞犯霸 窍聪 蒲救静绰 巴苞 厚搅茄 肺爹加档甫 焊咯霖促.(TableDB肺靛 何盒)
|
||||
m_szMapCacheFileListInFolder.insert( make_pair( strFolder, ResultArray ) );
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue