/**
* 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 loon.action.sprite.SpriteBatch;
import loon.utils.MathUtils;
public class LNProgressBar extends LNSprite {
private float _percent;
private BarType _type;
public LNProgressBar() {
this._type = BarType.PROGRESS_BAR_LEFT;
}
public LNProgressBar(String fsName) {
super(fsName);
this._type = BarType.PROGRESS_BAR_LEFT;
this._percent = 1f;
}
private float[] pos;
private float rotation;
private float[] scale;
public void draw(SpriteBatch batch) {
if (super._visible && (super._texture != null)) {
pos = super.convertToWorldPos();
rotation = super.convertToWorldRot();
scale = super.convertToWorldScale();
batch.setColor(super._color.r, super._color.g, super._color.b,
super._alpha);
if (this._type == BarType.PROGRESS_BAR_LEFT) {
batch.draw(_texture, pos[0], pos[1], _anchor.x, _anchor.y,
super._size_width, super._size_height, scale[0],
scale[1], MathUtils.toDegrees(rotation), super._left,
super._top, super._orig_width * this._percent,
super._orig_height, _flipX, _flipY);
} else if (this._type == BarType.PROGRESS_BAR_RIGHT) {
int offsetX = ((int) (super._orig_width * (1f - this._percent)));
batch.draw(_texture, pos[0] + offsetX, pos[1], _anchor.x,
_anchor.y, super._size_width, super._size_height,
scale[0], scale[1], MathUtils.toDegrees(rotation),
(super._left) + offsetX, super._top,
(int) (super._orig_width * this._percent),
super._orig_height, _flipX, _flipY);
} else if (this._type == BarType.PROGRESS_BAR_TOP) {
batch.draw(_texture, pos[0], pos[1], _anchor.x, _anchor.y,
super._size_width, super._size_height, scale[0],
scale[1], MathUtils.toDegrees(rotation), super._left,
super._top, super._orig_width,
(super._orig_height * this._percent), _flipX, _flipY);
} else if (this._type == BarType.PROGRESS_BAR_BOTTOM) {
int offsetY = ((int) (super._orig_height * (1f - this._percent)));
batch.draw(_texture, pos[0], pos[1] + offsetY, _anchor.x,
_anchor.y, super._size_width, super._size_height,
scale[0], scale[1], MathUtils.toDegrees(rotation),
super._left, (super._top)
+ ((int) (super._orig_height * this._percent)),
super._orig_width,
(int) (super._orig_height * this._percent), _flipX,
_flipY);
}
batch.resetColor();
}
}
public void setType(BarType type) {
this._type = type;
}
public float getPercent() {
return this._percent;
}
public void setPercent(float p) {
this._percent = p;
}
public enum BarType {
PROGRESS_BAR_LEFT, PROGRESS_BAR_RIGHT, PROGRESS_BAR_TOP, PROGRESS_BAR_BOTTOM
}
}