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

📄 unittemplateclasses.h

📁 <B>很多DirectX 9.0游戏编程源码例子</B>
💻 H
字号:
#ifndef HEADER_UNITCLASSES
#define HEADER_UNITCLASSES

#include <stdio.h>
#include <windows.h>
#include <D3DX9.h>

//-------------------------------------------------------
//
//	DEFENSE CLASS
//
//-------------------------------------------------------
class CUnitDefense
{
	public:
		int				m_iType;
		unsigned int	m_iMissileArmorRating;
		unsigned int	m_iBulletArmorRating;
		unsigned int	m_iLaserArmorRating;
		unsigned int	m_iMeleeArmorRating;
		unsigned int	m_iHitPoints;
		unsigned int	m_iRegenRate;
		char			m_szName[ 64 ];

	public:
		CUnitDefense();
		~CUnitDefense();
		virtual void vReset( void );
};

//-------------------------------------------------------
//
//	OFFENSE CLASS
//
//-------------------------------------------------------
class CUnitOffense
{
	public:
		int				m_iType;
		unsigned int	m_iMissileDamageRating;
		unsigned int	m_iBulletDamageRating;
		unsigned int	m_iLaserDamageRating;
		unsigned int	m_iMeleeDamageRating;
		unsigned int	m_iSplashRadius;
		unsigned int	m_iRateOfFire;
		float			m_fProjectileSpeed;
		unsigned int	m_iRange;
		char			m_szName[ 64 ];

	public:
		CUnitOffense();
		~CUnitOffense();
		virtual void vReset( void );
};

//-------------------------------------------------------
//
//	MOVEMENT CLASS
//
//-------------------------------------------------------
class CUnitMovement
{
	public:
		int				m_iType;
		float			m_fMovementSpeed;
		unsigned int	m_iMovementType;
		float			m_fAcceleration;
		float			m_fDeacceleration;
		float			m_fTurnSpeed;
		char			m_szName[ 64 ];

	public:
		CUnitMovement();
		~CUnitMovement();
		virtual void vReset( void );
};

//-------------------------------------------------------
//
//	TEXTURE CLASS
//
//-------------------------------------------------------
class CTexture
{
	public:
		// Texture name
		char				m_szName[ 64 ];
		
		// Texture pointer
		LPDIRECT3DTEXTURE9	m_pTexture;
		
		// Direct 3D Pointer for loading textures
		LPDIRECT3DDEVICE9	m_pd3dDevice;

		CTexture();
		~CTexture();
		virtual void vLoad( char *szName );
		virtual void vRelease( void );
		virtual void vSetRenderDevice( LPDIRECT3DDEVICE9 pd3d );
};

//-------------------------------------------------------
//
//	ANIMATION CLASS
//
//-------------------------------------------------------
const int UNITMANAGER_MAXOWNERS		= 4;

class CUnitAnimation
{
	public:
		char	m_szName[ 64 ];
		char	m_szBitmapPrefix[ 64 ];
		int		m_iNumStillFrames;
		int		m_iNumMoveFrames;
		int		m_iNumAttackFrames;
		int		m_iNumDieFrames;
		int		m_iType;
		int		m_iStartStillFrames;
		int		m_iStartMoveFrames;
		int		m_iStartAttackFrames;
		int		m_iStartDieFrames;
		// Texture data
		CTexture			*m_Textures;
		int					m_iTotalTextures;
		// Direct 3D Pointer for loading textures
		LPDIRECT3DDEVICE9	m_pd3dDevice;

		CUnitAnimation();
		~CUnitAnimation();
		virtual void vReset( void );
		virtual void vSetRenderDevice( LPDIRECT3DDEVICE9 pd3d );
		virtual void vLoadTextures( void );
};

//-------------------------------------------------------
//
//	UNIT CLASS
//
//-------------------------------------------------------
class CUnit
{
	public:
		CUnitDefense	*m_Defense;
		CUnitOffense	*m_Offense1;
		CUnitOffense	*m_Offense2;
		CUnitOffense	*m_Offense3;
		CUnitMovement	*m_Movement;
		CUnitAnimation	*m_Animation;
		
		int				m_iType;
		int				m_iCurHitPoints;
		float			m_fCurSpeed;
		float			m_fXPos;
		float			m_fYPos;
		float			m_fRot;
		float			m_fScale;
		int				m_iUnitID;
		int				m_iParentID;
		char			m_szName[ 64 ];
		bool			m_bActive;
		int				m_iOwner;
		int				m_iCurAnimFrame;
		int				m_iCurAttackFrame;
		int				m_iCurStillFrame;
		int				m_iCurMoveFrame;
		int				m_iCurDieFrame;
		
	public:
		CUnit();
		~CUnit();
		virtual void vReset( void );
		virtual void vSetBaseValues(	CUnitDefense* ptrDef, 
										CUnitOffense* ptrOff1, 
										CUnitOffense* ptrOff2, 
										CUnitOffense* ptrOff3, 
										CUnitMovement* ptrMove,
										CUnitAnimation* ptrAnim );

		virtual void vSetPosition( float fX, float fY );
};

//-------------------------------------------------------
//
//	UNIT MANAGER CLASS
//
//-------------------------------------------------------
const int UNITMANAGER_MAXBASEOBJS	= 256;
const int UNITMANAGER_MAXUNITS		= 1024;

class CUnitManager
{
	public:
		CUnitDefense		*m_DefenseObjs;
		CUnitOffense		*m_OffenseObjs;
		CUnitMovement		*m_MovementObjs;
		CUnitAnimation		*m_AnimationObjs;
		CUnit				*m_UnitBaseObjs;
		CUnit				*m_UnitObjs;
		int					m_iTotalDefObjs;
		int					m_iTotalOffObjs;
		int					m_iTotalMovObjs;
		int					m_iTotalAnimationObjs;
		int					m_iTotalUnitBaseObjs;
		int					m_iTotalUnitObjs;
		int					m_iOwnerTotal[ UNITMANAGER_MAXOWNERS ];
		
		// Direct 3D Pointer for loading textures
		LPDIRECT3DDEVICE9	m_pd3dDevice;

		CUnitManager();
		~CUnitManager();
		virtual void vSetRenderDevice( LPDIRECT3DDEVICE9 pd3d );
		virtual void vReset( void );
		virtual void vClearMem( void );
		virtual int	 iLoadBaseTypes(	char *szDefFileName, 
										char *szOffFileName, 
										char *szMovFileName,
										char *szUnitFileName,
										char *szAnimFileName );
		virtual CUnitDefense* ptrGetDefenseType( char *szName );
		virtual CUnitOffense* ptrGetOffenseType( char *szName );
		virtual CUnitMovement* ptrGetMoveType( char *szName );
		virtual CUnitAnimation* ptrGetAnimType( char *szName );
		virtual int iAddUnit( char *szName, int iOwner );
		virtual void vRemoveUnit( int iUnitID );
		virtual int iCountTotalTextures( void );
};

#endif

⌨️ 快捷键说明

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