diff --git a/res/img/logo.png b/res/img/logo.png index ad34230..87d4b3c 100644 Binary files a/res/img/logo.png and b/res/img/logo.png differ diff --git a/res/img/logo.xcf b/res/img/logo.xcf index ac7055d..4ad3ba7 100644 Binary files a/res/img/logo.xcf and b/res/img/logo.xcf differ diff --git a/src/mightypork/gamecore/core/MainLoop.java b/src/mightypork/gamecore/core/MainLoop.java index fa3d5f7..5c0abb5 100644 --- a/src/mightypork/gamecore/core/MainLoop.java +++ b/src/mightypork/gamecore/core/MainLoop.java @@ -105,6 +105,11 @@ public class MainLoop extends AppModule implements ScreenshotRequestListener { } + /** + * Add a task to queue to be executed in the main loop (OpenGL thread) + * + * @param request task + */ public synchronized void queueTask(Runnable request) { taskQueue.add(request); diff --git a/src/mightypork/gamecore/gui/components/painters/ImagePainter.java b/src/mightypork/gamecore/gui/components/painters/ImagePainter.java index de90fa7..89ca4c3 100644 --- a/src/mightypork/gamecore/gui/components/painters/ImagePainter.java +++ b/src/mightypork/gamecore/gui/components/painters/ImagePainter.java @@ -14,7 +14,7 @@ import mightypork.gamecore.resources.textures.TxQuad; */ public class ImagePainter extends BaseComponent implements DynamicWidthComponent { - private final TxQuad txQuad; + private TxQuad txQuad; /** @@ -38,4 +38,10 @@ public class ImagePainter extends BaseComponent implements DynamicWidthComponent { return (height / txQuad.uvs.height().value()) * txQuad.uvs.width().value(); } + + + public void setTxQuad(TxQuad txQuad) + { + this.txQuad = txQuad; + } } diff --git a/src/mightypork/gamecore/gui/screens/LayeredScreen.java b/src/mightypork/gamecore/gui/screens/LayeredScreen.java index 022f60e..ef5acec 100644 --- a/src/mightypork/gamecore/gui/screens/LayeredScreen.java +++ b/src/mightypork/gamecore/gui/screens/LayeredScreen.java @@ -1,9 +1,11 @@ package mightypork.gamecore.gui.screens; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Comparator; -import java.util.TreeSet; +import java.util.List; import mightypork.gamecore.core.AppAccess; import mightypork.gamecore.eventbus.clients.DelegatingClient; @@ -39,25 +41,8 @@ public abstract class LayeredScreen extends Screen { } - private final Collection layersByZIndex = new TreeSet<>(new Comparator() { - - @Override - public int compare(Overlay o1, Overlay o2) - { - return o1.getZIndex() - o2.getZIndex(); - } - - }); - - private final Collection layersByEventPriority = new TreeSet<>(new Comparator() { - - @Override - public int compare(Overlay o1, Overlay o2) - { - return o2.getEventPriority() - o1.getEventPriority(); - } - - }); + private final List layersByZIndex = new ArrayList<>(); + private final List layersByEventPriority = new ArrayList<>(); private final LayersClient layersClient = new LayersClient(); @@ -90,6 +75,26 @@ public abstract class LayeredScreen extends Screen { { this.layersByZIndex.add(layer); this.layersByEventPriority.add(layer); + + Collections.sort(layersByEventPriority, new Comparator() { + + @Override + public int compare(Overlay o1, Overlay o2) + { + return o2.getEventPriority() - o1.getEventPriority(); + } + + }); + + Collections.sort(layersByZIndex, new Comparator() { + + @Override + public int compare(Overlay o1, Overlay o2) + { + return o1.getZIndex() - o2.getZIndex(); + } + + }); } diff --git a/src/mightypork/gamecore/gui/screens/Overlay.java b/src/mightypork/gamecore/gui/screens/Overlay.java index 4bc7a15..b9115d9 100644 --- a/src/mightypork/gamecore/gui/screens/Overlay.java +++ b/src/mightypork/gamecore/gui/screens/Overlay.java @@ -1,6 +1,7 @@ package mightypork.gamecore.gui.screens; +import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; @@ -43,10 +44,10 @@ public abstract class Overlay extends AppSubModule implements Comparable rendered = new LinkedHashSet<>(); + protected final Collection rendered = new ArrayList<>(); /** Extra updated items (outside root - those can just implement Updateable) */ - protected final Collection updated = new LinkedHashSet<>(); + protected final Collection updated = new ArrayList<>(); private Num alphaMul = Num.ONE; @@ -208,4 +209,18 @@ public abstract class Overlay extends AppSubModule implements Comparable