Files
shattered-pixel-dungeon-web…/src/com/shatteredpixel/shatteredpixeldungeon/ui/ActionIndicator.java
T

100 lines
1.7 KiB
Java

package com.shatteredpixel.shatteredpixeldungeon.ui;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.watabou.noosa.Image;
public class ActionIndicator extends Tag {
Image icon;
public static Action action;
public static ActionIndicator instance;
public ActionIndicator() {
super( 0xFFFF4C );
instance = this;
setSize( 24, 24 );
visible = false;
}
@Override
public void destroy() {
super.destroy();
instance = null;
action = null;
}
@Override
protected void layout() {
super.layout();
if (icon != null){
icon.x = x + (width - icon.width()) / 2;
icon.y = y + (height - icon.height()) / 2;
PixelScene.align(icon);
if (!members.contains(icon))
add(icon);
}
}
@Override
public void update() {
super.update();
if (!Dungeon.hero.ready){
if (icon != null) icon.alpha(0.5f);
} else {
if (icon != null) icon.alpha(1f);
}
if (!visible && action != null){
visible = true;
updateIcon();
flash();
} else {
visible = action != null;
}
}
@Override
protected void onClick() {
if (action != null && Dungeon.hero.ready)
action.doAction();
}
public static void setAction(Action action){
ActionIndicator.action = action;
updateIcon();
}
public static void clearAction(Action action){
if (ActionIndicator.action == action)
ActionIndicator.action = null;
}
public static void updateIcon(){
if (instance != null){
if (instance.icon != null){
instance.icon.killAndErase();
instance.icon = null;
}
if (action != null){
instance.icon = action.getIcon();
instance.layout();
}
}
}
public interface Action{
public Image getIcon();
public void doAction();
}
}