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