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

📄 calebai.cpp

📁 Blood 2全套源码
💻 CPP
字号:
// ----------------------------------------------------------------------- //
//
// MODULE  : CalebAI.cpp
//
// PURPOSE : CalebAI - Definition
//
// CREATED : 10/4/98
//
// ----------------------------------------------------------------------- //

#include <stdio.h>
#include "CalebAI.h"
#include "cpp_server_de.h"

BEGIN_CLASS(CalebAI)
	ADD_BASEAI_AGGREGATE()
    ADD_REALPROP(HitPoints, 30.0f)
    ADD_REALPROP(RandomHitPoints, 0.0f)
    ADD_REALPROP(ArmorPoints, 0.0f)
	ADD_STRINGPROP(AIState, "IDLE")
	ADD_STRINGPROP(AIWeapon, "NONE")
END_CLASS_DEFAULT(CalebAI, AI_Mgr, NULL, NULL)

//static data member initialization
DBOOL		CalebAI::m_bLoadAnims = DTRUE;
CAnim_Sound	CalebAI::m_Anim_Sound;

// ----------------------------------------------------------------------- //
//
//	ROUTINE:	CalebAI::CalebAI()
//
//	PURPOSE:	Constructor
//
// ----------------------------------------------------------------------- //

CalebAI::CalebAI() : AI_Mgr()
{
	m_fHearingDist	= 0.0f;
	m_fSensingDist	= 200.0f;
	m_fSmellingDist	= 0.0f;
	m_fSeeingDist	= 1000.0f;

	m_fWalkSpeed	= 75.0f;
	m_fRunSpeed		= 180.0f;
	m_fRollSpeed	= 3.5f;

	m_fAIMass		= AI_DEFAULT_MASS;

	m_nAIStrength	= 5;

	m_nState = STATE_Idle; 
	m_nLastState = STATE_Idle; 
	m_dwFlags = 0;

	m_bCabal = DFALSE;
}

// ----------------------------------------------------------------------- //
//
//	ROUTINE:	CalebAI::EngineMessageFn()
//
//	PURPOSE:	Handle engine messages
//
// ----------------------------------------------------------------------- //

DDWORD CalebAI::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
	switch(messageID)
	{
		case MID_PRECREATE:
		{
			// Need to call base class to have the object name read in before
			// we set the skin/filename...

			DDWORD dwRet = AI_Mgr::EngineMessageFn(messageID, pData, fData);

			ObjectCreateStruct* pStruct = (ObjectCreateStruct*)pData;
			if (pStruct)
			{
				_mbscpy((unsigned char*)pStruct->m_Filename, (const unsigned char*)"Models\\Characters\\caleb.abc");
				_mbscpy((unsigned char*)pStruct->m_SkinName, (const unsigned char*)"Skins\\Characters\\caleb1.dtx");
			}

			return dwRet;
		}
		break;
        
		case MID_INITIALUPDATE:
		{
			FirstUpdate();
		}
		break;

		default : break;
	}


	return AI_Mgr::EngineMessageFn(messageID, pData, fData);
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	FirstUpdate()
//
//	PURPOSE:	Handle initial update
//
// ----------------------------------------------------------------------- //

DBOOL CalebAI::FirstUpdate()
{
	m_pServerDE = BaseClass::GetServerDE();
	if (!m_pServerDE || !m_hObject) return DFALSE;

	//Load up animation indexes if first model instance

    if (m_bLoadAnims)
	{
	    m_Anim_Sound.SetAnimationIndexes(m_hObject);
		m_Anim_Sound.GenerateHitSpheres(m_hObject);
		m_Anim_Sound.SetSoundRoot("sounds\\chosen\\caleb");

		m_bLoadAnims = DFALSE;
	}

	AI_Mgr::InitStatics(&m_Anim_Sound);
	
	return DTRUE;
}

⌨️ 快捷键说明

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