1377 lines
35 KiB
C++
1377 lines
35 KiB
C++
//------------------------------------------------------------------------------
|
|
// BattleZoneRready.cpp
|
|
// (C) 2005 y2jinc
|
|
//------------------------------------------------------------------------------
|
|
|
|
#include "SunClientPrecompiledHeader.h"
|
|
#include "BattleLobby.h"
|
|
#include "InterfaceManager.h"
|
|
#include "BattleRoomEntry.h"
|
|
#include "hero.h"
|
|
#include "UserSlot.h"
|
|
#include "UserSlotSet.h"
|
|
#include "ObjectManager.h"
|
|
#include "MapInfoParser.h"
|
|
#include "LoadScene.h"
|
|
#include "Application.h"
|
|
#include "VillageScene.h"
|
|
#include "ChatDialog.h"
|
|
#include "RequireFieldLevelInfoParser.h"
|
|
#include "ResultCode.h"
|
|
#include "HeroActionInput.h"
|
|
#include "uiBattleZoneReadyPVPConfig/uiBattleZoneReadyPVPConfig.h"
|
|
#include "CloneManager.h"
|
|
#include "EventInfoParser.h"
|
|
#include "uiBattleZoneMan/uiBattleZoneMan.h"
|
|
#include "uiBattleZoneReadyMissionConfig/uiBattleZoneReadyMissionConfig.h"
|
|
#include "uiBattleZoneReadyCHuntingConfig/uiBattleZoneReadyCHuntingConfig.h"
|
|
#include "MissionScene.h"
|
|
#include "Map.h"
|
|
#include "uiPartyMan/uiPartyMan.h"
|
|
#include "globalfunc.h"
|
|
#include "uiSystemMan/uiSystemMan.h"
|
|
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
|
|
#include "GuildSystem/GuildSystemFunction.h"
|
|
#else
|
|
#include "uiGuildMan/uiGuildMan.h"
|
|
#include "uiGuildMenu/uiGuildMenu.h"
|
|
#include "uiGuildMain/uiGuildMain.h"
|
|
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
|
|
#include "uiCommunityMan/uiCommunityMan.h"
|
|
#include "BattleRoomEntry.h"
|
|
#include "uibattlezoneman/uiBattleZoneMan_def.h"
|
|
#include "Mouse.h"
|
|
#include "uiChangeRoomName/uiChangeRoomName.h"
|
|
#include "uiChatMan/uiChatMan_def.h"
|
|
|
|
WzID BattleLobby::m_wzId[] =
|
|
{
|
|
StrToWzID("T001"), //BattleLobby_ST_ROOM_NUMBER = 0, // >> 텍스트 정보관련 컨트롤
|
|
StrToWzID("T002"), //BattleLobby_ST_ROOM_NAME,
|
|
StrToWzID("T003"), //BattleLobby_ST_ROOM_PASSWORD,
|
|
StrToWzID("T007"), //BattleLobby_ST_MAP_NAME,
|
|
StrToWzID("T009"), //BattleLobby_ST_MAP_LIMIT_LEVEL,
|
|
StrToWzID("T011"), //BattleLobby_ST_MAP_RECOMMEND_LEVEL,
|
|
StrToWzID("T030"), //BattleLobby_ST_ZONE_TYPE,
|
|
StrToWzID("T201"), //BattleLobby_ST_USER_INFO_LEVEL_1,
|
|
StrToWzID("T202"), //BattleLobby_ST_USER_INFO_LEVEL_2,
|
|
StrToWzID("T203"), //BattleLobby_ST_USER_INFO_LEVEL_3,
|
|
StrToWzID("T204"), //BattleLobby_ST_USER_INFO_LEVEL_4,
|
|
StrToWzID("T205"), //BattleLobby_ST_USER_INFO_LEVEL_5,
|
|
StrToWzID("T206"), //BattleLobby_ST_USER_INFO_LEVEL_6,
|
|
StrToWzID("T207"), //BattleLobby_ST_USER_INFO_LEVEL_7,
|
|
StrToWzID("T208"), //BattleLobby_ST_USER_INFO_LEVEL_8,
|
|
StrToWzID("T209"), //BattleLobby_ST_USER_INFO_LEVEL_9,
|
|
StrToWzID("T210"), //BattleLobby_ST_USER_INFO_LEVEL_10,
|
|
StrToWzID("T101"), //BattleLobby_ST_USER_INFO_NAME_1,
|
|
StrToWzID("T102"), //BattleLobby_ST_USER_INFO_NAME_2,
|
|
StrToWzID("T103"), //BattleLobby_ST_USER_INFO_NAME_3,
|
|
StrToWzID("T104"), //BattleLobby_ST_USER_INFO_NAME_4,
|
|
StrToWzID("T105"), //BattleLobby_ST_USER_INFO_NAME_5,
|
|
StrToWzID("T106"), //BattleLobby_ST_USER_INFO_NAME_6,
|
|
StrToWzID("T107"), //BattleLobby_ST_USER_INFO_NAME_7,
|
|
StrToWzID("T108"), //BattleLobby_ST_USER_INFO_NAME_8,
|
|
StrToWzID("T109"), //BattleLobby_ST_USER_INFO_NAME_9,
|
|
StrToWzID("T110"), //BattleLobby_ST_USER_INFO_NAME_10, // << 텍스트 정보관련 컨트롤
|
|
StrToWzID("B001"), //BattleLobby_BT_VIEW_USER_1,
|
|
StrToWzID("B002"), //BattleLobby_BT_VIEW_USER_2,
|
|
StrToWzID("B003"), //BattleLobby_BT_VIEW_USER_3,
|
|
StrToWzID("B004"), //BattleLobby_BT_VIEW_USER_4,
|
|
StrToWzID("B005"), //BattleLobby_BT_VIEW_USER_5,
|
|
StrToWzID("B006"), //BattleLobby_BT_VIEW_USER_6,
|
|
StrToWzID("B007"), //BattleLobby_BT_VIEW_USER_7,
|
|
StrToWzID("B008"), //BattleLobby_BT_VIEW_USER_8,
|
|
StrToWzID("B009"), //BattleLobby_BT_VIEW_USER_9,
|
|
StrToWzID("B010"), //BattleLobby_BT_VIEW_USER_10,
|
|
StrToWzID("C001"), //BattleLobby_CHECK_USER_BLOCK_2,
|
|
StrToWzID("C002"), //BattleLobby_CHECK_USER_BLOCK_3,
|
|
StrToWzID("C003"), //BattleLobby_CHECK_USER_BLOCK_4,
|
|
StrToWzID("C004"), //BattleLobby_CHECK_USER_BLOCK_5,
|
|
StrToWzID("C005"), //BattleLobby_CHECK_USER_BLOCK_6,
|
|
StrToWzID("C006"), //BattleLobby_CHECK_USER_BLOCK_7,
|
|
StrToWzID("C007"), //BattleLobby_CHECK_USER_BLOCK_8,
|
|
StrToWzID("C008"), //BattleLobby_CHECK_USER_BLOCK_9,
|
|
StrToWzID("C009"), //BattleLobby_CHECK_USER_BLOCK_10,
|
|
StrToWzID("TI02"), //BattleLobby_TI_START,
|
|
StrToWzID("TI03"), //BattleLobby_TI_LEAVE,
|
|
StrToWzID("TI01"), //BattleLobby_TI_TEAM_CHANGE,
|
|
StrToWzID("B902"), //BattleLobby_BT_USER_EXIT_2,
|
|
StrToWzID("B903"), //BattleLobby_BT_USER_EXIT_3,
|
|
StrToWzID("B904"), //BattleLobby_BT_USER_EXIT_4,
|
|
StrToWzID("B905"), //BattleLobby_BT_USER_EXIT_5,
|
|
StrToWzID("B906"), //BattleLobby_BT_USER_EXIT_6,
|
|
StrToWzID("B907"), //BattleLobby_BT_USER_EXIT_7,
|
|
StrToWzID("B908"), //BattleLobby_BT_USER_EXIT_8,
|
|
StrToWzID("B909"), //BattleLobby_BT_USER_EXIT_9,
|
|
StrToWzID("B910"), //BattleLobby_BT_USER_EXIT_10,
|
|
StrToWzID("B999"), //BattleLobby_BT_EXIT, // << 액션
|
|
StrToWzID("TI04"), //BattleLobby_BT_FRIEND_LIST
|
|
StrToWzID("TI05"), //BattleLobby_BT_GUILD_LIST
|
|
StrToWzID("TI00"), //BattleLobby_BT_ROOM_NAME_CHANGE
|
|
};
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
BattleLobby::BattleLobby(void)
|
|
{
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
BattleLobby::~BattleLobby(void)
|
|
{
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::Init( CDrawBase * pDrawBase )
|
|
{
|
|
m_pBattleZoneMan = static_cast<uiBattleZoneMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_BATTLEZONE));
|
|
assert(m_pBattleZoneMan);
|
|
|
|
if(m_pBattleZoneMan)
|
|
m_pBattleZoneMan->InitializeUserSlotSet();
|
|
|
|
m_hTexture[USE_TEXTURE_READY] = g_pSunRenderer->x_pManagerTexture->LoadTexture( "Data\\Interface\\63_ready.tga" ,TLS_ORIGINAL_SIZE | TLS_NO_MULTITHREAD);
|
|
m_pTextureInfo[USE_TEXTURE_READY] = g_pSunRenderer->x_pManagerTexture->GetTextureInfo( m_hTexture[USE_TEXTURE_READY] );
|
|
|
|
assert(m_pTextureInfo[USE_TEXTURE_READY]);
|
|
|
|
|
|
//UpdatePosition();
|
|
|
|
|
|
// 컨트롤 포인터를 받아 놓는다.
|
|
int i = 0;
|
|
|
|
// 유저 보여줄 슬롯
|
|
for (i = 0; i < MAX_VIEW_USER_SLOT; ++i)
|
|
{
|
|
m_pCtrlBtnUserSlotView[i] = (CCtrlButtonWZ *)getControl(BattleLobby_BT_VIEW_USER_1+i);
|
|
assert(m_pCtrlBtnUserSlotView[i]);
|
|
}
|
|
|
|
// 유저 레벨
|
|
for (i = 0; i < MAX_VIEW_USER_SLOT; ++i)
|
|
{
|
|
m_pCtrlStaticUserLevel[i] = (CCtrlStaticWZ *)getControl(BattleLobby_ST_USER_INFO_LEVEL_1+i);
|
|
assert(m_pCtrlStaticUserLevel[i]);
|
|
}
|
|
// 유저 네임
|
|
for (i = 0; i < MAX_VIEW_USER_SLOT; ++i)
|
|
{
|
|
m_pCtrlStaticUserName[i] = (CCtrlStaticWZ *)getControl(BattleLobby_ST_USER_INFO_NAME_1+i);
|
|
assert(m_pCtrlStaticUserName[i]);
|
|
}
|
|
|
|
// 강퇴 버튼
|
|
for (i = 0; i < MAX_VIEW_USER_SLOT-1; ++i)
|
|
{
|
|
m_pCtrlBtnBan[i] = (CCtrlButtonWZ *)getControl(BattleLobby_BT_USER_EXIT_2+i);
|
|
assert(m_pCtrlBtnBan[i]);
|
|
}
|
|
|
|
// 유저 슬롯 블럭 CHECK
|
|
for (i = 0; i < MAX_VIEW_USER_SLOT-1; ++i)
|
|
{
|
|
m_pCtrlCheckBtnUserSlotBlock[i] = (CCtrlButtonCheckWZ *)getControl(BattleLobby_CHECK_USER_BLOCK_2+i);
|
|
assert(m_pCtrlCheckBtnUserSlotBlock[i]);
|
|
}
|
|
|
|
// 기타
|
|
// 방번호
|
|
m_pCtrlStaticRoomNo = (CCtrlStaticWZ *)getControl(BattleLobby_ST_ROOM_NUMBER);
|
|
assert(m_pCtrlStaticRoomNo);
|
|
// 방제목
|
|
m_pCtrlStaticRoomTitle = (CCtrlStaticWZ *)getControl(BattleLobby_ST_ROOM_NAME);
|
|
assert(m_pCtrlStaticRoomTitle);
|
|
// 패스워드
|
|
m_pCtrlStaticRoomPW = (CCtrlStaticWZ *)getControl(BattleLobby_ST_ROOM_PASSWORD);
|
|
assert(m_pCtrlStaticRoomPW);
|
|
// 방 TYPE
|
|
m_pCtrlStaticZoneType = (CCtrlStaticWZ *)getControl(BattleLobby_ST_ZONE_TYPE);
|
|
assert(m_pCtrlStaticZoneType);
|
|
|
|
m_pCtrlImageStaticTeamChange = (CCtrlImageStaticWZ *)getControl(BattleLobby_TI_TEAM_CHANGE);
|
|
assert(m_pCtrlImageStaticTeamChange);
|
|
// 멥 이름
|
|
m_pCtrlStaticMapName = (CCtrlStaticWZ *)getControl(BattleLobby_ST_MAP_NAME);
|
|
assert(m_pCtrlStaticMapName);
|
|
// 레벨 제한
|
|
m_pCtrlStaticLimitLevel = (CCtrlStaticWZ *)getControl(BattleLobby_ST_MAP_LIMIT_LEVEL);
|
|
assert(m_pCtrlStaticLimitLevel);
|
|
// 권장 레벨 제한
|
|
m_pCtrlStaticRecommendLevel = (CCtrlStaticWZ *)getControl(BattleLobby_ST_MAP_RECOMMEND_LEVEL);
|
|
assert(m_pCtrlStaticRecommendLevel);
|
|
|
|
m_pCtrlTIStartNReady = (CCtrlImageStaticWZ *)getControl( BattleLobby_TI_START );
|
|
assert(m_pCtrlTIStartNReady);
|
|
|
|
m_pCtrlRoomNameChangeBtn = (CCtrlButtonWZ*)getControl(BattleLobby_BT_ROOM_NAME_CHANGE);
|
|
assert(m_pCtrlRoomNameChangeBtn);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::Release()
|
|
{
|
|
for (int i = 0; i < MAX_USE_TEXTURE; ++i)
|
|
{
|
|
if (this->m_hTexture[i] != INVALID_HANDLE_VALUE)
|
|
{
|
|
g_pSunRenderer->x_pManagerTexture->DestroyTexture(this->m_hTexture[i]);
|
|
this->m_hTexture[i] = INVALID_HANDLE_VALUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::MessageProc( SI_MESSAGE * pMessage )
|
|
{
|
|
if(!m_pBattleZoneMan)
|
|
return;
|
|
|
|
POSTYPE CurPos = 255;
|
|
switch( pMessage->eResultMsg )
|
|
{
|
|
case RT_MSG_LBUTTONCLICK:
|
|
{
|
|
showZoneStatusWindow();
|
|
|
|
CurPos = getCtrlIDToPos( pMessage->dwCtrlID );
|
|
switch( CurPos )
|
|
{
|
|
case BattleLobby_BT_EXIT:
|
|
{
|
|
m_pBattleZoneMan->LeaveLobby();
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_BT_FRIEND_LIST:
|
|
{
|
|
uiCommunityMan* pCommMan = static_cast<uiCommunityMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_COMMUNITY));
|
|
if(pCommMan)
|
|
{
|
|
pCommMan->ShowCommunityDlg();
|
|
pCommMan->SetWindowFocus();
|
|
}
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_BT_GUILD_LIST:
|
|
{
|
|
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
|
|
GuildSystem::Function::ToggleGuildInfoDialog();
|
|
#else
|
|
// 길드 메뉴
|
|
uiGuildMan* guildMan =
|
|
static_cast<uiGuildMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_GUILD));
|
|
|
|
if (guildMan)
|
|
{
|
|
|
|
if(guildMan->IsShowWindow())
|
|
{
|
|
uiBase * guildMain = GET_DIALOG( IM_GUILD_MANAGER::GUILD_MAIN );
|
|
|
|
assert (guildMain);
|
|
|
|
guildMain->ShowInterface(TRUE);
|
|
|
|
}
|
|
else
|
|
{
|
|
guildMan->SetShowGuildMain();
|
|
guildMan->SEND_CG_GUILD_TOTALINFO_REQ_SYN();
|
|
}
|
|
|
|
guildMan->SetWindowFocus();
|
|
}
|
|
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
|
|
}
|
|
break;
|
|
|
|
//case BattleLobby_TI_INVITE_LIST:
|
|
// {
|
|
// // 추후 추가될것
|
|
// // 초대할 놈의 리스트를 얻어온다.
|
|
// // 같은 서버에 있는 녀석들의 정보를 가져올듯하다.
|
|
// }
|
|
// break;
|
|
|
|
case BattleLobby_TI_START:
|
|
{
|
|
// 방장은 Start
|
|
// @ 물론 모두 Ready를 해야한다!!
|
|
// 타맴버들은 Ready 버튼 처리를 해준다.
|
|
if(m_pBattleZoneMan->IsMaster())
|
|
{
|
|
// Start!!
|
|
m_pBattleZoneMan->StartBattle();
|
|
}
|
|
else
|
|
{
|
|
m_pBattleZoneMan->ReadyBattle();
|
|
}
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_TI_LEAVE:
|
|
{
|
|
m_pBattleZoneMan->LeaveLobby();
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_TI_TEAM_CHANGE:
|
|
{
|
|
m_pBattleZoneMan->ChangeTeam();
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_BT_VIEW_USER_2:
|
|
case BattleLobby_BT_VIEW_USER_3:
|
|
case BattleLobby_BT_VIEW_USER_4:
|
|
case BattleLobby_BT_VIEW_USER_5:
|
|
case BattleLobby_BT_VIEW_USER_6:
|
|
case BattleLobby_BT_VIEW_USER_7:
|
|
case BattleLobby_BT_VIEW_USER_8:
|
|
case BattleLobby_BT_VIEW_USER_9:
|
|
case BattleLobby_BT_VIEW_USER_10:
|
|
{
|
|
// 블럭은 마스터의 권한
|
|
if(!m_pBattleZoneMan->IsMaster())
|
|
{
|
|
return;
|
|
}
|
|
|
|
// 블럭
|
|
int BlockIndex = CurPos - BattleLobby_BT_VIEW_USER_2 + 1 ;
|
|
this->BlockPlayer(BlockIndex);
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_BT_USER_EXIT_2:
|
|
case BattleLobby_BT_USER_EXIT_3:
|
|
case BattleLobby_BT_USER_EXIT_4:
|
|
case BattleLobby_BT_USER_EXIT_5:
|
|
case BattleLobby_BT_USER_EXIT_6:
|
|
case BattleLobby_BT_USER_EXIT_7:
|
|
case BattleLobby_BT_USER_EXIT_8:
|
|
case BattleLobby_BT_USER_EXIT_9:
|
|
{
|
|
int ExitIndex = CurPos - BattleLobby_BT_USER_EXIT_2 + 1; // 0 번이 방장이다. 방장은 스킵
|
|
|
|
m_pBattleZoneMan->BanPlayerByIndex(ExitIndex);
|
|
}
|
|
break;
|
|
|
|
case BattleLobby_BT_ROOM_NAME_CHANGE:
|
|
{
|
|
uiChangeRoomName * pChangeRoomName =
|
|
(uiChangeRoomName *)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_CHANGE_ROOM_NAME);
|
|
pChangeRoomName->ShowDialog(TRUE);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
SolarDialog::MessageProc( pMessage );
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::NetworkProc( MSG_BASE * pMsg )
|
|
{
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::OnUpdateSolarDialog()
|
|
{
|
|
updateUserSlotUI();
|
|
updateMapInfoUI();
|
|
|
|
updateZoneType();
|
|
updatePVPUI();
|
|
|
|
if(!m_pBattleZoneMan)
|
|
return;
|
|
|
|
if(g_pHero)
|
|
{
|
|
UserSlot * pUserSlot = m_pBattleZoneMan->GetUserSlotByKey(g_pHero->GetObjectKey());
|
|
|
|
CCtrlButtonWZ* pLeaveButton = static_cast<CCtrlButtonWZ *>(getControl(BattleLobby_TI_LEAVE));
|
|
CCtrlButtonWZ* pExitButton = static_cast<CCtrlButtonWZ *>(getControl(BattleLobby_BT_EXIT));
|
|
|
|
if (pUserSlot && pLeaveButton && pExitButton)
|
|
{
|
|
if (pUserSlot->GetSlotState() == UserSlot::READY)
|
|
{
|
|
// 방나가기 버튼 hide
|
|
pLeaveButton->ShowWindowWZ(WZ_HIDE);
|
|
pExitButton->ShowWindowWZ(WZ_HIDE);
|
|
|
|
}
|
|
else
|
|
{
|
|
// 방나가기 버튼 show
|
|
pLeaveButton->ShowWindowWZ(WZ_SHOW);
|
|
pExitButton->ShowWindowWZ(WZ_SHOW);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::OnRenderSolarDialog()
|
|
{
|
|
// TODO : 요놈들은 함수로 빼는것이 낫것당. 일단 이게 하는일의 전부면
|
|
// 그대로 두고 아니면 함수로 빼자.
|
|
float fMeshHeight = 1.f;
|
|
float fMeshWidth = 1.f;
|
|
RECT rcSize; // 보여줄 위치 정보
|
|
RECT rcViewport; // view port rect
|
|
|
|
// 카메라 알파 먹고 들어오는것때문에 이부분을 넣어준다.
|
|
if ( g_pHero )
|
|
{
|
|
g_pHero->SetCameraAlpha(FALSE);
|
|
}
|
|
|
|
// 현재 BoundingBox를 구할수없어 캐릭터의 키를 구할수없다.
|
|
// 캐릭터의 키를 하드코딩한다.
|
|
|
|
if(!m_pBattleZoneMan)
|
|
return;
|
|
|
|
for (int i = 0; i < m_pBattleZoneMan->GetMaxUserSlot(); ++i)
|
|
{
|
|
UserSlot * pUserSlot = m_pBattleZoneMan->GetUserSlotByIndex(i);
|
|
|
|
if(!pUserSlot)
|
|
{
|
|
assert(0);
|
|
continue;
|
|
}
|
|
|
|
Player * pPlayer = static_cast<Player *>(g_ObjectManager.GetObject( pUserSlot->GetPlayerKey() ));
|
|
if ( !pPlayer )
|
|
{
|
|
continue;
|
|
}
|
|
|
|
switch(pPlayer->GetClass())
|
|
{
|
|
case eCHAR_BERSERKER:
|
|
fMeshHeight = 2.0f;
|
|
break;
|
|
case eCHAR_DRAGON:
|
|
fMeshHeight = 1.8f;
|
|
break;
|
|
case eCHAR_VALKYRIE:
|
|
fMeshHeight = 1.7f;
|
|
break;
|
|
case eCHAR_SHADOW:
|
|
fMeshHeight = 1.8f;
|
|
break;
|
|
case eCHAR_MAGICIAN:
|
|
fMeshHeight = 1.7f;
|
|
break;
|
|
|
|
}
|
|
|
|
if(pPlayer->IsTransForm())//변신 중일때
|
|
{
|
|
fMeshHeight = 2.2f;
|
|
fMeshWidth = 1.2f;
|
|
}
|
|
|
|
// Calc ViewPortWithRect
|
|
CControlWZ * pControl = (CControlWZ *)getControl(BattleLobby_BT_VIEW_USER_1+i);
|
|
if (!pControl)
|
|
{
|
|
assert(!"CHECK THE 63_BattleLobby.IWZ");
|
|
continue;
|
|
}
|
|
|
|
rcSize = pControl->GetSizeRect();
|
|
rcViewport = g_InterfaceManager.CalcuateViewPortWithRect(rcSize);
|
|
|
|
if ( 0 == pUserSlot->GetTeam() )
|
|
{
|
|
// 팀이 없다.
|
|
g_InterfaceManager.RenderObjectOnRect(pPlayer,rcViewport,fMeshWidth,fMeshHeight);
|
|
}
|
|
else
|
|
{
|
|
WzColor wzColor = 0xFFFF6FFF; // 붉게
|
|
|
|
switch (pUserSlot->GetTeam())
|
|
{
|
|
case 1:
|
|
{
|
|
wzColor = WzColor_RGBA(0, 50, 121, 100); // 청
|
|
}
|
|
break;
|
|
case 2:
|
|
{
|
|
wzColor = WzColor_RGBA(137, 9, 0, 100); // 붉
|
|
}
|
|
break;
|
|
case 3:
|
|
{
|
|
wzColor = 0xFF8F8F8F; // 노랑
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
g_InterfaceManager.RenderRect(rcSize, wzColor);
|
|
|
|
g_InterfaceManager.RenderObjectOnRect(pPlayer, rcViewport, fMeshWidth, fMeshHeight);
|
|
}
|
|
|
|
|
|
switch (pUserSlot->GetSlotState())
|
|
{
|
|
case UserSlot::FILL:
|
|
{
|
|
}
|
|
break;
|
|
|
|
case UserSlot::READY:
|
|
{
|
|
// 여기다가 Ready Texture를 가운데에 찍는다.
|
|
|
|
if (m_hTexture[USE_TEXTURE_READY] != INVALID_HANDLE_VALUE)
|
|
{
|
|
float x = (float)((rcSize.left+rcSize.right) - m_pTextureInfo[USE_TEXTURE_READY]->m_nImageWidth)/2;
|
|
float y = (float)(rcSize.top + rcSize.bottom + m_pTextureInfo[USE_TEXTURE_READY]->m_nImageHeight) /2.f;
|
|
|
|
g_pSunRenderer->RenderTexture(
|
|
m_hTexture[USE_TEXTURE_READY],
|
|
x,
|
|
y,
|
|
(float)m_pTextureInfo[USE_TEXTURE_READY]->m_nImageWidth,
|
|
(float)m_pTextureInfo[USE_TEXTURE_READY]->m_nImageHeight,
|
|
0.0f,
|
|
0.0f,
|
|
0.0f,
|
|
0.0f,
|
|
NULL,
|
|
0.0f
|
|
);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case UserSlot::OPENED:
|
|
case UserSlot::BLOCK:
|
|
{
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
assert(0);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 카메라 알파 먹고 들어오는것때문에 이부분을 넣어준다.
|
|
if ( g_pHero )
|
|
{
|
|
g_pHero->SetCameraAlpha(TRUE);
|
|
}
|
|
|
|
BattleRoomEntry & rEntry = m_pBattleZoneMan->GetBattleRoomEntry();
|
|
|
|
#ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP
|
|
RECT rect_guild_pvp = m_rtSuperRoomIcon;
|
|
#ifndef __CHINA_PCBANG_SUPER_ROOM_BLOCK
|
|
if( rEntry.m_RoomInfo.IsSpecialType(eROOM_SPECIAL_PCBANG) )
|
|
{
|
|
g_InterfaceManager.RenderBattleRoomIcon(
|
|
InterfaceManager::eBATTLE_ICON_PCBANG_SUPERMASTER_ROOM,
|
|
&m_rtSuperRoomIcon);
|
|
rect_guild_pvp.left += 20;
|
|
rect_guild_pvp.right += 20;
|
|
}
|
|
else
|
|
#endif
|
|
if ( rEntry.m_RoomInfo.IsSpecialType(eROOM_SPECIAL_ITEM) )
|
|
{
|
|
g_InterfaceManager.RenderBattleRoomIcon(
|
|
InterfaceManager::eBATTLE_ICON_ITEM_SUPERMASTER_ROOM,
|
|
&m_rtSuperRoomIcon);
|
|
rect_guild_pvp.left += 20;
|
|
rect_guild_pvp.right += 20;
|
|
}
|
|
|
|
if( rEntry.m_RoomInfo.IsSpecialType(eROOM_SPECIAL_GUILD_PVP) )
|
|
{
|
|
g_InterfaceManager.RenderBattleRoomIcon(
|
|
InterfaceManager::eBATTLE_ICON_GUILD_PVP_ROOM,
|
|
&rect_guild_pvp);
|
|
}
|
|
|
|
#else
|
|
#ifndef __CHINA_PCBANG_SUPER_ROOM_BLOCK
|
|
if( rEntry.m_RoomInfo.m_SpecialType == eROOM_SPECIAL_PCBANG_SUPER_ROOM)
|
|
{
|
|
g_InterfaceManager.RenderBattleRoomIcon(
|
|
InterfaceManager::eBATTLE_ICON_PCBANG_SUPERMASTER_ROOM,
|
|
&m_rtSuperRoomIcon);
|
|
}
|
|
else
|
|
#endif
|
|
if( rEntry.m_RoomInfo.m_SpecialType == eROOM_SPECIAL_ITEM1_SUPER_ROOM )
|
|
{
|
|
g_InterfaceManager.RenderBattleRoomIcon(
|
|
InterfaceManager::eBATTLE_ICON_ITEM_SUPERMASTER_ROOM,
|
|
&m_rtSuperRoomIcon);
|
|
}
|
|
#endif
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@remark
|
|
-[prev] : 1. 방장키를 받아놓은 상태여야한다.
|
|
2. BattleRoomEntry 를 받아놓은 상태여야한다.
|
|
*/
|
|
VOID
|
|
BattleLobby::OnShowWindow(BOOL val)
|
|
{
|
|
if (val)
|
|
{
|
|
GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_LIST )->ShowInterface(FALSE);
|
|
GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_CREATE )->ShowInterface(FALSE);
|
|
GET_DIALOG(IM_BATTLEZONE_MANAGER::BATTLEZONE_CREATE_EP2)->ShowInterface(FALSE);
|
|
|
|
CCtrlStaticWZ* titleJunk = (CCtrlStaticWZ *)GetControlWZ( StrToWzID("T999") );
|
|
if (titleJunk)
|
|
{
|
|
titleJunk->ShowWindowWZ(WZ_HIDE);
|
|
}
|
|
|
|
g_HeroInput.ClearPickingTarget();
|
|
|
|
if (g_pMap)
|
|
{
|
|
g_pMap->SetRenderFlag(FALSE);
|
|
}
|
|
|
|
initSetUIForBasicInfo();
|
|
|
|
if(m_pBattleZoneMan && m_pBattleZoneMan->IsMaster())
|
|
{
|
|
this->initSetUIForMaster();
|
|
}
|
|
else
|
|
{
|
|
this->initSetUIForMember();
|
|
}
|
|
|
|
switch ( m_pBattleZoneMan->GetBattleRoomEntry().GetType() )
|
|
{
|
|
case eZONETYPE_PVP:
|
|
{
|
|
this->initPVPUI();
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (g_pMap)
|
|
{
|
|
g_pMap->SetRenderFlag(FALSE);
|
|
}
|
|
|
|
switch ( m_pBattleZoneMan->GetBattleRoomEntry().GetType() )
|
|
{
|
|
case eZONETYPE_MISSION:
|
|
{
|
|
#if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES)
|
|
uiBattleZoneReadyMissionConfig * missionCfg = GET_CAST_DIALOG( uiBattleZoneReadyMissionConfig,
|
|
IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_MISSION_CFG );
|
|
if (missionCfg)
|
|
{
|
|
missionCfg->Clear();
|
|
missionCfg->ShowInterface(TRUE);
|
|
}
|
|
#endif // _NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES
|
|
}
|
|
break;
|
|
|
|
case eZONETYPE_PVP:
|
|
{
|
|
uiBattleZoneReadyPVPConfig * pvpCfg = GET_CAST_DIALOG( uiBattleZoneReadyPVPConfig, IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_PVP_CFG );
|
|
if (pvpCfg)
|
|
{
|
|
pvpCfg->Clear();
|
|
pvpCfg->ShowInterface( TRUE );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case eZONETYPE_CHUNTING:
|
|
{
|
|
#if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES)
|
|
uiBattleZoneReadyCHuntingConfig * chunting_config_ptr = GET_CAST_DIALOG( uiBattleZoneReadyCHuntingConfig,
|
|
IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_CHUNTING_CFG );
|
|
|
|
if (chunting_config_ptr)
|
|
{
|
|
if (chunting_config_ptr->Clear() == true)
|
|
{
|
|
chunting_config_ptr->ShowInterface(TRUE);
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
break;
|
|
}
|
|
|
|
g_InterfaceManager.DeAttachFirstDialog(IM_CHAT_MANAGER::CHAT_DIALOG);
|
|
g_InterfaceManager.ShowWindow(IM_CHAT_MANAGER::CHAT_DIALOG, FALSE);
|
|
g_InterfaceManager.AttachFirstDialog(IM_CHAT_MANAGER::CHAT_DIALOG);
|
|
|
|
//
|
|
// setup almost top to chat dialog
|
|
//
|
|
AttachChatDialog();
|
|
|
|
uiPartyMan* partyMan =
|
|
static_cast<uiPartyMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_PARTY));
|
|
if (partyMan)
|
|
{
|
|
partyMan->uiClearAll();
|
|
}
|
|
|
|
m_rtSuperRoomIcon.left = m_pCtrlStaticRoomNo->GetSizeRect().left - 25;
|
|
m_rtSuperRoomIcon.top = m_pCtrlStaticRoomNo->GetSizeRect().top;
|
|
m_rtSuperRoomIcon.right = m_rtSuperRoomIcon.left + 20;
|
|
m_rtSuperRoomIcon.bottom = m_rtSuperRoomIcon.top + 20;
|
|
}
|
|
else
|
|
{
|
|
this->initInfo();
|
|
m_packetStatus = 0;
|
|
|
|
m_pCtrlImageStaticTeamChange->ShowWindowWZ( WZ_HIDE );
|
|
|
|
// 최상위 윈도우 해제
|
|
g_InterfaceManager.DeAttachFirstDialog(IM_CHAT_MANAGER::CHAT_DIALOG);
|
|
ChatDialog * pChatDlg = GET_CAST_DIALOG(ChatDialog, IM_CHAT_MANAGER::CHAT_DIALOG);
|
|
if (pChatDlg)
|
|
{
|
|
pChatDlg->MoveDefaultPosition();
|
|
pChatDlg->ShowWindow(FALSE);
|
|
}
|
|
#if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES)
|
|
GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_CHUNTING_CFG )->ShowInterface( FALSE );
|
|
|
|
GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_MISSION_CFG )->ShowInterface( FALSE );
|
|
#endif//#if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES)
|
|
|
|
GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_PVP_CFG )->ShowInterface( FALSE );
|
|
uiPartyMan* partyMan =
|
|
static_cast<uiPartyMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_PARTY));
|
|
if (partyMan)
|
|
{
|
|
partyMan->uiShowAll();
|
|
}
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
void
|
|
BattleLobby::AttachChatDialog()
|
|
{
|
|
g_InterfaceManager.AttachFirstDialog(IM_CHAT_MANAGER::CHAT_DIALOG);
|
|
g_InterfaceManager.ShowWindow(IM_CHAT_MANAGER::CHAT_DIALOG, TRUE);
|
|
|
|
ChatDialog * pChatDlg = GET_CAST_DIALOG(ChatDialog, IM_CHAT_MANAGER::CHAT_DIALOG);
|
|
if (pChatDlg)
|
|
{
|
|
RECT rcClient;
|
|
this->GetDialogWZ()->GetClientRect(&rcClient);
|
|
pChatDlg->MoveBattleZonePosition( rcClient );
|
|
}
|
|
|
|
//채팅관련 속성창도 위에 표시
|
|
g_InterfaceManager.AttachFirstDialog(IM_CHAT_MANAGER::CHAT_MENU_DIALOG);
|
|
g_InterfaceManager.AttachFirstDialog(IM_CHAT_MANAGER::CHAT_PROPERTY_DIALOG);
|
|
g_InterfaceManager.AttachFirstDialog(IM_CHAT_MANAGER::CHAT_PERSONAL_OPTION);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
CControlWZ *
|
|
BattleLobby::getControl( POSTYPE AtPos )
|
|
{
|
|
if( AtPos < Dialog_Max )
|
|
{
|
|
return GetControlWZ( m_wzId[AtPos] );
|
|
}
|
|
else
|
|
{
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
POSTYPE
|
|
BattleLobby::getCtrlIDToPos( WzID wzId )
|
|
{
|
|
for( POSTYPE i = 0 ; i < Dialog_Max; ++i )
|
|
{
|
|
if( m_wzId[i] == wzId )
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return Dialog_Max;
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::initInfo()
|
|
{
|
|
if(m_pBattleZoneMan)
|
|
m_pBattleZoneMan->FlushUserSlotSet();
|
|
|
|
this->m_packetStatus = 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 방 번호, 타이틀 네임, 비밀번호 표시
|
|
@remark
|
|
- BattleRoomEntry 참조
|
|
*/
|
|
VOID
|
|
BattleLobby::initSetUIForBasicInfo()
|
|
{
|
|
if(!m_pBattleZoneMan)
|
|
return;
|
|
|
|
_itot( m_pBattleZoneMan->GetBattleRoomEntry().GetSerial(), m_szResult, 10);
|
|
GlobalFunc::SetCaption( m_pCtrlStaticRoomNo, m_szResult );
|
|
|
|
GlobalFunc::SetCaption( m_pCtrlStaticRoomTitle, (TCHAR *)m_pBattleZoneMan->GetBattleRoomEntry().GetTitle() );
|
|
|
|
GlobalFunc::SetCaption( m_pCtrlStaticRoomPW, (TCHAR *)m_pBattleZoneMan->GetBattleRoomEntry().GetPassword() );
|
|
|
|
// 버튼 표시 지정
|
|
int iStringID = 0;
|
|
|
|
if(m_pBattleZoneMan->IsMaster())
|
|
{
|
|
iStringID = 115;
|
|
}
|
|
else
|
|
{
|
|
iStringID = 110;
|
|
}
|
|
g_InterfaceManager.GetInterfaceString(iStringID, this->m_szResult, 512);
|
|
GlobalFunc::SetCaption( m_pCtrlTIStartNReady, m_szResult );
|
|
|
|
// 최대 유저에따라서 UserSlotSet에 기본적으로 설정해준다.
|
|
m_pBattleZoneMan->SetDefaultUserSlot();
|
|
|
|
if ( this->m_pCtrlImageStaticTeamChange )
|
|
{
|
|
this->m_pCtrlImageStaticTeamChange->ShowWindowWZ( WZ_HIDE );
|
|
}
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void BattleLobby::ChangeRoomTitle(TCHAR* szMessage)
|
|
{
|
|
GlobalFunc::SetCaption(m_pCtrlStaticRoomTitle, szMessage);
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 방장만을 위한 인터페이스 초기 처리
|
|
*/
|
|
VOID
|
|
BattleLobby:: initSetUIForMaster()
|
|
{
|
|
int i = 0;
|
|
for (i; i < MAX_VIEW_USER_SLOT; ++i)
|
|
{
|
|
m_pCtrlBtnBan[i]->ShowWindowWZ( WZ_SHOW );
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 멤버만을 위한 인터페이스 초기 처리
|
|
*/
|
|
VOID
|
|
BattleLobby::initSetUIForMember()
|
|
{
|
|
int i = 0;
|
|
for (i; i < MAX_VIEW_USER_SLOT; ++i)
|
|
{
|
|
m_pCtrlBtnBan[i]->ShowWindowWZ( WZ_HIDE );
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 유저 네임, 레벨 표시, 블럭 유무 check
|
|
|
|
@remark
|
|
- UserSlotSet 참조
|
|
*/
|
|
VOID
|
|
BattleLobby::updateUserSlotUI()
|
|
{
|
|
|
|
if(!m_pBattleZoneMan)
|
|
return;
|
|
|
|
DWORD dwPlayerKey = 0;
|
|
UserSlot * pUserSlot = NULL;
|
|
|
|
for (int i = 0; i < m_pBattleZoneMan->GetMaxUserSlot(); ++i)
|
|
{
|
|
pUserSlot = m_pBattleZoneMan->GetUserSlotByIndex(i);
|
|
|
|
assert(pUserSlot);
|
|
|
|
if(!pUserSlot)
|
|
continue;
|
|
|
|
if (i != 0)
|
|
{
|
|
// 방장은 감히 블럭당하지 않는다.
|
|
// i - 1인 이유는 방장을 제하고 컨트롤이 존재하기 때문.
|
|
m_pCtrlCheckBtnUserSlotBlock[i-1]->SetCheckState( (pUserSlot->GetSlotState() == UserSlot::BLOCK)? TRUE : FALSE );
|
|
|
|
if(m_pBattleZoneMan && m_pBattleZoneMan->IsMaster())
|
|
{
|
|
if ( pUserSlot->GetSlotState() == UserSlot::FILL ||
|
|
pUserSlot->GetSlotState() == UserSlot::READY )
|
|
{
|
|
m_pCtrlBtnBan[i-1]->ShowWindowWZ( WZ_SHOW );
|
|
}
|
|
else
|
|
{
|
|
m_pCtrlBtnBan[i-1]->ShowWindowWZ( WZ_HIDE );
|
|
}
|
|
}
|
|
}
|
|
|
|
dwPlayerKey = pUserSlot->GetPlayerKey();
|
|
|
|
Player * pPlayer = static_cast<Player *>( g_ObjectManager.GetObject( dwPlayerKey ) );
|
|
|
|
if (pPlayer)
|
|
{
|
|
_itot(pPlayer->GetLevel(), m_szResult, 10);
|
|
GlobalFunc::SetCaption( m_pCtrlStaticUserLevel[i], m_szResult );
|
|
GlobalFunc::SetCaptionSimple(m_pCtrlStaticUserName[i], const_cast<TCHAR*>(pPlayer->GetName()));
|
|
}
|
|
else
|
|
{
|
|
GlobalFunc::SetCaption( m_pCtrlStaticUserLevel[i], _T("") );
|
|
GlobalFunc::SetCaption( m_pCtrlStaticUserName[i], _T("") );
|
|
}
|
|
}
|
|
|
|
if(m_pBattleZoneMan && m_pBattleZoneMan->IsMaster())
|
|
{
|
|
// 버튼 표시 지정
|
|
int iStringID = 115;
|
|
|
|
g_InterfaceManager.GetInterfaceString(iStringID, this->m_szResult, 512);
|
|
GlobalFunc::SetCaption( m_pCtrlTIStartNReady, m_szResult );
|
|
|
|
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
|
|
g_InterfaceManager.GetInterfaceString( 70242, szMessage, INTERFACE_STRING_LENGTH );
|
|
|
|
GlobalFunc::SetCaption( this->m_pCtrlTIStartNReady, (m_pBattleZoneMan->IsReadyForStart())? m_szResult : szMessage );
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 존 타입
|
|
|
|
@remark
|
|
- m_BattleRoomEntry 참조
|
|
*/
|
|
VOID
|
|
BattleLobby::updateZoneType()
|
|
{
|
|
// 존 타입
|
|
if ( m_pCtrlStaticZoneType )
|
|
{
|
|
DWORD dwStringID = 604;
|
|
|
|
switch (m_pBattleZoneMan->GetBattleRoomEntry().GetType())
|
|
{
|
|
case eZONETYPE_MISSION:
|
|
{
|
|
dwStringID = 640;
|
|
}
|
|
break;
|
|
|
|
case eZONETYPE_PVP:
|
|
{
|
|
dwStringID = 685;
|
|
}
|
|
break;
|
|
|
|
|
|
case eZONETYPE_CHUNTING:
|
|
{
|
|
dwStringID = 604;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
dwStringID = 604;
|
|
}
|
|
break;
|
|
}
|
|
|
|
m_pCtrlStaticZoneType->SetTextID( dwStringID );
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 맵네임, 레벨 제한, 권장레벨 표시
|
|
|
|
@remark
|
|
- m_BattleRoomEntry 참조
|
|
*/
|
|
VOID
|
|
BattleLobby::updateMapInfoUI()
|
|
{
|
|
const sMAPINFO * pMapInfo = (sMAPINFO *)m_pBattleZoneMan->GetBattleRoomEntry().GetCurMapInfo();
|
|
|
|
if (pMapInfo)
|
|
{
|
|
// 멥 네임
|
|
g_InterfaceManager.GetInterfaceString(pMapInfo->dwNCode, m_szResult, 512);
|
|
GlobalFunc::SetCaption( m_pCtrlStaticMapName, m_szResult );
|
|
|
|
BASE_RequireFieldLevelInfo * pInfo = NULL;
|
|
|
|
if (eZONETYPE_MISSION == m_pBattleZoneMan->GetBattleRoomEntry().GetType())
|
|
{
|
|
pInfo = RequireFieldLevelInfoParser::Instance()->GetRequireFieldLevelInfo(
|
|
(WORD)m_pBattleZoneMan->GetBattleRoomEntry().GetMapCode(),
|
|
INVALID_DIFFICULT);
|
|
}
|
|
else
|
|
{
|
|
pInfo = RequireFieldLevelInfoParser::Instance()->GetRequireFieldLevelInfo(
|
|
(WORD)m_pBattleZoneMan->GetBattleRoomEntry().GetMapCode(),
|
|
(BYTE)m_pBattleZoneMan->GetBattleRoomEntry().GetDifficult());
|
|
}
|
|
|
|
// 권장 레벨
|
|
int iRequireMinLV = 0, iRequireMaxLV = 0;
|
|
if (pInfo)
|
|
{
|
|
iRequireMinLV = pInfo->m_wMinlv;
|
|
iRequireMaxLV = pInfo->m_wMaxlv;
|
|
}
|
|
else
|
|
{
|
|
iRequireMinLV = pMapInfo->minLV;
|
|
iRequireMaxLV = pMapInfo->maxLV;
|
|
}
|
|
|
|
ZeroMemory(m_szResult, sizeof(m_szResult));
|
|
Snprintf( m_szResult, MAX_RESULT_STRING_LENGTH-1, _T("%3d / %3d"), iRequireMinLV, iRequireMaxLV );
|
|
GlobalFunc::SetCaption( m_pCtrlStaticRecommendLevel, m_szResult );
|
|
}
|
|
|
|
// 레벨 제한
|
|
ZeroMemory(m_szResult, sizeof(m_szResult));
|
|
Snprintf( m_szResult, MAX_RESULT_STRING_LENGTH-1, _T("%3d / %3d"), m_pBattleZoneMan->GetBattleRoomEntry().GetMinLevel(), m_pBattleZoneMan->GetBattleRoomEntry().GetMaxLevel() );
|
|
GlobalFunc::SetCaption( m_pCtrlStaticLimitLevel, m_szResult );
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
@desc
|
|
- 제한설정 표시(선택한 필드, 난이도, 보너스 타입)
|
|
|
|
@remark
|
|
- m_BattleRoomEntry.m_AdditionalInfo 참조
|
|
*/
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::updatePVPUI()
|
|
{
|
|
if ( m_pBattleZoneMan->GetBattleRoomEntry().GetType() != eZONETYPE_PVP )
|
|
{
|
|
if ( m_pCtrlImageStaticTeamChange )
|
|
{
|
|
this->m_pCtrlImageStaticTeamChange->ShowWindowWZ(WZ_HIDE);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if (ePVP_TEAM_MODE == m_pBattleZoneMan->GetBattleRoomEntry().GetPVPMode())
|
|
{
|
|
if ( m_pCtrlImageStaticTeamChange )
|
|
{
|
|
this->m_pCtrlImageStaticTeamChange->ShowWindowWZ(WZ_SHOW);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( m_pCtrlImageStaticTeamChange )
|
|
{
|
|
this->m_pCtrlImageStaticTeamChange->ShowWindowWZ(WZ_HIDE);
|
|
}
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
VOID
|
|
BattleLobby::initPVPUI()
|
|
{
|
|
if ( eZONETYPE_PVP != m_pBattleZoneMan->GetBattleRoomEntry().GetType() )
|
|
{
|
|
return;
|
|
}
|
|
|
|
// 팀 교체 UI 킴.
|
|
if ( this->m_pCtrlImageStaticTeamChange )
|
|
{
|
|
this->m_pCtrlImageStaticTeamChange->ShowWindowWZ( WZ_SHOW );
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
BOOL
|
|
BattleLobby::BlockPlayer(int index)
|
|
{
|
|
if(!m_pBattleZoneMan)
|
|
return FALSE;
|
|
|
|
assert(index >= 1 && index < MAX_VIEW_USER_SLOT);
|
|
|
|
// 방장만 블럭을 할수있당
|
|
if(m_pBattleZoneMan && !m_pBattleZoneMan->IsMaster())
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
|
|
int iCurUser = m_pBattleZoneMan->GetNumUser();
|
|
m_pBattleZoneMan->m_iPendingPlayerIndex = index;
|
|
|
|
UserSlot * pUserSlot = m_pBattleZoneMan->GetUserSlotByIndex(index);
|
|
|
|
if (!pUserSlot)
|
|
{
|
|
assert(0);
|
|
return FALSE;
|
|
}
|
|
|
|
// 최대 유저를 변경해준다. 최소 인원은 현재 셋못하게 한상태이다.
|
|
switch (pUserSlot->GetSlotState())
|
|
{
|
|
case UserSlot::BLOCK:
|
|
{
|
|
// 블럭된 유저는 오픈해줘야지
|
|
// 최대 유저 제한에 위배되지 않느냐?
|
|
int iOpenedSlot = m_pBattleZoneMan->GetNonBlockUserSlotNum();
|
|
|
|
if ( iOpenedSlot >= m_pBattleZoneMan->GetBattleRoomEntry().GetCurLimitMaxUser() )
|
|
{
|
|
// 인원수 제한에 위배 됩니다.
|
|
const int c_iNotChangeMinNumber = 70245;
|
|
g_InterfaceManager.GetInterfaceString( c_iNotChangeMinNumber, szMessage, INTERFACE_STRING_LENGTH );
|
|
GlobalFunc::OutputMsg_Error(eOUTPUT_MSG_CHAT, szMessage);
|
|
g_InterfaceManager.ShowMessageBox(szMessage, 10000, NULL, 0);
|
|
return FALSE;
|
|
}
|
|
|
|
++iOpenedSlot;
|
|
|
|
assert( iOpenedSlot <= MAX_VIEW_USER_SLOT );
|
|
|
|
m_pBattleZoneMan->ModifyPlayerNums( iOpenedSlot);
|
|
}
|
|
break;
|
|
|
|
case UserSlot::OPENED:
|
|
{
|
|
// 오픈된 유저는 블럭해줘야지
|
|
|
|
int iBlockedNum = m_pBattleZoneMan->GetBlockUserSlotNum();
|
|
int iCanBlockNum = m_pBattleZoneMan->GetMaxUserSlot() - iBlockedNum;
|
|
|
|
int iMaxLimitUser= m_pBattleZoneMan->GetBattleRoomEntry().GetCurLimitMinUser();
|
|
|
|
// TODO : 일단 Min User가 없으니까 1로하자.
|
|
// Min User 보다 작게 블럭할수 없다.
|
|
// 최소 유저 제한에 위배되지 않느냐?
|
|
if (iCanBlockNum <= iMaxLimitUser )
|
|
{
|
|
// 인원수 제한에 위배 됩니다.
|
|
const int c_iNotChangeMinNumber = 70244;
|
|
g_InterfaceManager.GetInterfaceString( c_iNotChangeMinNumber, szMessage, INTERFACE_STRING_LENGTH );
|
|
GlobalFunc::OutputMsg_Error(eOUTPUT_MSG_CHAT, szMessage);
|
|
return FALSE;
|
|
}
|
|
|
|
int iChangeNum = m_pBattleZoneMan->GetMaxUserSlot() - (iBlockedNum + 1);
|
|
m_pBattleZoneMan->ModifyPlayerNums( iChangeNum );
|
|
|
|
}
|
|
break;
|
|
|
|
case UserSlot::FILL:
|
|
case UserSlot::READY:
|
|
{
|
|
// 무시.
|
|
}
|
|
break;
|
|
|
|
default:
|
|
assert(0);
|
|
return FALSE;
|
|
break;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
//void
|
|
//BattleLobby::UpdatePosition()
|
|
//{
|
|
// //RECT rcDlgSize;
|
|
// //GetDialogWZ()->GetDlgSize(&rcDlgSize);
|
|
//
|
|
// //POINT pt = g_pApplication->Get2DModeMapping();
|
|
//
|
|
// //RECT rcInterface;
|
|
// //rcInterface.left = rcInterface.top = 0;
|
|
// //rcInterface.right = pt.x;
|
|
// //rcInterface.bottom = pt.y;
|
|
// //
|
|
// //int x = (rcInterface.right / 2) - (rcDlgSize.right / 2);
|
|
// //int y = (rcInterface.bottom / 2) - (rcDlgSize.bottom / 2);
|
|
//
|
|
// //MoveWindowWZ( (float)x, (float)y );
|
|
//
|
|
//}
|
|
|
|
void BattleLobby::showZoneStatusWindow()
|
|
{
|
|
#if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES)
|
|
uiBase * pBattleZoneReadyChuntingCfg = GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_CHUNTING_CFG );
|
|
|
|
if( pBattleZoneReadyChuntingCfg && pBattleZoneReadyChuntingCfg->IsVisible() && !pBattleZoneReadyChuntingCfg->HaveFocus() )
|
|
{
|
|
pBattleZoneReadyChuntingCfg->ShowWindow( TRUE );
|
|
}
|
|
|
|
uiBase * pBattleZoneReadyPVPConfig = GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_PVP_CFG );
|
|
uiBase * pBattleZoneReadyMissioncfg = GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_MISSION_CFG );
|
|
|
|
if( pBattleZoneReadyPVPConfig && pBattleZoneReadyPVPConfig->IsVisible() && !pBattleZoneReadyPVPConfig->HaveFocus() )
|
|
{
|
|
pBattleZoneReadyPVPConfig->ShowWindow( TRUE );
|
|
}
|
|
else if( pBattleZoneReadyMissioncfg && pBattleZoneReadyMissioncfg->IsVisible() && !pBattleZoneReadyMissioncfg->HaveFocus() )
|
|
{
|
|
pBattleZoneReadyMissioncfg->ShowWindow( TRUE );
|
|
}
|
|
#endif//#if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES)
|
|
|
|
} |