//------------------------------------------------------------------------------ // uiSystemVerify_dialogproc.cpp // (C) 2005 ckbang //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "uiSystemVerify.h" #include "uiSystemMan/uiSystemMan.h" #include "Input.h" #include "Application.h" #include "GameFramework.h" #include "globalfunc.h" #include "CharacterScene.h" #include "LoadScene.h" #include "uiLoginAccount/uiLoginAccount.h" #ifdef _JAPAN_GAMECHU_SUPPORT_DOUBLE_AUTH_FLOW_ #include "uiLoginMan/uiLoginMan.h" #endif //_JAPAN_GAMECHU_SUPPORT_DOUBLE_AUTH_FLOW_ //------------------------------------------------------------------------------ WzID uiSystemVerify::m_wzId[DIALOG_MAX] = { StrToWzID("TI00"), // DLGPOS_BTN_VERIFY=0, StrToWzID("L001"), // DLGPOS_LST_VERIFY_MSG, }; //------------------------------------------------------------------------------ /** */ void uiSystemVerify::OnShowWindow( BOOL val ) { if (val) { g_CharSelectScene.m_bVerifyLock =TRUE; RECT rc; GetDialogWZ()->GetDlgSize(&rc); long width = rc.right; long height = rc.bottom; // TODO: // Àüü È­¸é ÇØ»óµµ¸¦ ÂüÁ¶Çؼ­ ´ÙÀ̾ó·Î±×¸¦ È­¸é Áß¾Ó¿¡ À§Ä¡½ÃŲ´Ù. // ex) 1024x768 long mw = width >> 1; long mh = height >> 1; POINT pt = g_pApplication->Get2DModeMapping(); long sw; long sh; sw = pt.x; sh = pt.y; long pw = (sw >> 1) - mw; long ph = (sh >> 1) - mh; switch (GameFramework::GetCurScene() ) { case SCENE_TYPE_LOGIN: { ph += 75; } break; } GetDialogWZ()->MoveWindowWZ( (float)pw, (float)ph ); this->OffLock(); this->OffPending(); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_dialog_system_verify; msg.wParam = InterfaceManager::DIALOG_SYSTEM_VERIFY; msg.DoSomething = GlobalFunc::DoSystemVerify; g_KeyQueueManager.PushBack(msg); this->m_bReadyWarmup = false; m_timerWarmup.On(1); } else { if (m_bShutdownAfterVerify) { Exit(); } else { CloseWindow(); } } } //------------------------------------------------------------------------------ /** */ void uiSystemVerify::Exit() { CloseWindow(); SetDestroyWindow(TRUE); if (this->m_bShutdownAfterVerify) { #ifdef _COMMON_CHANNELING_LOGIC_DEFINE GlobalFunc::LogOutGame(); #else //_COMMON_CHANNELING_LOGIC_DEFINE #ifdef _JAPAN_GAMECHU_SUPPORT_DOUBLE_AUTH_FLOW_ if (uiLoginMan::IsUseParameterAuthInfo() == true) { GlobalFunc::LogOutGame(); } else #endif _JAPAN_GAMECHU_SUPPORT_DOUBLE_AUTH_FLOW_ { // °ÔÀÓÁß¿¡ ÆÃ±ä °ÍÀ̶ó¸é ·Î±×ÀÎ È­¸éÀ¸·Î À̵¿ÇÏ°Ô ÇÑ´Ù. if( m_CloseType == CT_GOTOLOGIN ) { if( GameFramework::GetCurrentScene()->GetType() != SCENE_TYPE_LOGIN ) { GlobalFunc::GoToServerList(); } } else { GlobalFunc::LogOutGame(); } } #endif //_COMMON_CHANNELING_LOGIC_DEFINE } else if (m_fnSysVerify) { this->m_fnSysVerify(); } } //------------------------------------------------------------------------------ /** */ void uiSystemVerify::MessageProc( SI_MESSAGE * pMessage ) { if (this->IsLock()) return; switch( pMessage->eResultMsg ) { case RT_MSG_LBUTTONCLICK: { switch( getCtrlIDToPos( pMessage->dwCtrlID ) ) { case DLGPOS_BTN_VERIFY: { this->Exit(); } break; } } break; default: { SolarDialog::MessageProc( pMessage ); } break; } } //------------------------------------------------------------------------------ /** */ void uiSystemVerify::Process(DWORD dwTick) { if (!this->IsVisible()) return; if( m_bShutdownAfterVerify ) // shotdown½Ã¿¡´Â ½Ã°£ÀÌ Áö³ª¸é ÀÚµ¿À¸·Î ´Ý°Ô ÇÑ´Ù. { int timestate = m_timerExit.Check(); if( timestate != TIMER_STAT_NONE ) { if( timestate == TIMER_STAT_FINISH ) { m_timerExit.Off(); this->Exit(); } } } int timerStat = m_timerWarmup.Check(); if (timerStat != TIMER_STAT_NONE) { if (timerStat == TIMER_STAT_FINISH) { this->m_bReadyWarmup = true; m_timerWarmup.Off(); } } if (this->m_bReadyWarmup) { if (g_Input.GetState (DIK_RETURN, KS_UP)) { this->Exit(); } } } //------------------------------------------------------------------------------ /** */ void uiSystemVerify::OnUpdateSolarDialog() { CCtrlStaticWZ* pControl = static_cast(getControl(DLGPOS_BTN_VERIFY)); if (pControl) { if (this->m_bReadyWarmup) pControl->SetTextColor(RGBA( 240, 201, 121, 255 )); else pControl->SetTextColor(RGBA(128, 128, 128, 128)); } } //------------------------------------------------------------------------------ /** */ void uiSystemVerify::OnRenderSolarDialog() { this->GetDrawBase()->x_pManagerTextOut->StartToUseFont( c_wiSystemMsgFont ); RECT rc; if (m_bLockingEffect) { POINT ScreenSize = g_pApplication->Get2DModeMapping(); SetRect(&rc, 0, 0, ScreenSize.x, ScreenSize.y); RenderRect(rc, WzColor_RGBA(0,0,0,128)); } GetDialogWZ()->OnDraw(true); RECT rc2; CControlWZ * pLstControl = getControl( DLGPOS_LST_VERIFY_MSG ); if ( pLstControl ) { rc2 = pLstControl->GetSizeRect(); } int iExtraInfoHeight = 0; SIZE FontSize; if ( this->m_strTitle.size() ) { this->GetDrawBase()->x_pManagerTextOut->StartToUseFont( c_wiSystemMsgFont ); this->GetDrawBase()->x_pManagerTextOut->GetTextExtentPoint(_T("1"), 1, &FontSize); SetRect(&rc, rc2.left, rc2.top + (FontSize.cy*0), rc2.right, rc2.top + (FontSize.cy*0) + FontSize.cy); iExtraInfoHeight += FontSize.cy+8; TCHAR *pStr = const_cast(this->m_strTitle.c_str()); if (pStr) { this->GetDrawBase()->x_pManagerTextOut->DrawText( pStr, &rc, WzColor_RGBA(240,201,121,255), WzColor_RGBA(0,0,0,0), TP_HCENTER); } this->GetDrawBase()->x_pManagerTextOut->EndUseFont(); } #ifdef _INTERNATIONAL_UI for (size_t i=0; im_vSubstr.size(); ++i) { ENUM_DRAWTEXTSTYLE eAlignStyle = ( (m_vSubstr.size()>1) ? (TP_HLEFT):(TP_HCENTER)); this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(c_wiSystemMsgFont); this->GetDrawBase()->x_pManagerTextOut->GetTextExtentPoint(_T("1"), 1, &FontSize); SetRect(&rc, rc2.left, rc2.top + (FontSize.cy*(i+1)), rc2.right, rc2.top + (FontSize.cy*(i+1))+ FontSize.cy); TCHAR * pStr = const_cast(this->m_vSubstr[i].c_str()); if (pStr) { iExtraInfoHeight += FontSize.cy; this->GetDrawBase()->x_pManagerTextOut->DrawText( pStr, &rc, WzColor_RGBA(255, 133, 50, 255), WzColor_RGBA(0,0,0,0), eAlignStyle); } this->GetDrawBase()->x_pManagerTextOut->EndUseFont(); } #else if ( this->m_strSubject.size() ) { this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(c_wiSystemMsgFont); this->GetDrawBase()->x_pManagerTextOut->GetTextExtentPoint(_T("1"), 1, &FontSize); SetRect(&rc, rc2.left, rc2.top + (FontSize.cy)+8, rc2.right, rc2.top + (FontSize.cy) + FontSize.cy+8); iExtraInfoHeight += FontSize.cy+8; TCHAR * pStr = const_cast(this->m_strSubject.c_str()); if (pStr) { this->GetDrawBase()->x_pManagerTextOut->DrawText( pStr, &rc, WzColor_RGBA(255, 133, 50, 255), WzColor_RGBA(0,0,0,0), TP_HCENTER); } this->GetDrawBase()->x_pManagerTextOut->EndUseFont(); } #endif//_INTERNATIONAL_UI for (size_t i=0; im_vstr.size(); ++i) { this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(c_wiSystemMsgFont); SetRect(&rc, rc2.left + 2, iExtraInfoHeight + rc2.top + (16*i), rc2.right, iExtraInfoHeight + rc2.top + (16*i) + 16); TCHAR *pStr = const_cast(this->m_vstr[i].c_str()); if (pStr) { this->GetDrawBase()->x_pManagerTextOut->DrawText( pStr, &rc, WzColor_RGBA(255, 133, 50, 255), WzColor_RGBA(0,0,0,0), TP_HLEFT); } this->GetDrawBase()->x_pManagerTextOut->EndUseFont(); } this->GetDrawBase()->x_pManagerTextOut->EndUseFont(); } //------------------------------------------------------------------------------ /** */ void uiSystemVerify::RenderRect(RECT rc,WzColor color) { g_pSunRenderer->Set2DMode(TRUE); ENUM_ALPHABLEND eAlphablendMode = g_pSunRenderer->GetAlphaBlendMode(); g_pSunRenderer->SetAlphaBlendMode( AB_ALPHA ); g_pSunRenderer->ColorFill(color,0,0,(float)rc.right,(float)rc.bottom); g_pSunRenderer->SetAlphaBlendMode( eAlphablendMode ); g_pSunRenderer->Set2DMode(FALSE); } //------------------------------------------------------------------------------------------- /** */ void uiSystemVerify::SetTitle(LPCTSTR pszTitle) { this->m_strTitle = pszTitle; } //------------------------------------------------------------------------------------------- /** */ void uiSystemVerify::SetSubject(LPCTSTR pszSubject) { this->m_strSubject = pszSubject; #ifdef _INTERNATIONAL_UI CControlWZ * pLstControl = getControl( DLGPOS_LST_VERIFY_MSG ); if( pLstControl ) { RECT rcCtrl = pLstControl->GetSizeRect(); int iCtrlWidth = rcCtrl.right - rcCtrl.left - 10; m_vSubstr.clear(); GlobalFunc::ProcessWordWrapByFontSize( &this->m_vSubstr, const_cast(pszSubject), c_wiSystemMsgFont, _tcslen(pszSubject), iCtrlWidth ); } #endif//_INTERNATIONAL_UI } //------------------------------------------------------------------------------------------- /** */ void uiSystemVerify::SetBtnStringID(DWORD dwOkID) { this->m_dwOKStrID = dwOkID; if (m_pCtrlOKStatic) { m_pCtrlOKStatic->SetTextID(this->m_dwOKStrID); } } //------------------------------------------------------------------------------------------- /** */ void uiSystemVerify::CloseWindow() { g_CharSelectScene.m_bVerifyLock =FALSE; g_KeyQueueManager.DeleteMsg(eDoType_dialog_system_verify); this->GetUIMan()->UnLockDlgs(); this->GetUIMan()->DeAttachFirstDialog(InterfaceManager::DIALOG_SYSTEM_VERIFY); m_timerWarmup.Off(); } //------------------------------------------------------------------------------ // EOF //------------------------------------------------------------------------------