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

📄 synmanager.h

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 H
字号:
// SynManager.h: interface for the CSynManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SYNMANAGER_H__500BB831_F770_4231_8391_E7B38A5EF78A__INCLUDED_)
#define AFX_SYNMANAGER_H__500BB831_F770_4231_8391_E7B38A5EF78A__INCLUDED_

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

#include "protocol.h"
#include "GameObjSet.h"
#include "Syndicate.h"

//////////////////////////////////////////////////////////////////////
typedef	IGameObjSet<CSyndicate>		ISynSet;
typedef	CGameObjSet<CSyndicate>		CSynSet;

//////////////////////////////////////////////////////////////////////
class ISynMngModify
{
public:
	virtual OBJID	CreateSyndicate(const CreateSyndicateInfo* pInfo)		PURE_VIRTUAL_FUNCTION_0
	virtual bool	DestroySyndicate(OBJID idSyn, OBJID idTarget = ID_NONE)	PURE_VIRTUAL_FUNCTION_0
	virtual bool	CombineSyndicate(OBJID idSyn, OBJID idTarget)			PURE_VIRTUAL_FUNCTION_0
	virtual void	SetMapSynID(OBJID idMap, OBJID idSyn)					PURE_VIRTUAL_FUNCTION
};

//////////////////////////////////////////////////////////////////////
class CSynManager : ISynMngModify
{
protected:
	virtual ~CSynManager();
public:
	CSynManager(PROCESS_ID idProcess);
	ULONG	Release()							{ delete this; return 0; }
	bool	Create();
	CSyndicate* QuerySyndicate(OBJID idSyn)		{ if(idSyn==ID_NONE) return NULL; return m_setSyn->GetObj(idSyn); }
	CSynSet*	QuerySynSet()					{ ASSERT(m_setSyn); return m_setSyn; }
	ISynMngModify* QueryModify()				{ return &m_obj; }
	ISynMngModify* QuerySynchro()				{ return (ISynMngModify*)this; }
	CSyndicate* QuerySynByName(LPCTSTR szSyn);
	bool	FindNextSyn(int& nIter);			// order by amount, return false: no more syn
	OBJID	GetMapSynID(OBJID idMap)			{ if(idMap==WHITE_SYN_MAP_ID) return m_idWhiteSyn; if(idMap==BLACK_SYN_MAP_ID) return m_idBlackSyn; return ID_NONE; }

protected:
	OBJID	CreateSyndicate(const CreateSyndicateInfo* pInfo);
	bool	DestroySyndicate(OBJID idSyn, OBJID idTarget = ID_NONE);
	bool	CombineSyndicate(OBJID idSyn, OBJID idTarget);
	void	SetMapSynID(OBJID idMap, OBJID idSyn)	{ if(idMap==WHITE_SYN_MAP_ID) m_idWhiteSyn=idSyn; else if(idMap==BLACK_SYN_MAP_ID) m_idBlackSyn=idSyn; }

protected:
	CSynSet*		m_setSyn;
	OBJID			m_idWhiteSyn;
	OBJID			m_idBlackSyn;

protected: // ctrl
	PROCESS_ID		m_idProcess;
public:
	MYHEAP_DECLARATION(s_heap)

protected:
	class XSynMngModify : public ISynMngModify
	{
	public:
		OBJID	CreateSyndicate(const CreateSyndicateInfo* pInfo);
		bool	DestroySyndicate(OBJID idSyn, OBJID idTarget = ID_NONE);
		bool	CombineSyndicate(OBJID idSyn, OBJID idTarget);
		void	SetMapSynID(OBJID idMap, OBJID idSyn);
	protected:
		CSynManager*	This()	{ return m_pOwner; }
		CSynManager*	m_pOwner;
		friend class CSynManager;
	} m_obj;
	friend class CSynManager::XSynMngModify;
};

#endif // !defined(AFX_SYNMANAGER_H__500BB831_F770_4231_8391_E7B38A5EF78A__INCLUDED_)

⌨️ 快捷键说明

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