#ifndef __POWERUPS_H__
#define __POWERUPS_H__

#include "g_local.h"
#include "inventoryitem.h"

class ScubaGear : public InventoryItem
	{
	public:
      CLASS_PROTOTYPE( ScubaGear );
                  ScubaGear();
   };

class Adrenaline : public InventoryItem
	{
   private:
      float             health_delta;
	public:
      CLASS_PROTOTYPE( Adrenaline );
                        
                        Adrenaline();
      virtual void      Use( Event *ev );
      void              Powerdown( Event *ev );
	   virtual void      Archive( Archiver &arc );
      virtual void      Unarchive( Archiver &arc );
	};

inline void Adrenaline::Archive
	(
	Archiver &arc
	)
   {
   InventoryItem::Archive( arc );

   arc.WriteFloat( health_delta );
   }

inline void Adrenaline::Unarchive
	(
	Archiver &arc
	)
   {
   InventoryItem::Unarchive( arc );

   arc.ReadFloat( &health_delta );
   }

class Cloak : public InventoryItem
	{
	public:
      CLASS_PROTOTYPE( Cloak );
                        
                        Cloak();
      virtual void      Use( Event *ev );
      void              Powerdown( Event *ev );
	};

class Medkit : public Entity
	{
	public:
      CLASS_PROTOTYPE( Medkit );
                        
                        Medkit();
      virtual void      Use( Event *ev );
	};


class Mutagen : public InventoryItem
	{
	public:
      CLASS_PROTOTYPE( Mutagen );
                        
                        Mutagen();
      virtual void      Use( Event *ev );
      void              Powerdown( Event *ev );
	};

class Oxygen : public InventoryItem
	{
	public:
      CLASS_PROTOTYPE( Oxygen );
                        
                        Oxygen();
      virtual void      Use( Event *ev );
      virtual void      Pickup( Event *ev );
      void              Powerdown( Event *ev );
	};

#endif /* powerups.h */