#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 );

	health_delta = arc.ReadFloat();
}

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 */
