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

201 lines
4.0 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "chaosystemdialog.h"
#include "SceneBase.h"
#include "Application.h"
#include "interfacemanager.h"
#include "globalfunc.h"
#include "uiToolTipMan/uiToolTipMan.h"
#include "Mouse.h"
#include "Hero.h"
WzID ChaoSystemDialog::m_wzId[CHAOSYSTEM_DIALOG_MAX] =
{
StrToWzID("T001"),
StrToWzID("PI00"),
StrToWzID("PI01"),
};
ChaoSystemDialog::ChaoSystemDialog(void)
{
m_pStatic = NULL;
m_pChaoPicture = NULL;
m_pFreeChaoPicture = NULL;
m_fPictureHeight = 0.0f;
}
ChaoSystemDialog::~ChaoSystemDialog(void)
{
}
void ChaoSystemDialog::Release()
{
}
void ChaoSystemDialog::Init( CDrawBase * pDrawBase )
{
m_pStatic = static_cast< CCtrlStaticWZ*>(getControl(CHAOSYSTEM_TIME));
m_pChaoPicture = static_cast<CCtrlPictureWZ*>(getControl(CHAOSYSTEM_CHAO_PICTURE));
m_pFreeChaoPicture = static_cast<CCtrlPictureWZ*>(getControl(CHAOSYSTEM_FREECHAO_PICTURE));
m_pChaoPicture->ShowWindowWZ(WZ_HIDE);
m_pFreeChaoPicture->ShowWindowWZ(WZ_HIDE);
m_rtPicture = m_pChaoPicture->GetSizeRect();
m_rtSizePicture = m_pChaoPicture->GetSize();
this->m_fPictureWidth = (float)m_rtPicture.right -m_rtPicture.left;
this->m_fPictureHeight = (float)m_rtSizePicture.bottom - m_rtSizePicture.top ;
m_bMouseOver = FALSE;
m_iTickSum =0;
m_dwTime=0;
}
void ChaoSystemDialog::MessageProc( SI_MESSAGE * pMessage )
{
SolarDialog::MessageProc( pMessage );
}
void ChaoSystemDialog::NetworkProc( MSG_BASE * pMsg )
{
}
void ChaoSystemDialog::Process(DWORD dwTick)
{
if(m_dwTime>0)
{
m_iTickSum+=dwTick;
if(m_iTickSum>=1000)
{
DWORD sec=m_iTickSum/1000;
if(m_dwTime>sec)
m_dwTime-=sec;
else
m_dwTime=0;
m_iTickSum-=sec*1000;
}
}
}
void ChaoSystemDialog::OnRenderSolarDialog()
{
RenderSystemTime();
UpdateToolTip();
UpdatePictureGaugeBar();
}
CControlWZ * ChaoSystemDialog::getControl( POSTYPE AtPos )
{
assert( AtPos < CHAOSYSTEM_DIALOG_MAX );
return GetControlWZ( m_wzId[AtPos] );
}
POSTYPE ChaoSystemDialog::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < CHAOSYSTEM_DIALOG_MAX; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return CHAOSYSTEM_DIALOG_MAX;
}
void ChaoSystemDialog::UpdatePictureGaugeBar()
{
RECT rtTiredDialog;
CControlWZ* pControl = this->getControl(CHAOSYSTEM_TIME);
rtTiredDialog = pControl->GetSizeRect();
if(g_pHero&&g_pHero->GetChaoState()==eCHAO_STATE_CHAO)
{
m_pChaoPicture->ShowWindowWZ(WZ_SHOW);
m_pFreeChaoPicture->ShowWindowWZ(WZ_HIDE);
}
else if(g_pHero&&g_pHero->GetChaoState()==eCHAO_STATE_PREV_CHAO)
{
m_pChaoPicture->ShowWindowWZ(WZ_HIDE);
m_pFreeChaoPicture->ShowWindowWZ(WZ_SHOW);
}
}
void ChaoSystemDialog::RenderSystemTime()
{
TCHAR szText[128] = {0,};
DWORD tempTime=m_dwTime;
int iHour=tempTime/3600;
int iMinute=(tempTime-iHour*3600)/60;
int iSecond=tempTime-iHour*3600-iMinute*60;
if(iMinute < 10 && iSecond <10)
{
Snprintf(szText, 128-1, _T("%d:0%d:0%d"), iHour, iMinute, iSecond);
}
// Minute ¾Õ¿¡ "0" Ãß°¡.
else if(iMinute< 10)
{
Snprintf(szText, 128-1, _T("%d:0%d:%d"), iHour, iMinute, iSecond);
}
// Second ¾Õ¿¡ "0" Ãß°¡
else if(iSecond < 10)
{
Snprintf(szText, 128-1, _T("%d:%d:0%d"), iHour, iMinute, iSecond);
}
else
{
Snprintf(szText, 128-1, _T("%d:%d:%d"), iHour, iMinute, iSecond);
}
m_pStatic->SetTextWZ(szText);
}
void ChaoSystemDialog::UpdateToolTip()
{
int iMouseX = Mouse::Instance()->GetMouseX();
int iMouseY = Mouse::Instance()->GetMouseY();
m_bMouseOver = FALSE;
CControlWZ * pControl = getControl(CHAOSYSTEM_TIME);
if(pControl)
{
RECT rc = pControl->GetSizeRect();
if (rc.left <= iMouseX && rc.right >= iMouseX)
{
if (rc.top <= iMouseY && rc.bottom >= iMouseY)
{
m_bMouseOver = TRUE;
uiToolTipMan* pUIMan = (uiToolTipMan*)g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP);
if(pUIMan&&g_pHero&&g_pHero->IsChao())
{
pUIMan->SetTooltipDialogID(GetDialogKey());
if(g_pHero->GetChaoState()==eCHAO_STATE_CHAO)
pUIMan->RegisterChaoSystemToolTip( m_dwTime ,TRUE);
else
pUIMan->RegisterChaoSystemToolTip( m_dwTime ,FALSE);
}
}
}
}
}