namespace Strawberry.Sample
{
	public class MovingJumpThru	: JumpThru
	{
		private Point moveFrom;
		private Point moveTo;
		private float moveTime;

		private float movingLerp;
		private bool movingPositive;

		public this(Point pos, int width, Point moveTo, float moveTime)
			: base(pos, width)
		{
			moveFrom = Position;
			this.moveTo = moveTo;
			this.moveTime = moveTime;

			movingLerp = 0;
			movingPositive = true;
		}

		public override void Update()
		{
			base.Update();

			if (movingPositive)
			{
				movingLerp += Time.Delta / moveTime;
				if (movingLerp >= 1)
				{
					movingLerp = 1;
					movingPositive = false;
				}
			}
			else
			{
				movingLerp -= Time.Delta / moveTime;
				if (movingLerp <= 0)
				{
					movingLerp = 0;
					movingPositive = true;
				}
			}

			let target = Vector.Lerp(moveFrom, moveTo, Ease.CubeInOut(movingLerp));
			MoveTo(target);
		}
	}
}
