parent
							
								
									a8ed021156
								
							
						
					
					
						commit
						9206396c8e
					
				
									
										Binary file not shown.
									
								
							
						| 
		 Before Width: | Height: | Size: 206 KiB  | 
| 
		 Before Width: | Height: | Size: 84 KiB  | 
| 
		 Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 6.8 KiB  | 
									
										Binary file not shown.
									
								
							
						@ -0,0 +1,44 @@ | 
				
			|||||||
 | 
					package mightypork.gamecore.gui.events; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import mightypork.gamecore.eventbus.BusEvent; | 
				
			||||||
 | 
					import mightypork.gamecore.gui.screens.impl.CrossfadeOverlay; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author MightyPork | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class CrossfadeRequest extends BusEvent<CrossfadeOverlay> { | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						private final String screen; | 
				
			||||||
 | 
						private final boolean fromDark; | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * @param screen screen key to show. Null = exit the app. | 
				
			||||||
 | 
						 * @param fromDark true to fade from full black (ie. start of the game) | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public CrossfadeRequest(String screen, boolean fromDark) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							super(); | 
				
			||||||
 | 
							this.screen = screen; | 
				
			||||||
 | 
							this.fromDark = fromDark; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * @param screen screen key to show. Null = exit the app. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public CrossfadeRequest(String screen) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							super(); | 
				
			||||||
 | 
							this.screen = screen; | 
				
			||||||
 | 
							this.fromDark = false; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public void handleBy(CrossfadeOverlay handler) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							handler.goToScreen(screen, fromDark); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,158 +0,0 @@ | 
				
			|||||||
package mightypork.gamecore.gui.screens; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import mightypork.gamecore.app.AppAccess; | 
					 | 
				
			||||||
import mightypork.gamecore.app.AppSubModule; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.events.LayoutChangeEvent; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.events.LayoutChangeListener; | 
					 | 
				
			||||||
import mightypork.gamecore.input.KeyBinder; | 
					 | 
				
			||||||
import mightypork.gamecore.input.KeyBindingPool; | 
					 | 
				
			||||||
import mightypork.gamecore.input.KeyStroke; | 
					 | 
				
			||||||
import mightypork.gamecore.render.Render; | 
					 | 
				
			||||||
import mightypork.gamecore.util.annot.DefaultImpl; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.constraints.rect.Rect; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * Screen class. | 
					 | 
				
			||||||
 *  | 
					 | 
				
			||||||
 * @author MightyPork | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
public abstract class BaseScreen extends AppSubModule implements Screen, KeyBinder, LayoutChangeListener { | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private final KeyBindingPool keybindings = new KeyBindingPool(); | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private volatile boolean active; | 
					 | 
				
			||||||
	private volatile boolean needSetupViewport = false; | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * @param app app access | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public BaseScreen(AppAccess app) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		super(app); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// disable events initially
 | 
					 | 
				
			||||||
		setListening(false); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		addChildClient(keybindings); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private void fireLayoutChangeEvent() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		getEventBus().sendDirectToChildren(this, new LayoutChangeEvent()); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public final void bindKey(KeyStroke stroke, Runnable task) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		keybindings.bindKey(stroke, task); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public final void unbindKey(KeyStroke stroke) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		keybindings.unbindKey(stroke); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Prepare for being shown | 
					 | 
				
			||||||
	 *  | 
					 | 
				
			||||||
	 * @param shown true to show, false to hide | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public final void setActive(boolean shown) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		if (shown) { | 
					 | 
				
			||||||
			active = true; | 
					 | 
				
			||||||
			needSetupViewport = true; | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
			fireLayoutChangeEvent(); | 
					 | 
				
			||||||
			onScreenEnter(); | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
			// enable events
 | 
					 | 
				
			||||||
			setListening(true); | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
		} else { | 
					 | 
				
			||||||
			onScreenLeave(); | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
			active = false; | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
			// disable events
 | 
					 | 
				
			||||||
			setListening(false); | 
					 | 
				
			||||||
		} | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * @return true if screen is the current screen | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public final boolean isActive() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return active; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public void onLayoutChanged() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		if (!isActive()) return; | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		needSetupViewport = true; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public final Rect getRect() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return getDisplay().getRect(); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public void render() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		if (!isActive()) return; | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		if (needSetupViewport) { | 
					 | 
				
			||||||
			Render.setupOrtho(getDisplay().getSize()); | 
					 | 
				
			||||||
		} | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		Render.pushState(); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		renderScreen(); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		Render.popState(); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Called when the screen becomes active | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	@DefaultImpl | 
					 | 
				
			||||||
	protected void onScreenEnter() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Called when the screen is no longer active | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	@DefaultImpl | 
					 | 
				
			||||||
	protected void onScreenLeave() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Render screen contents (context is ready for 2D rendering) | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	protected abstract void renderScreen(); | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,36 +0,0 @@ | 
				
			|||||||
package mightypork.gamecore.gui.screens; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import mightypork.gamecore.eventbus.BusEvent; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * @author MightyPork | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
public class CrossfadeRequest extends BusEvent<CrossfadeRequest.Listener> { | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private final String screen; | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * @param screen screen key to show. Null = exit the app. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public CrossfadeRequest(String screen) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		super(); | 
					 | 
				
			||||||
		this.screen = screen; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	public interface Listener { | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		void goToScreen(String screen); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public void handleBy(Listener handler) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		handler.goToScreen(screen); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,26 +1,30 @@ | 
				
			|||||||
package mightypork.rogue.screens.test_cat_sound; | 
					package mightypork.gamecore.gui.screens.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.gamecore.gui.components.painters.QuadPainter; | 
					import mightypork.gamecore.gui.components.painters.QuadPainter; | 
				
			||||||
import mightypork.gamecore.gui.screens.BaseScreen; | 
					import mightypork.gamecore.gui.screens.Screen; | 
				
			||||||
import mightypork.gamecore.gui.screens.ScreenLayer; | 
					import mightypork.gamecore.gui.screens.ScreenLayer; | 
				
			||||||
import mightypork.gamecore.util.math.color.Color; | 
					import mightypork.gamecore.util.math.color.Color; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class LayerColor extends ScreenLayer { | 
					public class LayerColor extends ScreenLayer { | 
				
			||||||
	 | 
						 | 
				
			||||||
	public LayerColor(BaseScreen screen, Color color) | 
						private int zIndex; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public LayerColor(Screen screen, Color color, int zIndex) | 
				
			||||||
	{ | 
						{ | 
				
			||||||
		super(screen); | 
							super(screen); | 
				
			||||||
		 | 
							 | 
				
			||||||
		root.add(new QuadPainter(color)); | 
							root.add(new QuadPainter(color)); | 
				
			||||||
 | 
							this.zIndex = zIndex; | 
				
			||||||
	} | 
						} | 
				
			||||||
	 | 
						 | 
				
			||||||
	 | 
						 | 
				
			||||||
	@Override | 
						@Override | 
				
			||||||
	public int getZIndex() | 
						public int getZIndex() | 
				
			||||||
	{ | 
						{ | 
				
			||||||
		return Integer.MIN_VALUE; | 
							return this.zIndex; | 
				
			||||||
	} | 
						} | 
				
			||||||
	 | 
						 | 
				
			||||||
} | 
					} | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package mightypork.rogue.screens.gamescreen; | 
					package mightypork.rogue.screens.game; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.gamecore.gui.AlignX; | 
					import mightypork.gamecore.gui.AlignX; | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package mightypork.rogue.screens.gamescreen; | 
					package mightypork.rogue.screens.game; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.gamecore.gui.AlignX; | 
					import mightypork.gamecore.gui.AlignX; | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package mightypork.rogue.screens.gamescreen; | 
					package mightypork.rogue.screens.game; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.gamecore.eventbus.events.Updateable; | 
					import mightypork.gamecore.eventbus.events.Updateable; | 
				
			||||||
@ -1,27 +1,36 @@ | 
				
			|||||||
package mightypork.rogue.screens.gamescreen; | 
					package mightypork.rogue.screens.game; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Random; | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.gamecore.app.AppAccess; | 
					import mightypork.gamecore.app.AppAccess; | 
				
			||||||
import mightypork.gamecore.gui.screens.LayeredScreen; | 
					import mightypork.gamecore.gui.screens.LayeredScreen; | 
				
			||||||
 | 
					import mightypork.gamecore.input.KeyStroke; | 
				
			||||||
 | 
					import mightypork.gamecore.input.Keys; | 
				
			||||||
import mightypork.rogue.world.WorldProvider; | 
					import mightypork.rogue.world.WorldProvider; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ScreenGame extends LayeredScreen { | 
					public class ScreenGame extends LayeredScreen { | 
				
			||||||
	 | 
						 | 
				
			||||||
	 | 
						 | 
				
			||||||
 | 
						private Random rand = new Random(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public ScreenGame(AppAccess app) | 
						public ScreenGame(AppAccess app) | 
				
			||||||
	{ | 
						{ | 
				
			||||||
		super(app); | 
							super(app); | 
				
			||||||
		 | 
							 | 
				
			||||||
		addLayer(new HudLayer(this)); | 
							addLayer(new HudLayer(this)); | 
				
			||||||
		addLayer(new WorldLayer(this)); | 
							addLayer(new WorldLayer(this)); | 
				
			||||||
	} | 
					 | 
				
			||||||
		 | 
							 | 
				
			||||||
 | 
							bindKey(new KeyStroke(Keys.N), new Runnable() { | 
				
			||||||
			 | 
								 | 
				
			||||||
			@Override | 
								@Override | 
				
			||||||
	public String getName() | 
								public void run() | 
				
			||||||
			{ | 
								{ | 
				
			||||||
		return "game_screen"; | 
									WorldProvider.get().createWorld(rand .nextLong()); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
	} | 
						} | 
				
			||||||
	 | 
						 | 
				
			||||||
	 | 
						 | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package mightypork.rogue.screens.gamescreen; | 
					package mightypork.rogue.screens.game; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.gamecore.gui.screens.Screen; | 
					import mightypork.gamecore.gui.screens.Screen; | 
				
			||||||
@ -1,108 +0,0 @@ | 
				
			|||||||
package mightypork.rogue.screens.test_cat_sound; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.Random; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import mightypork.gamecore.gui.AlignX; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.components.painters.ImagePainter; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.components.painters.QuadPainter; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.components.painters.TextPainter; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.screens.BaseScreen; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.screens.ScreenLayer; | 
					 | 
				
			||||||
import mightypork.gamecore.input.KeyStroke; | 
					 | 
				
			||||||
import mightypork.gamecore.input.Keys; | 
					 | 
				
			||||||
import mightypork.gamecore.input.events.MouseButtonEvent; | 
					 | 
				
			||||||
import mightypork.gamecore.input.events.MouseButtonListener; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.Easing; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.color.Color; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.constraints.num.mutable.NumAnimated; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.constraints.rect.Rect; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.constraints.vect.Vect; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.constraints.vect.mutable.VectAnimated; | 
					 | 
				
			||||||
import mightypork.rogue.Res; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class LayerFlyingCat extends ScreenLayer implements MouseButtonListener { | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private final NumAnimated size = new NumAnimated(300, Easing.SINE_BOTH); | 
					 | 
				
			||||||
	private final VectAnimated cat_position = VectAnimated.makeVar(Easing.ELASTIC_OUT); | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private final Random rand = new Random(); | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	public LayerFlyingCat(BaseScreen screen) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		super(screen); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// timing
 | 
					 | 
				
			||||||
		updated.add(size); | 
					 | 
				
			||||||
		updated.add(cat_position); | 
					 | 
				
			||||||
		size.setTo(root.height().perc(60)); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// cat
 | 
					 | 
				
			||||||
		cat_position.setTo(getDisplay().getCenter()); | 
					 | 
				
			||||||
		cat_position.setDefaultDuration(3); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		final ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten2")); | 
					 | 
				
			||||||
		cat.setRect(Rect.make(size).centerTo(cat_position)); | 
					 | 
				
			||||||
		cat.enableCaching(false); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// frame around cat
 | 
					 | 
				
			||||||
		final QuadPainter cat_frame = QuadPainter.gradV(Color.YELLOW, Color.RED); | 
					 | 
				
			||||||
		cat_frame.setRect(cat.grow(cat.height().mul(0.05))); | 
					 | 
				
			||||||
		cat_frame.enableCaching(false); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// frame shadow
 | 
					 | 
				
			||||||
		final QuadPainter cat_shadow = new QuadPainter(Color.dark(0.4)); | 
					 | 
				
			||||||
		cat_shadow.setRect(cat_frame.move(Vect.make(cat.height().mul(0.05)))); | 
					 | 
				
			||||||
		cat_shadow.enableCaching(false); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// add to root layout
 | 
					 | 
				
			||||||
		root.add(cat_shadow); | 
					 | 
				
			||||||
		root.add(cat_frame); | 
					 | 
				
			||||||
		root.add(cat); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		// Meow
 | 
					 | 
				
			||||||
		final TextPainter tp = new TextPainter(Res.getFont("press_start")); | 
					 | 
				
			||||||
		tp.setAlign(AlignX.CENTER); | 
					 | 
				
			||||||
		tp.setColor(Color.YELLOW); | 
					 | 
				
			||||||
		tp.setText("Meow!"); | 
					 | 
				
			||||||
		tp.setShadow(Color.dark(0.5), Vect.make(tp.height().div(16))); | 
					 | 
				
			||||||
		tp.setRect(Rect.make(cat.height().half()).centerTo(mouse)); | 
					 | 
				
			||||||
		tp.enableCaching(false); | 
					 | 
				
			||||||
		root.add(tp); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		/* | 
					 | 
				
			||||||
		 * Register keys | 
					 | 
				
			||||||
		 */ | 
					 | 
				
			||||||
		bindKey(new KeyStroke(Keys.RETURN), new Runnable() { | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
			@Override | 
					 | 
				
			||||||
			public void run() | 
					 | 
				
			||||||
			{ | 
					 | 
				
			||||||
				cat_position.setTo(getDisplay().getCenter()); | 
					 | 
				
			||||||
			} | 
					 | 
				
			||||||
		}); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public void receive(MouseButtonEvent event) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		if (!event.isDown()) return; | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		cat_position.animate(event.getPos()); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		final double newSize = root.height().perc(10 + rand.nextInt(40)).value(); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		size.animate(newSize, 1); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public int getZIndex() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return 10; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,52 +0,0 @@ | 
				
			|||||||
package mightypork.rogue.screens.test_cat_sound; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import mightypork.gamecore.app.AppAccess; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.screens.LayeredScreen; | 
					 | 
				
			||||||
import mightypork.gamecore.input.KeyStroke; | 
					 | 
				
			||||||
import mightypork.gamecore.input.Keys; | 
					 | 
				
			||||||
import mightypork.rogue.events.ActionRequest; | 
					 | 
				
			||||||
import mightypork.rogue.events.ActionRequest.RequestType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class ScreenTestCat extends LayeredScreen { | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	public ScreenTestCat(AppAccess app) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		super(app); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		addLayer(new LayerFlyingCat(this)); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		bindKey(new KeyStroke(Keys.ESCAPE), new Runnable() { | 
					 | 
				
			||||||
			 | 
					 | 
				
			||||||
			@Override | 
					 | 
				
			||||||
			public void run() | 
					 | 
				
			||||||
			{ | 
					 | 
				
			||||||
				getSoundSystem().fadeOutAllLoops(); | 
					 | 
				
			||||||
				getEventBus().sendDelayed(new ActionRequest(RequestType.SHUTDOWN), 3); | 
					 | 
				
			||||||
			} | 
					 | 
				
			||||||
		}); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	protected void onScreenEnter() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		getSoundSystem().fadeOutAllLoops(); | 
					 | 
				
			||||||
		//Res.getLoop("test.wilderness").fadeIn();
 | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	protected void onScreenLeave() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		//Res.getLoop("test.wilderness").fadeOut();
 | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public String getName() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return "test.cat"; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,41 +0,0 @@ | 
				
			|||||||
package mightypork.rogue.screens.test_render; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import mightypork.gamecore.gui.screens.BaseScreen; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.screens.ScreenLayer; | 
					 | 
				
			||||||
import mightypork.gamecore.render.Render; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.color.Color; | 
					 | 
				
			||||||
import mightypork.gamecore.util.math.constraints.rect.proxy.RectBound; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class LayerTestGradient extends ScreenLayer { | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	private final RectBound pos1; | 
					 | 
				
			||||||
	private final RectBound pos2; | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	public LayerTestGradient(BaseScreen screen) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		super(screen); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		pos1 = root.topEdge().growDown(64); | 
					 | 
				
			||||||
		pos2 = root.leftEdge().growUp(-64).growRight(64); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public void render() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		Render.quadColor(root, Color.WHITE, Color.BLUE, Color.BLACK, Color.MAGENTA); | 
					 | 
				
			||||||
		Render.quadGradH(pos1.getRect(), Color.GREEN, Color.RED); | 
					 | 
				
			||||||
		Render.quadGradV(pos2.getRect(), Color.WHITE, Color.MAGENTA); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public int getZIndex() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return 0; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,24 +0,0 @@ | 
				
			|||||||
package mightypork.rogue.screens.test_render; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import mightypork.gamecore.app.AppAccess; | 
					 | 
				
			||||||
import mightypork.gamecore.gui.screens.LayeredScreen; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class ScreenTestRender extends LayeredScreen { | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	public ScreenTestRender(AppAccess app) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		super(app); | 
					 | 
				
			||||||
		 | 
					 | 
				
			||||||
		addLayer(new LayerTestGradient(this)); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
	@Override | 
					 | 
				
			||||||
	public String getName() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return "test.render"; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,32 +1,38 @@ | 
				
			|||||||
package mightypork.rogue.world.gen.themes; | 
					package mightypork.rogue.world.gen.themes; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import mightypork.rogue.world.gen.Theme; | 
					import mightypork.rogue.world.gen.MapTheme; | 
				
			||||||
import mightypork.rogue.world.tile.TileModel; | 
					import mightypork.rogue.world.tile.TileModel; | 
				
			||||||
import mightypork.rogue.world.tile.Tiles; | 
					import mightypork.rogue.world.tile.Tiles; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// basic dungeon theme
 | 
					// basic dungeon theme
 | 
				
			||||||
public class ThemeDungeon implements Theme { | 
					public class ThemeBrick implements MapTheme { | 
				
			||||||
	 | 
						 | 
				
			||||||
	@Override | 
						@Override | 
				
			||||||
	public TileModel wall() | 
						public TileModel wall() | 
				
			||||||
	{ | 
						{ | 
				
			||||||
		return Tiles.WALL_BRICK; | 
							return Tiles.BRICK_WALL; | 
				
			||||||
	} | 
						} | 
				
			||||||
	 | 
						 | 
				
			||||||
	 | 
						 | 
				
			||||||
	@Override | 
						@Override | 
				
			||||||
	public TileModel floor() | 
						public TileModel floor() | 
				
			||||||
	{ | 
						{ | 
				
			||||||
		return Tiles.FLOOR_DARK; | 
							return Tiles.BRICK_FLOOR; | 
				
			||||||
	} | 
						} | 
				
			||||||
	 | 
						 | 
				
			||||||
	 | 
						 | 
				
			||||||
	@Override | 
						@Override | 
				
			||||||
	public TileModel door() | 
						public TileModel door() | 
				
			||||||
	{ | 
						{ | 
				
			||||||
		return Tiles.DOOR; | 
							return Tiles.BRICK_DOOR; | 
				
			||||||
	} | 
						} | 
				
			||||||
	 | 
						 | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public TileModel passage() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return Tiles.BRICK_PASSAGE; | 
				
			||||||
 | 
						} | 
				
			||||||
} | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package mightypork.rogue.world.tile.tiles; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import mightypork.rogue.world.tile.TileModel; | 
				
			||||||
 | 
					import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||||
 | 
					import mightypork.rogue.world.tile.TileType; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Collapsed wall that's walk-through | 
				
			||||||
 | 
					 *  | 
				
			||||||
 | 
					 * @author MightyPork | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class WallPassageTile extends SolidTile { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public WallPassageTile(TileModel model, TileRenderer renderer) { | 
				
			||||||
 | 
							super(model, renderer); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public TileType getType() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return TileType.PASSAGE; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public boolean isWalkable() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						 | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue