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

📄 key.cpp

📁 Blood 2全套源码
💻 CPP
字号:
// ----------------------------------------------------------------------- //
//
// MODULE  : Key.cpp
//
// PURPOSE : Key implementation for Keyframer class
//
// CREATED : 10/7/97
//
// ----------------------------------------------------------------------- //

#include "key.h"
#include "cpp_server_de.h"


BEGIN_CLASS(Key)
	ADD_REALPROP(TimeStamp, 0.0f)
	ADD_STRINGPROP(SoundName, "")
	ADD_REALPROP_FLAG(SoundRadius, 0.0f,PF_RADIUS)
	ADD_BOOLPROP(LoopSound, DFALSE)
	ADD_STRINGPROP(MessageTarget, "")
	ADD_STRINGPROP(MessageName, "")
	ADD_STRINGPROP(BPrintMessage, "")
END_CLASS_DEFAULT_FLAGS(Key, B2BaseClass, NULL, NULL, CF_ALWAYSLOAD)


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Key::Key()
//
//	PURPOSE:	Initialize object
//
// ----------------------------------------------------------------------- //

Key::Key() : B2BaseClass(OT_NORMAL)
{
	m_fTimeStamp		= 0.0f;
	m_fSoundRadius		= 0.0f;
	m_bLoopSound		= DFALSE;
	m_hstrSoundName		= NULL;
	m_hstrMessageTarget = NULL;
	m_hstrMessageName	= NULL;
	m_hstrBPrintMessage = NULL;
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Key::~Key()
//
//	PURPOSE:	Deallocate object
//
// ----------------------------------------------------------------------- //

Key::~Key()
{
	CServerDE* pServerDE = GetServerDE();
	if (pServerDE)
	{
		if (m_hstrSoundName) pServerDE->FreeString (m_hstrSoundName);
		if (m_hstrMessageTarget) pServerDE->FreeString (m_hstrMessageTarget);
		if (m_hstrMessageName) pServerDE->FreeString (m_hstrMessageName);
		if (m_hstrBPrintMessage) pServerDE->FreeString (m_hstrBPrintMessage);
	}
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Key::EngineMessageFn
//
//	PURPOSE:	Handle engine messages
//
// ----------------------------------------------------------------------- //

DDWORD Key::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
	switch(messageID)
	{
		case MID_PRECREATE:
		{
			if (fData == 1.0f)
				ReadProp((ObjectCreateStruct*)pData);
			break;
		}

		case MID_INITIALUPDATE:
		{
			InitialUpdate((DVector *)pData);
			break;
		}

		default : break;
	}

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


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Key::ReadProp
//
//	PURPOSE:	Set property value
//
// ----------------------------------------------------------------------- //

DBOOL Key::ReadProp(ObjectCreateStruct *pStruct)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE || !pStruct) return DFALSE;

	char buf[MAX_CS_FILENAME_LEN];

	buf[0] = '\0';
	pServerDE->GetPropString("SoundName", buf, MAX_CS_FILENAME_LEN);
	if (buf[0]) m_hstrSoundName = pServerDE->CreateString(buf);

	buf[0] = '\0';
	pServerDE->GetPropString("MessageTarget", buf, MAX_CS_FILENAME_LEN);
	if (buf[0]) m_hstrMessageTarget = pServerDE->CreateString(buf);

	buf[0] = '\0';
	pServerDE->GetPropString("MessageName", buf, MAX_CS_FILENAME_LEN);
	if (buf[0]) m_hstrMessageName = pServerDE->CreateString(buf);

	buf[0] = '\0';
	pServerDE->GetPropString("BPrintMessage", buf, MAX_CS_FILENAME_LEN);
	if (buf[0]) m_hstrBPrintMessage = pServerDE->CreateString(buf);

	pServerDE->GetPropReal("TimeStamp", &m_fTimeStamp);
	pServerDE->GetPropReal("SoundRadius", &m_fSoundRadius);
	pServerDE->GetPropBool("LoopSound", &m_bLoopSound);

	return DTRUE;
}

// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Key::InitialUpdate()
//
//	PURPOSE:	First update
//
// ----------------------------------------------------------------------- //

DBOOL Key::InitialUpdate(DVector* pMovement)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE) return DFALSE;

	pServerDE->SetNextUpdate (m_hObject, 0.0f);

	return DTRUE;
}

⌨️ 快捷键说明

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