#region Copyright & License Information
/*
 * Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
 * This file is part of OpenRA, which is free software. It is made
 * available to you under the terms of the GNU General Public License
 * as published by the Free Software Foundation. For more information,
 * see COPYING.
 */
#endregion

using OpenRA.Activities;
using OpenRA.Traits;

namespace OpenRA.Mods.RA.Traits
{
	class AttackOmniInfo : AttackBaseInfo
	{
		public override object Create(ActorInitializer init) { return new AttackOmni(init.self, this); }
	}

	class AttackOmni : AttackBase, ISync
	{
		public AttackOmni(Actor self, AttackOmniInfo info)
			: base(self, info) { }

		public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
		{
			return new SetTarget(this, newTarget);
		}

		class SetTarget : Activity
		{
			readonly Target target;
			readonly AttackOmni attack;

			public SetTarget(AttackOmni attack, Target target)
			{
				this.target = target;
				this.attack = attack;
			}

			public override Activity Tick(Actor self)
			{
				if (IsCanceled || !target.IsValidFor(self))
					return NextActivity;

				attack.DoAttack(self, target);
				return this;
			}
		}
	}
}
