/**
 * Copyright 2008 - 2012
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 * 
 * @project loon
 * @author cping
 * @email：javachenpeng@yahoo.com
 * @version 0.3.3
 */
package loon.action.sprite.node;

public class LNRepeat extends LNAction {

	LNRepeat() {

	}

	protected LNAction _action;

	private int time;

	public static LNRepeat Action(LNAction action, int t) {
		LNRepeat repeat = new LNRepeat();
		repeat.time = t;
		repeat._action = action;
		repeat._duration = t * action.getDuration();
		return repeat;
	}

	public void setTarget(LNNode node) {
		super._firstTick = true;
		super._isEnd = false;
		super._target = node;
		this._action.setTarget(super._target);
	}

	public void step(float dt) {
		if (super._firstTick) {
			super._firstTick = false;
			super._elapsed = 0f;
		} else {
			super._elapsed += dt;
		}
		this._action.step(dt);
		if (this._action.isEnd()) {
			this._action.start();
		}
		if (super._elapsed > super._duration) {
			super._isEnd = true;
		}
	}

	public LNAction copy() {
		return Action(_action, time);
	}
}
