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

📄 basecharacter.h

📁 Blood 2全套源码
💻 H
字号:
// ----------------------------------------------------------------------- //
//
// MODULE  : BaseCharacter.h
//
// PURPOSE : Base class for player and AI
//
// CREATED : 10/6/97
//
// ----------------------------------------------------------------------- //

#ifndef __BASE_CHARACTER_H__
#define __BASE_CHARACTER_H__

#include "cpp_engineobjects_de.h"
#include "Destructable.h"
#include "InventoryMgr.h"
#include "Anim_Sound.h"
#include "ContainerCodes.h"
#include "ObjectUtilities.h"
#include "B2BaseClass.h"
#include "movement.h"

class VolumeBrush;

#define DEFAULT_LADDER_VEL			400.0f
#define DEFAULT_SWIM_VEL			175.0f

#define MAX_NUM_WEAPONS	5

class CBaseCharacter : public B2BaseClass
{
	public :

		CBaseCharacter(DBYTE nType=OT_MODEL); // : BaseClass(nType) {}
		virtual ~CBaseCharacter() {};

        DBOOL       IsDead() const { return m_damage.IsDead(); }
		CDestructable *GetDestructable() { return &m_damage; }
		DDWORD		GetSurfaceType() { return m_dwSurfType; }
        
		DBOOL		Trap(char nTrap, DBOOL bGravity);
		DBOOL		IsTrapped() { return m_nTrapped; }

        // For Treat assessments
        CWeapon*	CurrentWeapon()       { return m_InventoryMgr.GetCurrentWeapon(); }
		DFLOAT      HitPoints()		const { return (DFLOAT)m_damage.GetHitPoints(); }
		DFLOAT      ArmorPoints()   const { return (DFLOAT)m_damage.GetArmorPoints(); }
		CInventoryMgr*  GetInventoryMgr() { return &m_InventoryMgr; }
		DBOOL		IsItemActive(int nItem) { return m_InventoryMgr.IsItemActive(nItem); }

		void UpdateInLiquid(VolumeBrush* pBrush, ContainerPhysics* pCPStruct);
		void UpdateOnLadder(VolumeBrush* pBrush, ContainerPhysics* pCPStruct);

		CInventoryMgr   m_InventoryMgr;

	private:

		void		Save(HMESSAGEWRITE hWrite, DDWORD dwSaveFlags);
		void		Load(HMESSAGEREAD hWrite, DDWORD dwSaveFlags);

	protected :

		DDWORD		EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData);
		//for model key string parsing
		virtual void	OnStringKey(ArgList* pArgList);

		CDestructable	m_damage;
		CMovement		m_MoveObj;
        CAnim_Sound     m_Anim_Sound;

		ContainerCode	m_eContainerCode;
		ContainerCode	m_eLastContainerCode;
		DBOOL			m_bBodyInLiquid;
		DBOOL			m_bBodyOnLadder;
		DBOOL			m_bSwimmingOnSurface;
		DDWORD			m_dwSurfType;

		DFLOAT			m_fSwimVel;
		DFLOAT			m_fLadderVel;

		// Used to stop any movement from the character (flayer)
		int				m_nTrapped;
		DBOOL			m_bTrappedGrav;
};


#endif // __BASE_CHARACTER_H__

⌨️ 快捷键说明

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