Files
Sun1602/Client/GameClient/uiVendorBuyPopup.cpp
T
2022-10-26 12:25:11 +08:00

237 lines
5.2 KiB
C++

#include "SunClientPrecompiledHeader.h"
#ifdef _JBH_MOD_VENDOR_SELECT_BUY_NUM
#include "uiVendorBuyPopup.h"
#include "InterfaceManager.h"
#include "uiVendorBuy/uiVendorBuy.h"
#include "GlobalFunc.h"
#include "uiVendorSell/uiVendorSell_def.h"
#include "Hero.h"
WzID uiVendorBuyPopup::m_WzId[DLGPOS_MAX] =
{
StrToWzID("B005"), // DLGPOS_BTN_OK,
StrToWzID("B006"), // DLGPOS_BTN_CANCLE,
StrToWzID("B002"), // DLGPOS_BTN_LEFT,
StrToWzID("B003"), // DLGPOS_BTN_RIGHT,
StrToWzID("B001"), // DLGPOS_BTN_EXIT,
StrToWzID("B004"), // DLGPOS_BTN_MAX,
StrToWzID("E001"), // DLGPOS_EDIT_INPUT,
};
//------------------------------------------------------------------------------
/**
*/
uiVendorBuyPopup::uiVendorBuyPopup(InterfaceManager * pUIMan ) : uiBase(pUIMan)
{
}
//------------------------------------------------------------------------------
/**
*/
uiVendorBuyPopup::~uiVendorBuyPopup()
{
}
//------------------------------------------------------------------------------
/**
*/
void uiVendorBuyPopup::Init(CDrawBase* pDrawBase)
{
uiBase::Init(pDrawBase);
m_pEdit = static_cast<CCtrlDxIMEEditBox *> ( getControl( DLGPOS_EDIT_INPUT ) );
assert( m_pEdit );
m_iNum = 0;
m_iMaxNum = 0;
m_curSlotPos = 0;
m_pEdit->SetFontID( StrToWzID("mn12") );
}
//------------------------------------------------------------------------------
/**
*/
void uiVendorBuyPopup::Release()
{
}
//------------------------------------------------------------------------------
/**
*/
void uiVendorBuyPopup::OnShowWindow(BOOL val )
{
TCHAR szMessage[INTERFACE_STRING_LENGTH];
if ( val )
{
GetUIMan()->AttachFirstDialog(InterfaceManager::DIALOG_VENDOR_BUY_POPUP);
keyMsg msg;
ZeroMemory(&msg, sizeof(msg) );
msg.dwType = eDoType_dialog_vendor_buy_popup;
msg.wParam = InterfaceManager::DIALOG_VENDOR_BUY_POPUP;
msg.DoSomething = GlobalFunc::DoVendorBuyPopup;
g_KeyQueueManager.PushBack(msg);
}
else
{
GetUIMan()->DeAttachFirstDialog(InterfaceManager::DIALOG_VENDOR_BUY_POPUP );
m_pEdit->ClearText();
m_iNum = 0;
g_KeyQueueManager.DeleteMsg( eDoType_dialog_vendor_buy_popup );
}
}
//------------------------------------------------------------------------------
/**
*/
void uiVendorBuyPopup::Process(DWORD dwTick)
{
}
//------------------------------------------------------------------------------
/**
*/
void uiVendorBuyPopup::MessageProc(SI_MESSAGE * pMessage )
{
TCHAR szMessage[INTERFACE_STRING_LENGTH];
switch ( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
switch( getControlIDToPos( pMessage->dwCtrlID ) )
{
case DLGPOS_BTN_OK:
{
TCHAR szInputMessage[128] = {0,};
int inputNum = 0;
// 금액의 최대 사이즈(128 byte)를 넘었습니다.
if(!GlobalFunc::CompareLimitText(m_pEdit, szInputMessage, 5, 5794))
return;
szInputMessage[5] = NULL;
if( IsDigit( szInputMessage ) )
{
inputNum = (int ) _ttoi( szInputMessage );
if( inputNum > 0 )
{
if( m_iMaxNum < inputNum )
{
m_iNum = m_iMaxNum;
}
else
{
m_iNum = inputNum;
}
uiVendorBuy * pVendorBuy = ( uiVendorBuy *) g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_VENDOR_BUY);
if( pVendorBuy)
{
SCSlot & rSlot = pVendorBuy->GetSlot(m_curSlotPos);
uiSCItemSlot & rItemSlot = static_cast<uiSCItemSlot &>(rSlot);
if ( g_pHero->GetMoney() >= rItemSlot.GetMoneyPerOne() * m_iNum )
{
pVendorBuy->SendItemBuySync(m_curSlotPos , m_iNum );
}
else
{
// 현재 보유한 하임이 부족하여 아이템을 구매할 수 없습니다.
const int c_iNotEnoughMoney = 70408;
g_InterfaceManager.GetInterfaceString( c_iNotEnoughMoney, szMessage, INTERFACE_STRING_LENGTH );
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_TOP_SHOW, szMessage);
}
ShowInterface(FALSE);
}
}
}
else
{
// 숫자를 입력하세요.
g_InterfaceManager.GetInterfaceString( 70363 , szMessage , INTERFACE_STRING_LENGTH );
GlobalFunc::OutputMsg_Notice( eOUTPUT_MSG_CHAT , szMessage );
m_pEdit->ClearText();
}
}
break;
case DLGPOS_BTN_MAX:
{
m_iNum = m_iMaxNum;
sprintf( szMessage , "%d" , m_iNum );
GlobalFunc::SetText( m_pEdit , szMessage );
}
break;
case DLGPOS_BTN_LEFT:
{
if( m_iNum > 0 )
{
m_iNum -= 1;
}
sprintf( szMessage , "%d" , m_iNum );
GlobalFunc::SetText( m_pEdit , szMessage );
}
break;
case DLGPOS_BTN_RIGHT:
{
if( m_iMaxNum > m_iNum)
{
m_iNum += 1;
}
sprintf( szMessage , "%d" , m_iNum );
GlobalFunc::SetText( m_pEdit , szMessage );
}
break;
case DLGPOS_BTN_EXIT:
case DLGPOS_BTN_CANCLE:
{
ShowInterface(FALSE);
}
break;
}
}
break;
default:
{
SolarDialog::MessageProc( pMessage );
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiVendorBuyPopup::NetworkProc(MSG_BASE * pMsg )
{
}
BOOL uiVendorBuyPopup::IsDigit(const TCHAR * pszMessage)
{
int len = lstrlen(pszMessage);
int i;
for (i=0; i<len; ++i)
{
if (pszMessage[i]<_T('0') || pszMessage[i]>_T('9'))
{
return FALSE;
}
}
return TRUE;
}
#endif