#include "SunClientPrecompiledHeader.h" #include "InterfaceManager.h" #include "uiEventMan/uiEventMan.h" #include "ui_XMas_Confirm/ui_XMas_Confirm.h" #include "ui_XMas_SoloCoupleReward/ui_XMas_SoloCoupleReward.h" #include "GlobalFunc.h" #include "Mouse.h" #include "FTextRender.h" #include "FTextSentence.h" #include "SunEventInfoParser.h" const DWORD c_Str_Interval = 13; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// WzID ui_XMas_Confirm::m_wzID[eDIALOG_XMAS_CONFIRM_MAX] = { StrToWzID("T999"), //eDIALOG_XMAS_CONFIRM_TITLE_TEXT, StrToWzID("LS00"), //eDIALOG_XMAS_CONFIRM_TEXT_LIST, StrToWzID("BT01"), //eDIALOG_XMAS_CONFIRM_OK_BTN, StrToWzID("BT02"), //eDIALOG_XMAS_CONFIRM_CANCEL_BTN, StrToWzID("BT00"), //eDIALOG_XMAS_CONFIRM_EXIT_BTN, }; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ui_XMas_Confirm::ui_XMas_Confirm(InterfaceManager * pUIMan) : uiBase(pUIMan) { m_bShow = FALSE; m_eDlgType = eXMAS_DLG_MAX; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ui_XMas_Confirm::~ui_XMas_Confirm() { } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::Init(CDrawBase* pDrawBase) { uiBase::Init(pDrawBase); m_bShow = FALSE; InitControl(); RECT rtMain = m_ctrlMainList->GetSizeRect(); m_FtextRender.Init(g_pSunRenderer , rtMain); m_bTextLoad = TRUE; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::Release() { } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::OnUpdateSolarDialog() { if( ! m_bShow ) { ShowDialog(FALSE); } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::OnRenderSolarDialog() { if(g_pHero) { if(m_bTextLoad) { AddFormatText(); m_bTextLoad = FALSE; } RECT rt = m_ctrlMainList->GetSizeRect(); rt.right -= 15; m_FtextRender.SetRect(rt); m_FtextRender.Render(); } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::Process(DWORD dwTick) { } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::OnShowWindow(BOOL val) { if( val ) { MoveCenter(); m_bShow = TRUE; m_bTextLoad = TRUE; keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType=eDoType_Event_X_Mas_Confirm; msg.wParam=InterfaceManager::DIALOG_EVENT_X_MAS_CONFIRM; msg.DoSomething=GlobalFunc::DoShowWindow; g_KeyQueueManager.PushBack(msg); } else { g_KeyQueueManager.DeleteMsg(eDoType_Event_X_Mas_Confirm); m_bShow = FALSE; m_bTextLoad = FALSE; } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::MessageProc(SI_MESSAGE * pMessage) { switch ( pMessage->eResultMsg ) { case RT_MSG_LBUTTONCLICK: { switch ( getControlIDToPos( pMessage->dwCtrlID ) ) { case eDIALOG_XMAS_CONFIRM_OK_BTN: { switch(m_eDlgType) { case eXMAS_DLG_TYPE_PERIOD_ITEM: { ui_XMas_SoloCoupleReward * pSoloCoupleReward = GET_CAST_DIALOG( ui_XMas_SoloCoupleReward, IM_EVENT_MANAGER::EVENT_X_MAS_SOLO_COUPLE_REWARD ); if(pSoloCoupleReward) { pSoloCoupleReward->SetSoloCoupleState(ui_XMas_SoloCoupleReward::eSOLO_COUPLE_STATE_SOLO); pSoloCoupleReward->ShowInterface(TRUE); } OnShowWindow(FALSE); } break; case eXMAS_DLG_TYPE_DONATION: { MoneyProcess(); MSG_CG_EVENT_DONATION_HEIM_SYN SendMsg; EVENT_INFO_VEC* pEventInfoVec = SunEventInfoParser::Instance()->FindEventInfoFromNpcType(c_dw_Donation_NPC_Type); //ÇØ´çÀ̺¥Æ®°¡ ÇöÀç ¸Ê»ó¿¡ ¹«Á¶°Ç "1°³" ¶ó°í °¡Á¤ÇÏÀÚ. if(NULL != pEventInfoVec) { EVENT_INFO* pEventInfo = pEventInfoVec->back(); SendMsg.m_EventID = pEventInfo->m_dwEventID; //±âºÎ°ü·Ã ¾ÆÀ̵ð(SunEventInfo ÂüÁ¶) SendMsg.m_DonatedHeims = m_CurMoney; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendMsg, sizeof(SendMsg)); } OnShowWindow(FALSE); } break; default: { assert(!"ui_XMas_Confirm::MessageProc"); } break; } } //case eDIALOG_XMAS_CONFIRM_OK_BTN: break; case eDIALOG_XMAS_CONFIRM_CANCEL_BTN: { switch(m_eDlgType) { case eXMAS_DLG_TYPE_PERIOD_ITEM: { ui_XMas_SoloCoupleReward * pSoloCoupleReward = GET_CAST_DIALOG( ui_XMas_SoloCoupleReward, IM_EVENT_MANAGER::EVENT_X_MAS_SOLO_COUPLE_REWARD ); if(pSoloCoupleReward) { pSoloCoupleReward->SetSoloCoupleState(ui_XMas_SoloCoupleReward::eSOLO_COUPLE_STATE_COUPLE); pSoloCoupleReward->ShowInterface(TRUE); } OnShowWindow(FALSE); } break; case eXMAS_DLG_TYPE_DONATION: { OnShowWindow(FALSE); } break; default: { assert(!"ui_XMas_Confirm::MessageProc"); } break; } } //case eDIALOG_XMAS_CONFIRM_CANCEL_BTN: break; case eDIALOG_XMAS_CONFIRM_EXIT_BTN: { OnShowWindow(FALSE); } break; } //getControlIDToPos( pMessage->dwCtrlID ) } //RT_MSG_LBUTTONCLICK break; default: { } break; } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::InitControl() { m_ctrlTitleStatic = static_cast(getControl(eDIALOG_XMAS_CONFIRM_TITLE_TEXT)); assert(m_ctrlTitleStatic); if(m_ctrlTitleStatic) { m_ctrlTitleStatic->SetTextWZ(""); } m_ctrlMainList = static_cast(getControl(eDIALOG_XMAS_CONFIRM_TEXT_LIST)); assert(m_ctrlMainList); m_ctrlOKBtn = static_cast(getControl(eDIALOG_XMAS_CONFIRM_OK_BTN)); assert(m_ctrlOKBtn); if(m_ctrlOKBtn) { m_ctrlOKBtn->SetTextWZ(""); } m_ctrlCancelBtn = static_cast(getControl(eDIALOG_XMAS_CONFIRM_CANCEL_BTN)); assert(m_ctrlCancelBtn); if(m_ctrlCancelBtn) { m_ctrlCancelBtn->SetTextWZ(""); } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::AddFormatText() { FTextParser FParser; BOOL ret; RECT rtTitle = m_ctrlTitleStatic->GetSizeRect(); RECT rtMain = m_ctrlMainList->GetSizeRect(); rtMain.right -= 15; RECT rtOk = m_ctrlOKBtn->GetSizeRect(); RECT rtCancel = m_ctrlCancelBtn->GetSizeRect(); TCHAR szTitle[INTERFACE_STRING_LENGTH + 1] = {0,}; TCHAR szMain[INTERFACE_STRING_LENGTH + 1] = {0,}; TCHAR szMainFinal[INTERFACE_STRING_LENGTH + 1] = {0,}; TCHAR szOK[INTERFACE_STRING_LENGTH + 1] = {0,}; TCHAR szCancel[INTERFACE_STRING_LENGTH + 1] = {0,}; switch(m_eDlgType) { case eXMAS_DLG_TYPE_PERIOD_ITEM: { g_InterfaceManager.GetInterfaceString(1856, szTitle); g_InterfaceManager.GetInterfaceString(203102, szMainFinal); g_InterfaceManager.GetInterfaceString(1858, szOK); g_InterfaceManager.GetInterfaceString(1859, szCancel); } break; case eXMAS_DLG_TYPE_DONATION: { g_InterfaceManager.GetInterfaceString(1860, szTitle); g_InterfaceManager.GetInterfaceString(5322, szMain); if(0 >= strlen(m_szDonationMoney)) { assert(!"ui_XMas_Confirm::AddFormatText() - String Error"); } Snprintf(szMainFinal, INTERFACE_STRING_LENGTH, szMain, m_szDonationMoney); g_InterfaceManager.GetInterfaceString(1861, szOK); g_InterfaceManager.GetInterfaceString(1862, szCancel); } break; case eXMAS_DLG_MAX: default: { assert(!"ui_XMas_Confirm::AddFormatText() - Invalid Type"); } break; } //ŸÀÌÆ² if(m_ctrlTitleStatic) { m_ctrlTitleStatic->SetTextWZ(szTitle); } //OK if(m_ctrlOKBtn) { m_ctrlOKBtn->SetTextWZ(szOK); } //CANCEL if(m_ctrlCancelBtn) { m_ctrlCancelBtn->SetTextWZ(szCancel); } //¸ÞÀÎ Desc FParser.SetDefaultFont(StrToWzID("mn12") , WzColor_RGBA(235,224,200,255 )); ret = FParser.Parser(szMainFinal , m_FSentence ); if( ret ) { m_FtextRender.ClearSentence(); m_FtextRender.Append(m_FSentence); m_FtextRender.SetRect(rtMain); } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// void ui_XMas_Confirm::MoneyProcess() { TCHAR szMessage[INTERFACE_STRING_LENGTH + 1] = {0,}; if (lstrlen(m_szDonationMoney)==0) { // ±Ý¾×À» ÀÔ·ÂÇØÁÖ¼¼¿ä!! g_InterfaceManager.GetInterfaceString( eST_INPUT_MONEY, szMessage, MAX_MESSAGE_LENGTH ); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage ); } else { TCHAR szTemp[128] = {0,}; int iLen = strlen(m_szDonationMoney); int j = 0; for(int i = 0; i < iLen; ++i, ++j) { if(',' != m_szDonationMoney[j]) { szTemp[i] = m_szDonationMoney[j]; } else { ++j; szTemp[i] = m_szDonationMoney[j]; } } if(checkDigit(szTemp)) { m_CurMoney = (MONEY)_ttoi64(szTemp); SolarDialog::ShowWindow(FALSE); } else { // ±Ý¾×Àº ¼ýÀڷθ¸ ÀÔ·ÂÇϽʽÿÀ g_InterfaceManager.GetInterfaceString( eST_INPUT_MONEY_IN_FIGURES, szMessage, MAX_MESSAGE_LENGTH ); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage ); } } } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// bool ui_XMas_Confirm::checkDigit(const TCHAR *str) { int len = lstrlen(str); int i; for (i=0; i_T('9')) { return false; } } return true; } ////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////