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

📄 synworldshell.h

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

#if !defined(AFX_SYNSHELL_H__8147FFBF_85B9_43E4_9D3A_B847BF31F088__INCLUDED_2)
#define AFX_SYNSHELL_H__8147FFBF_85B9_43E4_9D3A_B847BF31F088__INCLUDED_2

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

#include "define.h"
#include "GameData.h"
#include "protocol.h"
#include "AutoPtr.h"
#include "MessageBoard.h"
#include <vector>
#include <string>
using namespace std;

//////////////////////////////////////////////////////////////////////
enum {
		SYNFUNC_DEMISE=1,
		SYNFUNC_SETTENET,
		SYNFUNC_SETLEADERTITLE,
		SYNFUNC_SETMEMBERTITLE,
		SYNFUNC_ADDDATA,
		SYNFUNC_SETDATA,
		SYNFUNC_PRESENT,
		SYNFUNC_ADD_MEMBER,
		SYNFUNC_DEL_MEMBER,
		SYNFUNC_UP_LEVEL,
		SYNFUNC_SETSYNNAME,
};

//////////////////////////////////////////////////////////////////////
enum SYNDATA{
		SYNDATA_ID=0,			// 仅用于INSERT

		SYNDATA_NAME=1,			// 帮派名
		SYNDATA_TENET,			// 帮派宗旨
		SYNDATA_ANNOUNCE,		// 帮派公告
		SYNDATA_MEMBERTITLE,	// 帮派成员称号
		SYNDATA_LEADERID,		// 帮主ID
		SYNDATA_LEADERNAME,		// 帮主名字
		SYNDATA_MONEY,			// 帮派基金
		SYNDATA_FEALTY,			// Master ID
		SYNDATA_DEL_FLAG,
		SYNDATA_AMOUNT,			// 帮众数量
		SYNDATA_ENEMY0,			// 敌对帮派
		SYNDATA_ENEMY1,
		SYNDATA_ENEMY2,
		SYNDATA_ENEMY3,
		SYNDATA_ENEMY4,
		SYNDATA_ALLY0,			// 同盟帮派
		SYNDATA_ALLY1,
		SYNDATA_ALLY2,
		SYNDATA_ALLY3,
		SYNDATA_ALLY4,
		SYNDATA_RANK,			// 骑士团等级  1 ~ 5
		SYNDATA_SAINT,			// 圣骑士团    (0: NULL,1:圣)
		SYNDATA_MANTLE_FALG,	// 披风标志    add huang 2004.1.1
		SYNDATA_DISMISS_TIME,	// 自动解散开始时间   //add huang 2004.1.5
		SYNDATA_REPUTE,			// 帮派声望
		SYNDATA_PUBLISHTIME,	// 公告发布时间,格式:yyyymmdd
};
char	szID[];
char	szSynTable[];
typedef	CGameData<SYNDATA, szSynTable, szID>	CSynWorldBase;

//////////////////////////////////////////////////////////////////////
class ISynModify
{
public:
	virtual bool	Demise(OBJID idOldLeader,int nOldSynMemberLevel,OBJID idNewLeader, LPCTSTR szNewLeader, int nNewSynMemberLevel, OBJID idBackSyn, bool bSave)		PURE_VIRTUAL_FUNCTION_0
	virtual bool	SetTenet(LPCTSTR szTenet, bool bSave)													PURE_VIRTUAL_FUNCTION_0
	virtual bool	SetLeaderTitle(LPCTSTR szLeaderTitle, bool bSave)										PURE_VIRTUAL_FUNCTION_0
	virtual bool	SetMemberTitle(LPCTSTR szMemberTitle, bool bSave)										PURE_VIRTUAL_FUNCTION_0
	virtual bool	AddData(SYNDATA idx, int nData, bool bSave)												PURE_VIRTUAL_FUNCTION_0
	virtual bool	SetData(SYNDATA idx, int nData, bool bSave)												PURE_VIRTUAL_FUNCTION_0
	virtual bool	PresentMoney(OBJID idSyn, int nMoney, bool bSave)										PURE_VIRTUAL_FUNCTION_0
	virtual bool	SetSynName(LPCTSTR szSynName, bool bSave=true)											PURE_VIRTUAL_FUNCTION_0
};

//////////////////////////////////////////////////////////////////////
// 所有成员函数为原子操作。
struct CPlayer;
class CSyndicateWorld : ISynModify
{
protected:
	CSyndicateWorld();
	virtual ~CSyndicateWorld();
public:
	static CSyndicateWorld* CreateNew()	{ return new CSyndicateWorld; }
	virtual ULONG	ReleaseByOwner()				{ delete this; return 0; }
	bool	Create(IRecordset* pRes);
	bool	Create(IRecordset* pRes, const CreateSyndicateInfo* pInfo, bool bSave);
	ISynModify*		QueryModify()					{ return (ISynModify*)this; }
	CMessageBoard*	QueryMessageBoard()				{ ASSERT(m_ptrMsgBd); return m_ptrMsgBd; }
	bool			ChangeSyndicate(const SynFuncInfo0* pFuncInfo);

public:
	OBJID	GetID()									{ return m_pData->GetKey(); }
	int		GetInt(SYNDATA idx)						{ return m_pData->GetInt(idx); }
	LPCTSTR	GetStr(SYNDATA idx)						{ return m_pData->GetStr(idx); }

protected: // syn member list --------------------------
	struct	MemberInfo{
		MemberInfo(LPCTSTR str, int nUserRank) 
		{
			szName	= str;
			nRank	= nUserRank;
		}
		string	szName;	
		int		nRank;	//玩家军衔
	};
	typedef	vector<MemberInfo>	MEMBER_SET;
public:
	int		GetSynRankShow(int nRank);
//	void	SendMemberListSpecifySyn(CPlayer* pUser, int idxLast);
	CSyndicateWorld* GetMasterSyn();
	bool	AddMember(LPCTSTR szName, int nUserRank);
	bool	DelMember(LPCTSTR szName);
	int		GetMemberAmount()				{ return m_setMember.size(); }
	void	SendMemberList(CPlayer* pUser, int idx);
	void	CombineMemberList(const MEMBER_SET& setMember);
	MEMBER_SET&	QueryMemberList()						{ return m_setMember; }
protected:
	int		AppendMember(class CMsgName& msg, int idx, int idxFirst, int& nCount);
//	int		AppendOnlineMember(class CMsgName& msg, int idxFirst);
//	int		AppendOnlineMemberForAllMember(class CMsgName& msg, int idxFirst);
//	int		AppendOfflineMember(class CMsgName& msg, int idxFirst, int nCurrCount=0);
//	int		AppendOfflineMemberForAllMember(class CMsgName& msg, int idx, int nCount=0);
protected:
	MEMBER_SET	m_setMember;
//	MEMBER_SET	m_setMemberTmp;

protected: // modify, mast be atom operator. test & set
	// bSave 必须为true,否则不会存盘
	virtual bool	Demise(OBJID idOldLeader,int nOldSynMemberLevel,OBJID idNewLeader, LPCTSTR szNewLeader, int nNewSynMemberLevel, OBJID idBackSyn, bool bSave);
	virtual bool	SetTenet(LPCTSTR szTenet, bool bSave);
	virtual bool	SetLeaderTitle(LPCTSTR szLeaderTitle, bool bSave);
	virtual bool	SetMemberTitle(LPCTSTR szMemberTitle, bool bSave);
	virtual bool	AddData(SYNDATA idx, int nData, bool bSave);
	virtual bool	SetData(SYNDATA idx, int nData, bool bSave);
	virtual bool	PresentMoney(OBJID idSyn, int nMoney, bool bSave);
	virtual bool	SetSynName(LPCTSTR szSynName, bool bSave);

private:
	CSynWorldBase*	m_pData;

protected: // msgbd
	typedef	CAutoPtr<CMessageBoard>	MSGBD_PTR;
	MSGBD_PTR		m_ptrMsgBd;

protected: // ctrl
	MYHEAP_DECLARATION(s_heap)
};

#endif // !defined(AFX_SYNSHELL_H__8147FFBF_85B9_43E4_9D3A_B847BF31F088__INCLUDED_2)

⌨️ 快捷键说明

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