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

301 lines
6.8 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "uiBattleZoneWinDialog.h"
#include "uiBattleZoneMan/uiBattleZoneMan.h"
#include "ResourceManager.h"
#include "IconMgr.h"
#include "IconImage.h"
#include "Hero.h"
#include "interfacemanager.h"
#include "globalfunc.h"
#include "uiSystemMan/uiSystemMan.h"
//------------------------------------------------------------------------------
WzID uiBattleZoneWinDialog::m_wzId[DIALOG_MAX] =
{
StrToWzID("T001"), //DLGPOS_WIN //9307 %d win
StrToWzID("T002"), //DLGPOS_EXP //9309 경험치 +%d
StrToWzID("T003"), //DLGPOS_MONEY //9310 하임 + %d
StrToWzID("BT00"), //DLGPOS_ITEM //보상 아이템
StrToWzID("BT01"), //DLGPOS_BTN_EXIT 닫기
};
//------------------------------------------------------------------------------
/**
*/
uiBattleZoneWinDialog::uiBattleZoneWinDialog(InterfaceManager *pUIMan) :
uiBase(pUIMan),
m_bControlsInitialized(false)
{
this->m_pBattleZoneMan =
static_cast<uiBattleZoneMan *>(this->GetUIMan()->GetUserInterfaceManager(UIMAN_BATTLEZONE));
assert (m_pBattleZoneMan);
if (!this->m_pBattleZoneMan)
{
#ifdef _DEBUG
uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM);
if(pSystemMan)
pSystemMan->Sys_VerifyLock(_T("m_pBattleZoneMan이 없습니다."));
#endif
this->ShowInterface(FALSE);
return;
}
for (int i=0; i<POS_TXT_SIZE; ++i)
{
this->m_pTxtControls[i] = NULL;
}
ZeroMemory(&m_RewardItem, sizeof(m_RewardItem));
}
//------------------------------------------------------------------------------
/**
*/
uiBattleZoneWinDialog::~uiBattleZoneWinDialog()
{
this->Release();
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::Init(CDrawBase* pDrawBase)
{
uiBase::Init(pDrawBase);
this->InitControls();
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::Release()
{
if(m_RewardItem.pImage)
{
ICONMGR()->RemoveIcon(m_RewardItem.pImage);
m_RewardItem.pImage = NULL;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::InitControls()
{
for (int i=0; i<POS_TXT_SIZE; ++i)
{
this->m_pTxtControls[i] =
static_cast<CCtrlStaticWZ *>(this->getControl(DLGPOS_WIN + i));
assert (this->m_pTxtControls[i]);
}
this->m_bControlsInitialized = true;
}
//------------------------------------------------------------------------------
void uiBattleZoneWinDialog::OnShowWindow( BOOL val )
{
if (val)
{
SolarDialog::MoveCenter();
if (!this->m_bControlsInitialized)
{
this->ShowInterface(FALSE);
return;
}
keyMsg msg;
ZeroMemory(&msg,sizeof(msg));
msg.dwType = eDoType_dialog_chunting_win;
msg.wParam = InterfaceManager::DIALOG_BATTLEZONE_CHUNTING_WIN;
msg.DoSomething = GlobalFunc::DoShowWindow;
g_KeyQueueManager.PushBack(msg);
}
else
{
g_KeyQueueManager.DeleteMsg(eDoType_dialog_chunting_win);
if(m_RewardItem.pImage)
{
ICONMGR()->RemoveIcon(m_RewardItem.pImage);
m_RewardItem.pImage = NULL;
}
}
}
//------------------------------------------------------------------------------
/**
*/
BOOL uiBattleZoneWinDialog::_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 uiBattleZoneWinDialog::_setResult(int iWin, int iExp, int iMoney, CODETYPE dwCode, int iItemCount)
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,};
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, _T("%d WIN POINT"), iWin);
GlobalFunc::SetCaption (m_pTxtControls[DLGPOS_WIN], szMessage);
g_InterfaceManager.GetInterfaceString( 9309, szTemp, INTERFACE_STRING_LENGTH );
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, iExp);
GlobalFunc::SetCaption (m_pTxtControls[DLGPOS_EXP], szMessage);
g_InterfaceManager.GetInterfaceString( 9310, szTemp, INTERFACE_STRING_LENGTH );
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, iMoney);
GlobalFunc::SetCaption (m_pTxtControls[DLGPOS_MONEY], szMessage);
// 보상아이템
m_RewardItem.dwCode = dwCode;
m_RewardItem.dwCount = iItemCount;
if(m_RewardItem.pImage)
{
ICONMGR()->RemoveIcon(m_RewardItem.pImage);
m_RewardItem.pImage = NULL;
}
RESOURCECODE code = 0;
if(dwCode)
code = ResourceManager::Instance()->GetItemSlotImageResourceCode(dwCode);
if (code != 0)
{
m_RewardItem.pImage = ICONMGR()->Add(code);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::ShowResultWin(int iWin, int iExp, int iMoney, CODETYPE dwCode, int iItemCount)
{
_setResult(iWin, iExp, iMoney, dwCode, iItemCount);
ShowInterface(TRUE);
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::MessageProc( SI_MESSAGE * pMessage )
{
if (!_isEnable())
return;
switch( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
switch( getCtrlIDToPos( pMessage->dwCtrlID ) )
{
case DLGPOS_BTN_EXIT:
{
this->ShowInterface(FALSE);
}
break;
}
}
break;
default:
{
SolarDialog::MessageProc( pMessage );
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::OnUpdateSolarDialog()
{
if (!_isEnable())
return;
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::OnRenderSolarDialog()
{
if (!_isEnable())
return;
CControlWZ *pControl = getControl(DLGPOS_ITEM);
if (m_RewardItem.pImage && m_RewardItem.dwCode)
{
if (pControl)
{
pControl->ShowWindowWZ(WZ_SHOW);
RECT rc = pControl->GetSizeRect();
m_RewardItem.pImage->Render(&rc);
if(m_RewardItem.dwCount > 1)
{
TCHAR szCount[128] = {0,};
Sprintf(szCount,_T("%d") ,m_RewardItem.dwCount);
WzColor color = WzColor_RGBA(255,255,255,255);
rc.top += 20;
rc.bottom += 20;
g_pSunRenderer->x_pManagerTextOut->DrawText(szCount,&rc,color);
}
}
}
else
{
if(pControl)
{
pControl->ShowWindowWZ(WZ_HIDE);
}
}
}
//------------------------------------------------------------------------------
/**
*/
void uiBattleZoneWinDialog::NetworkProc( MSG_BASE * pMsg )
{
}