overlays system

v5stable
ondra 10 years ago
parent 3842285038
commit 56b61e5936
  1. 2
      src/mightypork/gamecore/control/BaseApp.java
  2. 2
      src/mightypork/gamecore/control/GameLoop.java
  3. 10
      src/mightypork/gamecore/control/events/ViewportChangeEvent.java
  4. 1
      src/mightypork/gamecore/gui/components/PluggableRenderable.java
  5. 3
      src/mightypork/gamecore/gui/components/VisualComponent.java
  6. 160
      src/mightypork/gamecore/gui/screens/BaseScreen.java
  7. 25
      src/mightypork/gamecore/gui/screens/LayeredScreen.java
  8. 140
      src/mightypork/gamecore/gui/screens/Overlay.java
  9. 151
      src/mightypork/gamecore/gui/screens/Screen.java
  10. 122
      src/mightypork/gamecore/gui/screens/ScreenLayer.java
  11. 47
      src/mightypork/gamecore/gui/screens/ScreenRegistry.java
  12. 6
      src/mightypork/gamecore/render/DisplaySystem.java
  13. 4
      src/mightypork/gamecore/render/Renderable.java
  14. 8
      src/mightypork/rogue/App.java
  15. 11
      src/mightypork/rogue/screens/LayerFps.java
  16. 4
      src/mightypork/rogue/screens/main_menu/MenuLayer.java
  17. 4
      src/mightypork/rogue/screens/test_bouncyboxes/LayerBouncyBoxes.java
  18. 4
      src/mightypork/rogue/screens/test_cat_sound/LayerColor.java
  19. 4
      src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java
  20. 6
      src/mightypork/rogue/screens/test_render/LayerTestGradient.java
  21. 2
      src/mightypork/util/constraints/ConstraintCache.java
  22. 4
      src/mightypork/util/constraints/num/caching/AbstractNumCache.java
  23. 2
      src/mightypork/util/constraints/num/caching/NumCache.java
  24. 2
      src/mightypork/util/constraints/rect/caching/AbstractRectCache.java
  25. 2
      src/mightypork/util/constraints/rect/caching/RectCache.java
  26. 2
      src/mightypork/util/constraints/vect/caching/AbstractVectCache.java
  27. 2
      src/mightypork/util/constraints/vect/caching/VectCache.java

