namespace BP
{
	namespace Weapon
	{
		class FlameThrower : ScriptWeapon
		{   
			float m_fTimeBeforeAmmoConsumption;
			//------------------------------------------------------------------------------------------------------------------------
			FlameThrower(kWeapon @actor)
			{
				id = kWpn_FlameThrower;
				super(actor);
				m_fTimeBeforeAmmoConsumption = 0;
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnSerialize(kDict& out dict)
			{
				SERIALIZE(m_fTimeBeforeAmmoConsumption);
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnDeserialize(kDict& in dict)
			{
				DESERIALIZE_FLOAT(m_fTimeBeforeAmmoConsumption);
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnBeginFire(void) override
			{
				ScriptWeapon::OnBeginFire();
				self.StopLoopingSounds();
				self.PlayLoopingSound("sounds/shaders/Flame Thrower Loop.ksnd");
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnEndFire(void) override
			{
				ScriptWeapon::OnEndFire();
				self.AnimTrackComponent().Flags() |= ANF_CYCLECOMPLETED;
				
				self.StopLoopingSounds();
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnFire(void) override
			{
				ScriptWeapon::OnFire();
				const float fAmount = IsMultiplayer() ? 12 : 6;
				
				m_fTimeBeforeAmmoConsumption += (GAME_DELTA_TIME*fAmount);
				
				if (m_fTimeBeforeAmmoConsumption >= 1.0f)
				{
					self.Owner().ConsumeAmmo(1);
					m_fTimeBeforeAmmoConsumption = 0;
				}
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnLower(void) override
			{
				ScriptWeapon::OnLower();
				self.StopLoopingSounds();
			}
			//------------------------------------------------------------------------------------------------------------------------
		};
	}
}
