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

📄 mapmanager.h

📁 魔域源代码需要的可以学习一下真么这么麻烦啊
💻 H
字号:
// MapManager.h: interface for the CMapManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAPMANAGER_H__4DC38FE0_1341_4D20_8C0A_47517229F518__INCLUDED_)
#define AFX_MAPMANAGER_H__4DC38FE0_1341_4D20_8C0A_47517229F518__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "GameMap.h"
#include "MapItem.h"
#include "T_SingleObjSet2.h"
#include "T_MyQueue.h"
#include <vector>
#include <map>
using namespace std;

//////////////////////////////////////////////////////////////////////
const OBJID	MAPITEM_FIRSTID			= 1;
const OBJID	MAPITEM_LASTID			= 4012345678;

//////////////////////////////////////////////////////////////////////
typedef	IGameObjSet<CGameMap>	IMapSet;
typedef	CGameObjSet<CGameMap>	CMapSet;
typedef	IGameObjSet<CMapItem>	IMapItemSet;
typedef	CGameObjSet<CMapItem>	CMapItemSet;
typedef	ISingleObjSet2<CGameMapData>	IStaticMapSet;
typedef	CSingleObjSet2<CGameMapData>	CStaticMapSet;

//////////////////////////////////////////////////////////////////////
enum PORTALDATA{
	PORTALDATA_MAPID=1,
	PORTALDATA_INDEX,
	PORTALDATA_X,
	PORTALDATA_Y,
};
char	szPortalTable[];
typedef	CGameData<PORTALDATA, szPortalTable, szID>		CPortalData;
typedef	ISingleObjSet2<CPortalData>			IPortalSet;
typedef	CSingleObjSet2<CPortalData>			CPortalSet;

//////////////////////////////////////////////////////////////////////
enum PASSWAYDATA{
	PASSWAYDATA_MAPID=1,
	PASSWAYDATA_INDEX,
	PASSWAYDATA_PROTALMAP,
	PASSWAYDATA_PROTALIDX,
};
char	szPasswayTable[];
typedef	CGameData<PASSWAYDATA, szPasswayTable, szID>	CPasswayData;
typedef	ISingleObjSet2<CPasswayData>		IPasswaySet;
typedef	CSingleObjSet2<CPasswayData>		CPasswaySet;

//////////////////////////////////////////////////////////////////////
class CMapItem;
class IMapManager
{
public:
	virtual ~IMapManager() {}
	virtual void		Release()							PURE_VIRTUAL_FUNCTION
	virtual CGameMap*	QueryMap(OBJID idMap, BOOL bLoad=true)				PURE_VIRTUAL_FUNCTION_0
	virtual IMapSet*	QuerySet()							PURE_VIRTUAL_FUNCTION_0
	virtual CGameMap*	GetGameMap(OBJID idMap, BOOL bLoad=true)				PURE_VIRTUAL_FUNCTION_0
	virtual int			GetGameMapAmount()					PURE_VIRTUAL_FUNCTION_0
	virtual CGameMap*	GetGameMapByIndex(int idx)			PURE_VIRTUAL_FUNCTION_0
	virtual PROCESS_ID	GetProcessID(OBJID idMap)			PURE_VIRTUAL_FUNCTION_0
	virtual void		OnTimer(time_t tCurr)				PURE_VIRTUAL_FUNCTION
	virtual CMapItem*	QueryMapItem(OBJID idMapItem)		PURE_VIRTUAL_FUNCTION_0
	virtual CMapItemSet*	QueryMapItemSet()				PURE_VIRTUAL_FUNCTION_0
	virtual OBJID		SpawnMapItemID()					PURE_VIRTUAL_FUNCTION_0
	virtual bool		FindPortal(POINT* pPos, OBJID idMap, int idxPortal)		PURE_VIRTUAL_FUNCTION_0
	virtual bool		FindPassway(OBJID* pidTarget, int* pidxPortal, OBJID idMap, int idxPortal)		PURE_VIRTUAL_FUNCTION_0
	virtual OBJID		CreateDynaMap(const NewMapInfo* pInfo)	PURE_VIRTUAL_FUNCTION_0
	virtual IStaticMapSet*	QuerySystemMapSet()				PURE_VIRTUAL_FUNCTION_0
	virtual OBJID	SpawnNewPetID()								PURE_VIRTUAL_FUNCTION_0
	virtual void	RecyclePetID(OBJID id)						PURE_VIRTUAL_FUNCTION
	virtual OBJID	SpawnNewNpcID()								PURE_VIRTUAL_FUNCTION_0
	virtual void	RecycleDynaNpcID(OBJID id)					PURE_VIRTUAL_FUNCTION
	virtual OBJID	SpawnNewTrapID()							PURE_VIRTUAL_FUNCTION_0
	virtual void	RecycleTrapID(OBJID id)						PURE_VIRTUAL_FUNCTION
	virtual OBJID	SpawnNewCallPetID()							PURE_VIRTUAL_FUNCTION_0
	virtual void	RecycleCallPetID(OBJID id)					PURE_VIRTUAL_FUNCTION
};

