601 lines
17 KiB
C++
601 lines
17 KiB
C++
|
|
#include "stdafx.h"
|
|
//#include "SUIWnd.h"
|
|
#include "SUIAddOnWnd.h"
|
|
#include "SGameManager.h"
|
|
#include "SGameMessage.h"
|
|
//#include "SGameMessageUI.h"
|
|
#include "SPlayerInfoMgr.h"
|
|
#include "SMessengerMgr.h"
|
|
#include "SStringDB.h"
|
|
#include "KUIControlButton.h"
|
|
#include "SDebug_Util.h"
|
|
#include "SGame.h"
|
|
#include "SGameAvatarEx.h"
|
|
#include "SGameSystem.h"
|
|
#include "SGameWorld.h" /// 2011.01.20 - prodongi
|
|
|
|
#include "SGameInterface.h"
|
|
#include "party\SUIPartyTypes.h"
|
|
#include "party\SUIAuthorityChecker.h"
|
|
|
|
#include "Arena\\ArenaSystem.h"
|
|
|
|
|
|
extern SGameSystem* g_pCurrentGameSystem;
|
|
|
|
SUIAddonWnd::SUIAddonWnd( SGameManager* pGameManager ) : SUIWnd( pGameManager )
|
|
{
|
|
}
|
|
|
|
SUIAddonWnd::~SUIAddonWnd()
|
|
{
|
|
}
|
|
|
|
bool SUIAddonWnd::InitControls( KPoint kPos )
|
|
{
|
|
return SUIWnd::InitControls( kPos );
|
|
}
|
|
|
|
void SUIAddonWnd::ProcMsgAtStatic( SGameMessage* pMsg )
|
|
{
|
|
SUIWnd::ProcMsgAtStatic( pMsg );
|
|
}
|
|
|
|
bool SUIAddonWnd::InitData( bool bReload )
|
|
{
|
|
return SUIWnd::InitData( bReload );
|
|
}
|
|
|
|
void SUIAddonWnd::Process(DWORD dwTime)
|
|
{
|
|
SUIWnd::Process( dwTime );
|
|
}
|
|
|
|
void SUIAddonWnd::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd )
|
|
{
|
|
SUIWnd::OnNotifyUIWindowOpen( bOpen, bLimitWnd );
|
|
}
|
|
|
|
void SUIAddonWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam )
|
|
{
|
|
SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam );
|
|
}
|
|
|
|
DWORD SUIAddonWnd::OnMouseMessage(DWORD dwMessage, int x, int y)
|
|
{
|
|
return SUIWnd::OnMouseMessage( dwMessage, x, y );
|
|
}
|
|
|
|
namespace AddOnWndControl
|
|
{
|
|
namespace TargetWndAddon
|
|
{
|
|
enum TARGET_ADDON_WINDOW
|
|
{
|
|
TRADE_BUTTON = 0,
|
|
ADD_FRIEND_BUTTON,
|
|
WHISPER_BUTTON,
|
|
BLOCK_BUTTON,
|
|
CHALLENGE_BUTTON,
|
|
FOLLOW_BUTTON, // sonador 1.8.5 자동 따라가기 구현
|
|
// LOOK_BUTTON,
|
|
INVITE_PARTY_BUTTON,
|
|
KICK_PARTY_BUTTON,
|
|
TAKEOVER_PARTY_BUTTON,
|
|
REPORT_DIVE, /// 잠수 신고
|
|
MAX_CONTROL,
|
|
};
|
|
|
|
const char* g_szTargetAddOn[MAX_CONTROL] =
|
|
{
|
|
"trade_button",
|
|
"add_friend_button",
|
|
"whisper_button",
|
|
"block_button",
|
|
"challenge_button", /// 대련신청/잠수신고
|
|
"follow_button", // sonador 1.8.5 자동 따라가기 구현
|
|
// "look_button",
|
|
"invite_party_button",
|
|
"kick_party_button",
|
|
"takeover_party_button",
|
|
"dive_button_01",
|
|
};
|
|
|
|
const char* GetControl( TARGET_ADDON_WINDOW type )
|
|
{
|
|
if( type >= TRADE_BUTTON && type < MAX_CONTROL )
|
|
return g_szTargetAddOn[type];
|
|
|
|
return "";
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
using namespace AddOnWndControl;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
SUITargetWndAddon::SUITargetWndAddon( SGameManager* pGameManager ) : SUIAddonWnd( pGameManager )
|
|
, m_dwCheckingTime( 0 )
|
|
{
|
|
}
|
|
SUITargetWndAddon::~SUITargetWndAddon()
|
|
{
|
|
}
|
|
|
|
bool SUITargetWndAddon::InitControls( KPoint kPos )
|
|
{
|
|
// sonador 1.8.5 자동 따라가기 구현
|
|
KUIControlButton* pButton = 0;
|
|
//pButton = (KUIControlButton*)GetChild( "follow_button" );
|
|
//if( pButton ) pButton->Disable();
|
|
|
|
/// 2011.01.27 - prodongi
|
|
setButtonDisableColor();
|
|
|
|
/// 2011.11.18 - prodongi
|
|
m_pGameManager->GetGameInterface()->addPopupList(TOGGLE_WINDOW::UIWINDOW_TARGET_WND_ADDON);
|
|
|
|
/// 2011.12.16 추방 버튼을 초대 버튼 위치로 이동한다 - prodongi
|
|
m_kickButton = dynamicCast<KUIControlButton*>(GetChild("kick_party_button"));
|
|
m_inviteButton = dynamicCast<KUIControlButton*>(GetChild("invite_party_button"));
|
|
m_takeOverButton = dynamicCast<KUIControlButton*>(GetChild("takeover_party_button"));
|
|
m_kickButton->MovePos(m_inviteButton->GetRect().left, m_inviteButton->GetRect().top);
|
|
/// 잠수 신고
|
|
m_challengeButton = dynamicCast<KUIControlButton*>(GetChild("challenge_button"));
|
|
m_reportDiveButton = dynamicCast<KUIControlButton*>(GetChild("dive_button_01"));
|
|
m_reportDiveButton->MovePos(m_challengeButton->GetRect().left, m_challengeButton->GetRect().top);
|
|
|
|
return SUIAddonWnd::InitControls( kPos );
|
|
}
|
|
|
|
void SUITargetWndAddon::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam )
|
|
{
|
|
switch( nMessage )
|
|
{
|
|
case KUI_MESSAGE::KBUTTON_CLICK:
|
|
{
|
|
for( int x = 0; x < TargetWndAddon::MAX_CONTROL; ++x )
|
|
{
|
|
if( strcmp( lpszControlID, TargetWndAddon::GetControl( (TargetWndAddon::TARGET_ADDON_WINDOW)x ) ) == 0 )
|
|
{
|
|
Action( x );
|
|
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( (SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE)m_nWindowID, false ) );
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// 2011.11.18 - prodongi
|
|
void SUITargetWndAddon::ProcMsgAtStatic(SGameMessage* pMsg)
|
|
{
|
|
switch( pMsg->nType )
|
|
{
|
|
case IMSG_UI_SEND_DATA:
|
|
{
|
|
SIMSG_UI_SEND_DATA *pData = (SIMSG_UI_SEND_DATA *)pMsg;
|
|
|
|
if ( pData->m_strString == "popup_update")
|
|
{
|
|
updatePopup(pData->m_nNumber.getAmount(), pData->m_nNumber2.getAmount());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void SUITargetWndAddon::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd )
|
|
{
|
|
if( bOpen )
|
|
{
|
|
CheckAddOnWindow();
|
|
}
|
|
else
|
|
{
|
|
m_hOldTarget = 0;
|
|
}
|
|
}
|
|
|
|
void SUITargetWndAddon::CheckAddOnWindow()
|
|
{
|
|
KUIControlButton* pButton = NULL;
|
|
|
|
//플레이어가 아니라면 close
|
|
if( m_PlayerInfoMgr.GetGameObjType() != TS_ENTER::GAME_PLAYER )
|
|
{
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( (SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE)m_nWindowID, false ) );
|
|
return;
|
|
}
|
|
|
|
//로컬 플레이어냐
|
|
if( !m_PlayerInfoMgr.IsLocalPlayer( m_PlayerInfoMgr.GetTarget() ) )
|
|
{
|
|
if( m_PlayerInfoMgr.IsTargetPlayer( m_PlayerInfoMgr.GetTarget() ) )
|
|
{
|
|
SetButtonState( true );
|
|
|
|
{
|
|
char const* tag = "<font:font_01><size:8><hcenter><left>";
|
|
std::string strCaption = CStringUtil::StringFormat("%s%s", tag, S( 6577 )); //친구 추가 스트링 아이디
|
|
if( m_FriendMgr.IsExistMember( m_PlayerInfoMgr.GetTargetName() ) )
|
|
strCaption = CStringUtil::StringFormat("%s%s", tag, S( 6602 )); //친구 삭제 스트링 아이디
|
|
|
|
pButton = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl( TargetWndAddon::ADD_FRIEND_BUTTON ) ));
|
|
if( pButton ) pButton->SetCaption( strCaption.c_str() );
|
|
|
|
strCaption = CStringUtil::StringFormat("%s%s", tag, S( 6579 )); //차단 설정 스트링 아이디
|
|
if( m_CutMgr.IsExistMember( m_PlayerInfoMgr.GetTargetName() ) )
|
|
strCaption = CStringUtil::StringFormat("%s%s", tag, S( 6603 )); //차단 해제 스트링 아이디
|
|
|
|
pButton = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl( TargetWndAddon::BLOCK_BUTTON ) ));
|
|
if( pButton ) pButton->SetCaption( strCaption.c_str() );
|
|
}
|
|
|
|
sAuthorityList checker;
|
|
checkAuthority(checker, &m_PartyMgr, &m_RaidMgr, &m_FriendMgr, &m_CutMgr, &m_PlayerInfoMgr, true);
|
|
|
|
KUIControlButton* button;
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::WHISPER_BUTTON)));
|
|
(checker.m_whisper) ? button->Enable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::ADD_FRIEND_BUTTON)));
|
|
(0 == checker.m_friend) ? button->Disable() : button->Enable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::BLOCK_BUTTON)));
|
|
(0 == checker.m_block) ? button->Disable() : button->Enable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::TRADE_BUTTON)));
|
|
(checker.m_trade) ? button->Enable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::CHALLENGE_BUTTON)));
|
|
(checker.m_challenge) ? button->Enable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::INVITE_PARTY_BUTTON)));
|
|
(checker.m_invite) ? button->Enable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::KICK_PARTY_BUTTON)));
|
|
(checker.m_kick) ? button->Enable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::TAKEOVER_PARTY_BUTTON)));
|
|
(checker.m_takeOver) ? button->Enable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::FOLLOW_BUTTON)));
|
|
// AziaMafia No Follow
|
|
//(checker.m_follow) ? button->Enable() : button->Disable();
|
|
(checker.m_follow) ? button->Disable() : button->Disable();
|
|
|
|
button = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl(TargetWndAddon::REPORT_DIVE)));
|
|
(checker.m_reportDive) ? button->Enable() : button->Disable();
|
|
}
|
|
}
|
|
else
|
|
SetButtonState( false );
|
|
|
|
m_hOldTarget = m_PlayerInfoMgr.GetTarget();
|
|
}
|
|
|
|
void SUITargetWndAddon::Process(DWORD dwTime)
|
|
{
|
|
static AR_HANDLE hOld = 0;
|
|
if( m_hOldTarget != m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( (SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE)m_nWindowID, false ) );
|
|
m_hOldTarget = m_PlayerInfoMgr.GetTarget();
|
|
}
|
|
else
|
|
{
|
|
if( m_dwCheckingTime == 0 )
|
|
{
|
|
m_dwCheckingTime = dwTime;
|
|
}
|
|
|
|
if( (dwTime - m_dwCheckingTime) > 2000 )
|
|
{
|
|
CheckAddOnWindow();
|
|
m_dwCheckingTime = 0;
|
|
}
|
|
}
|
|
|
|
SUIAddonWnd::Process( dwTime );
|
|
}
|
|
|
|
void SUITargetWndAddon::SetButtonState( bool bEnable, bool isPartyMember )
|
|
{
|
|
KUIControlButton* pButton = NULL;
|
|
for( int x = 0; x < TargetWndAddon::MAX_CONTROL; ++x )
|
|
{
|
|
pButton = dynamicCast<KUIControlButton*>(GetChild( TargetWndAddon::GetControl( (TargetWndAddon::TARGET_ADDON_WINDOW)x ) ));
|
|
if( pButton )
|
|
{
|
|
bEnable ? pButton->Enable() : pButton->Disable();
|
|
}
|
|
}
|
|
|
|
showPartyButtons(isPartyMember);
|
|
showReportDive();
|
|
}
|
|
|
|
void SUITargetWndAddon::Action( int type )
|
|
{
|
|
switch( type )
|
|
{
|
|
//밑에 기능들을 한군데로 모아야 한다
|
|
case TargetWndAddon::TRADE_BUTTON:
|
|
{
|
|
if( !g_pCurrentGameSystem->GetPVPAcceptCheck() )
|
|
{
|
|
/// 2011.01.20 - prodongi
|
|
if (getIsTaming())
|
|
return ;
|
|
SMSG_TRADE* pMsg = new SMSG_TRADE;
|
|
pMsg->target_player = m_PlayerInfoMgr.GetTarget();
|
|
pMsg->mode = TS_TRADE::REQUEST_TRADE;
|
|
pMsg->rq_mode = true;
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
}
|
|
break;
|
|
case TargetWndAddon::ADD_FRIEND_BUTTON:
|
|
{
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
SMSG_FRIEND_COMMAND* pMsg = NULL;
|
|
if( m_FriendMgr.IsExistMember( m_PlayerInfoMgr.GetTargetName() ) )
|
|
pMsg = new SMSG_FRIEND_COMMAND(SMSG_FRIEND_COMMAND::FRIEND_DELETE, "" );
|
|
else
|
|
pMsg = new SMSG_FRIEND_COMMAND(SMSG_FRIEND_COMMAND::FRIEND_ADD, "" );
|
|
|
|
pMsg->target = m_PlayerInfoMgr.GetTarget();
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
}
|
|
break;
|
|
case TargetWndAddon::WHISPER_BUTTON:
|
|
{
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
// 2009.02.24 대련 수정
|
|
// SMSG_WHISPER_ADDONWND* pMsg = new SMSG_WHISPER_ADDONWND;
|
|
SMSG_COMMAND_BY_ADDONWND* pMsg = new SMSG_COMMAND_BY_ADDONWND( SMSG_COMMAND_BY_ADDONWND::COMMAND_WHISPER );
|
|
pMsg->target = m_PlayerInfoMgr.GetTarget();
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
}
|
|
break;
|
|
case TargetWndAddon::BLOCK_BUTTON:
|
|
{
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
SMSG_FRIEND_COMMAND* pMsg = NULL;
|
|
if( m_CutMgr.IsExistMember( m_PlayerInfoMgr.GetTargetName() ) )
|
|
pMsg = new SMSG_FRIEND_COMMAND(SMSG_FRIEND_COMMAND::CUT_DELETE, "" );
|
|
else
|
|
pMsg = new SMSG_FRIEND_COMMAND(SMSG_FRIEND_COMMAND::CUT_ADD, "" );
|
|
|
|
pMsg->target = m_PlayerInfoMgr.GetTarget();
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
}
|
|
break;
|
|
case TargetWndAddon::CHALLENGE_BUTTON:
|
|
{
|
|
if( g_pCurrentGameSystem->GetDeathPVP() )
|
|
{
|
|
g_pCurrentGameSystem->OnChatRequestFailed();
|
|
return;
|
|
}
|
|
|
|
//타겟의 헨들을 구한다.
|
|
AR_HANDLE target = m_PlayerInfoMgr.GetTarget();
|
|
if (target)
|
|
{
|
|
// 개인 상점 모드 인지 검사한다.
|
|
SGame* pGame = m_pGameManager->GetActiveGame();
|
|
if( pGame )
|
|
{
|
|
// 타겟 아바타 정보 얻기
|
|
SGameAvatarEx* pTarget = (SGameAvatarEx*)(pGame->GetGameObject(target));
|
|
unsigned int targetStatus = pTarget->GetStatus();
|
|
|
|
// 타겟아바타가 상점개설 중이면 대전 신청 불가
|
|
if( targetStatus & TS_ENTER::PlayerInfo::FLAG_SELL_BOOTH || targetStatus & TS_ENTER::PlayerInfo::FLAG_BUY_BOOTH )
|
|
{
|
|
g_pCurrentGameSystem->OnChatRequestFailed();
|
|
return;
|
|
}
|
|
|
|
// 플레이어 정보 얻기
|
|
AR_HANDLE player = m_PlayerInfoMgr.GetPlayerHandle();
|
|
SGameAvatarEx* pPlayer = (SGameAvatarEx*)(pGame->GetGameObject(player));
|
|
unsigned int PlayerStatus = pPlayer->GetStatus();
|
|
|
|
// 플레이어가 상점개설 중이면 대전 신청 불가
|
|
if( PlayerStatus & TS_ENTER::PlayerInfo::FLAG_SELL_BOOTH || PlayerStatus & TS_ENTER::PlayerInfo::FLAG_BUY_BOOTH )
|
|
{
|
|
g_pCurrentGameSystem->OnChatRequestFailed();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//SMSG_COMMAND_BY_ADDONWND* pMsg = new SMSG_COMMAND_BY_ADDONWND( SMSG_COMMAND_BY_ADDONWND::COMMAND_CHALLENGE );
|
|
//pMsg->target = m_PlayerInfoMgr.GetTarget();
|
|
//m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
|
|
g_pCurrentGameSystem->SetPVPAcceptCheck( true );
|
|
|
|
SMSG_CS_COMPETE_REQUEST* pMsg = new SMSG_CS_COMPETE_REQUEST;
|
|
pMsg->compete_type = COMPETE_TYPE_VS_PLAYER;
|
|
strcpy(pMsg->requestee, m_PlayerInfoMgr.GetTargetName());
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
}
|
|
break;
|
|
// sonador 1.8.5 자동 따라가기 구현
|
|
case TargetWndAddon::FOLLOW_BUTTON:
|
|
{
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
m_pGameManager->PostMsgAtDynamic( new SMSG_AUTO_FOLLOW() );
|
|
}
|
|
}
|
|
break;
|
|
case TargetWndAddon::REPORT_DIVE:
|
|
{
|
|
reportDive();
|
|
}
|
|
break;
|
|
case TargetWndAddon::INVITE_PARTY_BUTTON:
|
|
{
|
|
if( !g_pCurrentGameSystem->GetPVPAcceptCheck() )
|
|
{
|
|
//타겟이 있으므로 파티 초대 메세지 보낸다.
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
SMSG_PARTY_COMMAND* pMsg = new SMSG_PARTY_COMMAND;
|
|
pMsg->mode = SMSG_PARTY_COMMAND::PARTY_INVITE;
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
else
|
|
{ //이름 입력 창 뜬다.
|
|
m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( 0, "req_invite" ) );
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_REQ_INPUTTEXT( SIMSG_UI_REQ_INPUTTEXT::USAGE_PARTY, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_PARTY_MENU, S(6786), 6583, 1901 ) ); // [sonador][7.0.6] Mantis 0002624
|
|
}
|
|
}
|
|
|
|
}
|
|
break;
|
|
case TargetWndAddon::KICK_PARTY_BUTTON:
|
|
{
|
|
//타겟이 있으므로 파티 초대 메세지 보낸다.
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
SMSG_PARTY_COMMAND* pMsg = new SMSG_PARTY_COMMAND;
|
|
pMsg->mode = SMSG_PARTY_COMMAND::PARTY_KICK;
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
else
|
|
{ //이름 입력 창 뜬다.
|
|
m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( 0, "req_invite" ) );
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_REQ_INPUTTEXT( SIMSG_UI_REQ_INPUTTEXT::USAGE_PARTY, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_PARTY_MENU, S(6786), 6583, 1901 )); // [sonador][7.0.6] Mantis 0002624
|
|
}
|
|
}
|
|
break;
|
|
case TargetWndAddon::TAKEOVER_PARTY_BUTTON:
|
|
{
|
|
//타겟이 있으므로 파티 초대 메세지 보낸다.
|
|
if( m_PlayerInfoMgr.GetTarget() )
|
|
{
|
|
SMSG_PARTY_COMMAND* pMsg = new SMSG_PARTY_COMMAND;
|
|
pMsg->mode = SMSG_PARTY_COMMAND::PARTY_TRANSFER;
|
|
m_pGameManager->PostMsgAtDynamic( pMsg );
|
|
}
|
|
else
|
|
{ //이름 입력 창 뜬다.
|
|
m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( 0, "req_invite" ) );
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_REQ_INPUTTEXT( SIMSG_UI_REQ_INPUTTEXT::USAGE_PARTY, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_PARTY_MENU, S(6786), 6583, 1901 ) ); // [sonador][7.0.6] Mantis 0002624
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// 2011.01.20 - prodongi
|
|
bool SUITargetWndAddon::getIsTaming() const
|
|
{
|
|
SGameWorld* gameWorld = dynamicCast<SGameWorld*>(m_pGameManager->GetActiveGame());
|
|
if (gameWorld)
|
|
{
|
|
return gameWorld->getIsTaming();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// 2011.01.27 - prodongi
|
|
void SUITargetWndAddon::setButtonDisableColor()
|
|
{
|
|
for (int i = 0; i < TargetWndAddon::MAX_CONTROL; ++i)
|
|
{
|
|
char const* controlName = TargetWndAddon::GetControl((TargetWndAddon::TARGET_ADDON_WINDOW)i);
|
|
KUIControl* control = dynamicCast<KUIControl*>(GetChild(controlName));
|
|
if (control)
|
|
{
|
|
control->SetDisableColor("<#4f4e4e>");
|
|
control->SetEnableColor("<#ffffff>");
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 2011.11.18 - prodongi
|
|
void SUITargetWndAddon::updatePopup(int x, int y)
|
|
{
|
|
if (!IsShow())
|
|
return ;
|
|
|
|
if (!IsInRect(x, y))
|
|
{
|
|
m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_TARGET_WND_ADDON, false) );
|
|
}
|
|
}
|
|
|
|
void SUITargetWndAddon::showPartyButtons(bool isPartyMember)
|
|
{
|
|
if (isPartyMember)
|
|
{
|
|
m_inviteButton->SetShow(false);
|
|
m_kickButton->SetShow(true);
|
|
}
|
|
else
|
|
{
|
|
m_inviteButton->SetShow(true);
|
|
m_kickButton->SetShow(false);
|
|
}
|
|
}
|
|
|
|
void SUITargetWndAddon::reportDive()
|
|
{
|
|
/// 서버에 잠수 신고
|
|
TS_CS_BATTLE_ARENA_ABSENCE_CHECK_REQUEST msg;
|
|
msg.hCheckTarget = m_PlayerInfoMgr.GetTarget();
|
|
m_pGameManager->PendMessage(&msg);
|
|
|
|
sArenaSystem* arenaSystem = g_pCurrentGameSystem->getArenaSystem();
|
|
arenaSystem->setReportDrivePlayerName(m_PlayerInfoMgr.GetTargetName());
|
|
}
|
|
|
|
void SUITargetWndAddon::showReportDive()
|
|
{
|
|
if (g_pCurrentGameSystem->isInArena())
|
|
{
|
|
m_reportDiveButton->SetShow(true);
|
|
m_challengeButton->SetShow(false);
|
|
}
|
|
else
|
|
{
|
|
m_reportDiveButton->SetShow(false);
|
|
m_challengeButton->SetShow(true);
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
SUIInventoryWndAddon::SUIInventoryWndAddon( SGameManager* pGameManager ) : SUIAddonWnd( pGameManager )
|
|
{
|
|
}
|
|
|
|
SUIInventoryWndAddon::~SUIInventoryWndAddon()
|
|
{
|
|
}
|
|
|
|
void SUIInventoryWndAddon::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd )
|
|
{
|
|
if( bOpen )
|
|
{
|
|
}
|
|
} |