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

📄 gamezone.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#pragma once
//=============================================================================================================================
/// GameZone class
/**
	@author	Kim Min Wook < taiyo@webzen.com >
	@since	2004. 12. 29
	@remark
		- GameServer俊辑 粮阑 包府窍绰 弥惑困 眠惑 努贰胶
	@note
		- 
	@history 
		- 
*/
//=============================================================================================================================
#include "GameZoneCommon.h"

class GameZone
{
public:
	GameZone(void);
	virtual ~GameZone(void);

	VOID				Init( KEYTYPE Key, CODETYPE MapCode );
	virtual VOID		Release();
	virtual VOID		Update( DWORD dwDeltaTick );
	VOID				LoadMap( int iActiveFieldIndex = -1 );

	virtual eZONETYPE	GetZoneType() = 0;
	inline KEYTYPE		GetKey()						{ return m_Key; }
	inline VOID			SetKey( KEYTYPE Key )			{ m_Key = Key; }
	inline CODETYPE		GetMapCode()					{ return m_MapCode; }
	inline VOID			SetMapCode(CODETYPE MapCode)	{ m_MapCode=MapCode; }

	virtual VOID		Ready( Player * pPlayer, CODETYPE FieldCode, WzID AreaID )=0;
	virtual BOOL		Join( Player * pPlayer, CODETYPE FieldCode, WzID AreaID );
	virtual	VOID 		Leave( Player * pPlayer );
	virtual VOID		Warp( Player * pPlayer, CODETYPE FieldCode, WzID AreaID );

	DWORD				GetEntryAreaID();
	virtual CODETYPE	GetEntryFieldCode();
	Map *				GetMap(){ return m_pMap;	}
	virtual BOOL		CheckMapVersion( CODETYPE FieldCode, DWORD checksum );

	template <class Executer>
	VOID				ForeachPlayer( Executer & Opr );

private:
	Map *				m_pMap;
	KEYTYPE				m_Key;
	CODETYPE			m_MapCode;
protected:
	util::SolarHashTable<Player *>	m_PlayerHash;
};

template <class Executer>
VOID GameZone::ForeachPlayer( Executer & exe )
{
	Player * pPlayer = NULL;
	m_PlayerHash.SetFirst();
	while( ( pPlayer = m_PlayerHash.GetNext() ) != NULL )
	{
		exe( pPlayer );
	}
}

⌨️ 快捷键说明

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