📄 loginprocess.cpp
字号:
}
}
/*
switch(tdm.wIdent)
{
case SM_NEEDUPDATE_ACCOUNT: // Need to account update
m_Progress = PRG_NEED_ACCOUNT_CHANGE; // Need Account change
break;
case SM_UPDATEID_SUCCESS: // account update success
m_Progress = PRG_LOGIN; // Login
break;
case SM_UPDATEID_FAIL: // account update Fail
m_Progress = PRG_NEED_ACCOUNT_CHANGE; // Login
break;
}
*/
}
VOID CLoginProcess::SetFocusBefore(VOID)
{
INT nTemp;
nTemp = (( m_Progress == PRG_LOGIN) ? m_UserState - 1 : m_UserState + 2 );
ZeroMemory(g_xChatEditBox.m_szInputMsg,sizeof(g_xChatEditBox.m_szInputMsg));
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
g_xChatEditBox.SetSelectAll();
}
VOID CLoginProcess::SetFocusAfter(VOID)
{
CHAR cChr;
INT nTemp;
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_SHOW);
nTemp = (( m_Progress == PRG_LOGIN) ? m_UserState - 1 : m_UserState + 2 );
if( ( m_UserState != LGM_INPUT_PASSWORD ) &&
( m_UserState != LGM_INPUT_USER_PASSWORD ) &&
( m_UserState != LGM_INPUT_REPASS ) )
cChr = NULL;
else
cChr = '*';
SendMessage(g_xChatEditBox.GetSafehWnd(),EM_SETPASSWORDCHAR,(WPARAM)cChr,0);
SetFocus(g_xChatEditBox.GetSafehWnd());
g_xChatEditBox.SetSelectAll();
}
VOID CLoginProcess::SetNextProc()
{
DeleteProc();
g_xClientSocket.m_pxDefProc = g_xMainWnd.m_pxDefProcess = &g_xChrSelProc;
g_xChrSelProc.Load();
g_bProcState = _CHAR_SEL_PROC;
}
VOID CLoginProcess::DeleteProc()
{
m_xAvi.StopAllAvis();
m_Image2.Destroy();
m_Image.Destroy();
}
LRESULT CLoginProcess::OnWindowMove(WPARAM wParam,LPARAM lParam)
{
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
g_xMainWnd.OnMove(wParam, lParam);
return 0L;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Rander
//////////////////////////////////////////////////////////////////////////////////////////////////////
VOID CLoginProcess::RenderScene(INT nLoopTime)
{
static DWORD dwLastTick = 0;
m_Image.NewSetIndex(IMAGE_INDEX_LOGINBASE);
if(m_Progress== PRG_QUIT){
SendMessage(g_xMainWnd.GetSafehWnd(), WM_DESTROY, NULL, NULL);
return;
}
if(m_fIsConnected==CONNECT_SUCCESS)
{
Clear(0x0000);
m_xAvi.Render(nLoopTime);
switch (m_Progress)
{
case PRG_CONNECT:
{
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
m_nAnimationCounter = 0;
break;
}
case PRG_INTRO:
{
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
RenderIntro(nLoopTime);
break;
}
// Render For Login
case PRG_LOGIN:
{
m_xLogin.Render(nLoopTime);
break;
}
// Render
case PRG_TO_SELECT_CHR:
{
ShowWindow(g_xChatEditBox.GetSafehWnd(),SW_HIDE);
RenderScroll(nLoopTime);
break;
}
// Render For Server Selection
case PRG_SERVER_SELE:
{
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
m_Image.NewSetIndex(IMG_IDX_LOGIN_BACK); // 烙矫
m_xSelectSrv.Render(nLoopTime);
break;
}
// Render For New Account
case PRG_NEW_ACCOUNT:
{
ShowWindow(g_xChatEditBox.GetSafehWnd(),( m_xMsgBox.IsActive() ? SW_HIDE : SW_SHOW ));
// RenderNewAccount(nLoopTime);
break;
}
// Render For Change Password
case PRG_CHANGE_PASS:
{
ShowWindow(g_xChatEditBox.GetSafehWnd(),( m_xMsgBox.IsActive() ? SW_HIDE : SW_SHOW ));
RenderPassword(nLoopTime);
break;
}
}
m_xMsgBox.RenderMessageBox(0);
if ( FAILED(g_xMainWnd.Present()) )
g_xMainWnd.RestoreSurfaces();
}
}
VOID CLoginProcess::RenderIntro(INT nLoopTime)
{
static DWORD dwLastTick = 0;
dwLastTick += nLoopTime;
if(dwLastTick>100)
{
m_nAnimationCounter++;
if(m_nAnimationCounter==50)
m_xAvi.SetRenderAviState(1);
if(m_nAnimationCounter>500)
{
m_Progress = PRG_LOGIN;
m_xLogin.OpenWnd();
m_nAnimationCounter = -999;
}
}
}
VOID CLoginProcess::RenderNewAccount(int nLoopTime)
{
/*char Pass[10];
MoveWindow(g_xChatEditBox.GetSafehWnd(),
g_xMainWnd.m_rcWindow.left + g_LoginInputState[m_UserState+2].Left,
g_xMainWnd.m_rcWindow.left + g_LoginInputState[m_UserState+2].Top,
g_LoginInputState[m_UserState+2].Width,
g_LoginInputState[m_UserState+2].Height, TRUE);
// Draw Back Image
g_xMainWnd.DrawWithImageForComp(0, 0,
m_Image2.m_lpstNewCurrWilImageInfo->shWidth,
m_Image2.m_lpstNewCurrWilImageInfo->shHeight,(WORD*)(m_Image2.m_pbCurrImage));
// Draw Image
m_Image2.NewSetIndex(IMAGE_INDEX_NEWACCOUNT);
g_xMainWnd.DrawWithImageForComp(ACCOUNT_WIN_POS_X, ACCOUNT_WIN_POS_Y,
m_Image2.m_lpstNewCurrWilImageInfo->shWidth,
m_Image2.m_lpstNewCurrWilImageInfo->shHeight,(WORD*)(m_Image2.m_pbCurrImage));
for (int i = BTN_NEW_OK_ID; i <= BTN_NEW_QUIT_ID; i++){
if (m_pBtn[i].m_nState != BUTTON_STATE_UP) {
m_Image2.NewSetIndex(m_pBtn[i].m_nButtonID + (m_pBtn[i].m_nState - 1 ) / 2 );
g_xMainWnd.DrawWithImageForComp(m_pBtn[i].m_Rect.left, m_pBtn[i].m_Rect.top,
m_pBtn[i].m_Rect.right - m_pBtn[i].m_Rect.left,
m_pBtn[i].m_Rect.bottom - m_pBtn[i].m_Rect.top, (WORD*)(m_Image2.m_pbCurrImage));
break;
}
}
RenderNewAccountHelpTxt();
for(i =LGM_INPUT_USER_ID ; i <= LGM_INPUT_ANSWER_2 ; i++){
if( ( i != LGM_INPUT_USER_PASSWORD ) && ( i!= LGM_INPUT_REPASS ) ){
g_xMainWnd.PutsHan(NULL, g_LoginInputState[i].Left +2, g_LoginInputState[i].Top +2, RGB(255,255,255), RGB(0,0,0),g_LoginInputState[i].szData);
}
else{
ZeroMemory(Pass,sizeof(Pass));
memset(Pass,'*',strlen(g_LoginInputState[i].szData));
g_xMainWnd.PutsHan(NULL, g_LoginInputState[i].Left +2, g_LoginInputState[i].Top +2, RGB(255,255,255), RGB(0,0,0), Pass);
}
}*/
}
VOID CLoginProcess::RenderPatch(int nLoopTime)
{
RECT tRect;
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
//
Clear((DWORD)RGB(0,0,0));
/*
// Go Login Without Connection
m_Progress = PRG_INTRO;
m_fIsConnected = CONNECT_SUCCESS;
g_xMainWnd.ResetDXG(_SCREEN_WIDTH, _SCREEN_HEIGHT, _SCREEN_BPP, _DXG_SCREENMODE_FULLSCREEN, _DXG_DEVICEMODE_PRIMARY|_DXG_DEVICEMODE_D3D);
*/
if(pPatch->m_bEndPatch == TRUE)//GetFtpFiles()==0l) // Patch啊 辆丰 登菌栏搁
{
if(pPatch->m_bPatched == TRUE) // Patch 登菌栏搁 辆丰
{
delete pPatch;
char PatchName[1024];
ZeroMemory(PatchName,1024);
GetCurrentDirectory(1024,PatchName);
strcat(PatchName,MIR2_PATCH_FILE_NAME);
//m_Progress = PRG_QUIT;
m_Progress = PRG_INTRO;
ShellExecute(NULL,"open",PatchName,NULL,NULL,SW_SHOWNORMAL);
// 角青阑 辆丰窍绊 寇何 Patch 橇肺弊伐阑 角青矫挪促.
}
else
{
// 菩摹 茄巴捞 绝栏搁
delete pPatch;
g_xClientSocket.ConnectToServer(g_xMainWnd.GetSafehWnd(), m_szServerIP, m_nServerPort);
m_Progress = PRG_INTRO;
// Full Screen 栏肺 傈券
g_xMainWnd.ResetDXG(640, 480, _SCREEN_BPP, _DXG_SCREENMODE_WINDOW, _DXG_DEVICEMODE_PRIMARY|_DXG_DEVICEMODE_D3D);
// g_xMainWnd.ResetDXG(640, 480, _SCREEN_BPP, _DXG_SCREENMODE_FULLSCREEN, _DXG_DEVICEMODE_PRIMARY|_DXG_DEVICEMODE_D3D);
SETRECT(tRect, SCR_LEFT, SCR_TOP, SCR_RIGHT, SCR_BOTTOM );
}
}
else
{
// 拌加 菩摹 秦具窍搁
pPatch->GetFtpFiles();
}
if(m_xMsgBox.IsActive())
{
HINSTANCE hLib;
hLib = LoadLibrary(MESSAGE_DLL_1);
SetErrorMessage(300,m_szErrorMsg); // 庆寸 Error 皋矫瘤 茫扁
FreeLibrary(hLib);
MessageBox(g_xMainWnd.GetSafehWnd(),m_szErrorMsg,"Error",MB_OK);
}
}
VOID CLoginProcess::RenderPassword(int nLoopTime)
{
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
}
VOID CLoginProcess::RenderNewAccountHelpTxt(VOID)
{
}
VOID CLoginProcess::RenderScroll(INT nLoopTime)
{
static INT nScroll = 0;
static INT nDelay = 0;
nDelay += nLoopTime;
if(nDelay > 40)
{ nScroll += 5;
if(nScroll >= 180)
{
SetNextProc(); // 纳腐磐 伎泛飘 辑滚肺 捞悼 (烙矫)
return;
}
}
// m_Image.NewSetIndex(IMG_IDX_LOGIN_BACK);
// g_xMainWnd.DrawWithImageForCompClipRgn(SCR_LEFT, SCR_TOP + nScroll, SCR_RIGHT, SCR_BOTTOM, (WORD*)(m_Image.m_pbCurrImage),SCR_LEFT,SCR_BOTTOM-nScroll);
}
BOOL CLoginProcess::CheckSSNO(char* szSSNo)
{ // 固肯
int nLen = 0, nYear = 0;
long nSum = 0, nCheckSum = 0;
char szDate[7], szYear[5], szSex[5] = "1234";
int nTemp;
int Counter=1;
int i;
CHAR* pszLowCode = NULL;
CHAR sztSSNo[15];
strcpy(sztSSNo,szSSNo);
pszLowCode = strchr(sztSSNo,'-');
if(pszLowCode==NULL)
return FALSE; // 林刮殿废锅龋 惑俊 -捞 绝栏搁 坷幅贸府
pszLowCode ++;
nLen = strlen( sztSSNo );
if(nLen != 14)
return FALSE;
// 己喊 内靛 犬牢
if((*pszLowCode - '0') < 0 || (*pszLowCode - '0') > 4 )
return FALSE; // 己喊 内靛 嘎瘤 臼澜
strncpy(szDate,sztSSNo,6);
strncpy(szYear,sztSSNo,2);
nYear= atoi(szYear);
nCheckSum = *( sztSSNo + nLen - 1 ) - '0';
memcpy(pszLowCode-1,pszLowCode,strlen(pszLowCode));
for( i = 0 ; i < nLen - 1 ; i++ )
{
if(szSSNo[i]=='-')
return FALSE;
nTemp = (sztSSNo[i]-'0')*(Counter>=9? Counter=2:++Counter);
nSum += nTemp;
}
nSum = nSum % 11;
nSum = 11 - nSum;
if( nCheckSum != nSum )
return FALSE;
return TRUE;
}
BOOL CLoginProcess::DateCehck( char* szDate )
{
char szYear[5],szMonth[3],szDay[3];
int nYear,nMonth,nDay;
int tDay;
if ( strlen( szDate ) != 8)
return FALSE;
strncpy( szYear, szDate, 4 );
strncpy( szMonth, szDate + 4, 2 );
strncpy( szDay, szDate + 6, 2 );
nYear = atoi( szYear );
nMonth = atoi( szMonth );
nDay = atoi( szDay );
// Check Month's days
switch( nMonth )
{
case 1: case 3: case 5: case 7: case 8: case 10:case 12:
tDay = 31;
break;
case 4: case 6: case 9: case 11:
tDay = 30;
break;
case 2:
tDay = IsLeapYear( nYear ) ? 29 : 28;
break;
default :
return FALSE;
}
if( nDay < 1 || nDay > tDay ) return FALSE;
return TRUE;
}
BOOL CLoginProcess::IsLeapYear( int nYear )
{
if ( ( nYear % 4 ) == 0){
if ( ( nYear % 100 ) == 0){
if ( ( nYear % 400 ) == 0)
return TRUE;
return FALSE;
}
return TRUE;
}
return FALSE;
}
BOOL CLoginProcess::CheckEMail( char* szEMail ) // E Mail Check
{
CHAR* pszTemp = NULL;
// '@'绰 盖菊俊 棵荐 绝促. '@'绰 怖 器窃 窍绊 乐绢具 茄促.
pszTemp = strchr( szEMail , '@');
if( ( ( pszTemp - szEMail ) == 0 ) ||
( pszTemp == NULL ) )
return FALSE;
// '@'绰 窍唱捞惑 啊龙荐 绝促.
pszTemp = strchr( pszTemp + 1 ,'@');
if( pszTemp != NULL ) return FALSE;
// '.'绰 盖菊俊 棵荐 绝促. '.'绰 窍唱捞惑 怖 器窃 窍绊 乐绢具 茄促.
pszTemp = strchr(szEMail,'.');
if( ( ( pszTemp - szEMail ) == 0 ) ||
( pszTemp == NULL ) )
return FALSE;
return TRUE;
}
BOOL CLoginProcess::StringDivideLen( INT nDivideLen, INT& nDividedLine, CHAR* szSrc,CDLList<CHAR*>* m_pxpStr )
{
CHAR szTmpCheck[MAX_PATH];
CHAR szResult[MAX_PATH];
INT nCnt;
nDividedLine = 1;
INT nStartLen = 0;
INT nEndLen = 0;
INT nResultLen = 0;
INT nWordCheck = 0;
if ( szSrc[0] != NULL ){
ZeroMemory(szResult,MAX_PATH);
for ( nCnt = 0; nCnt < (INT) strlen( szSrc ); nCnt++){
ZeroMemory(szTmpCheck, MAX_PATH);
nEndLen = nCnt+1;
// 泅犁何盒鳖瘤狼 巩磊凯阑 佬绰促.
memcpy(&szTmpCheck, &szSrc[nStartLen], nEndLen-nStartLen);
INT nsLen;
nsLen = strlen(szTmpCheck);
// 泅犁鳖瘤 佬绢柯 何盒捞 倾侩承捞甫 逞绢脊阑锭.
if (nsLen > nDivideLen ){
// 泅犁 2官捞飘 巩磊扼搁.
if ( szSrc[nEndLen-1] < 0 ){
// 泅犁 菊俊巩磊啊 2官捞飘 巩磊啊 酒聪扼搁
if ( !(nWordCheck%2) ){
CHAR* pszNewLine;
nStartLen += strlen(szTmpCheck)-1;
nCnt--;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen = 0;
nDividedLine++;
}
else{
CHAR* pszNewLine;
nStartLen += strlen(szTmpCheck)-2;
nCnt -= 2;
pszNewLine = new CHAR[nResultLen];
memcpy(pszNewLine,szResult,nResultLen-1);
pszNewLine[nResultLen-1]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen = 0;
nDividedLine++;
nWordCheck--;
}
}
// 1官捞飘 巩磊.
// 泅犁焊促 茄官捞飘菊何盒鳖瘤父 绊妨秦林搁 等促.
else{
CHAR* pszNewLine;
nStartLen += strlen(szTmpCheck)-1;
nCnt--;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen=0;
nDividedLine++;
}
}
// 碍力俺青 \n栏肺窍搁 Error ????
else if(szSrc[nEndLen-1]=='\n'){
CHAR* pszNewLine;
nStartLen += strlen(szTmpCheck)-1;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nResultLen=0;
nDividedLine++;
}
else{
if ( szSrc[nEndLen-1] < 0 )
nWordCheck++;
szResult[nResultLen] = szSrc[nEndLen-1];
nResultLen++;
}
}
if( nResultLen != 0 ){
CHAR* pszNewLine;
pszNewLine = new CHAR[nResultLen+1];
memcpy(pszNewLine,szResult,nResultLen);
pszNewLine[nResultLen]=NULL;
m_pxpStr->AddNode(pszNewLine);
nDividedLine++;
nResultLen=0;
}
return TRUE;
}
return FALSE;
}
VOID CLoginProcess::SetErrorMessage(INT nMsg, CHAR* szMgs)
{
HINSTANCE hLib;
hLib = LoadLibrary(MESSAGE_DLL_1); // Load Dll
if ( nMsg!=99 && nMsg!=0 )
LoadString(hLib, nMsg+MESSAGE_NUM_LOGIN, m_szErrorMsg, 512);
else if( nMsg!=0 )
LoadString(hLib, 9999, m_szErrorMsg, 512);
else
szMgs[0]=NULL;
FreeLibrary(hLib);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -