Files
2026-06-01 12:46:52 +02:00

182 lines
3.8 KiB
C++

#include "stdafx.h"
#include "KUIControlStatic.h"
#include "KUIControlGauge.h"
#include "KUIControlButton.h"
#include "KSeqForm.h"
#include "GameDefine.h"
#include "SGameManager.h"
#include "SUIDisplayInfo.h"
#include "SJobDB.h"
#include "SQuestDB.h"
#include "SMonsterDB.h"
#include "SCreatureDB.h"
#include "SNpcResourceDB.h"
#include "SPetDB.h"
#include "SPlayerInfoMgr.h"
#include "SGameSystem.h"
//#include "SGameMessageUI.h"
#include "SGameMessage.h"
#include "SSummonSlotMgr.h"
#include "SMessengerMgr.h"
#include "SGameOption.h"
//#include "Util.h"
#include "SGameSystem.h"
#include "SGameLobbyDefine.h"
#include "SCobManager.h"
//#include "SUIUtil.h"
#include "SGame.h"
#include "SGameAvatarEx.h"
#include "SGameInterface.h"
#include "SUIMissionTitleWnd.h"
namespace
{
const int c_nSignPosX = 48;
const int c_nSignPosY = 130 + 150;
const float VIEW_TICK = 6000.f;
};
SUIMissionTitleWnd::SUIMissionTitleWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo )
: SUIWnd( pGameManager )
, m_pDisplayInfo( pDisplayInfo )
{
m_pStaticTitle = NULL;
}
SUIMissionTitleWnd::~SUIMissionTitleWnd()
{
m_pStaticTitle = NULL;
}
bool SUIMissionTitleWnd::InitData( bool bReload )
{
m_dwTime = 0;
m_dwStartTime = 0;
return SUIWnd::InitData(bReload);
}
bool SUIMissionTitleWnd::InitControls( KPoint kPos )
{
m_pStaticTitle = dynamicCast< KUIControlStatic* > (GetChild( "dungeon_target_title" )); // 던전목표제목
if(m_pStaticTitle == NULL)
return false;
m_pStaticTitle->SetShow(true);
return SUIWnd::InitControls( kPos );
}
void SUIMissionTitleWnd::InsertCaption_title(const char* pTitle)
{
if(NULL == m_pStaticTitle)
return ;
if(NULL == pTitle)
return ;
std::string strCaption = "<font:font_02><size:20><hcenter><out><@230202><#ed1c24><vcenter>";
strCaption += pTitle;
m_pStaticTitle->SetEnableColor( "<#ed1c24>" );
m_pStaticTitle->SetEnableOption(true);
m_pStaticTitle->SetCaption(strCaption.c_str());
}
void SUIMissionTitleWnd::SetTitle( const char * pTitle )
{
m_dwStartTime = ::GetSafeTickCount();
InsertCaption_title(pTitle);
KUIWnd * pSign = GetChild( "dungeon_target_title" );
if( pSign && strlen(pTitle) > 0 )
{
SetAlphaClose( VIEW_TICK );
InsertCaption_title( pTitle );
if( pSign )
{
KRect signRect = pSign->GetRect();
int nHalfW = KUIWndManager::GetResolution().cx / 2;
int nHalfH = KUIWndManager::GetResolution().cy / 2;
pSign->MovePos( nHalfW - (pSign->GetRect().GetWidth() / 2), c_nSignPosY );
pSign->SetShow( true );
}
}
else
{
SetChildShow( "outframe" , false );
SetChildShow( "static_area_title", false );
}
}
void SUIMissionTitleWnd::Process(DWORD dwTime)
{
if( m_dwStartTime )
{
DWORD dwLocalNameTime = dwTime-m_dwStartTime;
if( dwLocalNameTime > VIEW_TICK )
{
// UI 숨긴다
m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MISSION_TITLE_WND, false ) );
m_dwStartTime = 0;
}
else
{
float fTmRate = dwLocalNameTime / (float)VIEW_TICK;
float fAlpha = 1.0f;
if( fTmRate < 0.2f )
{
fAlpha = fTmRate / 0.2f;
}
else if( fTmRate < 0.5f )
{
fAlpha = 1.0f;
}
else
{
fAlpha = 1.0f - ( fTmRate - 0.5f ) * 2.0f;
}
ChangeAlpha(fAlpha);
}
}
}
void SUIMissionTitleWnd::ProcMsgAtStatic( SGameMessage* pMsg )
{
switch(pMsg->nType)
{
case IMSG_MISSION_TITLE:
{
SIMSG_MISSION_TITLE* msg = dynamicCast<SIMSG_MISSION_TITLE*>(pMsg);
SetTitle(msg->title.c_str());
pMsg->bUse = true;
}
break;
}
}
void SUIMissionTitleWnd::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd )
{
int k=0;
k=0;
SUIWnd::OnNotifyUIWindowOpen(bOpen);
}
void SUIMissionTitleWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam )
{
switch(nMessage)
{
case KUI_MESSAGE::KBUTTON_CLICK:
{
int kk=0;
}
break;
}
SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam );
}