Files
DoomRTX/neo/prey/Prey/game_door.h
T
2026-05-05 15:01:01 -07:00

70 lines
1.9 KiB
C++

#ifndef __PREY_DOOR_H__
#define __PREY_DOOR_H__
class hhDoor : public idDoor {
CLASS_PROTOTYPE( hhDoor );
public:
void Spawn();
virtual ~hhDoor();
void Save( idSaveGame *savefile ) const;
void Restore( idRestoreGame *savefile );
virtual void Use_BinaryMover( idEntity *activator );
virtual void GotoPosition1();
virtual void GotoPosition2();
//HUMANHEAD: aob
virtual void GotoPosition1( float wait );
virtual void GotoPosition2( float wait );
//HUMANHEAD END
ID_INLINE const char* GetAirLockTeamName() const { return airlockTeamName.c_str(); }
ID_INLINE hhDoor* GetAirLockMaster() const { return airlockMaster; }
void Open();
void Close();
bool CanOpen() const;
bool CanClose() const;
bool IsClosed() const;
bool OnMyMoveTeam( hhDoor* doorPiece ) const;
void CopyTeamInfoToMoveMaster( hhDoor* master );
void CancelReturnToPos1();
void SetBuddiesShaderParm( int parm, float value );
void ToggleBuddiesShaderParm( int parm, float firstValue, float secondValue, float toggleDelay );
bool ForcedOpen() const { return( forcedOpen ); };
void Killed( idEntity *inflictor, idEntity *attacker, int damage, const idVec3 &dir, int location );
protected:
idEntity* DetermineTeamMaster( const char* teamName );
void JoinAirLockTeam( hhDoor *master );
void VerifyAirlockTeamStatus();
void ForceAirLockTeamClosed();
void ForceAirLockTeamOpen();
protected:
void Event_ReturnToPos1( void ); // overridden to stop it moving when closed
void Event_SetBuddiesShaderParm( int parm, float value );
void Event_Reached_BinaryMover( void );
virtual void Event_Touch( idEntity *other, trace_t *trace );
public:
idLinkList<hhDoor> airlockTeam;
protected://More airLock stuff
idStr airlockTeamName;
hhDoor* airlockMaster;
bool openWhenDead; // Do we open when dead?
bool forcedOpen; // Is the door forced open
float airLockSndWait;
float nextAirLockSnd;
bool bShuttleDoors;
};
#endif