#include "SunClientPrecompiledHeader.h" #include "asksocketfilldialog.h" #include "Interfacemanager.h" #include "iteminfoparser.h" #include "globalfunc.h" #include "GameConst_Color.h" #include "ItemManager.h" #include "SCSlotContainer.h" #include "SCItemSlot.h" AskSocketFillDialog::AskSocketFillDialog(InterfaceManager *pUIMan) :AskDialog(pUIMan) { Initialize(); } AskSocketFillDialog::~AskSocketFillDialog(void) { } VOID AskSocketFillDialog::Process(DWORD dwTick) { } VOID AskSocketFillDialog::Initialize() { this->m_ItemCode = 0; this->m_CrystalPos = 0; m_PacketStatus = NONE; } void AskSocketFillDialog::OnUpdateSolarDialog() { if (this->GetStatus() == ASK_STATUS_OK) { if (!BIT_CHECK(this->m_PacketStatus, FILL_SOCKET)) { this->DoIt(); } SetStatus(ASK_STATUS_NORMAL); } else if (this->GetStatus() == ASK_STATUS_CANCEL) { this->Cancel(); SetStatus(ASK_STATUS_NORMAL); } } void AskSocketFillDialog::MessageProc( SI_MESSAGE * pMessage ) { switch( pMessage->eResultMsg ) { case RT_MSG_LBUTTONCLICK: { switch( getCtrlIDToPos( pMessage->dwCtrlID ) ) { case ASK_OK: { this->m_status = ASK_STATUS_OK; } break; case ASK_CANCEL: { this->m_status = ASK_STATUS_CANCEL; } break; } } break; default: { SolarDialog::MessageProc( pMessage ); } break; } } VOID AskSocketFillDialog::OnShowWindow( BOOL val ) { if (val) { SolarDialog::MoveCenter(); assert(m_pListCtrl); SetTexts(); } else { m_PacketStatus = NONE; } } VOID AskSocketFillDialog::SetTexts() { TCHAR szItemName[INTERFACE_STRING_LENGTH]; TCHAR szText[INTERFACE_STRING_LENGTH]; TCHAR szMessage[INTERFACE_STRING_LENGTH]; assert(m_pListCtrl); DWORD dwTextColor = RGBA( 235, 192, 38, 255 ); DWORD dwWideTextColor = RGBA( 245, 166, 46, 255 ); DWORD dwSelectColor = RGBA( 0, 0, 255,255 ); DWORD dwBGColor = RGBA( 32, 32, 32, 255 ); DWORD dwSetColorSelBarOnText = RGBA( 255, 255, 255, 255 ); m_pListCtrl->DeleteItemAll(); m_pListCtrl->SetBeginDrawIndex(0); m_pListCtrl->SetUnuseSelBar(TRUE); m_pListCtrl->OnFocusOut(); BASE_ITEMINFO * pItemInfo = ItemInfoParser::Instance()->GetItemInfo(m_ItemCode); if ( pItemInfo ) { DWORD string_code = 0; SCSlotContainer* pAtContainer = ItemManager::Instance()->GetContainer(SI_INVENTORY); SCItemSlot& rItemSlot = (SCItemSlot & )pAtContainer->GetSlot(m_CrystalPos); const BASE_ITEMINFO* zard_item = rItemSlot.GetItemInfo(); if (zard_item != NULL) { switch (zard_item->zard_grade) { case kZardGrade1: string_code = 65016;//[%s]¿¡ ÇÏ±Þ Àðµå¸¦ »ç¿ëÇϽðڽÀ´Ï±î? break; case kZardGrade2: string_code = 65015;// Áß±Þ ¼ÒÄÏ ¿É¼ÇÀº 1°³ÀÇ Àåºñ¿¡ 3°³±îÁö ºÎ¿©ÇÒ ¼ö ÀÖ½À´Ï´Ù. [%s]¿¡ Áß±Þ Àðµå¸¦ »ç¿ëÇϽðڽÀ´Ï±î? break; case kZardGrade3: string_code = 65014;// »ó±Þ ¼ÒÄÏ ¿É¼ÇÀº 1°³ÀÇ Àåºñ¿¡ 3°³±îÁö ºÎ¿©ÇÒ ¼ö ÀÖ½À´Ï´Ù. [%s]¿¡ »ó±Þ Àðµå¸¦ »ç¿ëÇϽðڽÀ´Ï±î? break; case kZardGrade4: string_code = 65013;// ÃÖ»ó±Þ ¼ÒÄÏ ¿É¼ÇÀº 1°³ÀÇ Àåºñ¿¡ 3°³±îÁö ºÎ¿©ÇÒ ¼ö ÀÖ½À´Ï´Ù. [%s]¿¡ ÃÖ»ó±Þ Àðµå¸¦ »ç¿ëÇϽðڽÀ´Ï±î? break; default: string_code = eST_INSERT_SOCKET_ITEM_ASK; // %s ¿¡ ¼ÒÄÏ ¾ÆÀÌÅÛÀ» »ðÀÔ Çմϱî? break; } g_InterfaceManager.GetInterfaceString(string_code, szText, INTERFACE_STRING_LENGTH); g_InterfaceManager.GetItemName(m_ItemCode, szMessage, INTERFACE_STRING_LENGTH); Sprintf(szItemName, szText, szMessage); } std::vector vstrMsg; vstrMsg.clear(); #ifdef __LTJ_TEXT_OUTPUT_AT_LIST_MOD int iListWidth = m_pListCtrl->GetSize().right - 15; #else int iListWidth = m_pListCtrl->GetSize().right - 5; #endif GlobalFunc::ProcessWordWrapByFontSize( &vstrMsg, szItemName, StrToWzID("mn12"), _tcslen(szItemName) ,iListWidth ); for( unsigned int i =0; i < vstrMsg.size(); ++i ) { int index = m_pListCtrl->InsertItemBack(); GlobalFunc::SetItem(m_pListCtrl, index , 0, (TCHAR *)vstrMsg[i].c_str() ,StrToWzID("mn12") , DT_VCENTER | DT_LEFT, c_InterfaceBKColor,dwTextColor , dwTextColor); } } } VOID AskSocketFillDialog::DoIt() { BIT_ADD(this->m_PacketStatus, FILL_SOCKET); MSG_CG_ITEM_SOCKET_FILL_SYN ItemSocketFillSyn; ItemSocketFillSyn.m_SocketItemPos = this->m_CrystalPos; ItemSocketFillSyn.m_TargetPos = this->m_TargetPos; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &ItemSocketFillSyn, sizeof(ItemSocketFillSyn)); ShowInterface(FALSE); } VOID AskSocketFillDialog::Cancel() { BIT_REMOVE(m_PacketStatus, FILL_SOCKET); // cancel ShowInterface(FALSE); Initialize(); } VOID AskSocketFillDialog::SetInfo(CODETYPE ItemCode, POSTYPE CrystalPos, POSTYPE TargetPos) { this->m_ItemCode = ItemCode; this->m_CrystalPos = CrystalPos; this->m_TargetPos = TargetPos; }