⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 villagemanager.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -