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

📄 squaredeal.h

📁 魔域的源代码
💻 H
字号:
// SquareDeal.h: interface for the CSquareDeal class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SQUAREDEAL_H__A5B68023_45DD_4048_8818_AD1778901164__INCLUDED_)
#define AFX_SQUAREDEAL_H__A5B68023_45DD_4048_8818_AD1778901164__INCLUDED_

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

#include "Myheap.h"

#include <vector>
using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////////////
class ISquareDeal;
class IUserSquareDeal			// CUser的接口类
{
public: // constructor
	virtual bool	Create(ISquareDeal* pSquareDeal)				PURE_VIRTUAL_FUNCTION_0
	virtual ULONG	Release()										PURE_VIRTUAL_FUNCTION_0
	virtual CUser*	QueryUser()										PURE_VIRTUAL_FUNCTION_0

public: // application
	// return false: too weight
	virtual bool	AddItem(CItem* pItem, int nAmount, int nAllWeight)			PURE_VIRTUAL_FUNCTION_0
	// return false: too more
	virtual bool	AddMoney(int nAllMoney)							PURE_VIRTUAL_FUNCTION_0
	virtual void	ClickOK()										PURE_VIRTUAL_FUNCTION
};

///////////////////////////////////////////////////////////////////////////////////////////////////
class ISquareDeal
{
public: // constructor
	// return false: 对方正在交易中。注意:SQUARE DEAL 会自动将自己登记到USER中
	virtual bool	Create(IUserSquareDeal* pUser, IUserSquareDeal* pTarget)	PURE_VIRTUAL_FUNCTION_0
	virtual ULONG	Release()										PURE_VIRTUAL_FUNCTION_0

public: // application
	// return false: too weight
	virtual bool	AddItem(CItem* pItem)							PURE_VIRTUAL_FUNCTION_0
	// return all money
	virtual int 	AddMoney(int nMoney)							PURE_VIRTUAL_FUNCTION_0
	// return true: trade ok, release this please!!!
	virtual bool	ClickOK()										PURE_VIRTUAL_FUNCTION_0
	virtual CUser*	GetTarget()										PURE_VIRTUAL_FUNCTION_0
};

///////////////////////////////////////////////////////////////////////////////////////////////////
class CItem;
class CSquareDeal  
{
protected:
	CSquareDeal();
	virtual ~CSquareDeal();
public:
	static ISquareDeal* CreateNew()		{ CSquareDeal* ptr = new CSquareDeal; if(ptr) return &ptr->m_iface1; else return NULL; }

protected:
	bool	TradeOK();

	//----------------------
	class XSquareDeal1 : public ISquareDeal
	{
	protected: // constructor
		CSquareDeal*	This()							{ return m_pParent; }
		virtual bool	Create(IUserSquareDeal* pUser, IUserSquareDeal* pTarget);
		virtual ULONG	Release		()					{ delete m_pParent; return 0; }
	protected: // application
		virtual bool	AddItem		(CItem* pItem);
		virtual int		AddMoney	(int nMoney);		// return allmoney
		virtual bool	ClickOK		();						// return true: 成交
		virtual CUser*	GetTarget	();

	private:
		CSquareDeal*	m_pParent;
		friend class CSquareDeal;
	}			m_iface1;

	//----------------------
	class XSquareDeal2 : public ISquareDeal
	{
	protected: // constructor
		CSquareDeal*	This()							{ return m_pParent; }
		virtual bool	Create(IUserSquareDeal* pUser, IUserSquareDeal* pTarget);
		virtual ULONG	Release		()					{ delete m_pParent; return 0; }
	protected: // application
		virtual bool	AddItem		(CItem* pItem);
		virtual int		AddMoney	(int nMoney);		// return allmoney
		virtual bool	ClickOK		();						// return true: 成交
		virtual CUser*	GetTarget	();

	private:
		CSquareDeal*	m_pParent;
		friend class CSquareDeal;
	}			m_iface2;

protected:
	IUserSquareDeal*	m_pUser1;
	IUserSquareDeal*	m_pUser2;
	typedef vector<OBJID>	ITEM_SET;
	ITEM_SET		m_setItem1;
	ITEM_SET		m_setItem2;
	int				m_nAllWeight1;
	int				m_nAllWeight2;
	int				m_nMoney1;
	int				m_nMoney2;
	bool			m_bClickOK1;
	bool			m_bClickOK2;
	bool			m_bTradeSuccess;
	friend class CSquareDeal::XSquareDeal1;
	friend class CSquareDeal::XSquareDeal2;

	MYHEAP_DECLARATION(s_heap)
};

#endif // !defined(AFX_SQUAREDEAL_H__A5B68023_45DD_4048_8818_AD1778901164__INCLUDED_)

⌨️ 快捷键说明

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