📄 gamepvproom.cpp
字号:
#include "StdAfx.h"
#include ".\gamepvproom.h"
#include ".\Player.h"
#include ".\Map.h"
#include ".\Field.h"
#include ".\PVPManager.h"
#include "Party.h"
#include "PVPInfo.h"
__IMPL_GAMEZONEPOOL(GamePVPRoom)
GamePVPRoom::GamePVPRoom(void)
{
m_pPVPManager = new PVPManager;
m_pPartyHashTable = new util::SolarHashTable<Party*>;
m_pPartyHashTable->Initialize( MAX_PVP_TEAM_NUM );
}
GamePVPRoom::~GamePVPRoom(void)
{
SAFE_DELETE(m_pPVPManager);
SAFE_DELETE(m_pPartyHashTable);
}
VOID GamePVPRoom::Init( KEYTYPE Key, CODETYPE MapCode, const TCHAR * pszRoomTitle, const TCHAR * pszRoomPWD, const BASE_ROOMINFO * IN pRoomInfo, const ADDITIONAL_PVPINFO * IN pAdditionalPVPInfo )
{
GameRoom::Init( Key, MapCode, pszRoomTitle, pszRoomPWD, pRoomInfo );
SetAdditionalPVPInfo(pAdditionalPVPInfo);
GameZone::LoadMap();
m_pPVPManager->Init( &m_AdditionalPVPInfo );
}
VOID GamePVPRoom::Release()
{
GameRoom::Release();
m_pPVPManager->Release();
}
VOID GamePVPRoom::Ready( Player * pPlayer, CODETYPE FieldCode, WzID AreaID )
{
DEBUG_CODE(
GameZone * pEnterZone = NULL;
CODETYPE EnterFieldCode = 0;
eZONE_STATE eRoomState = pPlayer->GetGameZone( pEnterZone, EnterFieldCode );
ASSERT( !(eRoomState & ePRS_AT_ZONE) );
);
pPlayer->SetGameZone( ePRS_BEFORE_ENTER_PVP, this, FieldCode, AreaID );
}
BOOL GamePVPRoom::Join( Player * pPlayer, CODETYPE FieldCode, WzID AreaID )
{
DEBUG_CODE(
GameZone * pEnterZone = NULL;
CODETYPE EnterFieldCode = 0;
eZONE_STATE eRoomState = pPlayer->GetGameZone( pEnterZone, EnterFieldCode );
ASSERT( (eRoomState & ePRS_BEFORE_ENTER_PVP) );
);
pPlayer->SetGameZone( ePRS_AT_PVP, this, FieldCode );
if( !GameRoom::Join( pPlayer, FieldCode, AreaID ) )
{
pPlayer->SetGameZone( ePRS_NOT_AT_ZONE, NULL, 0 );
return FALSE;
}
m_pPVPManager->EnterPlayer( pPlayer );
// 评傈老 版快俊父 颇萍甫 积己茄促.
if( m_AdditionalPVPInfo.m_Mode == ePVP_TEAM_MODE )
{
// 评 牢郸胶肺 颇萍甫 包府茄促.
Party *pParty = GetParty( pPlayer->GetPVPInfo().GetTeam() );
if( pParty )
{
pPlayer->JoinParty( pParty->GetPartyKey() );
}
// 绝栏搁 货肺 积己茄促.
else
{
WORD wPartyKey = CreateParty( pPlayer->GetUserKey(), pPlayer->GetPVPInfo().GetTeam() );
pPlayer->JoinParty( wPartyKey );
}
}
return TRUE;
}
VOID GamePVPRoom::Leave( Player * pPlayer )
{
m_pPVPManager->LeavePlayer( pPlayer );
GameRoom::Leave( pPlayer );
}
CODETYPE GamePVPRoom::GetEntryFieldCode()
{
ASSERT( GetMap() );
ASSERT( GetMap()->GetMapInfo() );
return GetMap()->GetMapInfo()->GetMapInfo()->FCode[0];
}
VOID GamePVPRoom::Update( DWORD dwDeltaTick )
{
GameRoom::Update( dwDeltaTick );
m_pPVPManager->Update( dwDeltaTick );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -