#ifndef _DISCUS_H
#define _DISCUS_H

#define DISCUS_NUM_TRAILS  5                 // this is actually 1 more than the number
                                             // of trails you'll see
extern weaponInfo_t discusWeaponInfo;

typedef struct
{
	int		hit_count;
	int		return_sound_played;

	float	return_time;
	float	drop_time;
	float	hit_time;

	Vector	v_angle;

	userEntity_t	*hit_ent;
	userEntity_t	*owner;

   userEntity_t *trail[DISCUS_NUM_TRAILS];
   Vector poslist[DISCUS_NUM_TRAILS+1];
   int validpos;
   vec3_t lastpos;
} discusHook_t;

typedef struct
{
   weapon_t weapon;

   short bladesout;
} discus_t;

static void discus_spawn_trails(userEntity_t *self);
static void discus_place_trails(userEntity_t *self);
static void discus_kill_trails(userEntity_t *self);
static void discus_throw(userEntity_t *self);

static void *ammo_command(userInventory_t *ptr, char *commandStr, void *data);
static ammo_t *ammo_create(void);

void				discus_select (userEntity_t *self);
userInventory_t		*discus_give (userEntity_t *self);
void				discus_use (userInventory_t *ptr, userEntity_t *self);
void				weapon_touch (userEntity_t *self, userEntity_t *other,cplane_t *plane, csurface_t *surf);
static	void *weapon_command (struct userInventory_s *ptr, char *commandStr, void *data);
static void toggleBlades(userEntity_t *self);
static void discus_selectFinish(userEntity_t *self);
static void discus_spin(userEntity_t *self);

#endif