Files
2022-10-26 12:25:11 +08:00

1498 lines
47 KiB
C++

#include "SunClientPrecompiledHeader.h"
//------------------------------------------------------------------------------
#ifndef _NA_0_20110613_GAME_SHOP_RENEWAL //#if'N'def
//------------------------------------------------------------------------------
#include "uiCashItemShopDlg.h"
#include "uiCashItemShopMan/uiCashItemShopMan.h"
#include "uiSystemMan/uiSystemMan.h"
#include "Hero.h"
#include "GlobalFunc.h"
#include "GameFunc.h"
#include "interfacemanager.h"
#include "GameFramework.h"
#include "ItemInfoParser.h"
#include "Mouse.h"
#include "uiToolTipMan/uiToolTipMan.h"
#include "SCItemSlot.h"
//------------------------------------------------------------------------------
WzID uiCashItemShopDlg::m_wzId[eDIALOG_CASH_ITEM_SHOP_DLG_MAX] =
{
StrToWzID("B999"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_EXIT = 0,
StrToWzID("C001"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_CASH_ITEM,
StrToWzID("C002"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_MY_PAGE,
StrToWzID("C003"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PACKAGE,
StrToWzID("CT01"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_MILEAGE,
StrToWzID("C010"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL,
StrToWzID("CT03"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PC
StrToWzID("C019"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_ARMOR,
StrToWzID("C020"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_EXTENSION, // 기간연장
StrToWzID("C021"), // eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PP_CARD_ONLY
StrToWzID("CT02"), // eDIALOG_CASH_ITEM_SHOP_DLG_CHK_BUY_WCOIN
StrToWzID("C016"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_SKIN,
StrToWzID("C000"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_CUSTOMIZE,
StrToWzID("C008"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_ITEM,
StrToWzID("C009"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PET,
StrToWzID("C004"), //eDIALOG_CASH_ITEM_SHOP_DLG_CHK_RIDER,
StrToWzID("B016"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY1,
StrToWzID("BT02"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY2,
StrToWzID("B018"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY3,
StrToWzID("BT03"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY4,
StrToWzID("B020"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY5,
StrToWzID("BT04"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY6
StrToWzID("BT00"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY7,
StrToWzID("BT05"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY8,
StrToWzID("BT01"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY9,
StrToWzID("BT06"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY10,
StrToWzID("B001"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM1,
StrToWzID("TI02"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM2,
StrToWzID("B002"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM3,
StrToWzID("TI03"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM4,
StrToWzID("B003"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM5,
StrToWzID("TI04"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM6,
StrToWzID("TI00"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM7,
StrToWzID("TI05"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM8,
StrToWzID("TI01"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM9,
StrToWzID("TI06"), //eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM10,
StrToWzID("LS00"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM1,
StrToWzID("LS09"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM2,
StrToWzID("LS01"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM3,
StrToWzID("LS08"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM4,
StrToWzID("LS02"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM5,
StrToWzID("LS07"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM6,
StrToWzID("LS03"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM7,
StrToWzID("LS05"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM8,
StrToWzID("LS04"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM9,
StrToWzID("LS06"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM10,
StrToWzID("LS10"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM1,
StrToWzID("LS24"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM2,
StrToWzID("LS11"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM3,
StrToWzID("LS23"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM4,
StrToWzID("LS12"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM5,
StrToWzID("LS22"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM6,
StrToWzID("LS13"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM7,
StrToWzID("LS21"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM8,
StrToWzID("LS14"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM9,
StrToWzID("LS20"), //eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM10,
StrToWzID("T057"), //eDIALOG_CASH_ITEM_SHOP_DLG_TXT_MONEY,
StrToWzID("BT13"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_PREV_PAGE,
StrToWzID("BT12"), //eDIALOG_CASH_ITEM_SHOP_DLG_BTN_NEXT_PAGE,
StrToWzID("ST01"), //eDIALOG_CASH_ITEM_SHOP_DLG_TXT_CURR_PAGE,
//위 디파인이 적용되면 UI는 공통으로 들어간다.
//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_ 디파인으로 else경우 HIDE기능을 켠다.
//.......
StrToWzID("ST12"), // eDIALOG_CASH_ITEM_SHOP_DLG_STXT_TOTAL_WCOIN
StrToWzID("ST21"), // eDIALOG_CASH_ITEM_SHOP_DLG_STXT_WCOINP
StrToWzID("ST20"), // eDIALOG_CASH_ITEM_SHOP_DLG_STXT_WCOINC
StrToWzID("ST03"), // eDIALOG_CASH_ITEM_SHOP_DLG_STXT_MILEAGE
StrToWzID("ST04"), // eDIALOG_CASH_ITEM_SHOP_DLG_TXT_WCOINP
StrToWzID("ST05"), // eDIALOG_CASH_ITEM_SHOP_DLG_TXT_WCOINC
StrToWzID("ST02"), // eDIALOG_CASH_ITEM_SHOP_DLG_TXT_MILEGE
StrToWzID("T057"), // eDIALOG_CASH_ITEM_SHOP_DLG_TXT_TOTAL_WCOIN
StrToWzID("PI10"), // eDIALOG_CASH_ITEM_SHOP_DLG_IMG_WCOIN_BACK
StrToWzID("PI11"), // eDIALOG_CASH_ITEM_SHOP_DLG_IMG_WCOINC_BACK
StrToWzID("PI12"), // eDIALOG_CASH_ITEM_SHOP_DLG_IMG_WCOINP_BACK
StrToWzID("PI13"), // eDIALOG_CASH_ITEM_SHOP_DLG_IMG_TOTAL_WCOIN_BACK
StrToWzID("BT07"), // eDIALOG_CASH_ITEM_SHOP_DLG_BTN_MILEGE
StrToWzID("B000"), // eDIALOG_CASH_ITEM_SHOP_DLG_BTN_SORTCLASS,
StrToWzID("L001"), // eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS,
StrToWzID("S000"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_SORTCLASS,
StrToWzID("L000"), // eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SUBMENU,
StrToWzID("S001"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE1,
StrToWzID("S003"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE2,
StrToWzID("S004"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE3,
StrToWzID("S005"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE4,
StrToWzID("S006"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE5,
StrToWzID("S007"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE6,
StrToWzID("S008"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE7,
StrToWzID("S009"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE8,
StrToWzID("S010"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE9,
StrToWzID("S011"), // eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_PRICE10,
};
//------------------------------------------------------------------------------
//! static function
void uiCashItemShopDlg::Callback_ShopIconRender(CControlWZ* control_ptr, void* parameter)
{
uiCashItemShopDlg* onwer = static_cast<uiCashItemShopDlg*>(parameter);
if ((control_ptr != NULL) && (onwer != NULL))
{
CASH_ITEM_IMG* item_img = (CASH_ITEM_IMG*)(control_ptr->GetUserData());
if ((item_img->pImage != NULL) && (item_img->dwIconCode > 0))
{
RECT rc = control_ptr->GetSizeRect();
item_img->pImage->Render(&rc);
onwer->GetManager()->renderCoverImage(*item_img, rc);
}
}
}
//------------------------------------------------------------------------------
/**
*/
uiCashItemShopDlg::uiCashItemShopDlg(InterfaceManager *pUIMan) :
uiBase(pUIMan),
m_bControlsInitialized(false)
{
this->m_pCashItemShopMan =
static_cast<uiCashItemShopMan *>(this->GetUIMan()->GetUserInterfaceManager(UIMAN_CASH_ITEM_SHOP));
assert (m_pCashItemShopMan);
if (!this->m_pCashItemShopMan)
{
#ifdef _DEBUG
uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM);
if(pSystemMan)
pSystemMan->Sys_VerifyLock(_T("m_pCashItemShopMan이 없습니다."));
#endif
this->ShowInterface(FALSE);
return;
}
m_bShow = false;
ZeroMemory(&m_CashItemImg, sizeof(m_CashItemImg));
m_iCurMenu = -1;
m_iCurPage = -1;
m_iCurIndex = -1;
m_iCurSubMenu = 0;
ZeroMemory(&m_ItemCodeForTooltip, sizeof(m_ItemCodeForTooltip));
}
//------------------------------------------------------------------------------
/**
*/
uiCashItemShopDlg::~uiCashItemShopDlg()
{
this->Release();
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::Init(CDrawBase* pDrawBase)
{
uiBase::Init(pDrawBase);
this->InitControls();
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::Release()
{
_removeAllIconImage();
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::InitControls()
{
int i=0;
for(i=0; i<eCASH_ITEM_SHOP_DLG_CHK_MAX; ++i)
{
m_pBtnCheckTabs[i] = static_cast<CCtrlButtonCheckWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_CHK_CASH_ITEM+i));
assert(m_pBtnCheckTabs[i]);
}
#ifdef __CHINA_BLOCK_ITEM_SHOP_PRESENT
if(m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MY_PAGE])
{
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MY_PAGE]->EnableWindowWZ(FALSE);
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MY_PAGE]->SetCheckState(FALSE);
}
#endif //__CHINA_BLOCK_ITEM_SHOP_PRESENT
for(i=0; i<eCASH_ITEM_SHOP_DLG_CHK_MENU_MAX; ++i)
{
m_pBtnCheckMenu[i] = static_cast<CCtrlButtonCheckWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL+i));
assert(m_pBtnCheckMenu[i]);
}
#ifdef _NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_//PP카드 관련 기능
//적용되면 숨기지 않는다
#else
if (m_pBtnCheckMenu[eCASH_ITEM_SHOP_DLG_CHK_BUY_WCOIN])
{
m_pBtnCheckMenu[eCASH_ITEM_SHOP_DLG_CHK_BUY_WCOIN]->ShowWindowWZ(WZ_HIDE);
}
if (m_pBtnCheckMenu[eCASH_ITEM_SHOP_DLG_CHK_PP_CARD_ONLY])
{
m_pBtnCheckMenu[eCASH_ITEM_SHOP_DLG_CHK_PP_CARD_ONLY]->ShowWindowWZ(WZ_HIDE);
}
#endif//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
for(i=0; i<eCASH_ITEM_SHOP_DLG_ITEM_MAX; ++i)
{
m_pImgCtrl[i] = static_cast<CCtrlImageStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM1+i));
assert(m_pImgCtrl[i]);
m_pListCtrlName[i] = static_cast<CCtrlListWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_ITEM1+i));
assert(m_pListCtrlName[i]);
m_pListCtrlMemo[i] = static_cast<CCtrlListWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_MEMO_ITEM1+i));
assert(m_pListCtrlMemo[i]);
}
m_pTxtCtrlCurPage = static_cast<CCtrlStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_TXT_CURR_PAGE));
assert(m_pTxtCtrlCurPage);
m_pTxtCtrlMoney = static_cast<CCtrlStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_TXT_MONEY));
assert(m_pTxtCtrlMoney);
m_pTxtCtrlMilege = static_cast<CCtrlStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_TXT_MILEGE));
assert(m_pTxtCtrlMilege);
this->m_bControlsInitialized = true;
#ifdef _K2P_EXTENSION_BLOCK_
CCtrlButtonWZ * pExtentionBtn = (CCtrlButtonWZ *)getControl( eDIALOG_CASH_ITEM_SHOP_DLG_CHK_EXTENSION );
if( pExtentionBtn != NULL )
pExtentionBtn->ShowWindowWZ( WZ_HIDE );
#endif
#ifdef __LTJ_GSP_HIDE_CASHSHOP_PCCAFE_BUTTON
m_pBtnCheckMenu[eCASH_ITEM_SHOP_DLG_CHK_PC]->ShowWindowWZ( WZ_HIDE );
CCtrlPictureWZ* pPictureControl = static_cast<CCtrlPictureWZ*>(GetControlWZ(StrToWzID("PI01")));
if (pPictureControl)
{
pPictureControl->ShowWindowWZ( WZ_HIDE );
}
#endif //__LTJ_GSP_HIDE_CASHSHOP_PCCAFE_BUTTON
//적용되면 숨기지 않는다
for (i=eCASH_ITEM_SHOP_DLG_STXT_WCOINP; i<eCASH_ITEM_SHOP_DLG_TXT_TOTAL_WCOIN; ++i)
{
m_pTxtCtrlPPCards[i] = static_cast<CCtrlStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_STXT_TOTAL_WCOIN+i));
SUN_ASSERT(m_pTxtCtrlPPCards[i]);
#ifdef _NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_//PP카드 관련 기능
//적용되면 숨기지 않는다
#else
if (m_pTxtCtrlPPCards[i])
{
m_pTxtCtrlPPCards[i]->ShowWindowWZ( WZ_HIDE );
}
#endif//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
}
for(i=0; i<eCASH_ITEM_SHOP_DLG_IMG_TOTAL_WCOIN_BACK; ++i)
{
m_pPICBackImg[i] = static_cast<CCtrlPictureWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_IMG_WCOIN_BACK+i));
SUN_ASSERT(m_pPICBackImg[i]);
#ifdef _NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_//PP카드 관련 기능
//적용되면 숨기지 않는다
#else
if (m_pPICBackImg[i])
{
m_pPICBackImg[i]->ShowWindowWZ( WZ_HIDE );
}
#endif//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
}
#ifdef __NA_00387_20070605_SHOP_MILEAGE2 // 마일리지가 적용되었으면 보여준다.
if (m_pTxtCtrlPPCards[eCASH_ITEM_SHOP_DLG_STXT_MILEAGE])
{
m_pTxtCtrlPPCards[eCASH_ITEM_SHOP_DLG_STXT_MILEAGE]->ShowWindowWZ( WZ_SHOW );
}
if (m_pTxtCtrlPPCards[eCASH_ITEM_SHOP_DLG_TXT_MILEAGE])
{
m_pTxtCtrlPPCards[eCASH_ITEM_SHOP_DLG_TXT_MILEAGE]->ShowWindowWZ( WZ_SHOW );
}
if (m_pPICBackImg[eCASH_ITEM_SHOP_DLG_IMG_WCOINP_BACK])
{
m_pPICBackImg[eCASH_ITEM_SHOP_DLG_IMG_WCOINP_BACK]->ShowWindowWZ( WZ_SHOW );
}
#else
CCtrlStaticWZ* control_txts;
control_txts = static_cast<CCtrlStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_TXT_MILEGE));
SUN_ASSERT(control_txts);
if(control_txts)
{
control_txts->ShowWindowWZ(WZ_HIDE);
}
control_txts = static_cast<CCtrlStaticWZ *>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_STXT_MILEAGE));
SUN_ASSERT(control_txts);
if(control_txts)
{
control_txts->ShowWindowWZ(WZ_HIDE);
}
CCtrlButtonWZ* icon_of_mileage = static_cast<CCtrlButtonWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_BTN_MILEGE));
SUN_ASSERT(icon_of_mileage);
if(icon_of_mileage)
{
icon_of_mileage->ShowWindowWZ(WZ_HIDE);
}
if(m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MILEAGE])
{
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MILEAGE]->ShowWindowWZ(WZ_HIDE);
}
#endif//__NA_00387_20070605_SHOP_MILEAGE2
CCtrlListWZ* list_control = static_cast<CCtrlListWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS));
GetManager()->FillSortCombo(list_control);
if (list_control != NULL)
{
list_control->SetCurSel(0);
OnSelectedCombo(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS,
eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_SORTCLASS,
list_control->GetCurSel());
}
}
//------------------------------------------------------------------------------
void uiCashItemShopDlg::OnShowWindow( BOOL val )
{
if (val)
{
//this->MoveDefaultWindowPos();
if (!this->m_bControlsInitialized)
{
this->ShowInterface(FALSE);
return;
}
keyMsg msg;
ZeroMemory(&msg,sizeof(msg));
msg.dwType = eDoType_dialog_cash_item_shop;
msg.wParam = InterfaceManager::DIALOG_CASH_ITEM_SHOP;
msg.DoSomething = GlobalFunc::DoShowWindow;
g_KeyQueueManager.PushBack(msg);
m_bShow = true;
_prepareShow();
}
else
{
g_KeyQueueManager.DeleteMsg(eDoType_dialog_cash_item_shop);
_removeAllIconImage();
if (GetManager())
{
GetManager()->set_pp_category(false);
GetManager()->set_cc_category(false);
GetManager()->ShowCashItemPurchaseDlg(false);
}
getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS)->ShowWindowWZ(WZ_HIDE);
}
}
//------------------------------------------------------------------------------
WORD uiCashItemShopDlg::GetFilter()
{
CCtrlListWZ* sort_list_control = static_cast<CCtrlListWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS));
return GetManager()->GetFilter(m_iCurMenu, m_iCurSubMenu, sort_list_control);
}
//------------------------------------------------------------------------------
BYTE uiCashItemShopDlg::_getCategoryType(int iMenu, int iSubMenu)
{
switch (iMenu)
{
case eCASH_ITEM_SHOP_DLG_CHK_TOTAL:
{
return SHOP_CATEGORY_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_ARMOR:
{
switch (iSubMenu)
{
case 0: return SHOP_CATEGORY_EQUIP_ALL;
case 1: return SHOP_CATEGORY_EQUIP_HELMET; // 헬멧
case 2: return SHOP_CATEGORY_EQUIP_ARMOR; // 갑옷
case 3: return SHOP_CATEGORY_EQUIP_GLOVES; // 장갑
case 4: return SHOP_CATEGORY_EQUIP_PANTS; // 바지
case 5: return SHOP_CATEGORY_EQUIP_BOOTS; // 부츠
case 6: return SHOP_CATEGORY_EQUIP_PROTECTOR; // 프로텍터
case 7: return SHOP_CATEGORY_EQUIP_BELT; // 벨트
case 8: return SHOP_CATEGORY_EQUIP_SHIRTS; // 셔츠
case 9: return SHOP_CATEGORY_EQUIP_WEAPON; // 무기
}
return SHOP_CATEGORY_EQUIP_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_SKIN:
{
switch (iSubMenu)
{
case 0: return SHOP_CATEGORY_SKIN_ALL;
case 1: return SHOP_CATEGORY_SKIN_HELMET; // 헬멧
case 2: return SHOP_CATEGORY_SKIN_ARMOR; // 갑옷
case 3: return SHOP_CATEGORY_SKIN_GLOVES; // 장갑
case 4: return SHOP_CATEGORY_SKIN_PENTS; // 바지
case 5: return SHOP_CATEGORY_SKIN_BOOTS; // 부츠
case 6: return SHOP_CATEGORY_SKIN_PROTECTOR; // 프로텍터
case 7: return SHOP_CATEGORY_SKIN_BELT; // 벨트
case 8: return SHOP_CATEGORY_SKIN_SHIRTS; // 셔츠
case 9: return SHOP_CATEGORY_SKIN_WEAPON; // 무기
}
return SHOP_CATEGORY_SKIN_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_CUSTOMIZE:
{
switch (iSubMenu)
{
case 0: return SHOP_CATEGORY_CUSTOMIZING_ALL;
case 1: return SHOP_CATEGORY_CUSTOMIZING_HAIR; // 머리
case 2: return SHOP_CATEGORY_CUSTOMIZING_FACE; // 얼굴
case 3: return SHOP_CATEGORY_CUSTOMIZING_ETC; // 기타
}
return SHOP_CATEGORY_CUSTOMIZING_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_ITEM:
{
switch (iSubMenu)
{
case 0: return SHOP_CATEGORY_ITEM_ALL;
case 1: return SHOP_CATEGORY_ITEM_LUCKY; // 행운류
case 2: return SHOP_CATEGORY_ITEM_MATERIAL; // 재료류
case 3: return SHOP_CATEGORY_ITEM_GUILD; // 길드류
case 4: return SHOP_CATEGORY_ITEM_TICKET; // 입장권류
case 5: return SHOP_CATEGORY_ITEM_STRENGTHEN; // 능력치 강화류
case 6: return SHOP_CATEGORY_ITEM_FUNCTIONALITY; // 기능성류
case 7: return SHOP_CATEGORY_ITEM_CONVENIENCE; // 편의성류
}
return SHOP_CATEGORY_ITEM_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_PET:
{
switch (iSubMenu)
{
case 0: return SHOP_CATEGORY_PET_ALL;
case 1: return SHOP_CATEGORY_PET; // 사료
case 2: return SHOP_CATEGORY_PET_FEED; // 머리파츠
case 3: return SHOP_CATEGORY_PET_SKIN; // 몸통파츠
//case 4: return SHOP_CATEGORY_PET_LEGS; // 다리파츠
}
return SHOP_CATEGORY_PET_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_RIDER:
{
switch (iSubMenu)
{
case 0: return SHOP_CATEGORY_VEHICLE_ALL;
case 1: return SHOP_CATEGORY_VEHICLE; // 탈것
case 2: return SHOP_CATEGORY_VEHICLE_HEAD; // 머리파츠
case 3: return SHOP_CATEGORY_VEHICLE_BODY; // 몸통파츠
case 4: return SHOP_CATEGORY_VEHICLE_LEGS; // 다리파츠
}
return SHOP_CATEGORY_VEHICLE_ALL;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_PC:
{
return SHOP_CATEGORY_PCROOM;
}
break;
case eCASH_ITEM_SHOP_DLG_CHK_EXTENSION:
{
return SHOP_CATEGORY_PERIOD_EXTEND;
}
break;
#ifdef _NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
case eCASH_ITEM_SHOP_DLG_CHK_PP_CARD_ONLY:
{
return SHOP_CATEGORY_PPCASH;
}
break;
#endif//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
}
return SHOP_CATEGORY_ALL;
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_setMenu(int iMenu, int iSubMenu, bool force_change)
{
//------------------------------------------------------------------------------
//!
if ((m_iCurMenu == iMenu) && (m_iCurSubMenu == iSubMenu) && (force_change == false))
{
return;
}
BYTE byCategory = _getCategoryType(iMenu, iSubMenu);
CCtrlListWZ* list_control = static_cast<CCtrlListWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SUBMENU));
if (list_control != NULL)
{
list_control->SetCurSel(iSubMenu);
}
if(byCategory == SHOP_CATEGORY_PERIOD_EXTEND)
{
GetManager()->OnClickExtensionButton(m_iCurPage);
}
else
{
m_iCurMenu = iMenu;
m_iCurSubMenu = iSubMenu;
m_iCurPage = 0;
m_iCurIndex = 0;
WORD filter = GetFilter();
_updateMenu();
GetManager()->Send_CG_SHOP_ITEM_LIST_REQ_SYN(SHOP_PARTITION_SINGLEITEM, byCategory, filter, m_iCurPage);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_updateMenu()
{
for(int i = 0; i < eCASH_ITEM_SHOP_DLG_CHK_MENU_MAX; ++i)
{
if (m_pBtnCheckMenu[i] != NULL)
{
m_pBtnCheckMenu[i]->SetCheckState(false);
}
}
if(m_pBtnCheckMenu[m_iCurMenu] != NULL)
{
m_pBtnCheckMenu[m_iCurMenu]->SetCheckState(true);
}
int start_sub_menu = 0;
int end_sub_menu = -1;
if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
start_sub_menu = uiCashItemShopMan::kShopStringCode_AllItem;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Armor - 1;
}
else if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_ARMOR - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
//! 장비
start_sub_menu = uiCashItemShopMan::kShopStringCode_Armor;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Skin - 1;
}
else if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_SKIN - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
//! 스킨
start_sub_menu = uiCashItemShopMan::kShopStringCode_Skin;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Customize - 1;
}
else if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_CUSTOMIZE - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
//! 커스터마이징
start_sub_menu = uiCashItemShopMan::kShopStringCode_Customize;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Item - 1;
}
else if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_ITEM - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
//! 아이템
start_sub_menu = uiCashItemShopMan::kShopStringCode_Item;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Pet - 1;
}
else if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PET - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
//! 펫
start_sub_menu = uiCashItemShopMan::kShopStringCode_Pet;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Rider - 1;
}
else if (m_iCurMenu == eDIALOG_CASH_ITEM_SHOP_DLG_CHK_RIDER - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL)
{
//! 탈것
start_sub_menu = uiCashItemShopMan::kShopStringCode_Rider;
end_sub_menu = uiCashItemShopMan::kShopStringCode_Filter_Cash - 1;
}
GetManager()->FillSubMenu(static_cast<CCtrlListWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SUBMENU)), start_sub_menu, end_sub_menu);
CControlWZ* picture_control = getControl(eDIALOG_CASH_ITEM_SHOP_DLG_IMG_WCOIN_BACK);
if (picture_control != NULL)
{
picture_control->ShowWindowWZ((end_sub_menu != -1) ? WZ_SHOW : WZ_HIDE);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_setIndex(int iIndex)
{
m_iCurIndex = iIndex;
// 해당 아이템 가격 정보가 있으면 Show, 없으면 프로토콜 요청
if(GetManager()->m_stCashItemInfo[m_iCurIndex].stPrice[0].priceGuid > 0)
GetManager()->ShowCashItemShopBuy(m_iCurIndex);
else
GetManager()->Send_CG_SHOP_ITEM_REQ_SYN(m_iCurIndex);
}
//------------------------------------------------------------------------------
/** 아이템 페이지 변경 관련
*/
void uiCashItemShopDlg::_setPage(int iPage)
{
if(m_iCurPage == iPage)
return;
//m_iCurPage = iPage;
BYTE byCategory = _getCategoryType(m_iCurMenu, m_iCurSubMenu);
m_iCurIndex = 0;
WORD filter = GetFilter();
GetManager()->Send_CG_SHOP_ITEM_LIST_REQ_SYN(SHOP_PARTITION_SINGLEITEM,
byCategory,
filter,
iPage);
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_prepareShow()
{
if (!_isEnable())
return;
GetManager()->PrepareShow(eCashItemShopDlgState_CashShop);
ZeroMemory(&m_ItemCodeForTooltip, sizeof(m_ItemCodeForTooltip));
_clearAllItem();
m_iCurMenu = -1;
m_iCurPage = -1;
m_iCurIndex = -1;
_setMenu(eCASH_ITEM_SHOP_DLG_CHK_TOTAL);
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::SetCurMoney( void )
{
MONEY totalmoney = 0;
CASH normalcash = GetManager()->GetMyCash();
CASH ppcardcash = GetManager()->GetPPCash();
GlobalFunc::SetMoneyText(m_pTxtCtrlPPCards[eCASH_ITEM_SHOP_DLG_TXT_WCOINP], ppcardcash, CASH_ITEM_SHOP_DEFAULT);
GlobalFunc::SetMoneyText(m_pTxtCtrlPPCards[eCASH_ITEM_SHOP_DLG_TXT_WCOINC], normalcash, CASH_ITEM_SHOP_DEFAULT);
totalmoney = static_cast<MONEY>(normalcash) + ppcardcash;
GlobalFunc::SetMoneyText(m_pTxtCtrlMilege, GetManager()->GetMyMileage(), CASH_ITEM_SHOP_MILEAGE);
if (LOGINPARAM->IsLiveTestServer()) //테섭실행모드
{
GlobalFunc::SetMoneyText(m_pTxtCtrlMoney, g_pHero->GetMoney(), CASH_ITEM_SHOP_HAIM);
}
else
{
GlobalFunc::SetMoneyText(m_pTxtCtrlMoney, totalmoney, CASH_ITEM_SHOP_DEFAULT);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::RefreshItemPrice()
{
#ifdef _DEBUG
TCHAR szDebug[INTERFACE_STRING_LENGTH] = {0,};
Snprintf(szDebug, INTERFACE_STRING_LENGTH-1, _T("Category[%d], Page[%d], Index[%d] \n"),
m_iCurMenu, m_iCurPage, m_iCurIndex);
OutputDebugString(szDebug);
#endif
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::RefreshSingleItemList()
{
#ifdef _DEBUG
TCHAR szDebug[INTERFACE_STRING_LENGTH] = {0,};
Snprintf(szDebug, INTERFACE_STRING_LENGTH-1, _T("RefreshList[%d] %d Page\n"),
m_iCurMenu, m_iCurPage);
OutputDebugString(szDebug);
#endif
_clearAllItem();
SetCurPage();
SetCurMoney();
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_clearItem(int index)
{
this->_removeIconImage(index);
if(m_pListCtrlName[index])
{
m_pListCtrlName[index]->SetUseReport(false);
m_pListCtrlName[index]->DeleteItemAll();
}
if(m_pListCtrlMemo[index])
{
m_pListCtrlMemo[index]->SetUseReport(false);
m_pListCtrlMemo[index]->DeleteItemAll();
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_clearAllItem()
{
for(int i=0; i<eCASH_ITEM_SHOP_DLG_ITEM_MAX; ++i)
{
_clearItem(i);
}
GlobalFunc::SetCaption(m_pTxtCtrlCurPage, _T("")); // 현재 페이지
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::SetItem(int index, CODETYPE itemCode)
{
_setItem(index, itemCode);
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::SetCurPage()
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szTemp[INTERFACE_STRING_LENGTH] ={0,};
//5796 %d페이지
g_InterfaceManager.GetInterfaceString( 5796 , szTemp ,INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, m_iCurPage + 1);
GlobalFunc::SetCaption(m_pTxtCtrlCurPage, szMessage); // 현재 페이지
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_setItem(int index, CODETYPE itemCode)
{
BASE_ITEMINFO * pItemInfo = ItemInfoParser::Instance()->GetItemInfo( itemCode );
if( pItemInfo == NULL )
return;
m_CashItemImg[index].type = GetManager()->m_stCashItemInfo[index].byRank;
_addIconImage(index, pItemInfo->m_wVICode, itemCode);
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szTemp2[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szTemp3[INTERFACE_STRING_LENGTH] = {0,};
// 아이템 이름
g_InterfaceManager.GetItemName(itemCode, szMessage, INTERFACE_STRING_LENGTH);
if(GetManager()->m_stCashItemInfo[index].byEnchant)
{
Snprintf(szTemp, INTERFACE_STRING_LENGTH-1, _T("+%d"), GetManager()->m_stCashItemInfo[index].byEnchant);
_tcscat(szMessage, szTemp);
}
// 캐시샵아이템의 Rank 값을 용도 변경하여 Rank를 출력 하지 않도록 수정
// 이전부터 Rank자체는 사용되고 있지 않았음.
//if( (pItemInfo->m_wSubType != eITEMSUBTYPE_FATE) && pItemInfo->CanRankUpItem())
//{
// int iRankIndex = eST_RANK_E_STRING_INDEX + (GetManager()->m_stCashItemInfo[index].byRank);
// if (iRankIndex > eST_RANK_PS_STRING_INDEX)
// iRankIndex = eST_RANK_PS_STRING_INDEX;
// if (iRankIndex < eST_RANK_E_STRING_INDEX)
// iRankIndex = eST_RANK_E_STRING_INDEX;
// ZeroMemory(szTemp, sizeof(szTemp));
// ZeroMemory(szTemp2, sizeof(szTemp2));
// ZeroMemory(szTemp3, sizeof(szTemp3));
// g_InterfaceManager.GetInterfaceString(eST_RANK_STRING_INDEX,szTemp,INTERFACE_STRING_LENGTH);
// g_InterfaceManager.GetInterfaceString(iRankIndex,szTemp2,INTERFACE_STRING_LENGTH);
// Snprintf(szTemp3,INTERFACE_STRING_LENGTH-1, szTemp, szTemp2);
// _tcscat(szMessage, _T(" "));
// _tcscat(szMessage, szTemp3);
//}
m_pListCtrlName[index]->DeleteItemAll();
m_pListCtrlName[index]->SetColorSelBar(c_CashItemShopListSelBarColor);
m_pListCtrlName[index]->SetUseReport(false);
if( pItemInfo->m_NCode != 0 )
{
#ifdef _GS_MOD_GSP_ITEMSHOP_TXT
//step:이름그릴영역에 내용을 벡터에 담아낸다.
RECT rcName = m_pListCtrlName[index]->GetSizeRect();
std::vector<util::_tstring> vecItemName;
GlobalFunc::ProcessWordWrapByFontSize( &vecItemName, szMessage, c_wiCashItemShopFont, _tcslen(szMessage), rcName.right - rcName.left - 5 );
//step1:나뉜갯수만큼 리스트에 차곡넣어준다.
for (size_t i=0; i<vecItemName.size(); ++i)
{
int idx = m_pListCtrlName[index]->InsertItemBack();
TCHAR *pStr = const_cast<TCHAR *>(vecItemName[i].c_str());
GlobalFunc::SetItem(
m_pListCtrlName[index],
idx, 0, pStr,
c_wiCashItemShopFont,
DT_VCENTER | DT_LEFT,
c_CashItemShopListBKColor,
c_CashItemShopListNameColor,
c_CashItemShopListNameColor);
}
#else
int idx = m_pListCtrlName[index]->InsertItemBack();
GlobalFunc::SetItem(
m_pListCtrlName[index],
idx, 0, szMessage,
c_wiCashItemShopFont,
DT_VCENTER | DT_LEFT,
c_CashItemShopListBKColor,
c_CashItemShopListNameColor,
c_CashItemShopListNameColor);
#endif//_GS_MOD_GSP_ITEMSHOP_TXT
}
// 간단 설명
ZeroMemory(szMessage, sizeof(szMessage));
if(pItemInfo->m_TDNCode)
{
SCItemSlot item_slot;
item_slot.SetCode(static_cast<SLOTCODE>(itemCode));
GameFunc::GetItemDescription(szMessage, &item_slot, pItemInfo);
if(m_pListCtrlMemo[index])
{
std::vector<util::_tstring> vstrMsg;
vstrMsg.clear();
if(!_tcslen(szMessage))
return;
RECT rc = m_pListCtrlMemo[index]->GetSizeRect();
#ifdef __LTJ_TEXT_OUTPUT_AT_LIST_MOD
int iListWidth = rc.right - rc.left - 20;
#else
int iListWidth = rc.right - rc.left - 10;
#endif
GlobalFunc::ProcessWordWrapByFontSize( &vstrMsg, szMessage, c_wiCashItemShopFont, _tcslen(szMessage), iListWidth );
m_pListCtrlMemo[index]->DeleteItemAll();
m_pListCtrlMemo[index]->SetColorSelBar(c_CashItemShopListSelBarColor);
m_pListCtrlMemo[index]->SetUseReport(false);
int iListIndex = -1;
#ifdef _GS_MOD_GSP_ITEMSHOP_TXT
size_t nColume = 0; //리스트에 들어갈메시지갯수(col)
BOOL bOverMsg= FALSE; //메시지가 넘어가는지 flag
int nDotSize= 0;
for (size_t i=0; i<vstrMsg.size(); ++i)
{
//STEP:일단 한번만체크한다(캐쉬샵아템설명리스트보다 긴지 체크)
if(i==0)
{
//리스트몇개가 들어가는지 얻는다.
int nHeight = GlobalFunc::GetTextHeight(_T("A"),m_pListCtrlMemo[index]->GetFontID());
nColume = (m_pListCtrlMemo[index]->GetSize().bottom)/(nHeight);
if(vstrMsg.size()>1 && vstrMsg.size()>nColume)
{
bOverMsg = TRUE;
nDotSize = GlobalFunc::GetTextWidth(_T("..."), m_pListCtrlMemo[index]->GetFontID());
}
}
iListIndex = m_pListCtrlMemo[index]->InsertItemBack();
TCHAR *pStr = const_cast<TCHAR *>(vstrMsg[i].c_str());
//STEP2:만약 길다면 리스트 끝줄에 있는 텍스트에 (...)붙여준다..그리고 리턴해버린다.
if(bOverMsg)
{
if(i!=0 && (i+1)==nColume)
{
std::vector<util::_tstring> vstr;
//1.현재 텍스트의 사이즈를 체크
int nWidth = GlobalFunc::GetTextWidth(pStr, m_pListCtrlMemo[index]->GetFontID());
//2.현재텍스트사이즈에서 ...사이즈만큼 재서 짜른다.
GlobalFunc::ProcessWordWrapByFontSize( &vstr, pStr, m_pListCtrlMemo[index]->GetFontID(), _tcslen(pStr) , nWidth-nDotSize );
//3.짜른다음 ...을 다시 붙여준다.
vstr[0]+=_T("...");
pStr = const_cast<TCHAR *>(vstr[0].c_str());
GlobalFunc::SetItem(
m_pListCtrlMemo[index],
iListIndex, 0, pStr,
c_wiCashItemShopFont,
DT_VCENTER | DT_LEFT,
c_CashItemShopListBKColor,
c_CashItemShopListTextColor,
c_CashItemShopListTextColor);
return;
}
}
//STEP3:그린다.
GlobalFunc::SetItem(
m_pListCtrlMemo[index],
iListIndex, 0, pStr,
c_wiCashItemShopFont,
DT_VCENTER | DT_LEFT,
c_CashItemShopListBKColor,
c_CashItemShopListTextColor,
c_CashItemShopListTextColor);
}
#else
for (size_t i=0; i<vstrMsg.size(); ++i)
{
iListIndex = m_pListCtrlMemo[index]->InsertItemBack();
TCHAR *pStr = const_cast<TCHAR *>(vstrMsg[i].c_str());
GlobalFunc::SetItem(
m_pListCtrlMemo[index],
iListIndex, 0, pStr,
c_wiCashItemShopFont,
DT_VCENTER | DT_LEFT,
c_CashItemShopListBKColor,
c_CashItemShopListTextColor,
c_CashItemShopListTextColor);
}
#endif//_GS_GSP_ITEMSHOP_MEMO_TXT
}
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_addIconImage(int iIndex, DWORD dwCode, CODETYPE itemCode)
{
m_CashItemImg[iIndex].dwIconCode = dwCode;
m_CashItemImg[iIndex].itemCode = itemCode;
_removeIconImage(iIndex);
if (dwCode != 0)
{
m_CashItemImg[iIndex].pImage = ICONMGR()->Add(dwCode);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_removeIconImage(int iIndex)
{
if(m_CashItemImg[iIndex].pImage)
{
ICONMGR()->RemoveIcon(m_CashItemImg[iIndex].pImage);
ZeroMemory(&(m_CashItemImg[iIndex]), sizeof(m_CashItemImg[iIndex]));
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_removeAllIconImage()
{
for(int i=0; i<eCASH_ITEM_SHOP_DLG_ITEM_MAX; ++i)
{
_removeIconImage(i);
}
}
//------------------------------------------------------------------------------
/**
*/
BOOL uiCashItemShopDlg::_isEnable()
{
if(GENERALPARAM->IsNet())
{
if (this->IsLock())
return FALSE;
if(!g_pHero)
return FALSE;
if(g_pHero && g_pHero->IsShowFullMap())
return FALSE;
if(!GetManager())
return FALSE;
return TRUE;
}
else
{
return TRUE;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::MessageProc( SI_MESSAGE * pMessage )
{
if (!_isEnable())
return;
switch (pMessage->eResultMsg)
{
case RT_MSG_LBUTTONCLICK:
{
int iCtrlID = getCtrlIDToPos( pMessage->dwCtrlID );
switch( iCtrlID )
{
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_EXIT:
{
m_bShow = false;
}
break;
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_MY_PAGE:
{
GetManager()->ShowCashItemShopPresentDlg(true);
}
break;
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PACKAGE:
{
GetManager()->ShowCashItemShopPackageDlg(true);
}
break;
#ifdef __NA_00387_20070605_SHOP_MILEAGE2
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_MILEAGE:
{
GetManager()->ShowCashItemShopMileageDlg(true);
}
break;
#endif // __NA_00387_20070605_SHOP_MILEAGE2
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_PREV_PAGE:
{
int iPage = m_iCurPage;
if( iPage > 0)
{
iPage--;
_setPage(iPage);
}
}
break;
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_NEXT_PAGE:
{
_setPage(m_iCurPage + 1);
}
break;
#ifdef _NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_BUY_WCOIN:
{
GetManager()->ExecBuyWCoin();
}
break;
#endif//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY1:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY2:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY3:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY4:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY5:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY6:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY7:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY8:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY9:
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY10:
{
int iIndex = iCtrlID - eDIALOG_CASH_ITEM_SHOP_DLG_BTN_BUY1;
if(GetManager()->m_stCashItemInfo[iIndex].dwItemCode > 0)
{
GetManager()->SelectBuyItem(iIndex);
}
}
break;
case eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SUBMENU:
{
CCtrlListWZ* list_control = static_cast<CCtrlListWZ*>(getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SUBMENU));
int index = list_control->GetCurSel();
if (index >= 0)
{
_setMenu(m_iCurMenu, index);
}
}
break;
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_SKIN:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_CUSTOMIZE:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_ITEM:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PET:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_RIDER:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PC:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_ARMOR:
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_EXTENSION:
#ifdef _NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
case eDIALOG_CASH_ITEM_SHOP_DLG_CHK_PP_CARD_ONLY:
#endif//_NA00XXXX_090111_CASH_TYPE_SUBDIVIDE_
{
int clickmemu = iCtrlID - eDIALOG_CASH_ITEM_SHOP_DLG_CHK_TOTAL;
this->_setMenu(clickmemu);
if (GetManager())
{
if (clickmemu == eCASH_ITEM_SHOP_DLG_CHK_PP_CARD_ONLY)
{
GetManager()->set_pp_category(true);
GetManager()->set_cc_category(false);
}
else if(clickmemu == eCASH_ITEM_SHOP_DLG_CHK_PC)
{
GetManager()->set_cc_category(true);
GetManager()->set_pp_category(false);
}
else if(clickmemu == eCASH_ITEM_SHOP_DLG_CHK_EXTENSION)
{
//extension일 경우는 pp category를 변경하지 않는다.
}
else
{
GetManager()->set_cc_category(false);
GetManager()->set_pp_category(false);
}
GetManager()->ShowCashItemPurchaseDlg(false);
}
}
break;
case eDIALOG_CASH_ITEM_SHOP_DLG_BTN_SORTCLASS:
case eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS:
OnClickCombo(static_cast<eDIALOG_CASH_ITEM_SHOP_DLG>(iCtrlID));
break;
}
}
break;
default:
{
SolarDialog::MessageProc( pMessage );
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::OnUpdateSolarDialog()
{
if(!m_bShow)
this->ShowInterface(FALSE);
if (!_isEnable())
return;
if(m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_CASH_ITEM])
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_CASH_ITEM]->SetCheckState(true);
if(m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MY_PAGE])
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MY_PAGE]->SetCheckState(false);
if(m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_PACKAGE])
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_PACKAGE]->SetCheckState(false);
#ifdef __NA_00387_20070605_SHOP_MILEAGE2
if(m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MILEAGE])
m_pBtnCheckTabs[eCASH_ITEM_SHOP_DLG_CHK_MILEAGE]->SetCheckState(false);
#endif // __NA_00387_20070605_SHOP_MILEAGE2
_updateMenu();
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::OnRenderSolarDialog()
{
if (!_isEnable())
return;
_renderIconImage();
_renderTooltip();
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_renderIconImage()
{
for(int i = 0; i < eCASH_ITEM_SHOP_DLG_ITEM_MAX; ++i)
{
if(m_pImgCtrl[i] != NULL)
{
m_pImgCtrl[i]->SetUserData((DWORD)&(m_CashItemImg[i]));
m_pImgCtrl[i]->SetCallbackDraw(uiCashItemShopDlg::Callback_ShopIconRender, this);
}
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::_renderTooltip()
{
#ifdef __CN_0_20070507_SHOP_MILEAGE
uiToolTipMan* pUIMan = (uiToolTipMan*)g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP);
if(pUIMan)
{
// 155387 해방군의 훈장 // 일단 예외상황이 하나라서 일단 하드코딩 하나 더 늘어나면 모듈화 필요해연
if(this->m_ItemCodeForTooltip.dwItemCode == 155387)
{
pUIMan->RegisterTooltipWithStringCode(m_ItemCodeForTooltip.dwItemCode);
pUIMan->SetTooltipDialogID(GetDialogKey());
}
else if(this->m_ItemCodeForTooltip.dwItemCode > 0)
{
pUIMan->RegisterTooltipItemForCashShop(m_ItemCodeForTooltip.dwItemCode, m_ItemCodeForTooltip.dwCoolTime, m_ItemCodeForTooltip.SellEndDate,
m_ItemCodeForTooltip.byEnchant, m_ItemCodeForTooltip.byRank);
pUIMan->SetTooltipDialogID(GetDialogKey());
}
}
#else // __CN_0_20070507_SHOP_MILEAGE
if(this->m_ItemCodeForTooltip.dwItemCode > 0)
{
uiToolTipMan* pUIMan = (uiToolTipMan*)g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP);
if(pUIMan)
{
pUIMan->RegisterTooltipItemForCashShop(m_ItemCodeForTooltip.dwItemCode, m_ItemCodeForTooltip.dwCoolTime, m_ItemCodeForTooltip.SellEndDate,
m_ItemCodeForTooltip.byEnchant, m_ItemCodeForTooltip.byRank);
pUIMan->SetTooltipDialogID(GetDialogKey());
}
}
#endif // __CN_0_20070507_SHOP_MILEAGE
int iMouseX = Mouse::Instance()->GetMouseX();
int iMouseY = Mouse::Instance()->GetMouseY();
// 스킵처리
// 인터페이스에서 Dialog 바탕에서는 Mouse Over가 오지 않는다.
BOOL bMouseOver = FALSE;
#ifdef __CN_0_20070507_SHOP_MILEAGE
for (POSTYPE a = eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM1; a <= eDIALOG_CASH_ITEM_SHOP_DLG_BTN_MILEGE; a++)
#else // __CN_0_20070507_SHOP_MILEAGE
for (POSTYPE a = eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM1; a <= eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM10; a++)
#endif // __CN_0_20070507_SHOP_MILEAGE
{
CControlWZ * pControl = getControl(a);
if(pControl)
{
RECT rc = pControl->GetSizeRect();
if (rc.left <= iMouseX && rc.right >= iMouseX)
{
if (rc.top <= iMouseY && rc.bottom >= iMouseY)
{
bMouseOver = TRUE;
}
}
}
}
if ( !bMouseOver )
{
ZeroMemory(&m_ItemCodeForTooltip, sizeof(m_ItemCodeForTooltip));
}
}
//----------------------------------------------------------------------------
/**
*/
void uiCashItemShopDlg::MouseOver_MsgProc( SI_MESSAGE * pMessage )
{
if (!_isEnable())
return;
switch( pMessage->eResultMsg )
{
case RT_MSG_MOUSEOVER:
{
POSTYPE pos = getCtrlIDToPos( pMessage->dwCtrlID );
if (pos >= eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM1 && pos <= eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM10)
{
int iIndex = pos - eDIALOG_CASH_ITEM_SHOP_DLG_IMG_ITEM1;
if (m_CashItemImg[iIndex].pImage && m_CashItemImg[iIndex].dwIconCode)
{
m_ItemCodeForTooltip.dwItemCode = m_CashItemImg[iIndex].itemCode;
m_ItemCodeForTooltip.dwCoolTime = GetManager()->m_stCashItemInfo[iIndex].dwCoolTime;
m_ItemCodeForTooltip.SellEndDate = GetManager()->m_stCashItemInfo[iIndex].SellEndDate;
m_ItemCodeForTooltip.byEnchant = GetManager()->m_stCashItemInfo[iIndex].byEnchant;
m_ItemCodeForTooltip.byRank = GetManager()->m_stCashItemInfo[iIndex].byRank;
}
else
{
ZeroMemory(&m_ItemCodeForTooltip, sizeof(m_ItemCodeForTooltip));
}
}
#ifdef __CN_0_20070507_SHOP_MILEAGE
else if(pos == eDIALOG_CASH_ITEM_SHOP_DLG_BTN_MILEGE)
{
// 155387 해방군의 훈장
m_ItemCodeForTooltip.dwItemCode = 155387;
}
#endif // __CN_0_20070507_SHOP_MILEAGE
else
{
ZeroMemory(&m_ItemCodeForTooltip, sizeof(m_ItemCodeForTooltip));
}
}
break;
}
}
//------------------------------------------------------------------------------
bool uiCashItemShopDlg::OnSelectedCombo(eDIALOG_CASH_ITEM_SHOP_DLG list_control_index,
eDIALOG_CASH_ITEM_SHOP_DLG static_control_index,
int selected_index)
{
CCtrlListWZ* list_control = static_cast<CCtrlListWZ*>(getControl(list_control_index));
CControlWZ* staticbox_control = getControl(static_control_index);
if (selected_index < 0)
{
return false;
}
if ((list_control != NULL) && (staticbox_control != NULL))
{
staticbox_control->SetTextWZ("");
const char* text = list_control->GetItemText(selected_index, 0);
if (text != NULL)
{
staticbox_control->SetTextWZ((char*)text);
}
list_control->ShowWindowWZ(WZ_HIDE);
}
return true;
}
//------------------------------------------------------------------------------
void uiCashItemShopDlg::OnClickCombo(eDIALOG_CASH_ITEM_SHOP_DLG e)
{
if (e == eDIALOG_CASH_ITEM_SHOP_DLG_BTN_SORTCLASS)
{
CControlWZ* list_control = getControl(eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS);
if (list_control != NULL)
{
if (list_control->GetState() == WZ_SHOW)
{
list_control->ShowWindowWZ(WZ_HIDE);
}
else
{
list_control->ShowWindowWZ(WZ_SHOW);
}
}
}
else if (e == eDIALOG_CASH_ITEM_SHOP_DLG_LIST_SORTCLASS)
{
CCtrlListWZ* list_control = static_cast<CCtrlListWZ*>(getControl(e));
if (list_control != NULL)
{
if (OnSelectedCombo(e, eDIALOG_CASH_ITEM_SHOP_DLG_TEXT_SORTCLASS, list_control->GetCurSel()) == true)
{
_setMenu(m_iCurMenu, m_iCurSubMenu, true);
}
}
}
}
//------------------------------------------------------------------------------
#endif //#ifndef _NA_0_20110613_GAME_SHOP_RENEWAL //#if'N'def
//------------------------------------------------------------------------------