100 lines
1.7 KiB
Java
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();
|
|
|
|
}
|
|
|
|
}
|