Files
Leviathan/Client/Game/game/Interface/RaidSiege/SUIRaidSiegeProgressSiegeWnd.cpp
2026-06-01 12:46:52 +02:00

169 lines
4.3 KiB
C++

/// 2011.10.12 - prodongi
#include "stdafx.h"
#include "SUIRaidSiegeProgressSiegeWnd.h"
#include "SUIRaidSiegeStatusWnd.h"
#include "SGameManager.h"
#include "SGameOption.h"
#include "KUIControlGauge.h"
#include "KUIControlStatic.h"
#include "SUIDefine.h"
#include "SMessengerMgr.h"
SUIRaidSiegeProgressSiegeWnd::SUIRaidSiegeProgressSiegeWnd(SGameManager* pGameManager) : SUIRaidSiegeProgressBaseWnd(pGameManager)
{
}
SUIRaidSiegeProgressSiegeWnd::~SUIRaidSiegeProgressSiegeWnd()
{
}
void SUIRaidSiegeProgressSiegeWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam )
{
switch (nMessage)
{
case KUI_MESSAGE::KGENWND_MOVE:
{
LimitMoveWnd();
}
break;
}
SUIWnd::PumpUpMessage(lpszControlID, nMessage, lparam, wparam);
}
void SUIRaidSiegeProgressSiegeWnd::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd )
{
}
bool SUIRaidSiegeProgressSiegeWnd::InitControls( KPoint kPos )
{
SetCustomMovingRect(GetRect());
addOpacityList();
m_gaugeDefenseHp = dynamicCast<KUIControlGauge*>(GetChild("gauge_01"));
m_gaugeOffenseHp = dynamicCast<KUIControlGauge*>(GetChild("gauge_02"));
m_defenseName = dynamicCast<KUIControlStatic*>(GetChild("member_text_01"));
m_offenseName = dynamicCast<KUIControlStatic*>(GetChild("member_text_02"));
if (m_gaugeDefenseHp)
{
m_gaugeDefenseHp->SetMax(100);
}
if (m_gaugeOffenseHp)
{
m_gaugeOffenseHp->SetMax(100);
}
return true;
}
void SUIRaidSiegeProgressSiegeWnd::addOpacityList()
{
m_opacityChecker.addChild(this, "titlebar");
m_opacityChecker.addChild(this, "titlebar_deco");
m_opacityChecker.addChild(this, "outframe_01");
m_opacityChecker.addChild(this, "outframe_02");
m_opacityChecker.addChild(this, "titlebar_text");
m_opacityChecker.addChild(this, "text_01");
m_opacityChecker.addChild(this, "member_text_01");
m_opacityChecker.addChild(this, "text_05");
m_opacityChecker.addChild(this, "member_text_02");
}
void SUIRaidSiegeProgressSiegeWnd::start(int defenseHp, int offenseHp, int ownerType)
{
setOwnerType(defenseHp, offenseHp, ownerType);
m_gaugeDefenseHp->SetGauge(defenseHp, 0);
m_gaugeOffenseHp->SetGauge(offenseHp, 0);
}
void SUIRaidSiegeProgressSiegeWnd::initialize()
{
m_ownerType = -1;
m_time = 0;
m_opponentName.clear();
setGuildName(m_offenseName, "");
setGuildName(m_defenseName, "");
}
void SUIRaidSiegeProgressSiegeWnd::setOpponentName(char const* opponentName)
{
setOpponentName(m_ownerType, opponentName);
}
void SUIRaidSiegeProgressSiegeWnd::setOpponentName(int ownerType, char const* opponentName)
{
char const* myGuildName = m_GuildMgr.GetGuildName();
m_opponentName = opponentName;
if (OFFENSE == ownerType)
{
setGuildName(m_offenseName, myGuildName);
setGuildName(m_defenseName, opponentName);
}
else
{
setGuildName(m_offenseName, opponentName);
setGuildName(m_defenseName, myGuildName);
}
}
void SUIRaidSiegeProgressSiegeWnd::setGuildName(KUIControlStatic* nameCtrl, char const* guildName)
{
std::string name;
XStringUtil::Format(name, "<font:font_01><size:9><b><right>%s", guildName);
nameCtrl->SetCaption(name.c_str());
}
void SUIRaidSiegeProgressSiegeWnd::Process(DWORD dwTime)
{
SUIWnd::Process(dwTime);
DWORD elapsedtime = 0;
if (m_time)
elapsedtime = dwTime - m_time;
m_time = dwTime;
m_opacityChecker.update(elapsedtime, m_mouseX, m_mouseY, this);
}
void SUIRaidSiegeProgressSiegeWnd::setOwnerType(int defenseHp, int offenseHp, int ownerType)
{
if (-1 != m_ownerType)
{
/// 공수 교대 ‰瑛?때
if (m_ownerType != ownerType)
{
changeOwner(ownerType);
}
}
m_ownerType = ownerType;
if (OFFENSE == m_ownerType)
{
// 게이지 남은 양에 따라 텍스처 바꿔줌 // 2012.02.03 - servantes
setHPGaugeTexture( offenseHp, m_gaugeOffenseHp, 11 );
m_gaugeDefenseHp->SetBack(c_szDEF_SPR_NAME, "common_gauge_titanium_monster_middle");
}
else
{
m_gaugeOffenseHp->SetBack(c_szDEF_SPR_NAME, "common_gauge_titanium_monster_middle");
// 게이지 남은 양에 따라 텍스처 바꿔줌 // 2012.02.03 - servantes
setHPGaugeTexture( offenseHp, m_gaugeDefenseHp, 11 );
}
}
void SUIRaidSiegeProgressSiegeWnd::changeOwner(int newOwnerType)
{
SUIRaidSiegeStatusWnd* parent = dynamicCast<SUIRaidSiegeStatusWnd*>(GetParent());
if (!parent)
return ;
parent->changeSiegeOwner(newOwnerType);
setOpponentName(newOwnerType, m_opponentName.c_str());
}