📄 objectivestrigger.cpp
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : ObjectivesTrigger.cpp
//
// PURPOSE : ObjectivesTrigger - Implementation
//
// CREATED : 10/4/98
//
// ----------------------------------------------------------------------- //
#include "ObjectivesTrigger.h"
#include "cpp_server_de.h"
#include "SharedDefs.h"
#include "BloodServerShell.h"
#include "PlayerObj.h"
#include "ObjectUtilities.h"
BEGIN_CLASS(ObjectivesTrigger)
ADD_LONGINTPROP(ResourceNum, 0)
ADD_STRINGPROP(TitleToDisplay, "Objective #1:")
ADD_STRINGPROP(TextToDisplay, "Use the '|' character to force a line break...")
ADD_STRINGPROP(Sound, "Sounds\\Thunder.wav")
ADD_STRINGPROP_FLAG(ActivationSound, "", PF_HIDDEN)
ADD_REALPROP_FLAG(SoundRadius, 200.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName1, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName1, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName2, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName2, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay2, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName3, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName3, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay3, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName4, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName4, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay4, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName5, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName5, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay5, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName6, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName6, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay6, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName7, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName7, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay7, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName8, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName8, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay8, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName9, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName9, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay9, 0.0f, PF_HIDDEN)
ADD_STRINGPROP_FLAG(TargetName10, "", PF_HIDDEN)
ADD_STRINGPROP_FLAG(MessageName10, "", PF_HIDDEN)
ADD_REALPROP_FLAG(MessageDelay10, 0.0f, PF_HIDDEN)
ADD_BOOLPROP(TouchActivate, DFALSE)
ADD_BOOLPROP(PlayerActivate, DTRUE)
ADD_BOOLPROP(AIActivate, DFALSE)
ADD_BOOLPROP(ObjectActivate, DFALSE)
ADD_BOOLPROP(TriggerRelayActivate, DFALSE)
END_CLASS_DEFAULT(ObjectivesTrigger, Trigger, NULL, NULL)
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::ObjectivesTrigger()
//
// PURPOSE: Initialize object
//
// ----------------------------------------------------------------------- //
ObjectivesTrigger::ObjectivesTrigger() : Trigger()
{
m_hstrTitle = DNULL;
m_hstrText = DNULL;
m_hstrSound = DNULL;
m_nResource = 0;
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::~ObjectivesTrigger()
//
// PURPOSE: Deallocate object
//
// ----------------------------------------------------------------------- //
ObjectivesTrigger::~ObjectivesTrigger()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
if (m_hstrTitle)
pServerDE->FreeString(m_hstrTitle);
if (m_hstrText)
pServerDE->FreeString(m_hstrText);
if (m_hstrSound)
pServerDE->FreeString(m_hstrSound);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::EngineMessageFn
//
// PURPOSE: Handle engine messages
//
// ----------------------------------------------------------------------- //
DDWORD ObjectivesTrigger::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
switch(messageID)
{
case MID_PRECREATE:
{
if (fData == PRECREATE_WORLDFILE || fData == PRECREATE_STRINGPROP)
{
ReadProp((ObjectCreateStruct*)pData);
}
break;
}
case MID_SAVEOBJECT:
{
Save((HMESSAGEWRITE)pData, (DDWORD)fData);
}
break;
case MID_LOADOBJECT:
{
Load((HMESSAGEREAD)pData, (DDWORD)fData);
}
break;
default : break;
}
return Trigger::EngineMessageFn(messageID, pData, fData);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::ReadProp
//
// PURPOSE: Set property value
//
// ----------------------------------------------------------------------- //
DBOOL ObjectivesTrigger::ReadProp(ObjectCreateStruct *pData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || !pData) return DFALSE;
GenericProp genProp;
if(pServerDE->GetPropGeneric("ResourceNum", &genProp) == DE_OK)
m_nResource = genProp.m_Long;
if(pServerDE->GetPropGeneric("TitleToDisplay", &genProp) == DE_OK)
{
if (genProp.m_String[0])
m_hstrTitle = pServerDE->CreateString(genProp.m_String);
}
if(pServerDE->GetPropGeneric("TextToDisplay", &genProp) == DE_OK)
{
if (genProp.m_String[0])
m_hstrText = pServerDE->CreateString(genProp.m_String);
}
if(pServerDE->GetPropGeneric("Sound", &genProp) == DE_OK)
{
if (genProp.m_String[0])
m_hstrSound = pServerDE->CreateString(genProp.m_String);
}
return DTRUE;
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::SendMessages
//
// PURPOSE:
//
// ----------------------------------------------------------------------- //
void ObjectivesTrigger::SendMessages()
{
CServerDE* pServerDE = GetServerDE();
if(!pServerDE) return;
if(m_hstrTitle && m_hstrText)
{
HMESSAGEWRITE hMsg = pServerDE->StartMessage(DNULL, SMSG_OBJECTIVES);
pServerDE->WriteToMessageDWord(hMsg, m_nResource);
pServerDE->WriteToMessageHString(hMsg, m_hstrTitle);
pServerDE->WriteToMessageHString(hMsg, m_hstrText);
pServerDE->EndMessage(hMsg);
if(m_hstrSound)
PlaySoundLocal(pServerDE->GetStringData(m_hstrSound), SOUNDPRIORITY_MISC_HIGH);
}
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::Save
//
// PURPOSE: Save the object
//
// ----------------------------------------------------------------------- //
void ObjectivesTrigger::Save(HMESSAGEWRITE hWrite, DDWORD dwSaveFlags)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || !hWrite) return;
pServerDE->WriteToMessageDWord(hWrite, m_nResource);
pServerDE->WriteToMessageHString(hWrite, m_hstrTitle);
pServerDE->WriteToMessageHString(hWrite, m_hstrText);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: ObjectivesTrigger::Load
//
// PURPOSE: Load the object
//
// ----------------------------------------------------------------------- //
void ObjectivesTrigger::Load(HMESSAGEREAD hRead, DDWORD dwLoadFlags)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || !hRead) return;
m_nResource = pServerDE->ReadFromMessageDWord(hRead);
m_hstrTitle = pServerDE->ReadFromMessageHString(hRead);
m_hstrText = pServerDE->ReadFromMessageHString(hRead);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -