Files
2026-05-05 15:01:01 -07:00

77 lines
1.5 KiB
C++

#include "precompiled.h"
#pragma hdrstop
#include "prey_local.h"
//==========================================================================
//
// hhAlarmLight
//
//==========================================================================
CLASS_DECLARATION(idLight, hhAlarmLight)
EVENT(EV_Activate, hhAlarmLight::Event_Activate)
END_CLASS
void hhAlarmLight::Spawn() {
bAlarmOn = false;
fl.takedamage = false; // Never take damage
/* Shader parms set up like this (so the editor shows the light being on):
parm6 parm7
editor(on): 0 0
spawn(off): 1 0
trigger(on): 1 1
broken(off): 1 0
*/
SetParmState(1.0f, 0.0f);
// setup the clipModel
GetPhysics()->SetContents( CONTENTS_SOLID );
}
void hhAlarmLight::Save(idSaveGame *savefile) const {
savefile->WriteBool( bAlarmOn );
}
void hhAlarmLight::Restore( idRestoreGame *savefile ) {
savefile->ReadBool( bAlarmOn );
}
void hhAlarmLight::TurnOn() {
if (!bAlarmOn) {
bAlarmOn = true;
StartSound("snd_alarm", SND_CHANNEL_BODY2, 0, true, NULL);
SetParmState(1.0f, 1.0f);
}
}
void hhAlarmLight::TurnOff() {
if (bAlarmOn) {
bAlarmOn = false;
StopSound(SND_CHANNEL_BODY2, true);
SetParmState(0.0f, 1.0f);
}
}
void hhAlarmLight::SetParmState(float value6, float value7) {
SetShaderParm(6, value6);
SetShaderParm(7, value7);
SetLightParm(6, value6);
SetLightParm(7, value7);
}
void hhAlarmLight::Event_Activate(idEntity *activator) {
if (bAlarmOn) {
if (activator && activator->IsType(hhPlayer::Type)) {
TurnOff();
}
}
else {
TurnOn();
}
}