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

📄 viewportmanager.h

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

#include <Singleton.h>
#include <map>
#include <MemoryPoolFactory.h>

// 甘 肺爹 困秦 眠啊
#include <3DEngine/3DTerrain/3DTerrain.h>
#include <Linkedlist.h>

using namespace util;

class User;
class Zone;
class FieldInfo;

// 角力 冀磐 窜困
class ViewPort
{
	enum 
	{
		MAX_NEIGHBOR_SECTOR_NUM = 8,
	};

public:
	ViewPort(void);
	~ViewPort(void);

	VOID							AddNeighborZone( Zone *pZone );
	VOID							SendToNeighbors( BYTE *pMsg, WORD wSize );
	VOID							SendToZone( BYTE *pMSg, WORD wSize );
	VOID							AddUser( User *pUser );
	VOID							RemoveUser( User *pUser );

	VOID							SetZone(eZONETYPE eZoneType, DWORD dwSectorIndex);
	DWORD							GetKey();
	inline Zone*					GetZone()	{ return m_pZone; }

private:
	CLinkedlist<Zone*>				m_NeighborZone;
	Zone							*m_pZone;
};

typedef std::map<DWORD, ViewPort*>			VIEWPORT_MAP;
typedef VIEWPORT_MAP::iterator				VIEWPORT_MAP_ITER;
typedef std::pair<DWORD, ViewPort*>			VIEWPORT_MAP_PAIR;

// 冀磐甸阑 包府窍绰 窍唱狼 鞘靛
class ChatField
{
	friend class ViewPort;
public:
	ChatField(void);
	~ChatField(void);

	VOID							Init(FieldInfo *pFieldInfo);
	VOID							Release();

	VOID							RemoveViewPort( DWORD dwZoneID );
	BOOL							MoveViewPort( User *pUser, DWORD dwFieldCode, DWORD dwZoneID );
	ViewPort*						GetViewPort( DWORD dwZoneID );

	BOOL							SendToNeighbors( DWORD dwZoneID, BYTE *pMsg, WORD wSize );
	BOOL							SendToAll( BYTE *pMsg, WORD wSize );
	DWORD							GetFieldCode();
	BOOL							AddUser( User *pUser, DWORD dwSector );
	VOID							RemoveUser( User *pUser );

private:
	FieldInfo						*m_pFieldInfo;
	VIEWPORT_MAP					m_mapZone;
	CMemoryPoolFactory<ViewPort>	*m_pZonePool;
};

// 捞眶 掘阑 锭 荤侩
typedef std::map<DWORD, ChatField*>		FIELDINFO_MAP;
typedef FIELDINFO_MAP::iterator			FIELDINFO_MAP_ITER;
typedef std::pair<DWORD, ChatField*>	FIELDINFO_MAP_PAIR;

// 傈眉 盲泼 鞘靛甫 包府窍绰 概聪历
class ViewPortManager// : public util::Singleton<ViewPortManager>
{
public:
	ViewPortManager(void);
	~ViewPortManager(void);

	VOID							Init();
	BOOL							TestLoadMap();
	VOID							Release();

	BOOL							AddUser(User *pUser, DWORD dwField, DWORD dwSector);		// 贸澜 甸绢坷绰 蜡历
	BOOL							MoveUser(User *pUser, DWORD dwField, DWORD dwSector);		// 冀磐 肚绰 鞘靛 捞悼
	VOID							RemoveUser(User *pUser);									// 轰器飘 裹困俊辑 唱皑

	BOOL							SendViewPort(User *pUser, BYTE *pMsg, WORD wSize);			// 轰器飘 救俊 皋矫瘤 傈崔
	BOOL							SendToAll( DWORD dwFieldCode, BYTE *pMsg, WORD wSize );		// 秦寸 甘 傈眉俊 傈价

//	HINSTANCE						m_hDll3DTerrain;	// DLL Instance
//	FUNC_ContactTerrain				m_fnContactTerrain;	// 甘 沥焊 楷搬 function

private:
	FIELDINFO_MAP					m_mapChatField;
	CMemoryPoolFactory<ChatField>	*m_pChatFieldPool;
};

⌨️ 快捷键说明

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