
#ifndef AI_LANCEMATEAUDIO_HPP
#define AI_LANCEMATEAUDIO_HPP

#include "ai_squad.hpp"
#pragma warning(push)
#include <stlport\list>
#include <stlport\vector>
#pragma warning(pop)



namespace MechWarrior4
{
	class Mech;
};


namespace MW4AI
{
	namespace LancemateAudio
	{
		enum Category
		{
			AUDIO_FF1,
			AUDIO_FF2,
			AUDIO_FF3,
			AUDIO_FF4,
			AUDIO_OK,
			AUDIO_OKX,
			AUDIO_NO,
			AUDIO_TARGETDESTROYED,
			AUDIO_ATNAV,
			AUDIO_EJECT,
			AUDIO_IDLE,

			MAX_AUDIO_CATEGORIES
		};

		enum Priority
		{
			PRIORITY_OPTIONAL,
			PRIORITY_MANDATORY
		};

		class AudioManager
		{
		  public:
			AudioManager();
			~AudioManager();

			void PlayAudio(Category category, const Stuff::MString& talker_suffix);
            void PlayAudio(Category category, const MechWarrior4::AI& ai);

			void Update(MechWarrior4::Group& group, MechWarrior4::Mech& leader);

			void SetPissedOff(bool pissed_off);

		  private:
			void AddAudioCue(Category category, int sound_id);
			void UpdateAudio(MechWarrior4::Group& group);

		  private:
			Stuff::Time m_LastTimeAudioPlayed[MAX_AUDIO_CATEGORIES];
			Stuff::Time m_LastTimeAnyAudioPlayed;
			Stuff::Time m_LastAudioUpdate;
			Stuff::Time m_LastTimeNotInactive;

			bool m_PissedOff;
		};
	};
};



#endif // AI_LANCEMATEAUDIO_HPP