📄 autopatchdlg.cpp
字号:
///////////////////////////////////////////////////// SC_DOWNLOAD_ZIP
fd_zip.pvExcuteContext = (PVOID) FM_DOWNLOAD;
fd_zip.bResume = TRUE;
lstrcpy( fd_zip.szRemoteFile, ld_zip.pszSearchFile);
lstrcpy( fd_zip.szLocalFile, g_szCorumpatchFile);
// CorumFile阑 促款肺靛 茄促.
iR = g_pFtp->DownloadFile( g_hSession, &fd_zip);
_ASSERTE( iR == 0);
}
void OnDownLoad(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
File_data* pfd = (File_data*)pvdata;
if( pfd->CompletionError == CE_DOWNLOAD_PROGRESS ) // ZIP 颇老 傈价 柳青惑炔篮 包缴 乐促.
{
DWORD dwCurrentSize = pfd->dwTransferBytes;
dwProLv = DWORD(PRO_RANGE_DN * ((float)(dwCurrentSize) / (float)(dwFileSizeMax)) );
SendMessage( hPro_DN, PBM_SETPOS, dwProLv, 0);
SetDlgItemInt( hDlg, IDC_STATIC_DN1, dwCurrentSize / 1024, FALSE );
}
if( pfd->CompletionError == CE_SUCCEED )
{
DWORD dwCurrentSize = pfd->dwTransferBytes;
dwProLv = DWORD(PRO_RANGE_DN * ((float)(dwCurrentSize) / (float)(dwCurrentSize)) );
SendMessage( hPro_DN, PBM_SETPOS, dwProLv, 0);
SetDlgItemInt( hDlg, IDC_STATIC_DN1, dwCurrentSize / 1024, FALSE );
hWnd = GetDlgItem( hDlg, IDC_B_CANCEL);
EnableWindow( hWnd, FALSE);
g_pFtp->Shutdown(g_hSession);
//
Update_AS( hDlg, g_sz_Extract);
// 促款肺靛 促捞倔肺弊 能飘费 HIDE.
UpdateDialog_DownLoad( hDlg, FALSE );
//
// 拘绵阑 钱磊.
bReturn = Extract_DownloadFile( hDlg, g_szCorumpatchFile );
if( !bReturn )
{
// 拘绵 钱扁 角菩.
MessageBox_Error ("Fail To Extract");
EndDialog( hDlg, 1 );
return;
}
// yh
// 颇老阑 菩虐隆茄促.
if(g_bUsingEnginePack)
{
StartPack3DData(hDlg);
}
else
{
bReturn = UpdateVersionInfoFile( CORUM_VERSION_INFO_FILE, newverFilename);
// New Version 免仿.
GetVersionInfoFile( CORUM_VERSION_INFO_FILE, szVersion);
szVersion[VERSION_TOTAL_LENGTH] = NULL;
SetDlgItemText( hDlg, IDC_STATIC_VER2, szVersion);
//
Update_AS( hDlg, g_sz_Completed);
// jsd
// resource 弃歹狼 filelist历厘
SaveFileList();
//
bReturn = RunCorum();
if( !bReturn )
MessageBox_Error ("Fail To Run Client");
EndDialog( hDlg, 1 );
}
}
}
void OnRunProgram(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
bReturn = UpdateVersionInfoFile( CORUM_VERSION_INFO_FILE, newverFilename);
// New Version 免仿.
GetVersionInfoFile( CORUM_VERSION_INFO_FILE, szVersion);
szVersion[VERSION_TOTAL_LENGTH] = NULL;
SetDlgItemText( hDlg, IDC_STATIC_VER2, szVersion);
Update_AS( hDlg, g_sz_Completed);
// jsd
// resource 弃歹狼 filelist历厘
SaveFileList();
//
bReturn = RunCorum();
if( !bReturn )
{
MessageBox_Error ("Fail To Run Client");
}
EndDialog( hDlg, 1 );
}
/*
void OnTimer(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
//
if( dwSession != (DWORD)wParam )
return;
// 乞闭 傈价伏. ( /sec )
DWORD dwCurrentTotal;
DWORD dwTranserPerSec;
DWORD dwRemained;
DWORD dwLargeValue;
dwCurrentTotal = Fd.dwReceived_CurrentTotal;
dwTranserPerSec = ((float)dwCurrentTotal / 1024) / (((float)((DWORD)lParam + 1)) * ((float)TIME_INTERVAL/1000));
SetDlgItemInt( hDlg, IDC_STATIC_DN5, dwTranserPerSec, FALSE );
if( dwCurrentTotal == 0 )
return;
dwRemained = (((float)Ff.dwFileSize / 1024) - ((float)dwCurrentTotal / 1024)) / dwTranserPerSec;
if( dwRemained < (60 * 60) )
{
if( dwRtStatus != 1)
{
SetDlgItemText( hDlg, IDC_STATIC_DN8, (LPCTSTR)"min" );
SetDlgItemText( hDlg, IDC_STATIC_DN10, (LPCTSTR)"sec" );
dwRtStatus = 1;
}
dwLargeValue = dwRemained / 60;
SetDlgItemInt( hDlg, IDC_STATIC_DN7, dwLargeValue, FALSE );
SetDlgItemInt( hDlg, IDC_STATIC_DN9, dwRemained - (dwLargeValue * 60), FALSE );
return;
}
if( dwRemained < (60 * 60 * 99) )
{
if( dwRtStatus != 2)
{
SetDlgItemText( hDlg, IDC_STATIC_DN8, (LPCTSTR)"hour" );
SetDlgItemText( hDlg, IDC_STATIC_DN10, (LPCTSTR)"min" );
dwRtStatus = 2;
}
dwLargeValue = dwRemained / (60 * 60);
SetDlgItemInt( hDlg, IDC_STATIC_DN7, dwLargeValue, FALSE );
SetDlgItemInt( hDlg, IDC_STATIC_DN9, (dwRemained / 60) - (dwLargeValue * 60), FALSE );
return;
}
}
*/
void OnConfirm(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
File_data* pfd = (File_data*)pvdata;
if( pfd->CompletionError == CE_DOWNLOAD_PROGRESS )
{
return;
}
if( pfd->CompletionError != CE_SUCCEED )
return;
FILE* fpnew = fopen(newverFilename,"r");
FILE* fpown = fopen(CORUM_VERSION_INFO_FILE,"r");
if(fpnew == NULL || fpown == NULL)
{
MessageBox_Error ("Fail to Check New Version");
EndDialog( hDlg, 1);
if(fpnew)
fclose(fpnew);
if(fpown)
fclose(fpown);
return;
}
char temp1[256],temp2[256];
fscanf(fpnew,"%s",temp1);
fscanf(fpown,"%s",temp2);
fclose(fpnew);
fclose(fpown);
DeleteFile(newverFilename);
if(strcmp(temp1,temp2) == 0) // 弥脚滚怜牢啊?
{
Update_AS( hDlg, g_sz_Completed);
//
SetDlgItemText( hDlg, IDC_STATIC_VER2, "None");
g_pFtp->Shutdown(g_hSession);
bReturn = RunCorum();
if( !bReturn )
{
// 内冯 备悼 角菩.
MessageBox_Error ("Fail to Run Client.");
}
// 橇肺弊伐 辆丰.
EndDialog( hDlg, 1);
return;
}
else
{ // 备滚怜, 啊厘 烤朝 滚怜阑 罐绰促.
///////////////////////////////////////////////////// SC_DOWNLOAD_ZIP
memcpy(g_szOldestFile,temp2,VERSION_HEADER_TEXT_LENGTH);
sprintf(&g_szOldestFile[VERSION_HEADER_TEXT_LENGTH],"00000000.zip");
///////////////////////////////////////////////////// FM_GETFILELIST
ld_zip.pvExcuteContext = (PVOID) FM_GETFILELIST;
ld_zip.dwFileMax = FIND_DATA_MAX;
ld_zip.pFile = pwfd;
ld_zip.pszSearchFile = g_szOldestFile;
iR = g_pFtp->GetList( g_hSession, &ld_zip);
_ASSERTE( iR == 0);
}
}
BOOL InitEngine()
{
SelectGFunc();
HRESULT hr;
g_hExecutiveHandle = LoadLibrary("SS3DExecutiveForMuk.dll");
CREATE_INSTANCE_FUNC pFunc;
pFunc = (CREATE_INSTANCE_FUNC)GetProcAddress(g_hExecutiveHandle,"DllCreateInstance");
hr = pFunc((void**)&g_pExecutive);
if (hr != S_OK)
{
MessageBox(NULL,"Executive积己 角菩","Error",MB_OK);
return FALSE;
}
// geometry DLL狼 捞抚, renderer DLL狼 捞抚阑 持绢林搁 executive啊 舅酒辑 积己,檬扁拳秦霖促.
if(g_pExecutive->InitializeFileStorageWithoutRegistry("SS3DFileStorage.dll",
12000,4096,128,FILE_ACCESS_METHOD_ONLY_FILE,NULL,0) == FALSE)
return FALSE;
return TRUE;
}
BOOL AddDataToPackFile(CStrClass pakname,CStrClass dir)
{
I4DyuchiFileStorage* pFS;
g_pExecutive->GetFileStorage(&pFS);
void* pPakFile = pFS->MapPackFile((char*)(LPCTSTR)pakname);
if(pPakFile == NULL)
return FALSE;
BOOL rt = pFS->LockPackFile(pPakFile,0);
if(rt == FALSE)
return FALSE;
char CurDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH,CurDir);
BOOL bSD = SetCurrentDirectory(dir);
CDirectoryName dirname(NULL,NULL);
dirname.LoadChild();
SetCurrentDirectory(CurDir);
dirname.SetPositionHead();
DWORD kind;
CStrClass filename;
CStrClass tname;
while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
{
if(kind != GETNEXTFILENAME_FILE)
continue;
if(filename == "")
continue;
tname = dir + "\\" + filename;
if(pFS->InsertFileToPackFile(pPakFile,(char*)(LPCTSTR)tname) == FALSE)
return FALSE;
}
BOOL unlock = pFS->UnlockPackFile(pPakFile,PackingCallBackFunc);
if(unlock == FALSE)
return FALSE;
pFS->UnmapPackFile(pPakFile);
pFS->Release();
return TRUE;
}
void Pack3DData(void* p)
{
CDirectoryName dirname(NULL,NULL);
DWORD kind;
CStrClass filename;
CStrClass pakname,tname;
BOOL bSuccess = TRUE;
HWND hDlg = (HWND)p;
char CurDir[MAX_PATH];
CStrClass datafolder = "3DData\\";
GetCurrentDirectory(MAX_PATH,CurDir);
BOOL bSD = SetCurrentDirectory("3ddata");
if(bSD == FALSE)
{
bSuccess = TRUE;
goto packend;
}
dirname.LoadChild();
SetCurrentDirectory(CurDir);
if(InitEngine() == FALSE)
{
bSuccess = FALSE;
goto packend;
}
dirname.SetPositionHead();
while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
{
if(kind != GETNEXTFILENAME_DIRECTORY)
continue;
if(filename == "")
continue;
if(filename.Right(1) == "\\")
filename = filename.Left(filename.GetLength()-1);
pakname = filename + ".pak";
tname = datafolder + filename;
if(AddDataToPackFile(pakname,tname) == FALSE)
{
bSuccess = FALSE;
goto packend;
}
}
dirname.SetPositionHead();
while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
{
if(kind != GETNEXTFILENAME_FILE)
continue;
if(filename == "")
continue;
tname = datafolder + filename;
BOOL rt = DeleteFile(tname);
}
dirname.SetPositionHead();
while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
{
if(kind != GETNEXTFILENAME_DIRECTORY)
continue;
tname = datafolder + filename;
RemoveDirectory(tname);
}
RemoveDirectory(datafolder);
packend:
if(bSuccess)
SendMessage(hDlg,WM_RUNPROGRAM,0,0);
else
SendMessage(hDlg,WM_RUNPROGRAM,0,0);
return;
}
HWND hProgressBar;
void StartPack3DData(HWND hDlg)
{
Update_AS( hDlg, g_sz_Packing);
hProgressBar = GetDlgItem( hDlg, IDC_PROGRESS_EX);
ShowWindow(hProgressBar,SW_SHOW);
SendMessage( hProgressBar, PBM_SETRANGE32, 0, PRO_RANGE_EX);
SendMessage( hProgressBar, PBM_SETPOS, 0, 0);
_beginthread(Pack3DData,0,hDlg);
}
DWORD __stdcall PackingCallBackFunc(DWORD dwCurCount,DWORD dwTotalCount,void* pArg)
{
PackingProcess = (PRO_RANGE_EX*dwCurCount) / dwTotalCount;
SendMessage( hProgressBar, PBM_SETPOS, PackingProcess, 0);
return 0;
}
BOOL SaveFileList()
{
DWORD count = 1;
HANDLE hSrch;
WIN32_FIND_DATA wfd;
SYSTEMTIME time;
char Dir[MAX_PATH];
char filename[MAX_PATH];
BOOL bResult = TRUE;
GetWindowsDirectory( Dir, MAX_PATH );
strcat( Dir, "\\mfl.dat" );
FILE* fp = fopen( Dir, "w" );
if( fp == NULL )
{
fclose( fp );
return FALSE;
}
GetCurrentDirectory( MAX_PATH, filename );
strcat( filename, "\\Resource\\*.bin" );
hSrch = FindFirstFile( filename, &wfd );
while( bResult )
{
FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
fprintf( fp, "%d %s\t", count, wfd.cFileName );
fprintf( fp, "%4d %02d %02d %02d %02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute );
bResult = FindNextFile( hSrch, &wfd );
++count;
}
bResult = TRUE;
GetCurrentDirectory( MAX_PATH, filename );
strcat( filename, "\\Resource\\SkillArea\\*.bsad" );
hSrch = FindFirstFile( filename, &wfd );
while( bResult )
{
FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
fprintf( fp, "%d %s\t", count, wfd.cFileName );
fprintf( fp, "%4d %02d %02d %02d %02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute );
bResult = FindNextFile( hSrch, &wfd );
++count;
}
fclose( fp );
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -