?? channel.cpp
字號:
Zone* Channel::FindMissionZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapMissionZones.find( dwZoneKey );
if( it != m_mapMissionZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindHuntingZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapHuntingZones.find( dwZoneKey );
if( it != m_mapHuntingZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindQuestZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapQuestZones.find( dwZoneKey );
if( it != m_mapQuestZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindPVPZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapPVPZones.find( dwZoneKey );
if( it != m_mapPVPZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindEventZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapEventZones.find( dwZoneKey );
if( it != m_mapEventZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindGuildZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapGuildZones.find( dwZoneKey );
if( it != m_mapGuildZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindSiegeZone( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapSiegeZones.find( dwZoneKey );
if( it != m_mapSiegeZones.end() )
{
return it->second;
}
else
{
return NULL;
}
}
Zone* Channel::FindFriendChat( DWORD dwZoneKey )
{
ZONE_MAP_ITER it = m_mapFriendChat.find( dwZoneKey );
if( it != m_mapFriendChat.end() )
{
return it->second;
}
else
{
return NULL;
}
}
// 盲澄俊 貿瀾欄肺 蠟廉甫 眠啊茄促.
// 某腐磐糾俊 眠啊且 錠綽 糧虐 公矯
VOID Channel::AddUser( User *pUser, eZONETYPE userStatus, DWORD dwZoneKey )
{
// pUser->SetStatus( userStatus );
switch( userStatus )
{
case eZONETYPE_CHARSELECT:
UserEnterCharScene( pUser );
break;
case eZONETYPE_VILLAGE:
UserEnterVillage( pUser, dwZoneKey );
break;
case eZONETYPE_LOBBY:
UserEnterLobby( pUser, dwZoneKey );
break;
case eZONETYPE_MISSION:
UserEnterMissionZone( pUser, dwZoneKey );
break;
case eZONETYPE_HUNTING:
UserEnterHuntingZone( pUser, dwZoneKey );
break;
case eZONETYPE_QUEST:
UserEnterQuestZone( pUser, dwZoneKey );
break;
case eZONETYPE_PVP:
UserEnterPVPZone( pUser, dwZoneKey );
break;
case eZONETYPE_EVENT:
UserEnterEventZone( pUser, dwZoneKey );
break;
case eZONETYPE_GUILD:
UserEnterGuildZone( pUser, dwZoneKey );
break;
case eZONETYPE_SIEGE:
UserEnterSiegeZone( pUser, dwZoneKey );
break;
default:
#ifdef _DEBUG
assert( !"AddUser - invalid user status" );
#else
MessageOut( eCRITICAL_LOG, "[Guid:%u] Channel::AddUser Error - No ZoneType[%u][ZK:%u]", userStatus, dwZoneKey );
// 酪絹滾啡欄聰 讒絹滾妨!!!
pUser->Logout();
return;
#endif
break;
}
// 盲澄 蠟廉 府膠飄俊檔 眠啊
m_mapUsers.insert( USER_MAP_PAIR( pUser->GetGUID(), pUser ) );
// 傈眉 蠟廉 府膠飄俊檔 眠啊
UserManager::Instance()->AddUser( pUser->GetGUID(), pUser );
MessageOut( eFULL_LOG, "盲澄(%d) 蠟廉 眠啊! [Guid:%u][CharName:%s][Status:%u]",
GetChannelID(), pUser->GetGUID(), pUser->GetCharName().c_str(), userStatus );
}
// 盲澄闌 肯傈灑 狐廉唱哎 錠 齲免
VOID Channel::RemoveUser( User *pUser )
{
MessageOut( eFULL_LOG, "盲澄(%d) 蠟廉 力芭 [Guid:%u][CharName:%s][Status:%u]",
GetChannelID(), pUser->GetGUID(), pUser->GetCharName().c_str(), pUser->GetStatus() );
if( pUser->GetStatus() >= eZONETYPE_LOBBY && pUser->GetStatus() < eZONETYPE_MAX )
{
// 盲澄俊輯 泅犁 困摹茄 府膠飄俊輯 力芭
UserLeavePrevZone( pUser );
}
// 轟器飄俊輯檔 力芭
// ViewPortManager::Instance()->RemoveUser( pUser );
m_pViewPortManager->RemoveUser( pUser );
// 盲澄 蠟廉 府膠飄俊輯檔 力芭
USER_MAP_ITER it = m_mapUsers.find( pUser->GetGUID() );
if( it != m_mapUsers.end() )
{
m_mapUsers.erase( it );
}
// 傈眉 蠟廉 府膠飄俊輯檔 力芭
UserManager::Instance()->RemoveUser( pUser->GetGUID() );
}
BOOL Channel::AddViewPortUser( User *pUser, DWORD dwField, DWORD dwSector )
{
return m_pViewPortManager->AddUser( pUser, dwField, dwSector );
}
BOOL Channel::MoveViewPortUser( User *pUser, DWORD dwField, DWORD dwSector )
{
return m_pViewPortManager->MoveUser( pUser, dwField, dwSector );
}
VOID Channel::RemoveViewPortUser( User *pUser )
{
m_pViewPortManager->RemoveUser( pUser );
}
VOID Channel::UserLeavePrevZone( User *pUser )
{
MessageOut( eMIDDLE_LOG, "UserLeaveZone[ZoneType:%u][Key:%u][Guid:%u][CharGuid:%u]", pUser->GetStatus(),
pUser->GetZoneKey(),
pUser->GetGUID(),
pUser->GetCharGuid() );
switch( pUser->GetStatus() )
{
case eZONETYPE_CHARSELECT:
{
m_pCharSceneZone->RemoveUser( pUser->GetGUID() );
}
break;
case eZONETYPE_VILLAGE:
{
Zone *pZone = FindVillage( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecVillageUserNum();
}
// 后 付闌撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveVillage( pZone->GetKey() );
}
}
// ViewPortManager::Instance()->RemoveUser( pUser ); // 轟器飄俊輯 昏力
m_pViewPortManager->RemoveUser( pUser );
}
break;
case eZONETYPE_LOBBY:
{
Zone *pZone = FindLobby( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecLobbyUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveLobby( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_MISSION:
{
Zone *pZone = FindMissionZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecMissionUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveMissionZone( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_HUNTING:
{
Zone *pZone = FindHuntingZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecHuntingUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveHuntingZone( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_QUEST:
{
Zone *pZone = FindQuestZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecQuestUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveQuestZone( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_PVP:
{
Zone *pZone = FindPVPZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecPVPUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemovePVPZone( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_EVENT:
{
Zone *pZone = FindEventZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecEventUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveEventZone( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_GUILD:
{
Zone *pZone = FindGuildZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecGuildUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveGuildZone( pZone->GetKey() );
}
}
}
break;
case eZONETYPE_SIEGE:
{
Zone *pZone = FindSiegeZone( pUser->GetZoneKey() );
if( pZone )
{
if( pZone->RemoveUser( pUser->GetGUID() ) )
{
DecSiegeUserNum();
}
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveSiegeZone( pZone->GetKey() );
}
}
}
break;
default: // 老竄 某腐磐 急琶/付闌 酒聰擱 傈何 硅撇糧欄肺 秒鞭茄促
{
MessageOut( eFULL_LOG, "[%u][ZK:%u] UserLeavePrevZone Error - 吝汗 昏力", pUser->GetGUID(), pUser->GetZoneKey() );
return;
}
break;
// assert( !"UserLeavePrevZone - invalid user status" );
/*
{
Zone *pZone = FindBattleZone( pUser->GetZoneKey() );
if( pZone )
{
pZone->RemoveUser( pUser->GetGUID() );
// 后 硅撇糧撈擱 昏力
if( pZone->GetNumberOfUsers() == 0 )
{
RemoveBattleZone( pZone->GetKey() );
}
}
}
*/
break;
}
}
VOID Channel::UserEnterCharScene( User *pUser )
{
if( pUser->GetStatus() >= eZONETYPE_LOBBY && pUser->GetStatus() < eZONETYPE_MAX )
{
MessageOut( eCRITICAL_LOG, "User Leave 絕撈 CharSceneEnter Error[%s][Guid:%u][CharGuid:%u]", pUser->GetCharName().c_str(),
pUser->GetGUID(),
pUser->GetCharGuid() );
UserLeavePrevZone( pUser ); // 趣矯扼檔 巢籃 惑怕老 薦 樂欄聰 昏力
}
pUser->SetStatus( eZONETYPE_CHARSELECT );
m_pCharSceneZone->AddUser( pUser->GetGUID(), pUser );
MessageOut( eFULL_LOG, "UserEnterCharScene(%s:%u)", pUser->GetCharName().c_str(), pUser->GetGUID() );
}
VOID Channel::UserEnterVillage( User *pUser, DWORD dwZoneKey )
{
if( pUser->GetStatus() >= eZONETYPE_LOBBY && pUser->GetStatus() < eZONETYPE_MAX )
{
MessageOut( eCRITICAL_LOG, "User Leave 絕撈 VillageEnter Error[%s][Guid:%u][CharGuid:%u]", pUser->GetCharName().c_str(),
pUser->GetGUID(),
pUser->GetCharGuid() );
UserLeavePrevZone( pUser ); // 趣矯扼檔 巢籃 惑怕老 薦 樂欄聰 昏力
}
pUser->SetStatus( eZONETYPE_VILLAGE );
// 秦寸 虐肺 付闌闌 茫酒焊絆 絕欄擱 付闌 眠啊 饒 蠟廉 眠啊
Zone *pZone = FindVillage( dwZoneKey );
if( !pZone )
{
pZone = AddVillage( dwZoneKey );
}
if( pZone->AddUser( pUser->GetGUID(), pUser ) )
{
IncVillageUserNum();
}
MessageOut( eMIDDLE_LOG, "UserEnterVillage[Guid:%u][CharGuid:%u][ZK:%u]", pUser->GetGUID(), pUser->GetCharGuid(), dwZoneKey );
}
/*
VOID Channel::UserEnterBattleZone( User *pUser, DWORD dwZoneKey )
{
UserLeavePrevZone( pUser ); // 趣矯扼檔 巢籃 惑怕老 薦 樂欄聰 昏力
pUser->SetStatus( eZONETYPE_LOBBY );
// 秦寸 虐肺 硅撇糧闌 茫酒焊絆 絕欄擱 硅撇糧 眠啊 饒 蠟廉 眠啊
Zone *pZone = FindBattleZone( dwZoneKey );
if( !pZone )
{
pZone = AddBattleZone( dwZoneKey );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -