NS/dev/tankefugl/source/mod/AvHAlienEquipment.h

202 lines
5.2 KiB
C++

//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. =========
//
// The copyright to the contents herein is the property of Charles G. Cleveland.
// The contents may be used and/or copied only with the written permission of
// Charles G. Cleveland, or in accordance with the terms and conditions stipulated in
// the agreement/contract under which the contents have been supplied.
//
// Purpose:
//
// $Workfile: AvHAlienEquipment.h $
// $Date: 2002/10/16 00:46:51 $
//
//-------------------------------------------------------------------------------
// $Log: AvHAlienEquipment.h,v $
// Revision 1.13 2002/10/16 00:46:51 Flayra
// - Movement chambers not useable until 3 seconds after built
// - Moved and removed some building sounds, added one for chamber death
// - Don't allow using movement chamber while gestating
//
// Revision 1.12 2002/09/09 19:47:47 Flayra
// - Alien buildings now animate
// - Sensory chamber no longer hurts players when touched
//
// Revision 1.11 2002/08/31 18:01:00 Flayra
// - Work at VALVe
//
// Revision 1.10 2002/08/16 02:32:09 Flayra
// - Added damage types
// - Swapped umbra and bile bomb
//
// Revision 1.9 2002/07/25 16:57:59 flayra
// - Linux changes
//
// Revision 1.8 2002/07/23 16:55:36 Flayra
// - Alien buildings now have an iuser3 type (used for "resource tower is under attack")
//
// Revision 1.7 2002/07/01 21:13:03 Flayra
// - Added auto-build to all alien buildings, added new parasiting ability to sensory chambers
//
// Revision 1.6 2002/06/03 16:22:45 Flayra
// - Movement chamber needs to be used to teleport, get points for building resource tower, defense chambers heal buildables too, improved sensory chamber (still has problems though), removed duplicate hive classname
//
// Revision 1.5 2002/05/28 17:11:39 Flayra
// - Added new turret instead of old offensive upgrades chamber, added secondary functions
//
// Revision 1.4 2002/05/23 02:34:00 Flayra
// - Post-crash checkin. Restored @Backup from around 4/16. Contains changes for last four weeks of development.
//
//===============================================================================
#ifndef AVH_ALIEN_EQUIPMENT_H
#define AVH_ALIEN_EQUIPMENT_H
#include "util/nowarnings.h"
#include "dlls/weapons.h"
#include "mod/AvHBasePlayerWeapon.h"
#include "mod/AvHConstants.h"
#include "mod/AvHEntities.h"
#include "mod/AvHBuildable.h"
#include "mod/AvHEntities.h"
#include "mod/AvHTurret.h"
class AvHAlienResourceTower : public AvHResourceTower
{
public:
AvHAlienResourceTower();
virtual int GetActiveAnimation() const;
virtual char* GetDeploySound() const;
virtual bool GetIsOrganic() const;
virtual int GetPointValue() const;
virtual char* GetModelName() const;
virtual int GetSequenceForBoundingBox() const;
char* GetActiveSoundList() const;
void Killed(entvars_t* pevAttacker, int iGib);
virtual void Materialize();
void Precache();
virtual void Spawn();
private:
void EXPORT AlienResourceThink();
};
class AvHAlienUpgradeBuilding : public AvHBaseBuildable
{
public:
AvHAlienUpgradeBuilding(AvHMessageID inMessageID, AvHTechID inTechID, char* inClassName, AvHUser3 inUser3);
virtual char* GetDeploySound() const = 0;
virtual bool GetIsOrganic() const;
virtual int GetPointValue() const;
virtual AvHAlienUpgradeCategory GetUpgradeCategory() const = 0;
virtual void Killed(entvars_t* pevAttacker, int iGib);
virtual void Materialize();
virtual void Precache();
virtual void SetHasBeenBuilt();
virtual void Spawn();
private:
void EXPORT AlienBuildingThink();
};
//class AvHOffenseChamber : public AvHTurret
//{
//public:
// AvHOffenseChamber();
//
// virtual char* GetActiveSound() const;
// virtual char* GetAlertSound() const;
// virtual char* GetPingSound() const;
//
// virtual int GetRange() const;
//
// virtual void Precache();
//
// virtual void Spawn();
//};
class AvHDefenseChamber : public AvHAlienUpgradeBuilding
{
public:
AvHDefenseChamber();
virtual char* GetDeploySound() const;
virtual char* GetModelName() const;
void EXPORT RegenAliensThink();
virtual void SetHasBeenBuilt();
virtual AvHAlienUpgradeCategory GetUpgradeCategory() const;
};
class AvHSensoryChamber : public AvHAlienUpgradeBuilding
{
public:
AvHSensoryChamber();
virtual char* GetDeploySound() const;
bool GetIsEntityInSight(CBaseEntity* inEntity);
virtual char* GetModelName() const;
virtual AvHAlienUpgradeCategory GetUpgradeCategory() const;
virtual void Precache();
virtual void SetHasBeenBuilt();
};
class AvHMovementChamber : public AvHAlienUpgradeBuilding
{
public:
AvHMovementChamber();
virtual char* GetDeploySound() const;
virtual char* GetModelName() const;
virtual void Precache();
virtual void ResetEntity();
virtual void SetHasBeenBuilt();
void EXPORT EnergyAliensThink();
void EXPORT TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_TYPE inUseType, float inValue);
void EXPORT TeleportUseThink();
virtual AvHAlienUpgradeCategory GetUpgradeCategory() const;
private:
float mLastTimeScannedHives;
int mTeleportHiveIndex;
};
#endif