namespace BP
{
	namespace Weapon
	{
		class ChargeDart : ScriptWeapon
		{   
			//------------------------------------------------------------------------------------------------------------------------
			ChargeDart(kWeapon @actor)
			{
				id = kWpn_ChargeDart;
				super(actor);
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnBeginFire(void) override
			{
				ScriptWeapon::OnBeginFire();
				self.PlaySound("sounds/shaders/Charge Dart PowerUp.ksnd");
			}
			//------------------------------------------------------------------------------------------------------------------------
			void OnEndFire(void) override
			{
				ScriptWeapon::OnEndFire();
				
				self.AnimTrackComponent().Flags() |= ANF_CYCLECOMPLETED;
				
				self.PlaySound("sounds/shaders/Charge Dart Fire.ksnd");
				self.FireProjectile("particles/Charge_Dart.particle", kVec3(0, 0, 0));
				
				float scalar = self.AnimTrackComponent().PlayTime() * 2.75f;
				if(scalar > 6.0f)
				{
					scalar = 6.0f;
				}
				
				switch(int(scalar))
				{
				case 0:
					self.FireProjectile("particles/Charge_Dart_1.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(1);
					break;
				case 1:
					self.FireProjectile("particles/Charge_Dart_2.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(1);
					break;
				case 2:
					self.FireProjectile("particles/Charge_Dart_3.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(1);
					break;
				case 3:
					self.FireProjectile("particles/Charge_Dart_4.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(1);
					break;
				case 4:
					self.FireProjectile("particles/Charge_Dart_5.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(1);
					break;
				case 5:
					self.FireProjectile("particles/Charge_Dart_6.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(2);
					break;
				case 6:
					self.FireProjectile("particles/Charge_Dart_7.particle", kVec3(0, -10, 0));
					self.Owner().ConsumeAmmo(3);
					break;
				}
			}
			//------------------------------------------------------------------------------------------------------------------------
		};
	}
}
