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

📄 zonemanager.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#pragma once


class Village;
class Zone;
class ZoneManager
{
public:
	ZoneManager(void);
	~ZoneManager(void);


	VOID				Init( DWORD dwZonePoolSize );
	VOID				Release();
	VOID				Update( DWORD dwDeltaTick );

	// 付阑/冯俊 蝶弗 窃荐 龋免
	Village * CreateVillage( CODETYPE MapCode );

	template <class _Ct, class  _RoomDesc>
	_Ct * CreateRoom( KEYTYPE leaderKey, KEYTYPE IN RoomKey, CODETYPE MapCode, _RoomDesc & IN desc, Param2Class<_Ct> );

	VOID	DestroyZone( Zone * pZone );

	Zone * GetZone( KEYTYPE Key ) { return m_pZoneHashTable->GetData( Key );	}


	VOID				zone_print();
	VOID				zone_print( KEYTYPE Key );
	/*
	// Policy客 functor肺 贸府
	VOID					Teleport( WzVector * pToVec );
	VOID					Warp( BYTE byFieldIdx );
	VOID					Portal( DWORD dwRoomKey );
	VOID					Migrate();							//< 葛滴 village肺 捞林
	*/

protected:
	VOID addZone( Zone * pZone );
	VOID removeZone( KEYTYPE Key );
	KEYTYPE generateZoneKey();
private:
	util::SolarHashTable<Zone *> *		m_pZoneHashTable;


	static KEYTYPE						s_ZoneKeyIndex;
};

template <class _Ct, class _RoomDesc>
_Ct * ZoneManager::CreateRoom( KEYTYPE leaderKey, KEYTYPE IN RoomKey, CODETYPE MapCode, _RoomDesc & desc, Param2Class<_Ct> )
{
	_Ct * pNewRoom = _Ct::Create();
	KEYTYPE Key = RoomKey;
	if( Key == 0 ) Key = generateZoneKey();
	if( !pNewRoom->Init( Key, MapCode, leaderKey, desc ) )
	{
		_Ct::Destroy( pNewRoom );
		return NULL;
	}
	addZone( pNewRoom );

	return pNewRoom;
}

extern ZoneManager g_ZoneManager;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -