/**
* 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;
import java.util.ArrayList;
import loon.core.LRelease;
public class LNAnimation implements LRelease {
protected float _duration;
private ArrayList<LNFrameStruct> _fsList;
protected String _name;
private ArrayList<Float> _timeList;
protected float _totalDuration;
public LNAnimation() {
this._fsList = new ArrayList<LNFrameStruct>();
this._timeList = new ArrayList<Float>();
this._totalDuration = 0f;
}
public LNAnimation(String aName, float duration) {
this._fsList = new ArrayList<LNFrameStruct>();
this._timeList = new ArrayList<Float>();
this._totalDuration = 0f;
this._name = aName;
this._duration = duration;
}
public LNAnimation(String aName, float duration, String... lists) {
this._fsList = new ArrayList<LNFrameStruct>();
this._timeList = new ArrayList<Float>();
this._name = aName;
this._duration = duration;
for (int i = 0; i < lists.length; i++) {
this.addFrameStruct(lists[i]);
}
}
public void addFrameStruct(String fs) {
this.addFrameStruct(fs, this._duration);
}
public void addFrameStruct(String fs, float time) {
LNFrameStruct item = LNDataCache.getFrameStruct(fs);
this._fsList.add(item);
this._timeList.add(time);
this._totalDuration += time;
}
public int frameCount() {
return this._fsList.size();
}
public LNFrameStruct getFrame(int idx) {
return this._fsList.get(idx);
}
public LNFrameStruct getFrameByTime(float Time) {
if (Time == 0f) {
return this._fsList.get(0);
}
Time *= this._totalDuration;
for (int i = 0; i < this._timeList.size(); i++) {
float num2 = this._timeList.get(i);
if (Time > num2) {
Time -= num2;
} else {
return this._fsList.get(i);
}
}
return this._fsList.get(this._fsList.size() - 1);
}
public float getFrameTime(int idx) {
return this._timeList.get(idx);
}
public void setAnimationTime(float total) {
int count = this._timeList.size();
if (count > 0) {
float item = total / ((float) count);
this._timeList.clear();
for (int i = 0; i < count; i++) {
this._timeList.add(item);
}
}
}
public final float getDuration() {
return this._duration;
}
public final String getName() {
return this._name;
}
public void dispose() {
if (_fsList != null) {
_fsList.clear();
}
}
}