#ifndef BOT_SENSE_H
#define BOT_SENSE_H

enum ESoundType
{
	ChargingBigBeam, // ie kame 
	ChargingMediumBeam, // ie masenko
	ChargingLightBeam, // ie genericbeam
	ChargingNonBeam, // ie big bang
	LaserSound, // ie fingerlaser
	NoInterestingSound
};

enum EAttackType
{
	ATTACK_MELEE,
	ATTACK_KIBLAST,
	ATTACK_LIGHTBEAM,
	ATTACK_MEDIUMBEAM,
	ATTACK_HEAVYBEAM,
	ATTACK_HEAVYPROJECTILE,
	ATTACK_DISC,
	ATTACK_TELEKINESIS,
	ATTACK_NONE
};

struct danger_info_s
{
	float TeleVal;
	float SwoopVal;
	float BlockVal;
	float JumpVal;
	float StopFlyVal;
	CBaseEntity *pMostDangerousEnt;
	short DangerValue;
	bool MayUseSolar;
	bool MayUseSBotLaser;
	bool MayUseMelee;

	// Construction
	danger_info_s(void) : DangerValue(0), TeleVal(0.0f), SwoopVal(0.0f), BlockVal(0.0f),
						  JumpVal(0.0f), StopFlyVal(0.0f), pMostDangerousEnt(NULL),
						  MayUseSolar(false), MayUseSBotLaser(false), MayUseMelee(false)
	{};
};

enum EReactOnDangerType
{
	ReactWithTeleport,
	ReactWithSwoop,
	ReactWithBlock,
	ReactWithJump,
	ReactWithStopFly,
	ReactWithSBotLaser,
	ReactNone
};

#define DANGER_LIGHT_MIN_VAL 		20
#define DANGER_LIGHT_MAX_VAL 		59
#define DANGER_MEDIUM_MIN_VAL 		60
#define DANGER_MEDIUM_MAX_VAL 		99
#define DANGER_HARD_MIN_VAL 		100
#define DANGER_HARD_MAX_VAL 		159
#define DANGER_HEAVY_MIN_VAL 		160

#define DangerAttack		1
#define DangerSound			2
#define DangerEnemy			3
#define DangerHit			4
#define DangerCurrentEnemy	5

#define SWOOP_TRACE_DIST_FACTOR		10.0f
#define MAX_SWOOP_TRACE_DIST		1500.0f

#define MIN_DANGER_HEAD_PERCENT		75
#define MIN_DIST_TO_FALL_DOWN	1200.0f

ESoundType ClassifySound(char *AttackName);

#endif