parent
021c68bc69
commit
8d23f7959c
@ -1,4 +1,4 @@ |
||||
package mightypork.rogue.screens.select_world; |
||||
package mightypork.gamecore.gui.components.layout; |
||||
|
||||
|
||||
import java.util.ArrayList; |
@ -0,0 +1,32 @@ |
||||
package mightypork.rogue.screens; |
||||
|
||||
import mightypork.gamecore.eventbus.BusEvent; |
||||
|
||||
|
||||
public class LoaderRequest extends BusEvent<LoadingOverlay> { |
||||
|
||||
private final boolean show; |
||||
private final String msg; |
||||
|
||||
|
||||
public LoaderRequest(boolean show, String msg) { |
||||
this.show = show; |
||||
this.msg = msg; |
||||
} |
||||
|
||||
public LoaderRequest(boolean show) { |
||||
this.show = show; |
||||
this.msg = null; |
||||
} |
||||
|
||||
@Override |
||||
protected void handleBy(LoadingOverlay handler) |
||||
{ |
||||
if(show) { |
||||
handler.show(msg); |
||||
}else { |
||||
handler.hide(); |
||||
} |
||||
} |
||||
|
||||
} |
@ -0,0 +1,91 @@ |
||||
package mightypork.rogue.screens; |
||||
|
||||
|
||||
import mightypork.gamecore.app.AppAccess; |
||||
import mightypork.gamecore.gui.AlignX; |
||||
import mightypork.gamecore.gui.components.painters.QuadPainter; |
||||
import mightypork.gamecore.gui.components.painters.TextPainter; |
||||
import mightypork.gamecore.gui.events.ScreenRequest; |
||||
import mightypork.gamecore.gui.screens.Overlay; |
||||
import mightypork.gamecore.util.math.Easing; |
||||
import mightypork.gamecore.util.math.color.Color; |
||||
import mightypork.gamecore.util.math.color.pal.PAL16; |
||||
import mightypork.gamecore.util.math.color.pal.RGB; |
||||
import mightypork.gamecore.util.math.constraints.num.Num; |
||||
import mightypork.gamecore.util.math.constraints.num.mutable.NumAnimated; |
||||
import mightypork.gamecore.util.math.constraints.rect.Rect; |
||||
import mightypork.gamecore.util.math.timing.TimedTask; |
||||
import mightypork.gamecore.util.strings.StringProvider; |
||||
import mightypork.rogue.Res; |
||||
import mightypork.rogue.events.ActionRequest; |
||||
import mightypork.rogue.events.ActionRequest.RequestType; |
||||
|
||||
|
||||
public class LoadingOverlay extends Overlay { |
||||
|
||||
private static final double T_IN = 0.5; |
||||
private static final double T_OUT = 1; |
||||
|
||||
private final NumAnimated alpha = new NumAnimated(0); |
||||
|
||||
private final StringProvider msgStrProv = new StringProvider() { |
||||
|
||||
@Override |
||||
public String getString() |
||||
{ |
||||
return msg == null ? "" : msg; |
||||
} |
||||
}; |
||||
private String msg; |
||||
|
||||
|
||||
public LoadingOverlay(AppAccess app) { |
||||
super(app); |
||||
|
||||
final QuadPainter qp = new QuadPainter(PAL16.SEABLUE); |
||||
qp.setRect(root); |
||||
root.add(qp); |
||||
|
||||
updated.add(alpha); |
||||
|
||||
Rect textRect = root.shrink(Num.ZERO, root.height().perc(48)); |
||||
textRect = textRect.moveY(root.height().perc(-10)); |
||||
|
||||
final TextPainter tp = new TextPainter(Res.getFont("thick"), AlignX.CENTER, RGB.WHITE, msgStrProv); |
||||
|
||||
tp.setRect(textRect); |
||||
tp.setShadow(RGB.BLACK_60, tp.height().mul(1/8D).toVectXY()); |
||||
root.add(tp); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int getZIndex() |
||||
{ |
||||
return 10001; // not too high, so app can put something on top
|
||||
} |
||||
|
||||
|
||||
public void show(String message) |
||||
{ |
||||
this.msg = message; |
||||
alpha.setEasing(Easing.SINE_IN); |
||||
alpha.fadeIn(T_IN); |
||||
} |
||||
|
||||
|
||||
public void hide() |
||||
{ |
||||
|
||||
alpha.setEasing(Easing.SINE_OUT); |
||||
alpha.fadeOut(T_OUT); |
||||
} |
||||
|
||||
@Override |
||||
public void render() |
||||
{ |
||||
Color.pushAlpha(alpha); |
||||
super.render(); |
||||
Color.popAlpha(); |
||||
} |
||||
} |
Loading…
Reference in new issue