diff --git a/src/mightypork/rogue/App.java b/src/mightypork/rogue/App.java
index 98ca297..00bcfed 100644
--- a/src/mightypork/rogue/App.java
+++ b/src/mightypork/rogue/App.java
@@ -52,6 +52,7 @@ public class App implements Destroyable, AppAccess {
*/
public static void main(String[] args)
{
+
Thread.setDefaultUncaughtExceptionHandler(new CrashHandler());
inst = new App();
diff --git a/src/mightypork/rogue/display/LayeredScreen.java b/src/mightypork/rogue/display/LayeredScreen.java
index 8a3cfa4..1f1bb56 100644
--- a/src/mightypork/rogue/display/LayeredScreen.java
+++ b/src/mightypork/rogue/display/LayeredScreen.java
@@ -54,12 +54,14 @@ public abstract class LayeredScreen extends Screen {
protected void addLayer(ScreenLayer layer)
{
this.layers.add(layer);
+ addChildSubscriber(layer);
}
protected void removeLayer(ScreenLayer layer)
{
this.layers.remove(layer);
+ addChildSubscriber(layer);
}
}
diff --git a/src/mightypork/rogue/display/rendering/ScreenLayer.java b/src/mightypork/rogue/display/rendering/ScreenLayer.java
index e02e974..c774de5 100644
--- a/src/mightypork/rogue/display/rendering/ScreenLayer.java
+++ b/src/mightypork/rogue/display/rendering/ScreenLayer.java
@@ -1,17 +1,56 @@
package mightypork.rogue.display.rendering;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+
+import mightypork.rogue.AppAdapter;
import mightypork.rogue.bus.UpdateReceiver;
import mightypork.rogue.display.Screen;
+import mightypork.rogue.input.KeyBinder;
+import mightypork.rogue.input.KeyBindingPool;
+import mightypork.rogue.input.KeyStroke;
+import mightypork.utils.patterns.subscription.clients.DelegatingClient;
+import mightypork.utils.time.Updateable;
-public abstract class ScreenLayer extends UpdateReceiver implements Renderable {
+/**
+ * Screen layer
+ * Plugged into a screen as a child bus subscriber, receiving update and render
+ * calls directly from the screen.
+ *
+ * @author MightyPork
+ */
+public abstract class ScreenLayer extends AppAdapter implements KeyBinder, DelegatingClient, Renderable, Updateable {
private Screen screen;
+ private KeyBindingPool keybindings;
+
+ private Collection