@ -255,7 +255,7 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler {
bus.addChannel(LayoutChangeEvent.class, LayoutChangeEvent.Listener.class); bus.addChannel(LayoutChangeEvent.class, LayoutChangeEvent.Listener.class);
// input events // input events
bus.addChannel(ScreenChangeEvent.class, ScreenChangeEvent.Listener.class); bus.addChannel(ViewportChangeEvent.class, ViewportChangeEvent.Listener.class);
bus.addChannel(KeyEvent.class, KeyEvent.Listener.class); bus.addChannel(KeyEvent.class, KeyEvent.Listener.class);
bus.addChannel(MouseMotionEvent.class, MouseMotionEvent.Listener.class); bus.addChannel(MouseMotionEvent.class, MouseMotionEvent.Listener.class);
bus.addChannel(MouseButtonEvent.class, MouseButtonEvent.Listener.class); bus.addChannel(MouseButtonEvent.class, MouseButtonEvent.Listener.class);

@ -6,8 +6,8 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import mightypork.gamecore.control.events.MainLoopTaskRequest; import mightypork.gamecore.control.events.MainLoopTaskRequest;
import mightypork.gamecore.control.events.UpdateEvent; import mightypork.gamecore.control.events.UpdateEvent;
import mightypork.gamecore.gui.components.Renderable;
import mightypork.gamecore.gui.screens.ScreenRegistry; import mightypork.gamecore.gui.screens.ScreenRegistry;
import mightypork.gamecore.render.Renderable;
import mightypork.util.annotations.DefaultImpl; import mightypork.util.annotations.DefaultImpl;
import mightypork.util.control.timing.TimerDelta; import mightypork.util.control.timing.TimerDelta;

@ -10,7 +10,7 @@ import mightypork.util.control.eventbus.events.Event;
* *
* @author MightyPork * @author MightyPork
*/ */
public class ScreenChangeEvent implements Event<ScreenChangeEvent.Listener> { public class ViewportChangeEvent implements Event<ViewportChangeEvent.Listener> {
private final boolean fullscreen; private final boolean fullscreen;
private final Vect screenSize; private final Vect screenSize;
@ -22,7 +22,7 @@ public class ScreenChangeEvent implements Event<ScreenChangeEvent.Listener> {
* @param fullscreen is now fullscreen * @param fullscreen is now fullscreen
* @param size new screen size * @param size new screen size
*/ */
public ScreenChangeEvent(boolean fsChanged, boolean fullscreen, Vect size) { public ViewportChangeEvent(boolean fsChanged, boolean fullscreen, Vect size) {
this.fullscreen = fullscreen; this.fullscreen = fullscreen;
this.screenSize = size; this.screenSize = size;
this.fsChanged = fsChanged; this.fsChanged = fsChanged;
@ -59,11 +59,11 @@ public class ScreenChangeEvent implements Event<ScreenChangeEvent.Listener> {
@Override @Override
public void handleBy(Listener handler) public void handleBy(Listener handler)
{ {
handler.receive(this); handler.onViewportChanged(this);
} }
/** /**
* {@link ScreenChangeEvent} listener * {@link ViewportChangeEvent} listener
* *
* @author MightyPork * @author MightyPork
*/ */
@ -74,6 +74,6 @@ public class ScreenChangeEvent implements Event<ScreenChangeEvent.Listener> {
* *
* @param event * @param event
*/ */
void receive(ScreenChangeEvent event); void onViewportChanged(ViewportChangeEvent event);
} }
} }

@ -1,6 +1,7 @@
package mightypork.gamecore.gui.components; package mightypork.gamecore.gui.components;
import mightypork.gamecore.render.Renderable;
import mightypork.util.constraints.rect.Rect; import mightypork.util.constraints.rect.Rect;
import mightypork.util.constraints.rect.proxy.PluggableRectBound; import mightypork.util.constraints.rect.proxy.PluggableRectBound;
import mightypork.util.constraints.rect.proxy.RectBound; import mightypork.util.constraints.rect.proxy.RectBound;

@ -2,6 +2,7 @@ package mightypork.gamecore.gui.components;
import mightypork.gamecore.control.events.LayoutChangeEvent; import mightypork.gamecore.control.events.LayoutChangeEvent;
import mightypork.gamecore.render.Renderable;
import mightypork.util.annotations.DefaultImpl; import mightypork.util.annotations.DefaultImpl;
import mightypork.util.constraints.rect.Rect; import mightypork.util.constraints.rect.Rect;
import mightypork.util.constraints.rect.caching.AbstractRectCache; import mightypork.util.constraints.rect.caching.AbstractRectCache;
@ -79,7 +80,7 @@ public abstract class VisualComponent extends AbstractRectCache implements Compo
@Override @Override
public final void onChange() public final void onConstraintChanged()
{ {
updateLayout(); updateLayout();
} }

@ -0,0 +1,160 @@
package mightypork.gamecore.gui.screens;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.AppSubModule;
import mightypork.gamecore.control.events.LayoutChangeEvent;
import mightypork.gamecore.control.events.ViewportChangeEvent;
import mightypork.gamecore.input.KeyBinder;
import mightypork.gamecore.input.KeyBindingPool;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.render.Render;
import mightypork.util.annotations.DefaultImpl;
import mightypork.util.constraints.rect.Rect;
/**
* Screen class.
*
* @author MightyPork
*/
public abstract class BaseScreen extends AppSubModule implements Screen, KeyBinder, ViewportChangeEvent.Listener {
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 bindKeyStroke(KeyStroke stroke, Runnable task)
{
keybindings.bindKeyStroke(stroke, task);
}
@Override
public final void unbindKeyStroke(KeyStroke stroke)
{
keybindings.unbindKeyStroke(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 final void onViewportChanged(ViewportChangeEvent event)
{
if (!isActive()) return;
// fire event
fireLayoutChangeEvent();
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();
}

@ -5,7 +5,6 @@ import java.util.Collection;
import java.util.TreeSet; import java.util.TreeSet;
import mightypork.gamecore.control.AppAccess; import mightypork.gamecore.control.AppAccess;
import mightypork.util.constraints.vect.Vect;
/** /**
@ -13,7 +12,7 @@ import mightypork.util.constraints.vect.Vect;
* *
* @author MightyPork * @author MightyPork
*/ */
public abstract class LayeredScreen extends Screen { public abstract class LayeredScreen extends BaseScreen {
private final Collection<ScreenLayer> layers = new TreeSet<>(); private final Collection<ScreenLayer> layers = new TreeSet<>();
@ -47,18 +46,6 @@ public abstract class LayeredScreen extends Screen {
} }
/**
* Remove a layer
*
* @param layer
*/
protected void removeLayer(ScreenLayer layer)
{
this.layers.remove(layer);
removeChildClient(layer);
}
@Override @Override
protected void onScreenEnter() protected void onScreenEnter()
{ {
@ -71,19 +58,9 @@ public abstract class LayeredScreen extends Screen {
@Override @Override
protected void onScreenLeave() protected void onScreenLeave()
{ {
for (final ScreenLayer layer : layers) { for (final ScreenLayer layer : layers) {
layer.onScreenLeave(); layer.onScreenLeave();
} }
} }
@Override
protected void onSizeChanged(Vect size)
{
for (final ScreenLayer layer : layers) {
layer.onSizeChanged(size);
}
}
} }

@ -0,0 +1,140 @@
package mightypork.gamecore.gui.screens;
import java.util.Collection;
import java.util.LinkedHashSet;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.AppSubModule;
import mightypork.gamecore.control.events.LayoutChangeEvent;
import mightypork.gamecore.gui.Hideable;
import mightypork.gamecore.gui.components.VisualComponent;
import mightypork.gamecore.gui.components.layout.ConstraintLayout;
import mightypork.gamecore.input.KeyBinder;
import mightypork.gamecore.input.KeyBindingPool;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.render.Renderable;
import mightypork.util.annotations.DefaultImpl;
import mightypork.util.constraints.vect.Vect;
import mightypork.util.control.timing.Updateable;
/**
* Abstract overlay.<br>
* Overlay is connected to event bus and is renderable.
*
* @author MightyPork
*/
public abstract class Overlay extends AppSubModule implements Updateable, Comparable<Overlay>, Renderable, KeyBinder, Hideable, LayoutChangeEvent.Listener {
private boolean visible = true;
private final KeyBindingPool keybindings = new KeyBindingPool();
/** Root layout, rendered and attached to the event bus. */
protected final ConstraintLayout root;
/** Constraint: Mouse position. */
protected final Vect mouse;
/** Extra rendered items (outside root) */
protected final Collection<Renderable> rendered = new LinkedHashSet<>();
/** Extra updated items (outside root - those can just implement Updateable) */
protected final Collection<Updateable> updated = new LinkedHashSet<>();
public Overlay(AppAccess app) {
super(app);
this.mouse = getInput().getMousePos();
this.root = new ConstraintLayout(app, getDisplay());
addChildClient(root);
addChildClient(keybindings);
rendered.add(root);
}
@Override
public final void bindKeyStroke(KeyStroke stroke, Runnable task)
{
keybindings.bindKeyStroke(stroke, task);
}
@Override
public final void unbindKeyStroke(KeyStroke stroke)
{
keybindings.unbindKeyStroke(stroke);
}
@Override
public final boolean isVisible()
{
return visible;
}
@Override
public void setVisible(boolean visible)
{
this.visible = visible;
}
@Override
public final int compareTo(Overlay o)
{
return getPriority() - o.getPriority();
}
/**
* Get rendering priority
*
* @return higher = on top.
*/
@DefaultImpl
public abstract int getPriority();
/**
* Render the overlay. The caller MUST check for visibility himself.
*/
@Override
public void render()
{
for (Renderable r : rendered) {
r.render();
}
}
@Override
public void update(double delta)
{
for (Updateable u : updated) {
u.update(delta);
}
}
/**
* <p>
* Screen size changed.
* </p>
* <p>
* Layouts / components should listen for this event and update their cached
* constraints; components added to root or directly to this overlay as
* child clients will receive the event.
* </p>
*/
@Override
@DefaultImpl
public void onLayoutChanged()
{
}
}

@ -2,173 +2,34 @@ package mightypork.gamecore.gui.screens;
import mightypork.gamecore.control.AppAccess; import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.AppSubModule; import mightypork.gamecore.render.Renderable;
import mightypork.gamecore.control.events.LayoutChangeEvent;
import mightypork.gamecore.control.events.ScreenChangeEvent;
import mightypork.gamecore.gui.components.Renderable;
import mightypork.gamecore.input.KeyBinder;
import mightypork.gamecore.input.KeyBindingPool;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.render.Render;
import mightypork.util.annotations.DefaultImpl;
import mightypork.util.constraints.rect.Rect;
import mightypork.util.constraints.rect.proxy.RectBound; import mightypork.util.constraints.rect.proxy.RectBound;
import mightypork.util.constraints.vect.Vect;
/** /**
* Screen class. * Game screen
* *
* @author MightyPork * @author MightyPork
*/ */
public abstract class Screen extends AppSubModule implements Renderable, KeyBinder, RectBound, ScreenChangeEvent.Listener { public interface Screen extends Renderable, RectBound, AppAccess {
private final KeyBindingPool keybindings = new KeyBindingPool();
private volatile boolean active;
private volatile boolean needSetupViewport = false;
/**
* @param app app access
*/
public Screen(AppAccess app) {
super(app);
// disable events initially
setListening(false);
addChildClient(keybindings);
}
@Override
public final void bindKeyStroke(KeyStroke stroke, Runnable task)
{
keybindings.bindKeyStroke(stroke, task);
}
@Override
public final void unbindKeyStroke(KeyStroke stroke)
{
keybindings.unbindKeyStroke(stroke);
}
/** /**
* Prepare for being shown * Prepare for being shown
* *
* @param shown true to show, false to hide * @param shown true to show, false to hide
*/ */
public final void setActive(boolean shown) void setActive(boolean shown);
{
if (shown) {
active = true;
needSetupViewport = true;
onSizeChanged(getRect().size());
onScreenEnter();
// enable events
setListening(true);
} else {
onScreenLeave();
active = false;
// disable events
setListening(false);
}
}
/** /**
* @return true if screen is the current screen * @return true if screen is the current screen
*/ */
public final boolean isActive() boolean isActive();
{
return active;
}
@Override
public final void receive(ScreenChangeEvent event)
{
if (!isActive()) return;
onSizeChanged(event.getScreenSize());
// fire event
getEventBus().sendDirectToChildren(this, new LayoutChangeEvent());
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()
{
}
/**
* Update GUI for new screen size
*
* @param size screen size
*/
@DefaultImpl
protected void onSizeChanged(Vect size)
{
}
/**
* Render screen contents (context is ready for 2D rendering)
*/
protected abstract void renderScreen();
/** /**
* @return screen identifier to be used for requests. * @return screen identifier to be used for requests.
*/ */
public abstract String getName(); String getName();
} }

@ -1,19 +1,7 @@
package mightypork.gamecore.gui.screens; package mightypork.gamecore.gui.screens;
import java.util.Collection;
import java.util.LinkedHashSet;
import mightypork.gamecore.control.AppSubModule;
import mightypork.gamecore.gui.Hideable;
import mightypork.gamecore.gui.components.Renderable;
import mightypork.gamecore.gui.components.layout.ConstraintLayout;
import mightypork.gamecore.input.KeyBinder;
import mightypork.gamecore.input.KeyBindingPool;
import mightypork.gamecore.input.KeyStroke;
import mightypork.util.annotations.DefaultImpl; import mightypork.util.annotations.DefaultImpl;
import mightypork.util.constraints.vect.Vect;
import mightypork.util.control.timing.Updateable;
/** /**
@ -21,25 +9,10 @@ import mightypork.util.control.timing.Updateable;
* *
* @author MightyPork * @author MightyPork
*/ */
public abstract class ScreenLayer extends AppSubModule implements Updateable, Comparable<ScreenLayer>, Renderable, KeyBinder, Hideable { public abstract class ScreenLayer extends Overlay {
private boolean visible = true;
private final KeyBindingPool keybindings = new KeyBindingPool();
/** Root layout, rendered and attached to the event bus */
protected final ConstraintLayout root;
protected final Vect mouse;
private final Screen screen; private final Screen screen;
/** Extra rendered items (outside root) */
protected final Collection<Renderable> rendered = new LinkedHashSet<>();
/** Extra updated items (outside root - those can just implement Updateable) */
protected final Collection<Updateable> updated = new LinkedHashSet<>();
/** /**
* @param screen parent screen * @param screen parent screen
@ -48,31 +21,6 @@ public abstract class ScreenLayer extends AppSubModule implements Updateable, Co
super(screen); // screen as AppAccess super(screen); // screen as AppAccess
this.screen = screen; this.screen = screen;
this.mouse = getInput().getMousePos();
this.root = new ConstraintLayout(screen, screen);
addChildClient(root);
addChildClient(keybindings);
rendered.add(root);
// root is on the bus, all attached components
// will receive events (such as update)
}
@Override
public final void bindKeyStroke(KeyStroke stroke, Runnable task)
{
keybindings.bindKeyStroke(stroke, task);
}
@Override
public final void unbindKeyStroke(KeyStroke stroke)
{
keybindings.unbindKeyStroke(stroke);
} }
@ -85,27 +33,6 @@ public abstract class ScreenLayer extends AppSubModule implements Updateable, Co
} }
@Override
public final boolean isVisible()
{
return visible;
}
@Override
public void setVisible(boolean visible)
{
this.visible = visible;
}
@Override
public final int compareTo(ScreenLayer o)
{
return getPriority() - o.getPriority();
}
/** /**
* Called when the screen becomes active * Called when the screen becomes active
*/ */
@ -123,51 +50,4 @@ public abstract class ScreenLayer extends AppSubModule implements Updateable, Co
{ {
} }
/**
* Update GUI for new screen size
*
* @param size screen size
*/
@DefaultImpl
protected void onSizeChanged(Vect size)
{
}
/**
* @return higher = on top.
*/
@DefaultImpl
public abstract int getPriority();
@Override
public final void render()
{
if (!visible) return;
renderLayer();
}
/**
* Render layer contents.
*/
protected void renderLayer()
{
// render renderables (including root layout)
for (Renderable r : rendered)
r.render();
}
@Override
public void update(double delta)
{
// update updateables
for (Updateable u : updated)
u.update(delta);
}
} }

@ -1,12 +1,15 @@
package mightypork.gamecore.gui.screens; package mightypork.gamecore.gui.screens;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.TreeSet;
import mightypork.gamecore.control.AppAccess; import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.AppModule; import mightypork.gamecore.control.AppModule;
import mightypork.gamecore.control.events.ScreenRequestEvent; import mightypork.gamecore.control.events.ScreenRequestEvent;
import mightypork.gamecore.gui.components.Renderable; import mightypork.gamecore.render.Renderable;
import mightypork.util.annotations.DefaultImpl; import mightypork.util.annotations.DefaultImpl;
import mightypork.util.logging.Log; import mightypork.util.logging.Log;
@ -18,7 +21,8 @@ import mightypork.util.logging.Log;
*/ */
public class ScreenRegistry extends AppModule implements ScreenRequestEvent.Listener, Renderable { public class ScreenRegistry extends AppModule implements ScreenRequestEvent.Listener, Renderable {
private final HashMap<String, Screen> screens = new HashMap<>(); private final Map<String, Screen> screens = new HashMap<>();
private final Collection<Overlay> overlays = new TreeSet<>();
private volatile Screen active = null; private volatile Screen active = null;
@ -35,33 +39,58 @@ public class ScreenRegistry extends AppModule implements ScreenRequestEvent.List
* *
* @param screen added screen * @param screen added screen
*/ */
public void add(Screen screen) public void addScreen(Screen screen)
{ {
screens.put(screen.getName(), screen); screens.put(screen.getName(), screen);
addChildClient(screen); addChildClient(screen);
} }
/**
* Add an overlay
*
* @param overlay added overlay
*/
public void addOverlay(Overlay overlay)
{
overlays.add(overlay);
addChildClient(overlay);
}
@Override @Override
public void showScreen(String key) public void showScreen(String key)
{ {
Log.f3("Request to show screen \"" + key + "\""); Log.f3("Request to show screen \"" + key + "\"");
final Screen toshow = screens.get(key); // find screen to show
if (toshow == null) throw new RuntimeException("Screen " + key + " not defined."); final Screen toShow = screens.get(key);
if (toShow == null) {
throw new RuntimeException("Screen " + key + " not defined.");
}
if (active != null) active.setActive(false); // deactivate last screen
if (active != null) {
active.setActive(false);
}
toshow.setActive(true); // activate new screen
toShow.setActive(true);
active = toshow; active = toShow;
} }
@Override @Override
public void render() public void render()
{ {
if (active != null) active.render(); if (active != null) {
active.render();
for (final Overlay overlay : overlays) {
if (overlay.isVisible()) overlay.render();
}
}
} }

@ -7,7 +7,7 @@ import java.nio.ByteBuffer;
import mightypork.gamecore.control.AppAccess; import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.AppModule; import mightypork.gamecore.control.AppModule;
import mightypork.gamecore.control.events.ScreenChangeEvent; import mightypork.gamecore.control.events.ViewportChangeEvent;
import mightypork.util.constraints.rect.Rect; import mightypork.util.constraints.rect.Rect;
import mightypork.util.constraints.rect.proxy.RectBound; import mightypork.util.constraints.rect.proxy.RectBound;
import mightypork.util.constraints.vect.Vect; import mightypork.util.constraints.vect.Vect;
@ -130,7 +130,7 @@ public class DisplaySystem extends AppModule implements RectBound {
Display.update(); Display.update();
} }
getEventBus().send(new ScreenChangeEvent(true, Display.isFullscreen(), getSize())); getEventBus().send(new ViewportChangeEvent(true, Display.isFullscreen(), getSize()));
} catch (final Throwable t) { } catch (final Throwable t) {
Log.e("Failed to toggle fullscreen mode.", t); Log.e("Failed to toggle fullscreen mode.", t);
@ -221,7 +221,7 @@ public class DisplaySystem extends AppModule implements RectBound {
{ {
// handle resize // handle resize
if (Display.wasResized()) { if (Display.wasResized()) {
getEventBus().send(new ScreenChangeEvent(false, Display.isFullscreen(), getSize())); getEventBus().send(new ViewportChangeEvent(false, Display.isFullscreen(), getSize()));
} }
glLoadIdentity(); glLoadIdentity();

@ -1,4 +1,4 @@
package mightypork.gamecore.gui.components; package mightypork.gamecore.render;
/** /**
@ -9,7 +9,7 @@ package mightypork.gamecore.gui.components;
public interface Renderable { public interface Renderable {
/** /**
* Render on screen * Render on screen.
*/ */
void render(); void render();

@ -66,11 +66,11 @@ public class App extends BaseApp {
@Override @Override
protected void initScreens(ScreenRegistry screens) protected void initScreens(ScreenRegistry screens)
{ {
screens.add(new ScreenTestBouncy(this)); screens.addScreen(new ScreenTestBouncy(this));
screens.add(new ScreenTestCat(this)); screens.addScreen(new ScreenTestCat(this));
screens.add(new ScreenTestRender(this)); screens.addScreen(new ScreenTestRender(this));
screens.add(new ScreenMainMenu(this)); screens.addScreen(new ScreenMainMenu(this));
screens.showScreen("rogue.menu"); screens.showScreen("rogue.menu");
} }

@ -3,7 +3,7 @@ package mightypork.rogue.screens;
import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.BaseScreen;
import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys; import mightypork.gamecore.input.Keys;
@ -21,7 +21,7 @@ public class LayerFps extends ScreenLayer {
TextPainter tp; TextPainter tp;
public LayerFps(Screen screen) { public LayerFps(BaseScreen screen) {
super(screen); super(screen);
/* /*
@ -56,13 +56,6 @@ public class LayerFps extends ScreenLayer {
} }
@Override
protected void renderLayer()
{
super.renderLayer();
}
@Override @Override
public int getPriority() public int getPriority()
{ {

@ -4,7 +4,7 @@ package mightypork.rogue.screens.main_menu;
import mightypork.gamecore.control.events.ScreenRequestEvent; import mightypork.gamecore.control.events.ScreenRequestEvent;
import mightypork.gamecore.gui.AlignY; import mightypork.gamecore.gui.AlignY;
import mightypork.gamecore.gui.components.layout.VerticalFixedFlowLayout; import mightypork.gamecore.gui.components.layout.VerticalFixedFlowLayout;
import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.BaseScreen;
import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.rogue.events.ActionRequest; import mightypork.rogue.events.ActionRequest;
import mightypork.rogue.events.ActionRequest.RequestType; import mightypork.rogue.events.ActionRequest.RequestType;
@ -16,7 +16,7 @@ import mightypork.util.math.color.Color;
class MenuLayer extends ScreenLayer { class MenuLayer extends ScreenLayer {
public MenuLayer(Screen screen) { public MenuLayer(BaseScreen screen) {
super(screen); super(screen);
init(); init();

@ -7,7 +7,7 @@ import java.util.List;
import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.components.layout.RowHolder; import mightypork.gamecore.gui.components.layout.RowHolder;
import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.BaseScreen;
import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys; import mightypork.gamecore.input.Keys;
@ -23,7 +23,7 @@ public class LayerBouncyBoxes extends ScreenLayer {
private RowHolder layout; private RowHolder layout;
public LayerBouncyBoxes(Screen screen) { public LayerBouncyBoxes(BaseScreen screen) {
super(screen); super(screen);
bindKeyStroke(new KeyStroke(true, Keys.KEY_RIGHT), new Runnable() { bindKeyStroke(new KeyStroke(true, Keys.KEY_RIGHT), new Runnable() {

@ -2,14 +2,14 @@ package mightypork.rogue.screens.test_cat_sound;
import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.components.painters.QuadPainter;
import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.BaseScreen;
import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.util.math.color.Color; import mightypork.util.math.color.Color;
public class LayerColor extends ScreenLayer { public class LayerColor extends ScreenLayer {
public LayerColor(Screen screen, Color color) { public LayerColor(BaseScreen screen, Color color) {
super(screen); super(screen);
root.add(new QuadPainter(color)); root.add(new QuadPainter(color));

@ -8,7 +8,7 @@ import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.components.painters.ImagePainter; import mightypork.gamecore.gui.components.painters.ImagePainter;
import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.components.painters.QuadPainter;
import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.BaseScreen;
import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys; import mightypork.gamecore.input.Keys;
@ -29,7 +29,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
private final Random rand = new Random(); private final Random rand = new Random();
public LayerFlyingCat(Screen screen) { public LayerFlyingCat(BaseScreen screen) {
super(screen); super(screen);
// timing // timing

@ -1,7 +1,7 @@
package mightypork.rogue.screens.test_render; package mightypork.rogue.screens.test_render;
import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.BaseScreen;
import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.render.Render; import mightypork.gamecore.render.Render;
import mightypork.util.constraints.rect.proxy.RectBound; import mightypork.util.constraints.rect.proxy.RectBound;
@ -14,7 +14,7 @@ public class LayerTestGradient extends ScreenLayer {
private final RectBound pos2; private final RectBound pos2;
public LayerTestGradient(Screen screen) { public LayerTestGradient(BaseScreen screen) {
super(screen); super(screen);
pos1 = root.topEdge().growDown(64); pos1 = root.topEdge().growDown(64);
@ -23,7 +23,7 @@ public class LayerTestGradient extends ScreenLayer {
@Override @Override
protected void renderLayer() public void render()
{ {
Render.quadColor(root, Color.WHITE, Color.BLUE, Color.BLACK, Color.MAGENTA); Render.quadColor(root, Color.WHITE, Color.BLUE, Color.BLACK, Color.MAGENTA);
Render.quadGradH(pos1.getRect(), Color.GREEN, Color.RED); Render.quadGradH(pos1.getRect(), Color.GREEN, Color.RED);

@ -12,7 +12,7 @@ public interface ConstraintCache<C> extends Pollable {
/** /**
* Called after the cache has changed value (and digest). * Called after the cache has changed value (and digest).
*/ */
void onChange(); void onConstraintChanged();
/** /**

@ -54,12 +54,12 @@ public abstract class AbstractNumCache extends NumAdapter implements ConstraintC
// mark my digest dirty // mark my digest dirty
markDigestDirty(); markDigestDirty();
onChange(); onConstraintChanged();
} }
@Override @Override
public abstract void onChange(); public abstract void onConstraintChanged();
@Override @Override

@ -29,7 +29,7 @@ public class NumCache extends AbstractNumCache {
@Override @Override
@DefaultImpl @DefaultImpl
public void onChange() public void onConstraintChanged()
{ {
} }

@ -53,7 +53,7 @@ public abstract class AbstractRectCache extends RectAdapter implements Constrain
markDigestDirty(); markDigestDirty();
onChange(); onConstraintChanged();
} }

@ -29,7 +29,7 @@ public class RectCache extends AbstractRectCache {
@Override @Override
@DefaultImpl @DefaultImpl
public void onChange() public void onConstraintChanged()
{ {
} }

@ -53,7 +53,7 @@ public abstract class AbstractVectCache extends VectAdapter implements Constrain
markDigestDirty(); markDigestDirty();
onChange(); onConstraintChanged();
} }

@ -30,7 +30,7 @@ public class VectCache extends AbstractVectCache {
@Override @Override
@DefaultImpl @DefaultImpl
public void onChange() public void onConstraintChanged()
{ {
} }
} }

Loading…
Cancel
Save