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

320 lines
8.0 KiB
C++

#include "SunClientPrecompiledHeader.h"
#ifdef __NA_001027_20080423_RANDOM_REWARD_EVENT_
#include "uiGuildEventDialog.h"
#include "InterfaceManager.h"
#include "uiSystemMan/uiSystemMan.h"
#include "GlobalFunc.h"
#include "ExchangeRewardInfo.h"
#include "GlobalFunc.h"
#include "ItemInfoParser.h"
#include "GameConst_Color.h"
#include "uiEventMan/uiEventMan_def.h"
void _fn_GuildEventReward(bool bYes )
{
if( bYes )
{
uiGuildEventDialog * pGuildEvnetDialog = GET_CAST_DIALOG( uiGuildEventDialog, IM_EVENT_MANAGER::GUILD_EVENT );
if( pGuildEvnetDialog )
{
pGuildEvnetDialog->NET_SEND_CG_ITEM_EXCHANGE_REWARD_ITEM_SYN();
}
}
else
{
TCHAR szMessage[INTERFACE_STRING_LENGTH];
// 아이템 보상을 취소 하였습니다
g_InterfaceManager.GetInterfaceString( 5380, szMessage );
GlobalFunc::OutputMsg_Notice( eOUTPUT_MSG_CHAT , szMessage );
}
}
WzID uiGuildEventDialog::m_wzID[DLGPOS_MAX] =
{
StrToWzID("BT00"),
StrToWzID("B999"),
StrToWzID("LS00"),
StrToWzID("VS00"),
StrToWzID("LS01"),
StrToWzID("ST00"),
StrToWzID("ST01"),
};
//------------------------------------------------------------------------------
/**
*/
uiGuildEventDialog::uiGuildEventDialog(InterfaceManager * pUIMan) : uiBase(pUIMan)
{
}
//------------------------------------------------------------------------------
/**
*/
uiGuildEventDialog::~uiGuildEventDialog()
{
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::Init(CDrawBase* pDrawBase)
{
uiBase::Init(pDrawBase);
m_pButton =(CCtrlButtonWZ *) getControl(DLGPOS_BTN_OK);
assert( m_pButton );
m_pList = (CCtrlListWZ *) getControl(DLGPOS_LIST);
m_pVScroll = ( CCtrlVScrollWZ *) getControl(DLGPOS_VSCROLL);
CCtrlListWZ * pTextList = (CCtrlListWZ *) getControl( DLGPOS_TEXT_LIST );
if( pTextList )
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] = { '\0', };
g_InterfaceManager.GetInterfaceString( 200236, szMessage );
GlobalFunc::AddDescribeString( pTextList, szMessage, StrToWzID("mn12"), DT_LEFT | DT_VCENTER,
RGBA(255,255,255,0),
RGBA(255,255,255,255),
RGBA(255,255,255,255) );
}
m_ClientExchangInfo.itemCode = 0;
m_ClientExchangInfo.itemNum = 0;
m_iCurScrollValue = 0;
m_iMaxScrollValue = 0;
m_bShow = FALSE;
RegisterItemList();
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::Release()
{
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::OnUpdateSolarDialog()
{
if( ! m_bShow )
{
ShowInterface(FALSE);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::OnRenderSolarDialog()
{
if( ! m_bShow )
{
ShowInterface(FALSE);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::Process(DWORD dwTick)
{
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::OnShowWindow(BOOL val)
{
if( val )
{
MoveCenter();
keyMsg msg;
ZeroMemory(&msg,sizeof(msg));
msg.dwType = eDoType_dialog_GuildEventWindow;
msg.wParam = InterfaceManager::DIALOG_GUILD_EVENT_WINDOW;
msg.DoSomething = GlobalFunc::DoShowWindow;
g_KeyQueueManager.PushBack(msg);
m_bShow = TRUE;
}
else
{
g_KeyQueueManager.DeleteMsg(eDoType_dialog_GuildEventWindow);
m_bShow = FALSE;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::MessageProc(SI_MESSAGE * pMessage)
{
switch ( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
switch( getControlIDToPos( pMessage->dwCtrlID) )
{
case DLGPOS_BTN_OK:
{
uiSystemMan * pSystemMan = ( uiSystemMan *) g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM);
if( pSystemMan )
{
if( m_pList->GetCurSel() == -1)
return;
EXCHANGE_REWARDINFO * pData = (EXCHANGE_REWARDINFO *)m_pList->GetItemData(m_pList->GetCurSel());
if( ! pData )
return;
m_ClientExchangInfo.itemCode = pData->m_ItemCode;
m_ClientExchangInfo.itemNum = pData->m_ItemCount;
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,} , szItemName[INTERFACE_STRING_LENGTH] = {0,}, string[INTERFACE_STRING_LENGTH];
g_InterfaceManager.GetItemName(m_ClientExchangInfo.itemCode , szItemName , INTERFACE_STRING_LENGTH);
// %s %d 개를 보상하시겠습니까?
g_InterfaceManager.GetInterfaceString( 5381, string );
Snprintf( szMessage , INTERFACE_STRING_LENGTH -1 , string, szItemName , m_ClientExchangInfo.itemNum);
pSystemMan->Sys_ConfirmLock(szMessage ,_fn_GuildEventReward );
}
}
break;
case DLGPOS_BTN_EXIT:
{
m_bShow = FALSE;
}
break;
}
}
break;
case RT_MSG_SB_LINEBOTTOM:
{
switch( getControlIDToPos( pMessage->dwCtrlID ) )
{
case DLGPOS_VSCROLL:
{
if( m_iCurScrollValue < m_iMaxScrollValue)
{
m_iCurScrollValue++;
m_pVScroll->SetScrollPosWZ(m_iCurScrollValue);
m_pList->SetBeginDrawIndex(m_iCurScrollValue);
}
}
break;
}
}
break;
case RT_MSG_SB_LINETOP:
{
switch( getControlIDToPos( pMessage->dwCtrlID ) )
{
case DLGPOS_VSCROLL:
{
if( m_iCurScrollValue > 0 )
{
m_iCurScrollValue--;
m_pVScroll->SetScrollPosWZ(m_iCurScrollValue);
m_pList->SetBeginDrawIndex(m_iCurScrollValue);
}
}
break;
}
}
break;
case RT_MSG_SB_THUMBPOSITION:
{
switch( getControlIDToPos( pMessage->dwCtrlID ) )
{
case DLGPOS_VSCROLL:
{
m_iCurScrollValue = m_pVScroll->GetScrollPosWZ();
m_pList->SetBeginDrawIndex(m_iCurScrollValue);
}
break;
}
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiGuildEventDialog::NetworkProc(MSG_BASE * pMsg)
{
}
void uiGuildEventDialog::RegisterItemList()
{
m_pList->DeleteItemAll();
m_pList->SetSellHeight(20);
m_pList->SetUseReport(true);
m_pList->SetReportUseCnt(2);
m_pList->SetHideReportRender(TRUE);
CControlWZ * pButton0 = getControl( DLGPOS_TEXT_BUTTON0 );
CControlWZ * pButton1 = getControl( DLGPOS_TEXT_BUTTON1 );
RECT rc0 = pButton0->GetSize();
RECT rc1 = pButton1->GetSize();
// 아이템명
GlobalFunc::SetReportButtonInfo( m_pList, 0, rc0.right, g_InterfaceManager.GetInterfaceString( 1204 ) );
// 갯수
GlobalFunc::SetReportButtonInfo( m_pList, 1, rc1.right, g_InterfaceManager.GetInterfaceString( 1205 ) );
EXCHANGE_REWARDINFO_HASH * pHash = ExchangeRewardInfoParser::Instance()->GetHashTable();
if( ! pHash )
return;
EXCHANGE_REWARDINFO_HASH::iterator itr;
for ( itr = pHash->begin() ; itr != pHash->end() ; ++itr)
{
EXCHANGE_REWARDINFO * pData = *itr;
if( ! pData )
continue;
BASE_ITEMINFO * pItemInfo = ItemInfoParser::Instance()->GetItemInfo( pData->m_ItemCode );
if( pItemInfo )
{
int index = m_pList->InsertItemBack();
TCHAR szItemName[INTERFACE_STRING_LENGTH] = {0,};
g_InterfaceManager.GetInterfaceString( pItemInfo->m_NCode , szItemName , INTERFACE_STRING_LENGTH );
GlobalFunc::SetItem(m_pList , index , 0 ,szItemName ,StrToWzID("mn12") ,DT_VCENTER | DT_CENTER ,
c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor);
TCHAR szItemNum[INTERFACE_STRING_LENGTH] = {0,};
Snprintf(szItemNum , INTERFACE_STRING_LENGTH -1 , _T("%d") , pData->m_ItemCount);
GlobalFunc::SetItem(m_pList , index , 1 ,szItemNum ,StrToWzID("mn12") ,DT_VCENTER | DT_CENTER ,
c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor);
m_pList->SetItemData( index , pData);
}
}
m_iMaxScrollValue = max( 0 , m_pList->GetListRowCnt() - MAX_VIEW_LIST_ROW_COUNT);
m_pVScroll->SetScrollRangeWZ(0, m_iMaxScrollValue);
m_pVScroll->SetScrollPosWZ(0);
}
void uiGuildEventDialog::NET_SEND_CG_ITEM_EXCHANGE_REWARD_ITEM_SYN()
{
MSG_CG_ITEM_EXCHANGE_REWARD_ITEM_SYN SendPacket;
SendPacket.m_ItemCode = m_ClientExchangInfo.itemCode;
SendPacket.m_Count = m_ClientExchangInfo.itemNum;
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendPacket, sizeof(SendPacket));
}
#endif