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

📄 addableinfo.h

📁 墨香最新私服
💻 H
字号:
// AddableInfo.h: interface for the CAddableInfo class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ADDABLEINFO_H__9C670F70_E708_4B9C_8FAA_DE4BF1ADE3CB__INCLUDED_)
#define AFX_ADDABLEINFO_H__9C670F70_E708_4B9C_8FAA_DE4BF1ADE3CB__INCLUDED_

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

#pragma pack(push,1)

#define MAX_ADDABLEINFO_SIZE	1024


void SendAssertMsg(char* pStrFileName,int Line,char* pMsg);
void WriteAssertMsg(char* pStrFileName,int Line,char* pMsg);

struct AddableInfoEntity
{
	BYTE InfoKind;
	WORD InfoSize;
	char InfoData[MAX_ADDABLEINFO_SIZE];
	
	inline WORD GetAddableInfoEntity()
	{
		return sizeof(AddableInfoEntity)-MAX_ADDABLEINFO_SIZE+InfoSize;
	}
};


class CAddableInfoList
{
	WORD m_AddableInfoSize;
	char m_AddInfoBuf[MAX_ADDABLEINFO_SIZE];
	
	
public:	
	enum AddableInfoKind
	{
		None = 0,
			MoveInfo,
			StreetStall,
			VimuInfo,
	};
	
	CAddableInfoList(){	Init();}
	~CAddableInfoList(){}
	
	inline void Init()	{	m_AddableInfoSize = 0;	}
	
	void AddInfo(BYTE Kind,WORD InfoLength,void* pInfoData)
	{
		AddableInfoEntity* pNewInfo = (AddableInfoEntity*)&m_AddInfoBuf[m_AddableInfoSize];
		pNewInfo->InfoKind = Kind;
		pNewInfo->InfoSize = InfoLength;
		WORD NewEntityLength = pNewInfo->GetAddableInfoEntity();
		ASSERT(NewEntityLength+m_AddableInfoSize < MAX_ADDABLEINFO_SIZE);
		memcpy(pNewInfo->InfoData,pInfoData,InfoLength);
		m_AddableInfoSize+=NewEntityLength;
	}
	
	inline WORD GetInfoLength()	{	return 2+m_AddableInfoSize;	}
	
	friend class CAddableInfoIterator;
};


class CAddableInfoIterator
{
	WORD m_CurPosition;
	AddableInfoEntity* m_pCurInfo;
	CAddableInfoList* m_pAddableInfoList;
	
public:
	CAddableInfoIterator(CAddableInfoList* pInfoList)
	{
		m_pAddableInfoList = pInfoList;
		m_CurPosition = 0;
		m_pCurInfo = (AddableInfoEntity*)&m_pAddableInfoList->m_AddInfoBuf[m_CurPosition];
	}
	
	BYTE GetInfoKind()
	{
		if(m_pAddableInfoList->m_AddableInfoSize <= m_CurPosition)
			return CAddableInfoList::None;
		
		return m_pCurInfo->InfoKind;
	}
	void GetInfoData(void* pOutData)
	{
		memcpy(pOutData,m_pCurInfo->InfoData,m_pCurInfo->InfoSize);
	}
	void ShiftToNextData()
	{
		WORD EntityLength = m_pCurInfo->GetAddableInfoEntity();
		m_CurPosition += EntityLength;
		m_pCurInfo = (AddableInfoEntity*)&m_pAddableInfoList->m_AddInfoBuf[m_CurPosition];
	}
};

#pragma pack(pop)

#endif // !defined(AFX_ADDABLEINFO_H__9C670F70_E708_4B9C_8FAA_DE4BF1ADE3CB__INCLUDED_)

⌨️ 快捷键说明

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