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

📄 specialfxlist.h

📁 Blood 2全套源码
💻 H
字号:
// ----------------------------------------------------------------------- //
//
// MODULE  : SpecialFXList.h
//
// PURPOSE : List of CSpecialFX class objects
//
// CREATED : 10/21/97
//
// ----------------------------------------------------------------------- //

#ifndef __SPECIAL_FX_LIST_H__
#define __SPECIAL_FX_LIST_H__

#include "dlink.h"
#include "SpecialFX.h"

#define  DEFAULT_MAX_NUM	50
#define	 MAX_NUM_LINKS	  	500	

class CSpecialFXList
{
	public :

		int GetSize()		const { return m_nArraySize; }
		int GetNumItems()	const { return m_nElements; }
		DBOOL IsEmpty()		const { return (DBOOL)(m_nElements == 0); }

		CSpecialFXList()
		{
			m_nArraySize = DNULL;
			m_pArray	 = DNULL;
			m_pAgeArray  = DNULL;
			m_nElements  = 0;
		}

		DBOOL Create(unsigned int nMaxNum=DEFAULT_MAX_NUM)
		{
			if (m_pArray) return DFALSE;  // Already created 

			m_nArraySize = nMaxNum < MAX_NUM_LINKS ? nMaxNum : MAX_NUM_LINKS;
			m_pArray = new CSpecialFX* [m_nArraySize];
			if (!m_pArray) return DFALSE;

			m_pAgeArray = new DDWORD[m_nArraySize];
			if (!m_pAgeArray) return DFALSE;

			m_nElements = 0;
			
			memset(m_pArray, 0, sizeof(CSpecialFX*)*m_nArraySize);
			memset(m_pAgeArray, 0, sizeof(DDWORD)*m_nArraySize);

			return DTRUE;
		}

		CSpecialFX* CSpecialFXList::operator[] (unsigned int nIndex)
		{
			if (!m_pArray || nIndex < 0 || nIndex >= m_nArraySize) return DNULL;
			return m_pArray[nIndex];
		}

		~CSpecialFXList()
		{
			if (m_pArray)
			{
				for (unsigned int i=0; i < m_nArraySize; i++)
				{
					if (m_pArray[i])
					{
						delete m_pArray[i];
					}
				}

				delete [] m_pArray;
			}

			if (m_pAgeArray)
			{
				delete [] m_pAgeArray;
			}
		}

		CSpecialFX* Add(CSpecialFX* pFX, CSpecialFX* pParentFX = DNULL);

		DBOOL Remove(CSpecialFX* pFX)
		{
			if (!pFX || !m_pArray) return DFALSE;

			for (unsigned int i=0; i < m_nArraySize; i++)
			{
				if (m_pArray[i] == pFX)
				{
					delete m_pArray[i];
					m_pArray[i]	= DNULL;
					m_pAgeArray[i] = 0;
					m_nElements--;
					return DTRUE;
				}
			}

			return DFALSE;
		}	
	
	private :

		CSpecialFX**	m_pArray;		// Array of special fx
		DDWORD*			m_pAgeArray;	// Age special fx in array
		unsigned int	m_nArraySize;	// Size of array
		unsigned int	m_nElements;	// Number of elements in array
};

#endif // __SPECIAL_FX_LIST_H__

⌨️ 快捷键说明

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