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

1026 lines
37 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "uiConvenienceStore_Purchase.h"
#include "uiConvenienceStoreMan.h"
#include "InterfaceManager.h"
#include "uiConvenienceStore_Basket.h"
#include "uiConvenienceStore_Confirm.h"
#include "uiConvenienceStore_Ask.h"
#include "GlobalFunc.h"
#include "Application.h"
#include "uiConvenienceStore_PopupPackage.h"
#include "uiConvenienceStore_Counter.h"
#include "Mouse.h"
#include "PurchaseItem.h"
#include "ProductInfo.h"
#include "Hero.h"
//------------------------------------------------------------------------------
const DWORD uiConvenienceStore_Purchase::kDialog_ID = StrToWzID("0476");;
//------------------------------------------------------------------------------
uiConvenienceStore_Purchase::uiConvenienceStore_Purchase(InterfaceManager* ui_man)
:uiConvenienceStore_Dialog(ui_man)
{
RegisterControlPosition(StrToWzID("B004"), kControl_Button_B004);
RegisterControlPosition(StrToWzID("B001"), kControl_Button_B001);
RegisterControlPosition(StrToWzID("B003"), kControl_Button_B003);
RegisterControlPosition(StrToWzID("B006"), kControl_Button_B006);
RegisterControlPosition(StrToWzID("B007"), kControl_Button_B007);
RegisterControlPosition(StrToWzID("B008"), kControl_Button_B008);
RegisterControlPosition(StrToWzID("B009"), kControl_Button_B009);
//RegisterControlPosition(StrToWzID("B000"), kControl_Button_B000);
//RegisterControlPosition(StrToWzID("B002"), kControl_Button_B002);
//RegisterControlPosition(StrToWzID("B005"), kControl_Button_B005);
//RegisterControlPosition(StrToWzID("B010"), kControl_Button_B010);
//RegisterControlPosition(StrToWzID("B014"), kControl_Button_B014);
RegisterControlPosition(StrToWzID("B011"), kControl_Button_B011);
RegisterControlPosition(StrToWzID("B012"), kControl_Button_B012);
RegisterControlPosition(StrToWzID("B013"), kControl_Button_B013);
RegisterControlPosition(StrToWzID("B015"), kControl_Button_B015);
RegisterControlPosition(StrToWzID("B016"), kControl_Button_B016);
RegisterControlPosition(StrToWzID("B017"), kControl_Button_B017);
RegisterControlPosition(StrToWzID("B024"), kControl_Button_B024);
RegisterControlPosition(StrToWzID("B025"), kControl_Button_B025);
RegisterControlPosition(StrToWzID("B026"), kControl_Button_B026);
RegisterControlPosition(StrToWzID("B027"), kControl_Button_B027);
RegisterControlPosition(StrToWzID("B018"), kControl_Button_B018);
RegisterControlPosition(StrToWzID("B020"), kControl_Button_B020);
RegisterControlPosition(StrToWzID("B021"), kControl_Button_B021);
RegisterControlPosition(StrToWzID("B022"), kControl_Button_B022);
RegisterControlPosition(StrToWzID("B023"), kControl_Button_B023);
RegisterControlPosition(StrToWzID("B028"), kControl_Button_B028);
RegisterControlPosition(StrToWzID("B029"), kControl_Button_B029);
RegisterControlPosition(StrToWzID("ST05"), kControl_Text_ST05);
RegisterControlPosition(StrToWzID("ST20"), kControl_Text_ST20);
RegisterControlPosition(StrToWzID("ST12"), kControl_Text_ST12);
RegisterControlPosition(StrToWzID("S000"), kControl_Text_S000);
RegisterControlPosition(StrToWzID("S003"), kControl_Text_S003);
RegisterControlPosition(StrToWzID("S004"), kControl_Text_S004);
RegisterControlPosition(StrToWzID("S005"), kControl_Text_S005);
RegisterControlPosition(StrToWzID("S006"), kControl_Text_S006);
RegisterControlPosition(StrToWzID("S007"), kControl_Text_S007);
#ifdef _NA_20111118_CASHSHOP_UI_RENEWAL
RegisterControlPosition(StrToWzID("B000"), kControl_Button_B000);
RegisterControlPosition(StrToWzID("B005"), kControl_Button_B005);
RegisterControlPosition(StrToWzID("B010"), kControl_Button_B010);
RegisterControlPosition(StrToWzID("B014"), kControl_Button_B014);
RegisterControlPosition(StrToWzID("B019"), kControl_Button_B019);
#else
RegisterControlPosition(StrToWzID("S008"), kControl_Text_S008);
RegisterControlPosition(StrToWzID("S009"), kControl_Text_S009);
RegisterControlPosition(StrToWzID("S010"), kControl_Text_S010);
RegisterControlPosition(StrToWzID("S011"), kControl_Text_S011);
RegisterControlPosition(StrToWzID("S012"), kControl_Text_S012);
#endif //_NA_20111118_CASHSHOP_UI_RENEWAL
RegisterControlPosition(StrToWzID("S013"), kControl_Text_S013);
RegisterControlPosition(StrToWzID("S014"), kControl_Text_S014);
RegisterControlPosition(StrToWzID("S015"), kControl_Text_S015);
RegisterControlPosition(StrToWzID("S016"), kControl_Text_S016);
RegisterControlPosition(StrToWzID("S001"), kControl_Text_S001);
RegisterControlPosition(StrToWzID("S002"), kControl_Text_S002);
RegisterControlPosition(StrToWzID("S017"), kControl_Text_S017);
RegisterControlPosition(StrToWzID("S018"), kControl_Text_S018);
RegisterControlPosition(StrToWzID("S019"), kControl_Text_S019);
RegisterControlPosition(StrToWzID("S020"), kControl_Text_S020);
RegisterControlPosition(StrToWzID("L000"), kControl_List_L000);
RegisterControlPosition(StrToWzID("L005"), kControl_List_L005);
RegisterControlPosition(StrToWzID("L006"), kControl_List_L006);
RegisterControlPosition(StrToWzID("L007"), kControl_List_L007);
RegisterControlPosition(StrToWzID("L008"), kControl_List_L008);
RegisterControlPosition(StrToWzID("V000"), kControl_VScroll_V000);
RegisterControlPosition(StrToWzID("P002"), kControl_Picture_P002);
RegisterControlPosition(StrToWzID("P005"), kControl_Picture_P005);
RegisterControlPosition(StrToWzID("P007"), kControl_Picture_P007);
RegisterControlPosition(StrToWzID("PI11"), kControl_Picture_PI11);
RegisterControlPosition(StrToWzID("PI13"), kControl_Picture_PI13);
RegisterControlPosition(StrToWzID("P001"), kControl_Picture_P001);
RegisterControlPosition(StrToWzID("P006"), kControl_Picture_P006);
RegisterControlPosition(StrToWzID("P008"), kControl_Picture_P008);
RegisterControlPosition(StrToWzID("P010"), kControl_Picture_P010);
RegisterControlPosition(StrToWzID("P011"), kControl_Picture_P011);
RegisterControlPosition(StrToWzID("P012"), kControl_Picture_P012);
RegisterControlPosition(StrToWzID("P013"), kControl_Picture_P013);
cash_type_ = ConvenienceStore::Define::kCashType_Cash;
purchase_type_ = kPurchase_Buy;
purchase_list().clear();
}
//------------------------------------------------------------------------------
uiConvenienceStore_Purchase::~uiConvenienceStore_Purchase( void )
{
Release();
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::Init(CDrawBase* drawbase)
{
bool is_result = true;
for (int i = 0; i < kListPerCount; ++i)
{
if (is_result)
{
is_result = dropdown_price(i)->Init(
#ifdef _NA_20111118_CASHSHOP_UI_RENEWAL
GetControlWZ(GetControlID_byPosition(kControl_Button_B000 + i)),
#else
GetStaticControlWZ(GetControlID_byPosition(kControl_Text_S008 + i)),
#endif //_NA_20111118_CASHSHOP_UI_RENEWAL
GetButtonControlWZ(GetControlID_byPosition(kControl_Button_B017 + i)),
GetListControlWZ(GetControlID_byPosition(kControl_List_L000 + i)),
NULL,
NULL);
dropdown_price(i)->SetBlendImage(GetPictureControlWZ(GetControlID_byPosition(kControl_Picture_P008 +i)));
dropdown_price(i)->set_simple_menu(true);
dropdown_price(i)->list_control()->SetStartLineGapTop(10);
dropdown_price(i)->list_control()->SetSellHeight(16);
}
}
#ifdef _RUSSIA
CCtrlStaticWZ* static_control_ptr = NULL;
static_control_ptr = static_cast<CCtrlStaticWZ*> (GetControlWZ_byPosition(kControl_Text_S001));
if (static_control_ptr)
{
GlobalFunc::SetCaption(static_control_ptr, _T(""));
}
#endif // _RUSSIA
ASSERT(true && "uiConvenienceStore_Purchase::Init false");
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::Release(void)
{
for (int i = 0; i < kListPerCount; ++i)
{
dropdown_price(i)->Release();
}
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::OnShowWindow(BOOL val)
{
if (val == TRUE)
{
//------------------------------------------------------------------------------
keyMsg msg;
ZeroMemory(&msg,sizeof(msg));
msg.dwType = uiConvenienceStore_Purchase::kDialog_ID;
msg.wParam = uiConvenienceStore_Purchase::kDialog_ID;
msg.DoSomething = GlobalFunc::DoShowWindowEx;
g_KeyQueueManager.PushBack(msg);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
if (purchase_type() == uiConvenienceStore_Purchase::kPurchase_Buy)
{
//2566 구매하기
if (GetControlID_byPosition(kControl_Text_S000))
GetStaticControlWZ(GetControlID_byPosition(kControl_Text_S000))->SetTextID(2566);
////155502 하단의 구입 버튼을 누르면 위 아이템이 구입됩니다.\n잘 확인 후 결제 하시길 바랍니다.
//GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Text_S001), 155502);
//155530 구입
GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Button_B001), ConvenienceStore::Define::kShopStringCode_Shop_Popup_Buy);
}
else
{
//155501 선물 하기
if (GetControlID_byPosition(kControl_Text_S000))
GetStaticControlWZ(GetControlID_byPosition(kControl_Text_S000))->SetTextID(155501);
////155503 하단의 선물 버튼을 누르면 위 아이템이 구입됩니다.\n잘 확인 후 결제 하시길 바랍니다.
//GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Text_S001), 155503);
//155529 선물
GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Button_B001), ConvenienceStore::Define::kShopStringCode_Shop_Popup_Gift);
}
//------------------------------------------------------------------------------
g_InterfaceManager.LockDlgs(uiConvenienceStore_Purchase::kDialog_ID);
}
else
{
if (GetManager()->popup_package() )
{
if (GetManager()->popup_package()->owner() == this)
{
GetManager()->popup_package()->uiConvenienceStore_PopupMenu::ShowInterface(FALSE);
}
}
RemovePurchase();
g_KeyQueueManager.DeleteMsg(uiConvenienceStore_Purchase::kDialog_ID);
#if WZENGINEVER >= 410
if (g_InterfaceManager.GetDialogManager()->GetLockDlgID() == uiConvenienceStore_Purchase::kDialog_ID)
{
g_InterfaceManager.UnLockDlgs();
}
#endif //#if WZENGINEVER >= 410
}
}
//------------------------------------------------------------------------------
DropdownControl* uiConvenienceStore_Purchase::dropdown_price(int index)
{
if (index >= 0 && index < uiConvenienceStore_Purchase::kListPerCount)
{
return &(dropdown_price_[index]);
}
return NULL;
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::MessageProc(SI_MESSAGE* message)
{
if (IsLock())
{
return;
}
if (GetManager() == NULL)
{
return;
}
//------------------------------------------------------------------------------
for (int i = 0; i < kListPerCount; ++i)
{
bool is_change = false;
if (dropdown_price(i)->MessageProc(message, OUT is_change))
{
if (is_change)
{
CCtrlButtonWZ* button_control = backslot_button(i);
ConvenienceStore::PurchaseItem* basket = reinterpret_cast<ConvenienceStore::PurchaseItem*>(button_control->GetUserData());
basket->SetPriceSequence( dropdown_price(i)->CurrentUserData() );
}
return;
}
}
//------------------------------------------------------------------------------
switch (message->eResultMsg)
{
case RT_MSG_LBUTTONCLICK:
OnLButtonClick(message);
break;
default:
uiConvenienceStore_Dialog::MessageProc(message);
VScrollDialog::MessageProc(message);
break;
}
}
//------------------------------------------------------------------------------
CCtrlVScrollWZ* uiConvenienceStore_Purchase::vscroll_control()
{
return GetVScrollControlWZ(GetControlID_byPosition(kControl_VScroll_V000));
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::GetScrollArea(RECT& area)
{
if ((GetManager()->popup_package()->IsVisible() == TRUE) &&
(GetManager()->popup_package()->InterSectRect(Mouse::Instance()->CheckMousePos()) == TRUE))
{
return false;
}
for (int i = 0; i < kListPerCount; ++i)
{
if (dropdown_price(i) != NULL)
{
if (dropdown_price(i)->IsOpened() == true)
{
return false;
}
}
}
for (int i = 0; i < kListPerCount; ++i)
{
CCtrlButtonWZ* button_control = backslot_button(i);
if ((button_control != NULL) && (IsOverControl(button_control) == true))
{
area = button_control->GetSizeRect();
return true;
}
}
return false;
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::OnVScrollThumb(SI_MESSAGE* msg)
{
if (vscroll_control() && VScrollDialog::OnVScrollThumb(msg) == true)
{
FillPurchase(vscroll_control()->GetScrollPosWZ());
GetManager()->popup_package()->uiConvenienceStore_PopupMenu::ShowInterface(FALSE);
return true;
}
return false;
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::OnVScrollUp(SI_MESSAGE* msg)
{
if (vscroll_control() && VScrollDialog::OnVScrollUp(msg) == true)
{
FillPurchase(vscroll_control()->GetScrollPosWZ());
GetManager()->popup_package()->uiConvenienceStore_PopupMenu::ShowInterface(FALSE);
return true;
}
return false;
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::OnVScrollDown(SI_MESSAGE* msg)
{
if (vscroll_control() && VScrollDialog::OnVScrollDown(msg) == true)
{
FillPurchase(vscroll_control()->GetScrollPosWZ());
GetManager()->popup_package()->uiConvenienceStore_PopupMenu::ShowInterface(FALSE);
return true;
}
return false;
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::OnLButtonClick(SI_MESSAGE* message)
{
bool result = true;
switch (GetControlPosition_byID(message->dwCtrlID))
{
case kControl_Button_B004:
case kControl_Button_B028:
{
uiBase::ShowInterface(FALSE);
}
break;
case kControl_Button_B001:
{
// 구매하기
uiConvenienceStore_Dialog::AskShowType ask_show_type = kAskShow_None;
if (purchase_type() == kPurchase_Buy)
{
//155507 정말 구입 하시겠습니까?
//155454 구매 후 7일 이내 구매 철회가 가능하며, 사용된 아이템 및\n거래로 주고 받은 아이템은 구매철회가 불가능합니다.
//155570 <font=tt12><color=ffffffff>-----------------------------------------------</color></font>
GetManager()->ask()->OpenAsk( this, uiConvenienceStore_Dialog::kAskShow_Buy );
GetManager()->ask()->AppendFText( g_InterfaceManager.GetInterfaceString(155507) );
#ifndef _RUSSIA
GetManager()->ask()->AppendFText( g_InterfaceManager.GetInterfaceString(155454) );
#endif // _RUSSIA
GetManager()->ask()->AppendFText( g_InterfaceManager.GetInterfaceString(155570) );
for( size_t i=0;i!=purchase_list().size();++i)
{
GetManager()->ask()->AppendItemText( purchase_list().at(i) );
}
}
else if (purchase_type() == kPurchase_Gift)
{
//155508 정말 선물 하시겠습니까?
//155455 선물보내기로 전송된 아이템은 구매철회가 불가능합니다.
//155570 <font=tt12><color=ffffffff>-----------------------------------------------</color></font>
GetManager()->ask()->OpenAsk( this, uiConvenienceStore_Dialog::kAskShow_Gift );
GetManager()->ask()->AppendFText( g_InterfaceManager.GetInterfaceString(155508) );
#ifndef _RUSSIA
GetManager()->ask()->AppendFText( g_InterfaceManager.GetInterfaceString(155455) );
#endif // _RUSSIA
GetManager()->ask()->AppendFText( g_InterfaceManager.GetInterfaceString(155570) );
for( size_t i=0;i!=purchase_list().size();++i)
{
GetManager()->ask()->AppendItemText( purchase_list().at(i) );
}
}
}
break;
case kControl_Button_B017:
{
}
break;
case kControl_Button_B018:
case kControl_Button_B020:
case kControl_Button_B021:
case kControl_Button_B022:
case kControl_Button_B023:
{
if (vscroll_control())
{
int index = GetControlPosition_byID(message->dwCtrlID) - kControl_Button_B018;
RemovePurchase(vscroll_control()->GetScrollPosWZ() + index);
if (purchase_list().size() > 0)
{
int scroll_max_num = max(0, (int)purchase_list().size() - kListPerCount);
ResizeingVScrollControl(scroll_max_num, vscroll_control()->GetScrollPosWZ());
FillPurchase(vscroll_control()->GetScrollPosWZ());
}
else
{
uiBase::ShowInterface(FALSE);
}
}
}
break;
case kControl_Button_B024:
{
}
break;
case kControl_Button_B025:
{
}
break;
case kControl_Button_B026:
{
}
break;
case kControl_Button_B027:
{
}
break;
case kControl_Button_B029:
{
#if defined(_GLOBAL) || defined(_CHINA)
//! 캐시 충전 //155566 http://www.sunonline.co.kr
GlobalFunc::ExecWebSite(155566);
#else
// 6825 준비중입니다. 웹페이지에서 확인해주세요.
GetManager()->ask()->OpenAsk( this, uiConvenienceStore_Dialog::kAskShow_Message );
GetManager()->ask()->AppendFText(g_InterfaceManager.GetInterfaceString( 6825 ));
GetManager()->ask()->EnableCloseButton();
#endif
}
break;
case kControl_Text_ST05:
{
}
break;
case kControl_Text_ST20:
{
}
break;
case kControl_Text_ST12:
{
}
break;
case kControl_Text_S000:
{
}
break;
case kControl_Text_S003:
{
}
break;
case kControl_Text_S004:
{
}
break;
case kControl_Text_S005:
{
}
break;
case kControl_Text_S006:
{
}
break;
case kControl_Text_S007:
{
}
break;
#ifdef _NA_20111118_CASHSHOP_UI_RENEWAL
#else
case kControl_Text_S008:
{
}
break;
case kControl_Text_S009:
{
}
break;
case kControl_Text_S010:
{
}
break;
case kControl_Text_S011:
{
}
break;
case kControl_Text_S012:
{
}
break;
#endif //_NA_20111118_CASHSHOP_UI_RENEWAL
case kControl_Text_S013:
{
}
break;
case kControl_Text_S014:
{
}
break;
case kControl_Text_S015:
{
}
break;
case kControl_Text_S016:
{
}
break;
case kControl_Text_S001:
{
}
break;
case kControl_Text_S002:
{
}
break;
case kControl_Text_S017:
{
}
break;
case kControl_Text_S018:
{
}
break;
//case kControl_Text_S019:
// {
// }
// break;
case kControl_Text_S020:
{
}
break;
//case kControl_List_L000:
// {
// }
// break;
//case kControl_List_L005:
// {
// }
// break;
//case kControl_List_L006:
// {
// }
// break;
//case kControl_List_L007:
// {
// }
// break;
//case kControl_List_L008:
// {
// }
// break;
//case kControl_VScroll_V000:
// {
// }
// break;
case kControl_Picture_P002:
{
}
break;
case kControl_Picture_P005:
{
}
break;
case kControl_Picture_P007:
{
}
break;
case kControl_Picture_PI11:
{
}
break;
case kControl_Picture_PI13:
{
}
break;
case kControl_Picture_P001:
{
}
break;
case kControl_Picture_P006:
{
}
break;
default:
{
}
break;
}
return result;
}
void uiConvenienceStore_Purchase::OpenPurchase( PurchaseType _purchase_type )
{
purchase_type_ = _purchase_type;
uiConvenienceStore_Dialog::ShowInterface(TRUE);
_UpdateControlState();
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::_UpdateControlState()
{
if( purchase_type_ == kPurchase_Gift )
{
if (GetControlWZ_byPosition(kControl_Text_S019))
GetControlWZ_byPosition(kControl_Text_S019)->SetTextWZ(gift_recv_name_.c_str());
}
else
{
if (GetControlWZ_byPosition(kControl_Text_S019))
GetControlWZ_byPosition(kControl_Text_S019)->SetTextWZ(g_pHero->GetName());
}
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::SetGiftMessage( LPCTSTR target_name, LPCTSTR send_message )
{
if (target_name != NULL)
{
gift_recv_name_ = target_name;
}
if (send_message != NULL)
{
gift_msg_ = send_message;
}
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::UpdateUI(TCHAR* recv_character_name)
{
if (GetControlWZ_byPosition(kControl_Text_S019))
GetControlWZ_byPosition(kControl_Text_S019)->SetTextWZ(recv_character_name);
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::InsertPurchase(ConvenienceStore::ProductItem* product, int basket_product_index)
{
if (product == NULL)
{
return false;
}
if ((purchase_type() == kPurchase_Buy && product->is_possible_sales() == false) ||
(purchase_type() == kPurchase_Gift && product->is_possible_gift() == false))
{
return false;
}
ConvenienceStore::PurchaseItem* basket = ConvenienceStore::PurchaseItem::CreatePurchase(product, basket_product_index);
if (basket == NULL)
{
return false;
}
purchase_list().push_back(basket);
//------------------------------------------------------------------------------
int scroll_max_num = max(0, (int)purchase_list().size() - kListPerCount);
ResizeingVScrollControl(scroll_max_num, 0);
FillPurchase(vscroll_control()->GetScrollPosWZ());
return true;
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::RemovePurchase()
{
std::vector<ConvenienceStore::PurchaseItem*>::iterator begin = purchase_list().begin();
std::vector<ConvenienceStore::PurchaseItem*>::iterator end = purchase_list().end();
for (; begin != end; ++ begin)
{
ConvenienceStore::PurchaseItem* basket = (*begin);
SAFE_DELETE(basket)
}
purchase_list().clear();
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::RemovePurchase(int purchase_index)
{
if (purchase_index < 0 || purchase_index >= static_cast<int>(purchase_list().size()))
{
return false;
}
std::vector<ConvenienceStore::PurchaseItem*>::iterator iter = purchase_list().begin() + purchase_index;
if (iter != purchase_list().end())
{
ConvenienceStore::PurchaseItem* basket = (*iter);
SAFE_DELETE(basket);
purchase_list().erase(iter);
}
return true;
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::OnUpdateSolarDialog()
{
#if WZENGINEVER >= 410
if ((g_InterfaceManager.GetDialogManager()->GetLockDlgID() != 0) &&
(g_InterfaceManager.GetDialogManager()->GetLockDlgID() != uiConvenienceStore_Purchase::kDialog_ID))
{
return;
}
#endif //#if WZENGINEVER >= 410
//------------------------------------------------------------------------------
VScrollDialog::Update();
//------------------------------------------------------------------------------
//가격표시
CASH purchase_price = GetPurchasePrice();
CASH my_price = (CASH)ConvenienceStore::CashShop::instance()->GetMyCash();
if( cash_type_ == ConvenienceStore::Define::kCashType_PPCard )
my_price = (CASH)ConvenienceStore::CashShop::instance()->GetMyPPCash();
else if( cash_type_ == ConvenienceStore::Define::kCashType_Mileage )
my_price = (CASH)ConvenienceStore::CashShop::instance()->GetMyMileage();
GlobalFunc::SetText_SignMoney(GetControlWZ_byPosition(kControl_Text_ST05), my_price);
GlobalFunc::SetText_SignMoney(GetControlWZ_byPosition(kControl_Text_S015), purchase_price);
GlobalFunc::SetText_SignMoney(GetControlWZ_byPosition(kControl_Text_S016), (INT64)my_price - (INT64)purchase_price);
if (GetControlWZ_byPosition(kControl_Button_B001))
{
ENUM_DRAWSTATE draw_state = GetControlWZ_byPosition(kControl_Button_B001)->GetDrawState();
if ((my_price < purchase_price) && (draw_state != E_DISABLE))
{
GetControlWZ_byPosition(kControl_Button_B001)->EnableWindowWZ(false);
}
else if ((my_price >= purchase_price) && (draw_state == E_DISABLE))
{
GetControlWZ_byPosition(kControl_Button_B001)->EnableWindowWZ(true);
}
}
//155496 총 %s개의 아이템을 선택 하셨습니다.
GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Text_ST20), 155496, (int)purchase_list().size());
//------------------------------------------------------------------------------
if (my_price < purchase_price)
{
//155504 현재 보유하신 소지금이 부족하여 정상적인 구입을\n하실 수 없습니다. 캐시 충전 후에 구입 하시길 바랍니다.
if (GetControlID_byPosition(kControl_Text_S001))
GetStaticControlWZ(GetControlID_byPosition(kControl_Text_S001))->SetTextColor(RGBA(255, 0, 0, 255));
GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Text_S001), 155504);
}
else
{
#ifdef _RUSSIA
CCtrlStaticWZ* static_control_ptr = NULL;
static_control_ptr = static_cast<CCtrlStaticWZ*> (GetControlWZ_byPosition(kControl_Text_S001));
if (static_control_ptr)
{
GlobalFunc::SetCaption(static_control_ptr, _T(""));
}
#else
if (GetControlID_byPosition(kControl_Text_S001))
GetStaticControlWZ(GetControlID_byPosition(kControl_Text_S001))->SetTextColor(RGBA(255, 255, 255, 255));
if (purchase_type() == uiConvenienceStore_Purchase::kPurchase_Buy)
{
//155502 하단의 구입 버튼을 누르면 위 아이템이 구입됩니다.\n잘 확인 후 결제 하시길 바랍니다.
GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Text_S001), 155502);
}
else
{
//155503 하단의 선물 버튼을 누르면 위 아이템이 구입됩니다.\n잘 확인 후 결제 하시길 바랍니다.
GlobalFunc::SetTextFromStringTable(GetControlWZ_byPosition(kControl_Text_S001), 155503);
}
#endif // _RUSSIA
}
//------------------------------------------------------------------------------
for (int i = 0; i < kListPerCount; ++i)
{
if (dropdown_price(i) != NULL)
{
dropdown_price(i)->Update();
}
}
UpdateTooltip();
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::OnRenderSolarDialog()
{
#if WZENGINEVER >= 410
if (g_InterfaceManager.GetDialogManager()->GetLockDlgID() == uiConvenienceStore_Purchase::kDialog_ID)
{
POINT pt = g_pApplication->Get2DModeMapping();
g_pSunRenderer->ColorFill(WzColor_RGBA(0,0,0,128), 0.0f, 0.0f, (float)pt.x,(float)pt.y);
GetDialogWZ()->OnDraw(true);
}
#endif //#if WZENGINEVER >= 410
for (int i = 0; i < kListPerCount; ++i)
{
CCtrlButtonWZ* button_control = backslot_button(i);
CControlWZ* image_control = GetControlWZ_byPosition(kControl_Button_B011 + i);
if (button_control != NULL && image_control != NULL)
{
ConvenienceStore::PurchaseItem* basket = reinterpret_cast<ConvenienceStore::PurchaseItem*>(button_control->GetUserData());
if (basket != NULL && basket->GetIconImage() != NULL)
{
basket->GetIconImage()->Render(&(image_control->GetSizeRect()));
}
}
}
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::FillPurchase(int begin_purchase_index)
{
bool buy_mileage = cash_type_ == ConvenienceStore::Define::kCashType_Mileage;
for (int i = 0; i < kListPerCount; ++i)
{
CCtrlStaticWZ* name_control = GetStaticControlWZ(GetControlID_byPosition(kControl_Text_S003 + i));
CCtrlButtonWZ* button_control = backslot_button(i);
CControlWZ* close_control = GetControlWZ_byPosition(kControl_Button_B018 + i);
dropdown_price(i)->DeleteItemAll();
dropdown_price(i)->SetEnable(false);
int index = begin_purchase_index + i;
if (index >= 0 && index < (int)purchase_list().size())
{
std::vector<ConvenienceStore::PurchaseItem*>::const_reference basket = purchase_list().at(index);
close_control->EnableWindowWZ(true);
name_control->SetTextWZ(basket->GetName());
button_control->SetUserData(reinterpret_cast<DWORD>(basket));
if (basket->is_lotto() || basket->is_package())
{
TCHAR msg_text[INTERFACE_STRING_LENGTH] = {NULL, };
ConvenienceStore::GetDisplayPriceStringByProduct(msg_text, INTERFACE_STRING_LENGTH, basket);
dropdown_price(i)->InsertItem(msg_text, (void*)(basket->GetPriceSequence()), StrToWzID("st10"), DT_VCENTER | DT_CENTER);
dropdown_price(i)->ResetVScroll();
dropdown_price(i)->SelectByUserData(basket->GetPriceSequence());
}
else
{
std::vector<ConvenienceStore::ProductInfo>::iterator begin = basket->GetInfoVector().begin();
std::vector<ConvenienceStore::ProductInfo>::iterator end = basket->GetInfoVector().end();
int sel_index = 0;
for (; begin != end; ++begin, ++sel_index)
{
TCHAR msg_text[INTERFACE_STRING_LENGTH] = {NULL, };
ConvenienceStore::GetDisplayPriceStringByProductInfo(msg_text, INTERFACE_STRING_LENGTH, (ConvenienceStore::ProductInfo*)&(*begin), buy_mileage);
dropdown_price(i)->InsertItem(msg_text, (void*)begin->GetPriceProperty().GetPriceSequence(), StrToWzID("st10"), DT_VCENTER | DT_CENTER);
}
dropdown_price(i)->SetEnable(true);
dropdown_price(i)->ResetVScroll();
dropdown_price(i)->SelectByUserData(basket->GetPriceSequence());
}
}
else
{
close_control->EnableWindowWZ(false);
name_control->SetTextWZ("");
button_control->SetUserData(NULL);
}
}
}
//------------------------------------------------------------------------------
CCtrlButtonWZ* uiConvenienceStore_Purchase::backslot_button(int slot_index)
{
return GetButtonControlWZ(GetControlID_byPosition(kControl_Button_B003 + slot_index));
}
//------------------------------------------------------------------------------
CASH uiConvenienceStore_Purchase::GetPurchasePrice()
{
std::vector<ConvenienceStore::PurchaseItem*>::iterator begin = purchase_list().begin();
std::vector<ConvenienceStore::PurchaseItem*>::iterator end = purchase_list().end();
CASH total_price = 0;;
for (; begin != end; ++begin)
{
total_price += (*begin)->GetPrice((*begin)->GetPriceSequence());
}
return total_price;
}
//------------------------------------------------------------------------------
void uiConvenienceStore_Purchase::UpdateTooltip()
{
#if WZENGINEVER >= 410
if ((g_InterfaceManager.GetDialogManager()->GetLockDlgID() != 0) &&
(g_InterfaceManager.GetDialogManager()->GetLockDlgID() != uiConvenienceStore_Purchase::kDialog_ID))
{
return;
}
#endif //#if WZENGINEVER >= 410
//! 묶음 상품 툴팁이 떠 있는지 확인한다.
if (GetManager()->popup_package()->IsVisible() == TRUE)
{
if ((GetManager()->popup_package()->InterSectRect(Mouse::Instance()->CheckMousePos()) == TRUE) ||
(IsOverControl(GetManager()->popup_package()->owner_control()) == true))
{
return;
}
}
for (int i = 0; i < kListPerCount; ++i)
{
CCtrlButtonWZ* button_control = backslot_button(i);
CControlWZ* picture_control = GetControlWZ_byPosition(kControl_Button_B011 + i);
if ((IsOverControl(picture_control) == true) && (button_control->GetUserData() != NULL))
{
ConvenienceStore::PurchaseItem* basket = reinterpret_cast<ConvenienceStore::PurchaseItem*>(button_control->GetUserData());
if (basket->IsPurchase() == false)
{
continue;
}
if (basket->is_package() == true)
{
GetManager()->popup_package()->ShowInterface(TRUE, basket);
GetManager()->popup_package()->Reset();
GetManager()->popup_package()->set_owner(this, picture_control);
GetManager()->popup_package()->MoveWindowWZ(button_control->GetSizeRect().left,
picture_control->GetSizeRect().bottom);
return;
}
else
{
GetManager()->RegisterTooltip(basket);
}
break;
}
}
GetManager()->popup_package()->uiConvenienceStore_PopupMenu::ShowInterface(FALSE);
}
//------------------------------------------------------------------------------
bool uiConvenienceStore_Purchase::OnClickAskDialog(uiConvenienceStore_Dialog::AskCommandType command_type, uiConvenienceStore_Dialog::AskShowType show_type, void* user_data)
{
switch( show_type )
{
case uiConvenienceStore_Dialog::kAskShow_Buy:
case uiConvenienceStore_Dialog::kAskShow_Gift:
case uiConvenienceStore_Dialog::kAskShow_StorageBuy_OneRecv:
case uiConvenienceStore_Dialog::kAskShow_StorageBuy_AllRecv:
case uiConvenienceStore_Dialog::kAskShow_StorageBuy_AllRecv_Confirm: //!< 받고 나서 확인창
case uiConvenienceStore_Dialog::kAskShow_StorageGift_OneRecv:
case uiConvenienceStore_Dialog::kAskShow_StorageGift_AllRecv:
case uiConvenienceStore_Dialog::kAskShow_StorageGift_AllRecv_Confirm: //!< 받고 나서 확인창
// 구매의 확인
if (command_type == uiConvenienceStore_Dialog::kAskCommand_OK)
{
if( purchase_list().size() == 0 )
{
return true;
}
// 결제 수단 설정
ConvenienceStore::Define::CashType cash_type = cash_type_;
if (purchase_type() == uiConvenienceStore_Purchase::kPurchase_Buy)
{
ConvenienceStore::CashShop::instance()->SendBuyItem(purchase_list(), cash_type );
GetManager()->confirm()->SetRecvName(g_pHero->GetName());
}
else if (purchase_type() == uiConvenienceStore_Purchase::kPurchase_Gift)
{
ConvenienceStore::CashShop::instance()->SendGiftItem(purchase_list(), cash_type, gift_recv_name_.c_str(), gift_msg_.c_str() );
GetManager()->confirm()->SetRecvName( gift_recv_name_.c_str() );
}
//! basket 비운다.
std::vector<ConvenienceStore::PurchaseItem*>::reverse_iterator rbegin = purchase_list().rbegin();
std::vector<ConvenienceStore::PurchaseItem*>::reverse_iterator rend = purchase_list().rend();
for (; rbegin != rend; ++rbegin)
{
GetManager()->basket()->RemoveBasket((*rbegin)->GetBasketProduceIndex());
}
uiConvenienceStore_Dialog::ShowInterface(FALSE);
}
break;
case uiConvenienceStore_Dialog::kAskShow_Message:
break;
}
return true;
}