📄 channel.cpp
字号:
#include "StdAfx.h"
#include ".\channel.h"
#include "ZoneFactory.h"
#include "Zone.h"
#include "User.h"
#include "UserManager.h"
// 轰器飘 贸府侩
#include "ViewPortManager.h"
// 稠府利 悼立 沥焊 贸府侩
#include "ChannelManager.h"
Channel::Channel(void)
{
m_pCharSceneZone = new Zone;
m_dwVillageUserNum = 0;
m_dwLobbyUserNum = 0;
m_dwMissionUserNum = 0;
m_dwHuntingUserNum = 0;
m_dwQuestUserNum = 0;
m_dwPVPUserNum = 0;
m_dwEventUserNum = 0;
m_dwGuildUserNum = 0;
m_dwSiegeUserNum = 0;
m_ChatRoomKeyGenerator.Create( 1, 10000 ); // 老窜 10000俺 力茄...盲泼规篮 穿备唱 父甸 荐 乐扁 锭巩俊 捞 捞惑老 荐档 乐促
}
Channel::~Channel(void)
{
delete m_pCharSceneZone;
}
VOID Channel::Init()
{
m_pCharSceneZone->Init();
m_pCharSceneZone->SetKey( 0 );
m_pViewPortManager = new ViewPortManager();
m_pViewPortManager->TestLoadMap();
}
VOID Channel::Release()
{
USER_MAP_ITER it;
User *pUser;
// 盲澄 蜡廉 府胶飘俊 甸绢乐绰 蜡廉甸 刚历 力芭 贸府
// 捞磐饭捞飘 档吝 RemoveUser救俊辑 捞磐饭捞磐啊 昏力瞪 荐 乐栏骨肺 汗荤等 府胶飘 荤侩
USER_MAP m_mapUsersClone = m_mapUsers;
for( it = m_mapUsersClone.begin(); it != m_mapUsersClone.end(); ++it )
{
pUser = it->second;
RemoveUser( pUser );
}
m_mapUsersClone.clear();
//m_mapUsers.clear(); <== RemoveUser救俊辑 m_mapUsers狼 葛电 element绰 昏力登绢具 壳澜
// 某腐磐 急琶粮 付公府
m_pCharSceneZone->Release();
ZONE_MAP_ITER zone_it;
Zone *pZone;
// 付阑粮甸 付公府
for( zone_it = m_mapVillageZones.begin(); zone_it != m_mapVillageZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapVillageZones.clear();
m_pViewPortManager->Release();
delete m_pViewPortManager;
/*
// 傈捧粮甸 付公府
for( zone_it = m_mapBattleZones.begin(); zone_it != m_mapBattleZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapBattleZones.clear();
*/
for( zone_it = m_mapLobby.begin(); zone_it != m_mapLobby.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapLobby.clear();
for( zone_it = m_mapMissionZones.begin(); zone_it != m_mapMissionZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapMissionZones.clear();
for( zone_it = m_mapHuntingZones.begin(); zone_it != m_mapHuntingZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapHuntingZones.clear();
for( zone_it = m_mapQuestZones.begin(); zone_it != m_mapQuestZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapQuestZones.clear();
for( zone_it = m_mapPVPZones.begin(); zone_it != m_mapPVPZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapPVPZones.clear();
for( zone_it = m_mapEventZones.begin(); zone_it != m_mapEventZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapEventZones.clear();
for( zone_it = m_mapGuildZones.begin(); zone_it != m_mapGuildZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapGuildZones.clear();
for( zone_it = m_mapSiegeZones.begin(); zone_it != m_mapSiegeZones.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapSiegeZones.clear();
for( zone_it = m_mapFriendChat.begin(); zone_it != m_mapFriendChat.end(); ++zone_it )
{
pZone = zone_it->second;
pZone->Release();
}
m_mapFriendChat.clear();
// 立加磊 檬扁拳
m_dwVillageUserNum = 0;
m_dwLobbyUserNum = 0;
m_dwMissionUserNum = 0;
m_dwHuntingUserNum = 0;
m_dwQuestUserNum = 0;
m_dwPVPUserNum = 0;
m_dwEventUserNum = 0;
m_dwGuildUserNum = 0;
m_dwSiegeUserNum = 0;
}
VOID Channel::Update()
{
}
Zone* Channel::AddVillage( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_VILLAGE );
pZone->SetKey( dwZoneKey );
m_mapVillageZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
/*
Zone* Channel::AddBattleZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( (eZONE_TYPE)ZT_BATTLEZONE );
pZone->SetKey( dwZoneKey );
m_mapBattleZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
*/
Zone* Channel::AddLobby( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_LOBBY );
pZone->SetKey( dwZoneKey );
m_mapLobby.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddMissionZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_MISSION );
pZone->SetKey( dwZoneKey );
m_mapMissionZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddHuntingZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_HUNTING );
pZone->SetKey( dwZoneKey );
m_mapHuntingZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
MessageOut( eFULL_LOG, "CreateHuntingZone[%u]", dwZoneKey );
return pZone;
}
Zone* Channel::AddQuestZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_QUEST );
pZone->SetKey( dwZoneKey );
m_mapQuestZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddPVPZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_PVP );
pZone->SetKey( dwZoneKey );
m_mapPVPZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddEventZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_EVENT );
pZone->SetKey( dwZoneKey );
m_mapEventZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddGuildZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_GUILD );
pZone->SetKey( dwZoneKey );
m_mapGuildZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddSiegeZone( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_SIEGE );
pZone->SetKey( dwZoneKey );
m_mapSiegeZones.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
Zone* Channel::AddFriendChat( DWORD dwZoneKey )
{
Zone *pZone = ZoneFactory::Instance()->AllocZone();
pZone->SetZoneType( eZONETYPE_MAX );
pZone->SetKey( dwZoneKey );
m_mapFriendChat.insert( ZONE_MAP_PAIR( dwZoneKey, pZone ) );
return pZone;
}
VOID Channel::RemoveVillage( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapVillageZones.find( dwZoneKey );
assert( it != m_mapVillageZones.end() );
Zone *pZone = it->second;
m_mapVillageZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
/*
VOID Channel::RemoveBattleZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapBattleZones.find( dwZoneKey );
assert( it != m_mapBattleZones.end() );
Zone *pZone = it->second;
m_mapBattleZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
*/
VOID Channel::RemoveLobby( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapLobby.find( dwZoneKey );
assert( it != m_mapLobby.end() );
Zone *pZone = it->second;
m_mapLobby.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveMissionZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapMissionZones.find( dwZoneKey );
assert( it != m_mapMissionZones.end() );
Zone *pZone = it->second;
m_mapMissionZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveHuntingZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapHuntingZones.find( dwZoneKey );
assert( it != m_mapHuntingZones.end() );
Zone *pZone = it->second;
m_mapHuntingZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveQuestZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapQuestZones.find( dwZoneKey );
assert( it != m_mapQuestZones.end() );
Zone *pZone = it->second;
m_mapQuestZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemovePVPZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapPVPZones.find( dwZoneKey );
assert( it != m_mapPVPZones.end() );
Zone *pZone = it->second;
m_mapPVPZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveEventZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapEventZones.find( dwZoneKey );
assert( it != m_mapEventZones.end() );
Zone *pZone = it->second;
m_mapEventZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveGuildZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapGuildZones.find( dwZoneKey );
assert( it != m_mapGuildZones.end() );
Zone *pZone = it->second;
m_mapGuildZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveSiegeZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapSiegeZones.find( dwZoneKey );
assert( it != m_mapSiegeZones.end() );
Zone *pZone = it->second;
m_mapSiegeZones.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
VOID Channel::RemoveFriendChat( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapFriendChat.find( dwZoneKey );
assert( it != m_mapFriendChat.end() );
Zone *pZone = it->second;
m_mapFriendChat.erase( it );
ZoneFactory::Instance()->FreeZone( pZone );
}
Zone* Channel::FindZone( eZONETYPE eZoneType, DWORD dwZoneKey )
{
// 瘤沥茄 ZoneType俊 嘎霸 茫酒霖促
switch( eZoneType )
{
case eZONETYPE_CHARSELECT:
return m_pCharSceneZone;
case eZONETYPE_VILLAGE:
return FindVillage( dwZoneKey );
case eZONETYPE_LOBBY:
return FindLobby( dwZoneKey );
case eZONETYPE_MISSION:
return FindMissionZone( dwZoneKey );
case eZONETYPE_HUNTING:
return FindHuntingZone( dwZoneKey );
case eZONETYPE_QUEST:
return FindQuestZone( dwZoneKey );
case eZONETYPE_PVP:
return FindPVPZone( dwZoneKey );
case eZONETYPE_EVENT:
return FindEventZone( dwZoneKey );
case eZONETYPE_GUILD:
return FindGuildZone( dwZoneKey );
case eZONETYPE_SIEGE:
return FindSiegeZone( dwZoneKey );
default:
#ifdef _DEBUG
assert( !"FindZone - invalid user status" );
#else
MessageOut( eCRITICAL_LOG, "[Guid:%u] Channel::FindZone Error - Invalid ZoneType[%u][ZK:%u]", eZoneType, dwZoneKey );
// 酪绢滚啡栏聪 谗绢滚妨!!!
#endif
break;
}
return NULL;
}
Zone* Channel::FindVillage( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapVillageZones.find( dwZoneKey );
if( it != m_mapVillageZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
/*
Zone* Channel::FindBattleZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapBattleZones.find( dwZoneKey );
if( it != m_mapBattleZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
*/
Zone* Channel::FindLobby( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapLobby.find( dwZoneKey );
if( it != m_mapLobby.end() )
{
return it->second;
}
else
{
return NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -