Cleanup of annotations, fixed some bus logic.

This commit is contained in:
Ondřej Hruška
2014-04-07 09:31:07 +02:00
parent 6b69dabbb9
commit 6d7ee87ae6
33 changed files with 190 additions and 106 deletions
+3 -15
View File
@@ -4,14 +4,13 @@ package mightypork.rogue;
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;
import java.util.ArrayList;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import mightypork.rogue.bus.events.*;
import mightypork.rogue.bus.events.ActionRequest.RequestType;
import mightypork.rogue.gui.ScreenRegistry;
import mightypork.rogue.gui.screens.ScreenRegistry;
import mightypork.rogue.gui.screens.test_bouncyboxes.ScreenTestBouncy;
import mightypork.rogue.gui.screens.test_cat_sound.ScreenTestCat;
import mightypork.rogue.gui.screens.test_font.ScreenTestFont;
@@ -105,7 +104,7 @@ public class App implements AppAccess {
{
Log.i("Shutting down subsystems...");
if(bus() != null) {
if (bus() != null) {
bus().send(new DestroyEvent());
bus().destroy();
}
@@ -181,18 +180,7 @@ public class App implements AppAccess {
* Prepare main loop
*/
Log.f1("Preparing main loop...");
final ArrayList<Runnable> loopTasks = new ArrayList<Runnable>();
loopTasks.add(new Runnable() {
@Override
public void run()
{
screens.render();
}
});
mainLoop = new MainLoop(this, loopTasks);
mainLoop = new MainLoop(this, screens);
}
+15 -14
View File
@@ -1,16 +1,15 @@
package mightypork.rogue;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import mightypork.rogue.bus.Subsystem;
import mightypork.rogue.bus.events.ActionRequest;
import mightypork.rogue.bus.events.UpdateEvent;
import mightypork.rogue.bus.events.ActionRequest.RequestType;
import mightypork.rogue.bus.events.MainLoopTaskRequest;
import mightypork.rogue.bus.events.UpdateEvent;
import mightypork.rogue.render.Renderable;
import mightypork.rogue.tasks.TaskTakeScreenshot;
import mightypork.rogue.util.Utils;
import mightypork.utils.control.timing.TimerDelta;
@@ -19,13 +18,17 @@ import mightypork.utils.control.timing.TimerDelta;
public class MainLoop extends Subsystem implements ActionRequest.Listener, MainLoopTaskRequest.Listener {
private final Queue<Runnable> taskQueue = new ConcurrentLinkedQueue<Runnable>();
private final List<Runnable> regularTasks;
private final Renderable renderable;
public MainLoop(App app, ArrayList<Runnable> loopTasks) {
public MainLoop(App app, Renderable masterRenderable) {
super(app);
this.regularTasks = loopTasks;
if (masterRenderable == null) {
throw new NullPointerException("Master renderable must not be null.");
}
this.renderable = masterRenderable;
}
/** timer */
@@ -37,20 +40,18 @@ public class MainLoop extends Subsystem implements ActionRequest.Listener, MainL
{
timer = new TimerDelta();
while (running) {
Runnable r;
while ((r = taskQueue.poll()) != null) {
r.run();
}
while (running) {
disp().beginFrame();
bus().send(new UpdateEvent(timer.getDelta()));
for (final Runnable r2 : regularTasks) {
r2.run();
Runnable r;
while ((r = taskQueue.poll()) != null) {
r.run();
}
renderable.render();
disp().endFrame();
}
}
+2 -2
View File
@@ -9,10 +9,10 @@ import mightypork.rogue.loading.AsyncResourceLoader;
import mightypork.rogue.sound.SoundBank;
import mightypork.rogue.sound.players.EffectPlayer;
import mightypork.rogue.sound.players.LoopPlayer;
import mightypork.rogue.textures.TextureBank;
import mightypork.rogue.textures.TxQuad;
import mightypork.rogue.textures.FilteredTexture.Filter;
import mightypork.rogue.textures.FilteredTexture.Wrap;
import mightypork.rogue.textures.TextureBank;
import mightypork.rogue.textures.TxQuad;
import org.newdawn.slick.opengl.Texture;
@@ -2,8 +2,7 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.control.bus.events.types.SingularEvent;
import mightypork.utils.control.bus.events.types.SingleReceiverEvent;
/**
@@ -11,8 +10,7 @@ import mightypork.utils.control.bus.events.types.SingularEvent;
*
* @author MightyPork
*/
@SingularEvent
@QueuedEvent
@SingleReceiverEvent
public class ActionRequest implements Event<ActionRequest.Listener> {
private final RequestType type;
@@ -2,7 +2,6 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import org.lwjgl.input.Keyboard;
@@ -12,7 +11,6 @@ import org.lwjgl.input.Keyboard;
*
* @author MightyPork
*/
@QueuedEvent
public class KeyboardEvent implements Event<KeyboardEvent.Listener> {
private final int key;
@@ -2,8 +2,7 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.control.bus.events.types.SingularEvent;
import mightypork.utils.control.bus.events.types.SingleReceiverEvent;
/**
@@ -11,8 +10,7 @@ import mightypork.utils.control.bus.events.types.SingularEvent;
*
* @author MightyPork
*/
@SingularEvent
@QueuedEvent
@SingleReceiverEvent
public class MainLoopTaskRequest implements Event<MainLoopTaskRequest.Listener> {
private final Runnable task;
@@ -2,7 +2,6 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.math.coord.Coord;
@@ -11,7 +10,6 @@ import mightypork.utils.math.coord.Coord;
*
* @author MightyPork
*/
@QueuedEvent
public class MouseButtonEvent implements Event<MouseButtonEvent.Listener> {
public static final int BUTTON_LEFT = 0;
@@ -2,7 +2,6 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.math.coord.Coord;
@@ -11,7 +10,6 @@ import mightypork.utils.math.coord.Coord;
*
* @author MightyPork
*/
@QueuedEvent
public class MouseMotionEvent implements Event<MouseMotionEvent.Listener> {
private final Coord move;
@@ -3,8 +3,7 @@ package mightypork.rogue.bus.events;
import mightypork.rogue.loading.DeferredResource;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.control.bus.events.types.SingularEvent;
import mightypork.utils.control.bus.events.types.SingleReceiverEvent;
/**
@@ -12,8 +11,7 @@ import mightypork.utils.control.bus.events.types.SingularEvent;
*
* @author MightyPork
*/
@SingularEvent
@QueuedEvent
@SingleReceiverEvent
public class ResourceLoadRequest implements Event<ResourceLoadRequest.Listener> {
private final DeferredResource resource;
@@ -2,7 +2,6 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.math.coord.Coord;
@@ -11,7 +10,6 @@ import mightypork.utils.math.coord.Coord;
*
* @author MightyPork
*/
@QueuedEvent
public class ScreenChangeEvent implements Event<ScreenChangeEvent.Listener> {
private final boolean fullscreen;
@@ -2,8 +2,7 @@ package mightypork.rogue.bus.events;
import mightypork.utils.control.bus.events.Event;
import mightypork.utils.control.bus.events.types.QueuedEvent;
import mightypork.utils.control.bus.events.types.SingularEvent;
import mightypork.utils.control.bus.events.types.SingleReceiverEvent;
/**
@@ -11,8 +10,7 @@ import mightypork.utils.control.bus.events.types.SingularEvent;
*
* @author MightyPork
*/
@SingularEvent
@QueuedEvent
@SingleReceiverEvent
public class ScreenRequestEvent implements Event<ScreenRequestEvent.Listener> {
private final String scrName;
@@ -29,7 +29,7 @@ public class ColumnHolder extends ElementHolder {
*
* @param elem
*/
public void addRow(RenderableWithContext elem)
public void addRow(PluggableRenderable elem)
{
if (elem == null) return;
add(elem, c_column(null, cols, col++));
@@ -37,7 +37,7 @@ public class ColumnHolder extends ElementHolder {
@Override
public void remove(RenderableWithContext elem)
public void remove(PluggableRenderable elem)
{
throw new UnsupportedOperationException("Can't remove from ColumnHolder.");
}
@@ -13,14 +13,14 @@ import mightypork.utils.math.coord.Rect;
/**
* Bag for {@link RenderableWithContext} elements with constraints.<br>
* Bag for {@link PluggableRenderable} elements with constraints.<br>
* Elements are exposed to {@link EventBus}.
*
* @author MightyPork
*/
public class ElementHolder extends ChildClient implements ConstraintContext, RenderableWithContext {
public class ElementHolder extends ChildClient implements ConstraintContext, PluggableRenderable {
private final LinkedList<RenderableWithContext> elements = new LinkedList<RenderableWithContext>();
private final LinkedList<PluggableRenderable> elements = new LinkedList<PluggableRenderable>();
private ConstraintContext context;
@@ -65,7 +65,7 @@ public class ElementHolder extends ChildClient implements ConstraintContext, Ren
* @param constraint Constraint to be used for the element. It's context
* will be set to this {@link ElementHolder}
*/
public void add(RenderableWithContext elem, RectConstraint constraint)
public void add(PluggableRenderable elem, RectConstraint constraint)
{
if (elem == null) return;
@@ -82,7 +82,7 @@ public class ElementHolder extends ChildClient implements ConstraintContext, Ren
*
* @param elem
*/
public void remove(RenderableWithContext elem)
public void remove(PluggableRenderable elem)
{
if (elem == null) return;
elements.remove(elem);
@@ -2,7 +2,6 @@ package mightypork.rogue.gui.constraints;
import mightypork.rogue.render.Renderable;
import mightypork.utils.math.constraints.ConstraintContext;
import mightypork.utils.math.constraints.SettableContext;
@@ -11,8 +10,6 @@ import mightypork.utils.math.constraints.SettableContext;
*
* @author MightyPork
*/
public interface RenderableWithContext extends Renderable, SettableContext {
@Override
void setContext(ConstraintContext context);
public interface PluggableRenderable extends Renderable, SettableContext {
// methods from both interfaces
}
@@ -29,7 +29,7 @@ public class RowHolder extends ElementHolder {
*
* @param elem
*/
public void addRow(RenderableWithContext elem)
public void addRow(PluggableRenderable elem)
{
if (elem == null) return;
add(elem, c_row(null, rows, row++));
@@ -37,7 +37,7 @@ public class RowHolder extends ElementHolder {
@Override
public void remove(RenderableWithContext elem)
public void remove(PluggableRenderable elem)
{
throw new UnsupportedOperationException("Can't remove from RowHolder.");
}
@@ -1,4 +1,4 @@
package mightypork.rogue.gui;
package mightypork.rogue.gui.screens;
import java.util.Collection;
@@ -1,4 +1,4 @@
package mightypork.rogue.gui;
package mightypork.rogue.gui.screens;
import static org.lwjgl.opengl.GL11.*;
@@ -1,4 +1,4 @@
package mightypork.rogue.gui;
package mightypork.rogue.gui.screens;
import mightypork.rogue.bus.ChildClient;
@@ -1,4 +1,4 @@
package mightypork.rogue.gui;
package mightypork.rogue.gui.screens;
import java.util.HashMap;
@@ -6,10 +6,11 @@ import java.util.HashMap;
import mightypork.rogue.AppAccess;
import mightypork.rogue.bus.Subsystem;
import mightypork.rogue.bus.events.ScreenRequestEvent;
import mightypork.rogue.render.Renderable;
import mightypork.utils.logging.Log;
public class ScreenRegistry extends Subsystem implements ScreenRequestEvent.Listener {
public class ScreenRegistry extends Subsystem implements ScreenRequestEvent.Listener, Renderable {
private final HashMap<String, Screen> screens = new HashMap<String, Screen>();
private Screen active = null;
@@ -43,6 +44,7 @@ public class ScreenRegistry extends Subsystem implements ScreenRequestEvent.List
}
@Override
public void render()
{
if (active != null) active.render();
@@ -5,7 +5,7 @@ import static mightypork.utils.math.constraints.ConstraintFactory.*;
import java.util.Random;
import mightypork.rogue.gui.constraints.RenderableWithContext;
import mightypork.rogue.gui.constraints.PluggableRenderable;
import mightypork.rogue.render.Render;
import mightypork.utils.control.interf.Updateable;
import mightypork.utils.math.animation.AnimDouble;
@@ -17,7 +17,7 @@ import mightypork.utils.math.constraints.RectConstraint;
import mightypork.utils.math.coord.Rect;
public class BouncyBox implements RenderableWithContext, Updateable, ConstraintContext {
public class BouncyBox implements PluggableRenderable, Updateable, ConstraintContext {
private final Random rand = new Random();
@@ -6,9 +6,9 @@ import static mightypork.utils.math.constraints.ConstraintFactory.*;
import java.util.ArrayList;
import java.util.List;
import mightypork.rogue.gui.Screen;
import mightypork.rogue.gui.ScreenLayer;
import mightypork.rogue.gui.constraints.RowHolder;
import mightypork.rogue.gui.screens.Screen;
import mightypork.rogue.gui.screens.ScreenLayer;
import mightypork.utils.math.constraints.RectConstraint;
@@ -3,7 +3,7 @@ package mightypork.rogue.gui.screens.test_bouncyboxes;
import mightypork.rogue.AppAccess;
import mightypork.rogue.bus.events.ScreenRequestEvent;
import mightypork.rogue.gui.LayeredScreen;
import mightypork.rogue.gui.screens.LayeredScreen;
import mightypork.rogue.input.KeyStroke;
import org.lwjgl.input.Keyboard;
@@ -7,8 +7,8 @@ import java.util.Random;
import mightypork.rogue.Res;
import mightypork.rogue.bus.events.MouseButtonEvent;
import mightypork.rogue.gui.Screen;
import mightypork.rogue.gui.ScreenLayer;
import mightypork.rogue.gui.screens.Screen;
import mightypork.rogue.gui.screens.ScreenLayer;
import mightypork.rogue.input.KeyStroke;
import mightypork.rogue.render.Render;
import mightypork.utils.control.interf.Updateable;
@@ -6,7 +6,7 @@ import mightypork.rogue.Res;
import mightypork.rogue.bus.events.ActionRequest;
import mightypork.rogue.bus.events.ActionRequest.RequestType;
import mightypork.rogue.bus.events.ScreenRequestEvent;
import mightypork.rogue.gui.LayeredScreen;
import mightypork.rogue.gui.screens.LayeredScreen;
import mightypork.rogue.input.KeyStroke;
import org.lwjgl.input.Keyboard;
@@ -4,7 +4,7 @@ package mightypork.rogue.gui.screens.test_font;
import mightypork.rogue.AppAccess;
import mightypork.rogue.Res;
import mightypork.rogue.fonts.GLFont;
import mightypork.rogue.gui.Screen;
import mightypork.rogue.gui.screens.Screen;
import mightypork.rogue.render.Render;
import mightypork.utils.math.coord.Coord;
@@ -0,0 +1,58 @@
package mightypork.rogue.util;
import mightypork.utils.logging.LogInstance;
import org.newdawn.slick.util.LogSystem;
public class SlickLogRedirector implements LogSystem {
LogInstance l;
public SlickLogRedirector(LogInstance log) {
this.l = log;
}
@Override
public void error(String msg, Throwable e)
{
l.e(msg, e);
}
@Override
public void error(Throwable e)
{
l.e(e);
}
@Override
public void error(String msg)
{
l.e(msg);
}
@Override
public void warn(String msg)
{
l.w(msg);
}
@Override
public void warn(String msg, Throwable e)
{
l.e(msg, e);
}
@Override
public void info(String msg)
{
l.i(msg);
}
@Override
public void debug(String msg)
{
l.f3(msg);
}
}