mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-17 02:58:46 +02:00
Initial Prey Game integration support.
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
//
|
||||
// ai_passageway.cpp
|
||||
//
|
||||
#include "precompiled.h"
|
||||
#pragma hdrstop
|
||||
|
||||
#include "prey_local.h"
|
||||
|
||||
const idEventDef EV_EnablePassageway("enable", NULL);
|
||||
const idEventDef EV_DisablePassageway("disable", NULL);
|
||||
|
||||
// hhAIPassageway
|
||||
CLASS_DECLARATION(hhAnimated, hhAIPassageway)
|
||||
EVENT(EV_AnimDone, hhAIPassageway::Event_AnimDone)
|
||||
EVENT(EV_Activate, hhAIPassageway::Event_Trigger)
|
||||
EVENT(EV_PostSpawn, hhAIPassageway::PostSpawn)
|
||||
EVENT(EV_EnablePassageway, hhAIPassageway::Event_EnablePassageway)
|
||||
EVENT(EV_DisablePassageway, hhAIPassageway::Event_DisablePassageway)
|
||||
END_CLASS
|
||||
|
||||
#ifndef ID_DEMO_BUILD //HUMANHEAD jsh PCF 5/26/06: code removed for demo build
|
||||
|
||||
//
|
||||
// Spawn()
|
||||
//
|
||||
void hhAIPassageway::Spawn() {
|
||||
timeLastEntered = 0;
|
||||
lastEntered = NULL;
|
||||
enabled = TRUE;
|
||||
hasEntered = FALSE;
|
||||
|
||||
GetPhysics()->SetContents(CONTENTS_SOLID);
|
||||
|
||||
PostEventMS( &EV_PostSpawn, 0 );
|
||||
}
|
||||
|
||||
//
|
||||
// PostSpawn()
|
||||
//
|
||||
void hhAIPassageway::PostSpawn() {
|
||||
SetEnablePassageway(spawnArgs.GetBool("enabled", "1"));
|
||||
}
|
||||
|
||||
//
|
||||
// SetEnablePassageway()
|
||||
//
|
||||
void hhAIPassageway::SetEnablePassageway(bool tf) {
|
||||
|
||||
// Ignore if we're already in that state
|
||||
if(enabled == tf)
|
||||
return;
|
||||
|
||||
fl.refreshReactions = tf;
|
||||
enabled = tf;
|
||||
}
|
||||
|
||||
//
|
||||
// Event_AnimDone()
|
||||
//
|
||||
void hhAIPassageway::Event_AnimDone( int animIndex ) {
|
||||
//When we are done we want to pass ourselves as the activator
|
||||
activator = this;
|
||||
|
||||
hhAnimated::Event_AnimDone( animIndex );
|
||||
}
|
||||
|
||||
//
|
||||
// Event_Trigger()
|
||||
//
|
||||
void hhAIPassageway::Event_Trigger( idEntity *activator ) {
|
||||
|
||||
if(!activator)
|
||||
return;
|
||||
|
||||
// Ignore being activated by another passage node - they link to eachother,
|
||||
// so they must be ignored otherwise it will continuously trigger
|
||||
if( activator->IsType(hhAIPassageway::Type) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Play our anim
|
||||
hhAnimated::Event_Activate( activator );
|
||||
HH_ASSERT(anim != NULL);
|
||||
|
||||
if( !activator->IsType(hhMonsterAI::Type) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
hhMonsterAI *ai = static_cast<hhMonsterAI*>(activator);
|
||||
|
||||
// Can't enter if dead
|
||||
if(ai->health <= 0)
|
||||
return;
|
||||
|
||||
if(!ai->IsInsidePassageway())
|
||||
{
|
||||
//HUMANHEAD PCF mdl 04/29/06 - Added lastEntered check
|
||||
if(hasEntered && lastEntered.GetEntity() == ai) {
|
||||
ai->ProcessEvent(&MA_EnterPassageway, this);
|
||||
hasEntered = FALSE;
|
||||
} else {
|
||||
lastEntered = ai;
|
||||
timeLastEntered = gameLocal.GetTime();
|
||||
hasEntered = TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ai->PostEventMS(&MA_ExitPassageway, 32, this);
|
||||
hasEntered = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// GetExitPos()
|
||||
//
|
||||
idVec3 hhAIPassageway::GetExitPos(void) {
|
||||
idVec3 pos = GetOrigin();
|
||||
idVec3 exitOffset;
|
||||
spawnArgs.GetVector("exit_offset", "0 0 0", exitOffset);
|
||||
exitOffset *= GetAxis();
|
||||
pos += exitOffset;
|
||||
pos.z += 0.2f;
|
||||
return pos;
|
||||
}
|
||||
|
||||
void hhAIPassageway::Save(idSaveGame *savefile) const {
|
||||
savefile->WriteInt( timeLastEntered - gameLocal.time );
|
||||
lastEntered.Save( savefile );
|
||||
savefile->WriteBool( hasEntered );
|
||||
savefile->WriteBool( enabled );
|
||||
}
|
||||
|
||||
void hhAIPassageway::Restore(idRestoreGame *savefile) {
|
||||
savefile->ReadInt( timeLastEntered );
|
||||
timeLastEntered += gameLocal.time;
|
||||
|
||||
lastEntered.Restore( savefile );
|
||||
savefile->ReadBool( hasEntered );
|
||||
savefile->ReadBool( enabled );
|
||||
}
|
||||
|
||||
#endif //HUMANHEAD jsh PCF 5/26/06: code removed for demo build
|
||||
Reference in New Issue
Block a user