📄 villagemanager.cpp
字号:
#include "stdafx.h"
#include ".\villagemanager.h"
#include <WzDataType.h>
#include ".\Village.h"
#include "GameServer.h"
#include "MapAllocator.h"
VillageManager g_VillageManager;
VillageManager::VillageManager()
{
m_pVillagePool = new CMemoryPoolFactory<Village>;
m_pVillageHashTable = new SolarHashTable<Village *>;
}
VillageManager::~VillageManager()
{
SAFE_DELETE( m_pVillageHashTable );
SAFE_DELETE( m_pVillagePool );
}
VOID VillageManager::Init()
{
m_pVillagePool->Initialize( 50, 50/2+1 );
m_pVillageHashTable->Initialize(50);
///< 辑滚俊辑 剁匡 付阑 按眉甫 火涝
///< 泅犁 烙矫
/*
MAPID mid = 1;
Village * pVillage = m_pVillagePool->Alloc();
pVillage->Init( m_pMapAllocator->AllocMap( mid ) );
m_pVillageHashTable->Add( pVillage, pVillage->GetZoneKey() );
*/
}
VOID VillageManager::Release()
{
/// 救傈茄 贸府 : 付阑 按眉 钱俊 馆券
Village * pVillage = NULL;
m_pVillageHashTable->SetFirst();
while( (pVillage = m_pVillageHashTable->GetNext()) != NULL )
{
DestroyVillage( pVillage );
}
m_pVillageHashTable->RemoveAll();
m_pVillagePool->Release();
}
VOID VillageManager::Update( DWORD dwDeltaTick )
{
Village * pVillage = NULL;
m_pVillageHashTable->SetFirst();
while( (pVillage = m_pVillageHashTable->GetNext()) != NULL )
{
pVillage->Update( dwDeltaTick );
}
}
Village* VillageManager::GetVillage( DWORD dwVillageKey )
{
return m_pVillageHashTable->GetData( dwVillageKey );
}
Village * VillageManager::CreateVillage( MAPID MapID )
{
ASSERT( NULL == GetVillage( MapID ) );
Village * pVillage = m_pVillagePool->Alloc();
pVillage->Create( MapID );
//static DWORD dwKey = 10000;
//++dwKey;
//pVillage->setVillageKey( MapID ); //< 付阑篮 鞍篮 屈怕狼 甘捞 乐阑 荐 绝促.
pVillage->setZoneKey( MapID );
_addVillage( pVillage );
/*
///////////////// 烙矫 阁胶磐 积己(盔贰 付阑俊急 阁胶磐 积己救窃)////////////////////////
//WzVector * pwzVec = pField->GetStartingVector();
WzVector vPos;
switch(MapID)
{
//case 60001: vPos.x = 46.0f; vPos.y = 47.0f; vPos.z = 0.0f; break;
case 10001: vPos.x = -129.0f; vPos.y = -44.64f; vPos.z = -20.41f; break;
case 3: vPos.x = 55.0f; vPos.y = 56.0f; vPos.z = 0.0f; break;
default:
ASSERT(!"阁胶磐甫 积己且 困摹甫 沥且 荐啊 绝嚼聪促.");
}
pVillage->CreateNPC( 0, 3, 7, &vPos );
/////////////////////////////////////////////////////
*/
return pVillage;
}
VOID VillageManager::DestroyVillage( Village * pVillage )
{
pVillage->release();
pVillage->destroy();
_removeVillage( pVillage );
m_pVillagePool->Free( (Village *)pVillage );
}
VOID VillageManager::_addVillage( Village * pVillage )
{
ASSERT( NULL == GetVillage( pVillage->GetZoneKey() ) );
m_pVillageHashTable->Add( pVillage, pVillage->GetZoneKey() );
}
VOID VillageManager::_removeVillage( Village * pVillage )
{
ASSERT( NULL != GetVillage( pVillage->GetZoneKey() ) );
m_pVillageHashTable->Remove( pVillage->GetZoneKey() );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -