v0.3.5: added an action indicator for new functionality
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
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
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@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;
|
||||
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 = 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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user