class CMapManager : IMapManager
{
public:
	CMapManager(PROCESS_ID idProcess);
	virtual ~CMapManager();
	IMapManager*	GetInterface() { return (IMapManager*)this; }
	bool			Create();
//	virtual CGameMap*	CreateGameMap();
	virtual void	OnTimer(time_t tCurr);

public:
	virtual void		Release();
	virtual CGameMap*	QueryMap(OBJID idMap, BOOL bLoad=true)			{ CHECKF(m_pMapSet); return GetGameMap(idMap, bLoad); }
	virtual IMapSet*	QuerySet()						{ CHECKF(m_pMapSet); return m_pMapSet; }
	virtual CGameMap*	GetGameMap(OBJID idMap, BOOL bLoad=true);
	virtual int			GetGameMapAmount()				{ return m_pMapSet->GetAmount(); }
	virtual CGameMap*	GetGameMapByIndex(int idx)		{ return m_pMapSet->GetObjByIndex(idx); }
	virtual bool		FindPortal(POINT* pPos, OBJID idMap, int idxPortal);
	virtual bool		FindPassway(OBJID* pidTarget, int* pidxPortal, OBJID idMap, int idxPortal);
	virtual OBJID		CreateDynaMap(const NewMapInfo* pInfo);

	// 预定义地图集,不包含玩家地图。
	virtual IStaticMapSet*	QuerySystemMapSet()			{ extern IStaticMapSet* g_setStaticMap; CHECKF(g_setStaticMap); return g_setStaticMap; }

protected: // internal port
	bool	IsDynaMap(OBJID idMap)						{ return idMap > DYNAMIC_MAP_ID; }



public: // mapitem
	virtual CMapItem*	QueryMapItem(OBJID idMapItem)	{ CHECKF(m_pMapItemSet); return m_pMapItemSet->GetObj(idMapItem); }
	virtual CMapItemSet*	QueryMapItemSet()			{ CHECKF(m_pMapItemSet); return m_pMapItemSet; }
	virtual OBJID		SpawnMapItemID();

public:
	virtual PROCESS_ID	GetProcessID(OBJID idMap);

public: // spawn id
	OBJID	SpawnNewPetID();
	void	RecyclePetID(OBJID id)						{ if(id != ID_NONE) m_setPetRecycle.push(id); }
	OBJID	SpawnNewNpcID();
	void	RecycleDynaNpcID(OBJID id)					{ if(id != ID_NONE) m_setDynaNpcRecycle.push(id); }
	OBJID	SpawnNewTrapID();
	void	RecycleTrapID(OBJID id)						{ if(id != ID_NONE) m_setTrapRecycle.push(id); }
	OBJID	SpawnNewCallPetID();
	void	RecycleCallPetID(OBJID id)					{ if(id != ID_NONE) m_setCallPetRecycle.push(id); }
protected:
	OBJID				m_idLastPet;
	CMyQueue<OBJID>		m_setPetRecycle;
	OBJID				m_idLastDynaNpc;
	CMyQueue<OBJID>		m_setDynaNpcRecycle;
	OBJID				m_idLastTrap;
	CMyQueue<OBJID>		m_setTrapRecycle;
	OBJID				m_idLastCallPet;
	CMyQueue<OBJID>		m_setCallPetRecycle;

protected: // ctrl
	PROCESS_ID	m_idProcess;

protected:
	IMapSet*		m_pMapSet;
	IPortalSet*		m_setPortal;
	IPasswaySet*	m_setPassway;

protected: // mapitem
	CMapItemSet*	m_pMapItemSet;
	OBJID			m_idLastMapItem;
	CTimeOut		m_tMapItem;

public:
	MYHEAP_DECLARATION(s_heap)
};




#endif // !defined(AFX_MAPMANAGER_H__4DC38FE0_1341_4D20_8C0A_47517229F518__INCLUDED_)

⌨️ 快捷键说明

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