//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. =========
//
// The copyright to the contents herein is the property of Charles G. Cleveland.
// The contents may be used and/or copied only with the written permission of
// Charles G. Cleveland, or in accordance with the terms and conditions stipulated in
// the agreement/contract under which the contents have been supplied.
//
// Purpose: 
//
// $Workfile: AvHAmbientSound.h $
// $Date: 2002/07/10 14:38:51 $
//
//-------------------------------------------------------------------------------
// $Log: AvHAmbientSound.h,v $
// Revision 1.5  2002/07/10 14:38:51  Flayra
// - Fixed bug where sound volume wasn't being set for omnipresent sounds, added document headers
//
//===============================================================================
#ifndef AVH_AMBIENT_SOUND_H
#define AVH_AMBIENT_SOUND_H

#include "types.h"
#include "fmod.h"
#include "ui/UIHud.h"
#include "mod/AvHSpecials.h"
#include "mod/AvHSharedTypes.h"
#include "mod/AvHConstants.h"
#include "mod/AvHParticleSystem.h"
#include "common/entity_state.h"
#include "VGUI_ProgressBar.h"
#include "ui/MarqueeComponent.h"
#include "mod/AvHOrder.h"
#include "mod/AvHMessage.h"

class AvHAmbientSound
{
public:
						AvHAmbientSound(const string& inRelativeSoundName, int inVolume, int inFadeDistance, bool inLooping, const Vector& inPosition, int inEntIndex, float inTimeElapsed = -1);
						AvHAmbientSound(const AvHAmbientSound& inSource);

	void				ClearData();

	int					GetEntityIndex() const;

	void				SetPosition(const Vector& inPosition);

	void				StartPlayingIfNot();

	void				UpdateVolume(const Vector& inListenerPosition);

private:
	// Changing or adding data?  Don't forget to put it in the copy constructor!
	FSOUND_STREAM*		mStream;
	int					mChannel;
	bool				mInitialized;

	string				mSoundName;
	int					mVolume;
	int					mFadeDistance;
	bool				mLooping;
	Vector				mPosition;
	int					mEntityIndex;
	float				mTimeElapsed;
	
};

#endif