2016-03-27 11:49:47 +02:00
|
|
|
/*
|
|
|
|
===========================================================================
|
|
|
|
Copyright (C) 2015 the OpenMoHAA team
|
|
|
|
|
|
|
|
This file is part of OpenMoHAA source code.
|
|
|
|
|
|
|
|
OpenMoHAA source code is free software; you can redistribute it
|
|
|
|
and/or modify it under the terms of the GNU General Public License as
|
|
|
|
published by the Free Software Foundation; either version 2 of the License,
|
|
|
|
or (at your option) any later version.
|
|
|
|
|
|
|
|
OpenMoHAA source code is distributed in the hope that it will be
|
|
|
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with OpenMoHAA source code; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
===========================================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
// misc.h:
|
|
|
|
// Basically the big stew pot of the DLLs, or maybe a garbage bin, whichever
|
|
|
|
// metaphore you prefer. This really should be cleaned up. Anyway, this
|
|
|
|
// should contain utility functions that could be used by any entity.
|
|
|
|
// Right now it contains everything from entities that could be in their
|
|
|
|
// own file to my mother pot roast recipes.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef __MISC_H__
|
|
|
|
#define __MISC_H__
|
|
|
|
|
|
|
|
#include "g_local.h"
|
|
|
|
#include "entity.h"
|
|
|
|
#include "mover.h"
|
|
|
|
#include "animate.h"
|
|
|
|
|
|
|
|
class InfoNull : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( InfoNull );
|
|
|
|
|
|
|
|
InfoNull();
|
|
|
|
};
|
|
|
|
|
|
|
|
class FuncRemove : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( FuncRemove );
|
|
|
|
|
|
|
|
FuncRemove();
|
|
|
|
};
|
|
|
|
|
|
|
|
class MiscModel : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( MiscModel );
|
|
|
|
|
|
|
|
MiscModel();
|
|
|
|
};
|
|
|
|
|
|
|
|
class InfoNotNull : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( InfoNotNull );
|
|
|
|
};
|
|
|
|
|
|
|
|
class ExplodingWall : public Trigger
|
|
|
|
{
|
|
|
|
protected:
|
|
|
|
int dmg;
|
|
|
|
int explosions;
|
|
|
|
float attack_finished;
|
|
|
|
Vector land_angles;
|
|
|
|
float land_radius;
|
|
|
|
float angle_speed;
|
|
|
|
int state;
|
|
|
|
Vector base_velocity;
|
|
|
|
Vector random_velocity;
|
|
|
|
Vector orig_mins, orig_maxs;
|
|
|
|
qboolean on_ground;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( ExplodingWall );
|
|
|
|
|
|
|
|
ExplodingWall();
|
|
|
|
void Setup( Event *ev );
|
|
|
|
void AngleSpeed( Event *ev );
|
|
|
|
void LandRadius( Event *ev );
|
|
|
|
void LandAngles( Event *ev );
|
|
|
|
void BaseVelocity( Event *ev );
|
|
|
|
void RandomVelocity( Event *ev );
|
|
|
|
void SetDmg( Event *ev );
|
|
|
|
void SetExplosions( Event *ev );
|
|
|
|
void SetupSecondStage( void );
|
|
|
|
void Explode( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void DamageEvent( Event *ev ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
void GroundDamage( Event *ev );
|
|
|
|
void TouchFunc( Event *ev );
|
|
|
|
void StopRotating( Event *ev );
|
|
|
|
void CheckOnGround( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void ExplodingWall::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Trigger::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveInteger( &dmg );
|
|
|
|
arc.ArchiveInteger( &explosions );
|
|
|
|
arc.ArchiveFloat( &attack_finished );
|
|
|
|
arc.ArchiveVector( &land_angles );
|
|
|
|
arc.ArchiveFloat( &land_radius );
|
|
|
|
arc.ArchiveFloat( &angle_speed );
|
|
|
|
arc.ArchiveInteger( &state );
|
|
|
|
arc.ArchiveVector( &base_velocity );
|
|
|
|
arc.ArchiveVector( &random_velocity );
|
|
|
|
arc.ArchiveVector( &orig_mins );
|
|
|
|
arc.ArchiveVector( &orig_maxs );
|
|
|
|
arc.ArchiveBoolean( &on_ground );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class Teleporter : public Trigger
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ScriptThreadLabel teleport_label;
|
|
|
|
qboolean in_use;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( Teleporter );
|
|
|
|
|
|
|
|
Teleporter();
|
2023-01-31 19:28:10 +01:00
|
|
|
virtual void StartTeleport( Event *ev );
|
|
|
|
virtual void Teleport( Event *ev );
|
|
|
|
virtual void StopTeleport( Event *ev );
|
|
|
|
void SetThread( Event *ev );
|
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void Teleporter::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Trigger::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveBoolean( &in_use );
|
|
|
|
}
|
|
|
|
|
|
|
|
class TeleporterDestination : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Vector movedir;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( TeleporterDestination );
|
|
|
|
|
|
|
|
TeleporterDestination();
|
|
|
|
void SetMoveDir( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void TeleporterDestination::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveVector( &movedir );
|
|
|
|
}
|
|
|
|
|
|
|
|
class UseAnim : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int count;
|
|
|
|
qboolean active;
|
|
|
|
ScriptThreadLabel thread;
|
|
|
|
str triggertarget;
|
|
|
|
int num_loops;
|
|
|
|
str state;
|
|
|
|
str camera;
|
|
|
|
str anim;
|
|
|
|
str key;
|
|
|
|
float delay;
|
|
|
|
float last_active_time;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( UseAnim );
|
|
|
|
|
|
|
|
UseAnim();
|
2023-01-31 19:28:10 +01:00
|
|
|
virtual void Touched( Event *ev );
|
2016-03-27 11:49:47 +02:00
|
|
|
void Reset( Event *ev );
|
|
|
|
void SetThread( Event * ev );
|
|
|
|
void SetTriggerTarget( Event * ev );
|
|
|
|
void SetCount( Event * ev );
|
|
|
|
void SetAnim( Event *ev );
|
|
|
|
void SetState( Event *ev );
|
|
|
|
void SetKey( Event *ev );
|
|
|
|
void SetCamera( Event *ev );
|
|
|
|
void SetNumLoops( Event *ev );
|
|
|
|
void SetDelay( Event *ev );
|
|
|
|
bool canBeUsed( Entity *activator );
|
|
|
|
bool GetInformation( Entity *activator, Vector * org, Vector * angles, str * animatoin, int * loopcount, str * state, str * camera );
|
|
|
|
void TriggerTargets( Entity *activator );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void UseAnim::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveInteger( &count );
|
|
|
|
arc.ArchiveBoolean( &active );
|
|
|
|
arc.ArchiveString( &triggertarget );
|
|
|
|
arc.ArchiveInteger( &num_loops );
|
|
|
|
arc.ArchiveString( &state );
|
|
|
|
arc.ArchiveString( &camera );
|
|
|
|
arc.ArchiveString( &anim );
|
|
|
|
arc.ArchiveString( &key );
|
|
|
|
arc.ArchiveFloat( &delay );
|
|
|
|
arc.ArchiveFloat( &last_active_time );
|
|
|
|
}
|
|
|
|
|
|
|
|
class TouchAnim : public UseAnim
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( TouchAnim );
|
|
|
|
|
|
|
|
TouchAnim();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class UseAnimDestination : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int num_loops;
|
|
|
|
str state;
|
|
|
|
str anim;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( UseAnimDestination );
|
|
|
|
|
|
|
|
UseAnimDestination();
|
|
|
|
void SetAnim( Event *ev );
|
|
|
|
void SetState( Event *ev );
|
|
|
|
void SetNumLoops( Event *ev );
|
|
|
|
int GetNumLoops( void );
|
|
|
|
str GetAnim( void );
|
|
|
|
str GetState( void );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void UseAnimDestination::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveInteger( &num_loops );
|
|
|
|
arc.ArchiveString( &state );
|
|
|
|
arc.ArchiveString( &anim );
|
|
|
|
}
|
|
|
|
|
|
|
|
class UseObject : public Animate
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ScriptThreadLabel move_thread;
|
|
|
|
ScriptThreadLabel stop_thread;
|
|
|
|
ScriptThreadLabel reset_thread;
|
|
|
|
str triggertarget;
|
|
|
|
Vector offset;
|
|
|
|
float yaw_offset;
|
|
|
|
int count;
|
|
|
|
float cone;
|
|
|
|
str state;
|
|
|
|
str state_backwards;
|
|
|
|
str useMaterial;
|
|
|
|
int objectState;
|
|
|
|
float reset_time;
|
|
|
|
qboolean active;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( UseObject );
|
|
|
|
|
|
|
|
UseObject();
|
|
|
|
void SetMoveThread( Event * ev );
|
|
|
|
void SetStopThread( Event * ev );
|
|
|
|
void SetResetThread( Event * ev );
|
|
|
|
void SetTriggerTarget( Event * ev );
|
|
|
|
void SetOffset( Event * ev );
|
|
|
|
void SetYawOffset( Event * ev );
|
|
|
|
void SetCount( Event * ev );
|
|
|
|
void SetCone( Event * ev );
|
|
|
|
void SetState( Event * ev );
|
|
|
|
void SetBackwardsState( Event * ev );
|
|
|
|
void SetResetTime( Event * ev );
|
|
|
|
void Reset( Event * ev );
|
|
|
|
void Resetting( Event * ev );
|
|
|
|
void DamageTriggered( Event * ev );
|
|
|
|
void DamageFunc( Event * ev );
|
|
|
|
bool canBeUsed( Vector org, Vector dir );
|
|
|
|
void Setup( Entity *activator, Vector *org, Vector *ang, str *newstate );
|
|
|
|
void Start( Event * ev = NULL );
|
|
|
|
bool Loop( void );
|
|
|
|
void SetActiveState( Event *ev );
|
|
|
|
void Stop( Entity *activator );
|
|
|
|
void ActivateEvent( Event *ev );
|
|
|
|
void DeactivateEvent( Event *ev );
|
|
|
|
void UseMaterialEvent( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void UseObject::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Animate::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveString( &triggertarget );
|
|
|
|
arc.ArchiveVector( &offset );
|
|
|
|
arc.ArchiveFloat( &yaw_offset );
|
|
|
|
arc.ArchiveInteger( &count );
|
|
|
|
arc.ArchiveFloat( &cone );
|
|
|
|
arc.ArchiveString( &state );
|
|
|
|
arc.ArchiveString( &state_backwards );
|
|
|
|
arc.ArchiveString( &useMaterial );
|
|
|
|
arc.ArchiveInteger( &objectState );
|
|
|
|
arc.ArchiveFloat( &reset_time );
|
|
|
|
arc.ArchiveBoolean( &active );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class Waypoint : public SimpleArchivedEntity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( Waypoint );
|
|
|
|
};
|
|
|
|
|
|
|
|
class TempWaypoint : public SimpleArchivedEntity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( TempWaypoint );
|
|
|
|
};
|
|
|
|
|
|
|
|
class VehiclePoint : public Waypoint
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
unsigned int spawnflags;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( VehiclePoint );
|
|
|
|
|
|
|
|
void SetSpawnFlags( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver& arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void VehiclePoint::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
SimpleArchivedEntity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveUnsigned( &spawnflags );
|
|
|
|
}
|
|
|
|
|
|
|
|
class MonkeyBars : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
float dir;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( MonkeyBars );
|
|
|
|
|
|
|
|
MonkeyBars();
|
|
|
|
void SetAngleEvent( Event *ev );
|
|
|
|
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void MonkeyBars::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveFloat( &dir );
|
|
|
|
}
|
|
|
|
|
|
|
|
class HorizontalPipe : public Entity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
float dir;
|
|
|
|
|
|
|
|
CLASS_PROTOTYPE( HorizontalPipe );
|
|
|
|
|
|
|
|
HorizontalPipe();
|
|
|
|
void SetAngleEvent( Event *ev );
|
|
|
|
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void HorizontalPipe::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveFloat( &dir );
|
|
|
|
}
|
|
|
|
|
|
|
|
class TossObject : public Animate
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
str bouncesound;
|
|
|
|
float bouncesoundchance;
|
|
|
|
void Stop( Event *ev );
|
|
|
|
void Touch( Event *ev );
|
|
|
|
void SetBounceSound( Event *ev );
|
|
|
|
void SetBounceSoundChance( Event *ev );
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( TossObject );
|
|
|
|
|
|
|
|
TossObject();
|
|
|
|
TossObject( str modelname );
|
|
|
|
void SetBounceSound( str bounce );
|
|
|
|
void SetBounceSoundChance( float chance );
|
|
|
|
void SetVelocity( float severity );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void TossObject::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
Animate::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveString( &bouncesound );
|
|
|
|
arc.ArchiveFloat( &bouncesoundchance );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class PushObject : public Entity
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
EntityPtr owner;
|
|
|
|
float attack_finished;
|
|
|
|
int dmg;
|
|
|
|
str pushsound;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( PushObject );
|
|
|
|
|
|
|
|
PushObject();
|
|
|
|
void Start( Event *ev );
|
|
|
|
void SetDamage( Event *ev );
|
|
|
|
void BlockFunc( Event *ev );
|
|
|
|
void SetPushSound( Event *ev );
|
|
|
|
qboolean Push( Entity *pusher, Vector move );
|
|
|
|
qboolean canPush( Vector dir );
|
|
|
|
|
|
|
|
Entity *getOwner( void );
|
|
|
|
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void PushObject::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveSafePointer( &owner );
|
|
|
|
arc.ArchiveFloat( &attack_finished );
|
|
|
|
arc.ArchiveInteger( &dmg );
|
|
|
|
arc.ArchiveString( &pushsound );
|
|
|
|
}
|
|
|
|
|
|
|
|
class FallingRock : public Entity
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
int active;
|
|
|
|
Vector start_origin;
|
|
|
|
Vector last_bounce_origin;
|
|
|
|
Entity *current;
|
|
|
|
Entity *activator;
|
|
|
|
Vector bounce_dir;
|
|
|
|
Vector rotateaxis;
|
|
|
|
float attack_finished;
|
|
|
|
float wait;
|
|
|
|
float speed;
|
|
|
|
int dmg;
|
|
|
|
str bouncesound;
|
|
|
|
|
|
|
|
void Touch( Event *ev );
|
|
|
|
void Bounce( Event *ev );
|
|
|
|
void Rotate( Event *ev );
|
|
|
|
void Activate( Event *ev );
|
|
|
|
void NextBounce( void );
|
|
|
|
void StartFalling( Event *ev );
|
|
|
|
void SetWait( Event *ev );
|
|
|
|
void SetSpeed( Event *ev );
|
|
|
|
void SetDmg( Event *ev );
|
|
|
|
Entity *SetNextBounceDir( void );
|
|
|
|
void SetBounceSound( str sound );
|
|
|
|
void SetBounceSound( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( FallingRock );
|
|
|
|
|
|
|
|
FallingRock();
|
|
|
|
};
|
|
|
|
|
|
|
|
inline void FallingRock::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
Entity::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveInteger( &active );
|
|
|
|
arc.ArchiveVector( &start_origin );
|
|
|
|
arc.ArchiveVector( &last_bounce_origin );
|
|
|
|
arc.ArchiveObjectPointer( ( Class ** )¤t );
|
|
|
|
arc.ArchiveObjectPointer( ( Class ** )&activator );
|
|
|
|
arc.ArchiveVector( &bounce_dir );
|
|
|
|
arc.ArchiveVector( &rotateaxis );
|
|
|
|
arc.ArchiveFloat( &attack_finished );
|
|
|
|
arc.ArchiveFloat( &wait );
|
|
|
|
arc.ArchiveFloat( &speed );
|
|
|
|
arc.ArchiveInteger( &dmg );
|
|
|
|
arc.ArchiveString( &bouncesound );
|
|
|
|
if ( arc.Loading() )
|
|
|
|
{
|
|
|
|
SetBounceSound( bouncesound );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class SupplyWater : public Trigger
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
int maxwater;
|
|
|
|
int amount;
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( SupplyWater );
|
|
|
|
|
|
|
|
SupplyWater();
|
|
|
|
void Activate( Event *ev );
|
|
|
|
void MaxWater( Event *ev );
|
|
|
|
void ChargeOff( Event *ev );
|
2023-01-31 19:28:10 +01:00
|
|
|
void Archive( Archiver &arc ) override;
|
2016-03-27 11:49:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline void SupplyWater::Archive
|
|
|
|
(
|
|
|
|
Archiver &arc
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
Trigger::Archive( arc );
|
|
|
|
|
|
|
|
arc.ArchiveInteger( &amount );
|
|
|
|
arc.ArchiveInteger( &maxwater );
|
|
|
|
}
|
|
|
|
|
|
|
|
class FuncLadder : public Entity {
|
|
|
|
private:
|
|
|
|
Vector m_vFacingAngles;
|
|
|
|
Vector m_vFacingDir;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CLASS_PROTOTYPE( FuncLadder );
|
|
|
|
|
|
|
|
FuncLadder();
|
|
|
|
|
|
|
|
void LadderSetup( Event *ev );
|
|
|
|
|
|
|
|
qboolean CanUseLadder( Entity *pUser );
|
|
|
|
void PositionOnLadder( Entity *pUser );
|
|
|
|
|
|
|
|
void SetLadderFacing( Event *ev );
|
|
|
|
void AdjustPositionOnLadder( Entity *pUser );
|
|
|
|
|
|
|
|
void EnsureOverLadder( Entity *pUser );
|
|
|
|
void EnsureForwardOffLadder( Entity *pUser );
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* misc.h */
|