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

📄 corpse.h

📁 Blood 2全套源码
💻 H
字号:


#ifndef __CORPSE_H__
#define	__CORPSE_H__

#include "basedefs_de.h"

#include "destructablemodel.h"
#include "cpp_engineobjects_de.h"
#include "cpp_server_de.h"
#include "generic_msg_de.h"
#include "ai_mgr.h"
#include "B2BaseClass.h"

class CCorpse : public B2BaseClass
{
	public:
		
		CCorpse() : B2BaseClass(OT_MODEL)
		{
			AddAggregate(&m_damage);

			m_pServerDE		= DNULL;
			m_fMass			= 200.0f;
			m_fHitPoints	= 50.0f;
			m_bDead			= DFALSE;
			m_bSetShutdown	= DFALSE;

			m_hFireSource	= DNULL;
			m_fBurnStart	= 0.0f;
			m_hAttach		= DNULL;

			m_hSmokeSource	= DNULL;
			m_fSmokeStart	= 0.0f;

			m_fRemoveTime	= 0.0f;
			m_bLimbLoss		= DTRUE;
			m_hLoopSound	= DNULL;

			m_szSoundDir[0] = '\0';
		}

		~CCorpse()
		{
			if( m_hLoopSound )
			{
				g_pServerDE->KillSound( m_hCurSound );
			}
			if( m_hLoopSound )
			{
				g_pServerDE->KillSound( m_hCurSound );
			}

		}

		void	Setup(HOBJECT hFireObj = DNULL, DBOOL bLimbLoss = DTRUE);

	protected:

		DDWORD	EngineMessageFn(DDWORD messageID, void *pData, float lData);
		DDWORD	ObjectMessageFn(HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead);

	private:

		DBOOL	ReadProp(ObjectCreateStruct *pStruct);
		void	PostPropRead(ObjectCreateStruct *pStruct);
		void	InitialUpdate(DVector *pMovement);
		DBOOL	Update();
		DBOOL	HandleDamage(DVector vDir, DFLOAT fDamage, int nType, DVector vPos);
		int		CalculateHitLimb(DVector vDir, DVector vPos);
		int		SetProperNode(int nNode);
		DBOOL	CreateGibs(DVector vDir, int nNumGibs, int nType, DFLOAT fDamage);
		void	GenerateHitSpheres();
		void	Save(HMESSAGEWRITE hWrite, DDWORD dwSaveFlags);
		void	Load(HMESSAGEREAD hRead, DDWORD dwLoadFlags);
		void	OnStringKey(ArgList* pArgList);
		DBOOL	PlayAISound(char* szSound, DFLOAT fRadius, DDWORD dwFlags, int nVol);
		void	CreateBloodPool();

		CDestructable	m_damage;
		CServerDE*		m_pServerDE;
        AI_Shared       AIShared;       // Shared functions

		DFLOAT			m_fHitSpheres[NUM_STD_NODES];

		DFLOAT			m_fMass;
		DFLOAT			m_fHitPoints;
		DBOOL			m_bDead;
		char			m_szSoundDir[256];
		HSOUNDDE		m_hCurSound;
		DBOOL			m_bSetShutdown;

		HOBJECT			m_hFireSource;
		DFLOAT			m_fBurnStart;
		HATTACHMENT		m_hAttach;

		HOBJECT			m_hSmokeSource;
		DFLOAT			m_fSmokeStart;

		DFLOAT			m_fRemoveTime;
		DBOOL			m_bLimbLoss;
		HSOUNDDE		m_hLoopSound;
};

#endif

⌨️ 快捷键说明

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