diff --git a/src/mightypork/rogue/AppAccess.java b/src/mightypork/gamecore/AppAccess.java similarity index 55% rename from src/mightypork/rogue/AppAccess.java rename to src/mightypork/gamecore/AppAccess.java index e1eb958..210378b 100644 --- a/src/mightypork/rogue/AppAccess.java +++ b/src/mightypork/gamecore/AppAccess.java @@ -1,10 +1,9 @@ -package mightypork.rogue; +package mightypork.gamecore; -import mightypork.rogue.input.InputSystem; -import mightypork.rogue.render.DisplaySystem; -import mightypork.rogue.sounds.SoundSystem; -import mightypork.utils.control.bus.EventBus; +import mightypork.gamecore.input.InputSystem; +import mightypork.gamecore.render.DisplaySystem; +import mightypork.gamecore.resources.sounds.SoundSystem; /** @@ -12,7 +11,7 @@ import mightypork.utils.control.bus.EventBus; * * @author MightyPork */ -public interface AppAccess { +public interface AppAccess extends BusAccess { /** * @return sound system @@ -32,12 +31,6 @@ public interface AppAccess { abstract DisplaySystem disp(); - /** - * @return event bus - */ - abstract EventBus bus(); - - /** * Quit to OS
* Destroy app & exit VM diff --git a/src/mightypork/rogue/AppAdapter.java b/src/mightypork/gamecore/AppAdapter.java similarity index 74% rename from src/mightypork/rogue/AppAdapter.java rename to src/mightypork/gamecore/AppAdapter.java index 2d6e368..191dd0f 100644 --- a/src/mightypork/rogue/AppAdapter.java +++ b/src/mightypork/gamecore/AppAdapter.java @@ -1,10 +1,10 @@ -package mightypork.rogue; +package mightypork.gamecore; -import mightypork.rogue.input.InputSystem; -import mightypork.rogue.render.DisplaySystem; -import mightypork.rogue.sounds.SoundSystem; -import mightypork.utils.control.bus.EventBus; +import mightypork.gamecore.control.bus.EventBus; +import mightypork.gamecore.input.InputSystem; +import mightypork.gamecore.render.DisplaySystem; +import mightypork.gamecore.resources.sounds.SoundSystem; /** diff --git a/src/mightypork/gamecore/BusAccess.java b/src/mightypork/gamecore/BusAccess.java new file mode 100644 index 0000000..7f22310 --- /dev/null +++ b/src/mightypork/gamecore/BusAccess.java @@ -0,0 +1,14 @@ +package mightypork.gamecore; + + +import mightypork.gamecore.control.bus.EventBus; + + +public interface BusAccess { + + /** + * @return event bus + */ + public abstract EventBus bus(); + +} diff --git a/src/mightypork/gamecore/GameLoop.java b/src/mightypork/gamecore/GameLoop.java new file mode 100644 index 0000000..3c39026 --- /dev/null +++ b/src/mightypork/gamecore/GameLoop.java @@ -0,0 +1,66 @@ +package mightypork.gamecore; + + +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; + +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.control.bus.events.MainLoopTaskRequest; +import mightypork.gamecore.control.bus.events.UpdateEvent; +import mightypork.gamecore.control.timing.TimerDelta; + + +public abstract class GameLoop extends Subsystem implements MainLoopTaskRequest.Listener { + + private final Queue taskQueue = new ConcurrentLinkedQueue(); + /** timer */ + private TimerDelta timer; + private boolean running = true; + + + public GameLoop(AppAccess app) { + super(app); + } + + + public void start() + { + timer = new TimerDelta(); + + while (running) { + disp().beginFrame(); + + bus().send(new UpdateEvent(timer.getDelta())); + + Runnable r; + while ((r = taskQueue.poll()) != null) { + r.run(); + } + + tick(); + + disp().endFrame(); + } + } + + + /** + * Called each frame, in rendering context. + */ + protected abstract void tick(); + + + @Override + protected final void deinit() + { + running = false; + } + + + @Override + public final synchronized void queueTask(Runnable request) + { + taskQueue.add(request); + } + +} diff --git a/src/mightypork/rogue/util/SlickLogRedirector.java b/src/mightypork/gamecore/SlickLogRedirector.java similarity index 95% rename from src/mightypork/rogue/util/SlickLogRedirector.java rename to src/mightypork/gamecore/SlickLogRedirector.java index bfbd343..db95755 100644 --- a/src/mightypork/rogue/util/SlickLogRedirector.java +++ b/src/mightypork/gamecore/SlickLogRedirector.java @@ -1,4 +1,4 @@ -package mightypork.rogue.util; +package mightypork.gamecore; import mightypork.utils.logging.LogInstance; diff --git a/src/mightypork/rogue/bus/ChildClient.java b/src/mightypork/gamecore/control/ChildClient.java similarity index 63% rename from src/mightypork/rogue/bus/ChildClient.java rename to src/mightypork/gamecore/control/ChildClient.java index 59176ea..2b5df8e 100644 --- a/src/mightypork/rogue/bus/ChildClient.java +++ b/src/mightypork/gamecore/control/ChildClient.java @@ -1,15 +1,15 @@ -package mightypork.rogue.bus; +package mightypork.gamecore.control; import java.util.Collection; import java.util.LinkedHashSet; import java.util.Set; -import mightypork.rogue.AppAccess; -import mightypork.rogue.AppAdapter; -import mightypork.utils.control.bus.EventBus; -import mightypork.utils.control.bus.clients.DelegatingClient; -import mightypork.utils.control.bus.clients.ToggleableClient; +import mightypork.gamecore.BusAccess; +import mightypork.gamecore.control.bus.EventBus; +import mightypork.gamecore.control.bus.clients.DelegatingClient; +import mightypork.gamecore.control.bus.clients.ToggleableClient; +import mightypork.gamecore.control.interf.Destroyable; /** @@ -18,17 +18,38 @@ import mightypork.utils.control.bus.clients.ToggleableClient; * * @author MightyPork */ -public class ChildClient extends AppAdapter implements DelegatingClient, ToggleableClient { +public abstract class ChildClient implements BusAccess, DelegatingClient, ToggleableClient, Destroyable { - public ChildClient(AppAccess app) { - super(app); - } + private BusAccess busAccess; private final Set clients = new LinkedHashSet(); private boolean listening = true; private boolean delegating = true; + public ChildClient(BusAccess busAccess) { + this.busAccess = busAccess; + + bus().subscribe(this); + } + + + @Override + public final void destroy() + { + deinit(); + + bus().unsubscribe(this); + } + + + /** + * Deinitialize the subsystem
+ * (called during destruction) + */ + protected abstract void deinit(); + + @Override public final Collection getChildClients() { @@ -97,4 +118,11 @@ public class ChildClient extends AppAdapter implements DelegatingClient, Togglea this.delegating = delegating; } + + @Override + public EventBus bus() + { + return busAccess.bus(); + } + } diff --git a/src/mightypork/gamecore/control/Subsystem.java b/src/mightypork/gamecore/control/Subsystem.java new file mode 100644 index 0000000..0c5b1a5 --- /dev/null +++ b/src/mightypork/gamecore/control/Subsystem.java @@ -0,0 +1,55 @@ +package mightypork.gamecore.control; + + +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.input.InputSystem; +import mightypork.gamecore.render.DisplaySystem; +import mightypork.gamecore.resources.sounds.SoundSystem; + + +/** + * App event bus client, to be used for subsystems, screens and anything that + * needs access to the eventbus + * + * @author MightyPork + */ +public abstract class Subsystem extends ChildClient implements AppAccess { + + private final AppAccess app; + + + public Subsystem(AppAccess app) { + super(app); + + this.app = app; + } + + + @Override + public final SoundSystem snd() + { + return app.snd(); + } + + + @Override + public final InputSystem input() + { + return app.input(); + } + + + @Override + public final DisplaySystem disp() + { + return app.disp(); + } + + + @Override + public void shutdown() + { + app.shutdown(); + } + +} diff --git a/src/mightypork/utils/control/bus/BufferedHashSet.java b/src/mightypork/gamecore/control/bus/BufferedHashSet.java similarity index 97% rename from src/mightypork/utils/control/bus/BufferedHashSet.java rename to src/mightypork/gamecore/control/bus/BufferedHashSet.java index 29ce5bb..3399c9c 100644 --- a/src/mightypork/utils/control/bus/BufferedHashSet.java +++ b/src/mightypork/gamecore/control/bus/BufferedHashSet.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus; +package mightypork.gamecore.control.bus; import java.util.Collection; diff --git a/src/mightypork/utils/control/bus/EventBus.java b/src/mightypork/gamecore/control/bus/EventBus.java similarity index 94% rename from src/mightypork/utils/control/bus/EventBus.java rename to src/mightypork/gamecore/control/bus/EventBus.java index fe995c8..c4b386b 100644 --- a/src/mightypork/utils/control/bus/EventBus.java +++ b/src/mightypork/gamecore/control/bus/EventBus.java @@ -1,16 +1,16 @@ -package mightypork.utils.control.bus; +package mightypork.gamecore.control.bus; import java.util.concurrent.DelayQueue; import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.DelayedEvent; -import mightypork.utils.control.bus.events.types.ImmediateEvent; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; -import mightypork.utils.control.bus.events.types.UnloggedEvent; -import mightypork.utils.control.interf.Destroyable; +import mightypork.gamecore.control.bus.events.Event; +import mightypork.gamecore.control.bus.events.types.DelayedEvent; +import mightypork.gamecore.control.bus.events.types.ImmediateEvent; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.events.types.UnloggedEvent; +import mightypork.gamecore.control.interf.Destroyable; import mightypork.utils.logging.Log; diff --git a/src/mightypork/utils/control/bus/EventChannel.java b/src/mightypork/gamecore/control/bus/EventChannel.java similarity index 94% rename from src/mightypork/utils/control/bus/EventChannel.java rename to src/mightypork/gamecore/control/bus/EventChannel.java index a5c2915..7de1186 100644 --- a/src/mightypork/utils/control/bus/EventChannel.java +++ b/src/mightypork/gamecore/control/bus/EventChannel.java @@ -1,13 +1,13 @@ -package mightypork.utils.control.bus; +package mightypork.gamecore.control.bus; import java.util.Collection; import java.util.HashSet; -import mightypork.utils.control.bus.clients.DelegatingClient; -import mightypork.utils.control.bus.clients.ToggleableClient; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.clients.DelegatingClient; +import mightypork.gamecore.control.bus.clients.ToggleableClient; +import mightypork.gamecore.control.bus.events.Event; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; import mightypork.utils.logging.Log; diff --git a/src/mightypork/utils/control/bus/clients/DelegatingClient.java b/src/mightypork/gamecore/control/bus/clients/DelegatingClient.java similarity index 87% rename from src/mightypork/utils/control/bus/clients/DelegatingClient.java rename to src/mightypork/gamecore/control/bus/clients/DelegatingClient.java index 050e25d..4676a6e 100644 --- a/src/mightypork/utils/control/bus/clients/DelegatingClient.java +++ b/src/mightypork/gamecore/control/bus/clients/DelegatingClient.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus.clients; +package mightypork.gamecore.control.bus.clients; import java.util.Collection; diff --git a/src/mightypork/utils/control/bus/clients/ToggleableClient.java b/src/mightypork/gamecore/control/bus/clients/ToggleableClient.java similarity index 81% rename from src/mightypork/utils/control/bus/clients/ToggleableClient.java rename to src/mightypork/gamecore/control/bus/clients/ToggleableClient.java index 44bad98..fe79833 100644 --- a/src/mightypork/utils/control/bus/clients/ToggleableClient.java +++ b/src/mightypork/gamecore/control/bus/clients/ToggleableClient.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus.clients; +package mightypork.gamecore.control.bus.clients; /** diff --git a/src/mightypork/rogue/bus/events/DestroyEvent.java b/src/mightypork/gamecore/control/bus/events/DestroyEvent.java similarity index 57% rename from src/mightypork/rogue/bus/events/DestroyEvent.java rename to src/mightypork/gamecore/control/bus/events/DestroyEvent.java index d6121ff..3ad2f62 100644 --- a/src/mightypork/rogue/bus/events/DestroyEvent.java +++ b/src/mightypork/gamecore/control/bus/events/DestroyEvent.java @@ -1,9 +1,8 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.ImmediateEvent; -import mightypork.utils.control.interf.Destroyable; +import mightypork.gamecore.control.bus.events.types.ImmediateEvent; +import mightypork.gamecore.control.interf.Destroyable; /** diff --git a/src/mightypork/utils/control/bus/events/Event.java b/src/mightypork/gamecore/control/bus/events/Event.java similarity index 69% rename from src/mightypork/utils/control/bus/events/Event.java rename to src/mightypork/gamecore/control/bus/events/Event.java index 8f2bec6..1cfef96 100644 --- a/src/mightypork/utils/control/bus/events/Event.java +++ b/src/mightypork/gamecore/control/bus/events/Event.java @@ -1,9 +1,9 @@ -package mightypork.utils.control.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.types.DelayedEvent; -import mightypork.utils.control.bus.events.types.ImmediateEvent; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.events.types.DelayedEvent; +import mightypork.gamecore.control.bus.events.types.ImmediateEvent; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; /** diff --git a/src/mightypork/rogue/bus/events/KeyboardEvent.java b/src/mightypork/gamecore/control/bus/events/KeyboardEvent.java similarity index 92% rename from src/mightypork/rogue/bus/events/KeyboardEvent.java rename to src/mightypork/gamecore/control/bus/events/KeyboardEvent.java index ab6c162..21d72d6 100644 --- a/src/mightypork/rogue/bus/events/KeyboardEvent.java +++ b/src/mightypork/gamecore/control/bus/events/KeyboardEvent.java @@ -1,8 +1,6 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; - import org.lwjgl.input.Keyboard; diff --git a/src/mightypork/rogue/bus/events/MainLoopTaskRequest.java b/src/mightypork/gamecore/control/bus/events/MainLoopTaskRequest.java similarity index 77% rename from src/mightypork/rogue/bus/events/MainLoopTaskRequest.java rename to src/mightypork/gamecore/control/bus/events/MainLoopTaskRequest.java index 1014985..f93062f 100644 --- a/src/mightypork/rogue/bus/events/MainLoopTaskRequest.java +++ b/src/mightypork/gamecore/control/bus/events/MainLoopTaskRequest.java @@ -1,8 +1,7 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; /** diff --git a/src/mightypork/rogue/bus/events/MouseButtonEvent.java b/src/mightypork/gamecore/control/bus/events/MouseButtonEvent.java similarity index 86% rename from src/mightypork/rogue/bus/events/MouseButtonEvent.java rename to src/mightypork/gamecore/control/bus/events/MouseButtonEvent.java index bd498b7..e38e02f 100644 --- a/src/mightypork/rogue/bus/events/MouseButtonEvent.java +++ b/src/mightypork/gamecore/control/bus/events/MouseButtonEvent.java @@ -1,7 +1,7 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Coord; @@ -101,6 +101,18 @@ public class MouseButtonEvent implements Event { } + /** + * Get if event happened over a rect + * + * @param rect rect region + * @return was over + */ + public boolean isOver(RectConstraint rect) + { + return pos.isInRect(rect.getRect()); + } + + @Override public void handleBy(Listener handler) { diff --git a/src/mightypork/rogue/bus/events/MouseMotionEvent.java b/src/mightypork/gamecore/control/bus/events/MouseMotionEvent.java similarity index 83% rename from src/mightypork/rogue/bus/events/MouseMotionEvent.java rename to src/mightypork/gamecore/control/bus/events/MouseMotionEvent.java index bf3a816..9c679b6 100644 --- a/src/mightypork/rogue/bus/events/MouseMotionEvent.java +++ b/src/mightypork/gamecore/control/bus/events/MouseMotionEvent.java @@ -1,8 +1,7 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.UnloggedEvent; +import mightypork.gamecore.control.bus.events.types.UnloggedEvent; import mightypork.utils.math.coord.Coord; diff --git a/src/mightypork/rogue/bus/events/ResourceLoadRequest.java b/src/mightypork/gamecore/control/bus/events/ResourceLoadRequest.java similarity index 73% rename from src/mightypork/rogue/bus/events/ResourceLoadRequest.java rename to src/mightypork/gamecore/control/bus/events/ResourceLoadRequest.java index 5593ebc..5c50987 100644 --- a/src/mightypork/rogue/bus/events/ResourceLoadRequest.java +++ b/src/mightypork/gamecore/control/bus/events/ResourceLoadRequest.java @@ -1,9 +1,8 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.rogue.loading.DeferredResource; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.loading.DeferredResource; /** diff --git a/src/mightypork/rogue/bus/events/ScreenChangeEvent.java b/src/mightypork/gamecore/control/bus/events/ScreenChangeEvent.java similarity index 90% rename from src/mightypork/rogue/bus/events/ScreenChangeEvent.java rename to src/mightypork/gamecore/control/bus/events/ScreenChangeEvent.java index ce7c73a..c9c8cc0 100644 --- a/src/mightypork/rogue/bus/events/ScreenChangeEvent.java +++ b/src/mightypork/gamecore/control/bus/events/ScreenChangeEvent.java @@ -1,7 +1,6 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; import mightypork.utils.math.coord.Coord; diff --git a/src/mightypork/rogue/bus/events/ScreenRequestEvent.java b/src/mightypork/gamecore/control/bus/events/ScreenRequestEvent.java similarity index 73% rename from src/mightypork/rogue/bus/events/ScreenRequestEvent.java rename to src/mightypork/gamecore/control/bus/events/ScreenRequestEvent.java index 8656f4b..9290edc 100644 --- a/src/mightypork/rogue/bus/events/ScreenRequestEvent.java +++ b/src/mightypork/gamecore/control/bus/events/ScreenRequestEvent.java @@ -1,8 +1,7 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; /** diff --git a/src/mightypork/rogue/bus/events/UpdateEvent.java b/src/mightypork/gamecore/control/bus/events/UpdateEvent.java similarity index 63% rename from src/mightypork/rogue/bus/events/UpdateEvent.java rename to src/mightypork/gamecore/control/bus/events/UpdateEvent.java index 1acccd4..c18fc85 100644 --- a/src/mightypork/rogue/bus/events/UpdateEvent.java +++ b/src/mightypork/gamecore/control/bus/events/UpdateEvent.java @@ -1,10 +1,9 @@ -package mightypork.rogue.bus.events; +package mightypork.gamecore.control.bus.events; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.ImmediateEvent; -import mightypork.utils.control.bus.events.types.UnloggedEvent; -import mightypork.utils.control.interf.Updateable; +import mightypork.gamecore.control.bus.events.types.ImmediateEvent; +import mightypork.gamecore.control.bus.events.types.UnloggedEvent; +import mightypork.gamecore.control.interf.Updateable; /** diff --git a/src/mightypork/utils/control/bus/events/types/DelayedEvent.java b/src/mightypork/gamecore/control/bus/events/types/DelayedEvent.java similarity index 86% rename from src/mightypork/utils/control/bus/events/types/DelayedEvent.java rename to src/mightypork/gamecore/control/bus/events/types/DelayedEvent.java index a5b7f21..9dd4d21 100644 --- a/src/mightypork/utils/control/bus/events/types/DelayedEvent.java +++ b/src/mightypork/gamecore/control/bus/events/types/DelayedEvent.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus.events.types; +package mightypork.gamecore.control.bus.events.types; import java.lang.annotation.*; diff --git a/src/mightypork/utils/control/bus/events/types/ImmediateEvent.java b/src/mightypork/gamecore/control/bus/events/types/ImmediateEvent.java similarity index 80% rename from src/mightypork/utils/control/bus/events/types/ImmediateEvent.java rename to src/mightypork/gamecore/control/bus/events/types/ImmediateEvent.java index 41f0f84..42004f5 100644 --- a/src/mightypork/utils/control/bus/events/types/ImmediateEvent.java +++ b/src/mightypork/gamecore/control/bus/events/types/ImmediateEvent.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus.events.types; +package mightypork.gamecore.control.bus.events.types; import java.lang.annotation.*; diff --git a/src/mightypork/utils/control/bus/events/types/SingleReceiverEvent.java b/src/mightypork/gamecore/control/bus/events/types/SingleReceiverEvent.java similarity index 82% rename from src/mightypork/utils/control/bus/events/types/SingleReceiverEvent.java rename to src/mightypork/gamecore/control/bus/events/types/SingleReceiverEvent.java index 44a5d66..fd75dd6 100644 --- a/src/mightypork/utils/control/bus/events/types/SingleReceiverEvent.java +++ b/src/mightypork/gamecore/control/bus/events/types/SingleReceiverEvent.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus.events.types; +package mightypork.gamecore.control.bus.events.types; import java.lang.annotation.*; diff --git a/src/mightypork/utils/control/bus/events/types/UnloggedEvent.java b/src/mightypork/gamecore/control/bus/events/types/UnloggedEvent.java similarity index 85% rename from src/mightypork/utils/control/bus/events/types/UnloggedEvent.java rename to src/mightypork/gamecore/control/bus/events/types/UnloggedEvent.java index ef424e9..1f776d3 100644 --- a/src/mightypork/utils/control/bus/events/types/UnloggedEvent.java +++ b/src/mightypork/gamecore/control/bus/events/types/UnloggedEvent.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.bus.events.types; +package mightypork.gamecore.control.bus.events.types; import java.lang.annotation.*; diff --git a/src/mightypork/utils/control/interf/Destroyable.java b/src/mightypork/gamecore/control/interf/Destroyable.java similarity index 80% rename from src/mightypork/utils/control/interf/Destroyable.java rename to src/mightypork/gamecore/control/interf/Destroyable.java index 33bc127..dc6a145 100644 --- a/src/mightypork/utils/control/interf/Destroyable.java +++ b/src/mightypork/gamecore/control/interf/Destroyable.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.interf; +package mightypork.gamecore.control.interf; /** diff --git a/src/mightypork/utils/control/interf/Updateable.java b/src/mightypork/gamecore/control/interf/Updateable.java similarity index 84% rename from src/mightypork/utils/control/interf/Updateable.java rename to src/mightypork/gamecore/control/interf/Updateable.java index afa1e88..c8efdaa 100644 --- a/src/mightypork/utils/control/interf/Updateable.java +++ b/src/mightypork/gamecore/control/interf/Updateable.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.interf; +package mightypork.gamecore.control.interf; /** diff --git a/src/mightypork/utils/control/timing/FpsMeter.java b/src/mightypork/gamecore/control/timing/FpsMeter.java similarity index 95% rename from src/mightypork/utils/control/timing/FpsMeter.java rename to src/mightypork/gamecore/control/timing/FpsMeter.java index 2add6c7..de0b66b 100644 --- a/src/mightypork/utils/control/timing/FpsMeter.java +++ b/src/mightypork/gamecore/control/timing/FpsMeter.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.timing; +package mightypork.gamecore.control.timing; /** diff --git a/src/mightypork/utils/control/timing/Pauseable.java b/src/mightypork/gamecore/control/timing/Pauseable.java similarity index 82% rename from src/mightypork/utils/control/timing/Pauseable.java rename to src/mightypork/gamecore/control/timing/Pauseable.java index 6b6c7e4..44dc3d8 100644 --- a/src/mightypork/utils/control/timing/Pauseable.java +++ b/src/mightypork/gamecore/control/timing/Pauseable.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.timing; +package mightypork.gamecore.control.timing; public interface Pauseable { diff --git a/src/mightypork/utils/control/timing/TimerDelta.java b/src/mightypork/gamecore/control/timing/TimerDelta.java similarity index 93% rename from src/mightypork/utils/control/timing/TimerDelta.java rename to src/mightypork/gamecore/control/timing/TimerDelta.java index f882e9e..53febfb 100644 --- a/src/mightypork/utils/control/timing/TimerDelta.java +++ b/src/mightypork/gamecore/control/timing/TimerDelta.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.timing; +package mightypork.gamecore.control.timing; /** diff --git a/src/mightypork/utils/control/timing/TimerFps.java b/src/mightypork/gamecore/control/timing/TimerFps.java similarity index 97% rename from src/mightypork/utils/control/timing/TimerFps.java rename to src/mightypork/gamecore/control/timing/TimerFps.java index 24da007..4759175 100644 --- a/src/mightypork/utils/control/timing/TimerFps.java +++ b/src/mightypork/gamecore/control/timing/TimerFps.java @@ -1,4 +1,4 @@ -package mightypork.utils.control.timing; +package mightypork.gamecore.control.timing; /** diff --git a/src/mightypork/rogue/gui/renderers/ColumnHolder.java b/src/mightypork/gamecore/gui/renderers/ColumnHolder.java similarity index 72% rename from src/mightypork/rogue/gui/renderers/ColumnHolder.java rename to src/mightypork/gamecore/gui/renderers/ColumnHolder.java index 9a5e4a0..e956998 100644 --- a/src/mightypork/rogue/gui/renderers/ColumnHolder.java +++ b/src/mightypork/gamecore/gui/renderers/ColumnHolder.java @@ -1,9 +1,9 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; import static mightypork.utils.math.constraints.ConstraintFactory.*; -import mightypork.rogue.AppAccess; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.gamecore.AppAccess; +import mightypork.utils.math.constraints.RectConstraint; public class ColumnHolder extends ElementHolder { @@ -12,7 +12,7 @@ public class ColumnHolder extends ElementHolder { private int col = 0; - public ColumnHolder(AppAccess app, RectEvaluable context, int rows) { + public ColumnHolder(AppAccess app, RectConstraint context, int rows) { super(app, context); this.cols = rows; } diff --git a/src/mightypork/rogue/gui/renderers/ElementHolder.java b/src/mightypork/gamecore/gui/renderers/ElementHolder.java similarity index 71% rename from src/mightypork/rogue/gui/renderers/ElementHolder.java rename to src/mightypork/gamecore/gui/renderers/ElementHolder.java index 7a95763..02b876d 100644 --- a/src/mightypork/rogue/gui/renderers/ElementHolder.java +++ b/src/mightypork/gamecore/gui/renderers/ElementHolder.java @@ -1,13 +1,13 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; import java.util.LinkedList; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.ChildClient; -import mightypork.rogue.render.Renderable; -import mightypork.utils.control.bus.EventBus; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.ChildClient; +import mightypork.gamecore.control.bus.EventBus; +import mightypork.gamecore.render.Renderable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Rect; @@ -20,7 +20,7 @@ import mightypork.utils.math.coord.Rect; public abstract class ElementHolder extends ChildClient implements PluggableRenderable { private final LinkedList elements = new LinkedList(); - private RectEvaluable context; + private RectConstraint context; public ElementHolder(AppAccess app) { @@ -28,14 +28,14 @@ public abstract class ElementHolder extends ChildClient implements PluggableRend } - public ElementHolder(AppAccess app, RectEvaluable context) { + public ElementHolder(AppAccess app, RectConstraint context) { super(app); setContext(context); } @Override - public final void setContext(RectEvaluable context) + public final void setContext(RectConstraint context) { this.context = context; } @@ -79,4 +79,11 @@ public abstract class ElementHolder extends ChildClient implements PluggableRend addChildClient(elem); } + + @Override + protected void deinit() + { + // no impl + } + } diff --git a/src/mightypork/rogue/gui/renderers/ImageRenderer.java b/src/mightypork/gamecore/gui/renderers/ImageRenderer.java similarity index 70% rename from src/mightypork/rogue/gui/renderers/ImageRenderer.java rename to src/mightypork/gamecore/gui/renderers/ImageRenderer.java index 70382ea..98863db 100644 --- a/src/mightypork/rogue/gui/renderers/ImageRenderer.java +++ b/src/mightypork/gamecore/gui/renderers/ImageRenderer.java @@ -1,8 +1,8 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; -import mightypork.rogue.render.Render; -import mightypork.rogue.textures.TxQuad; +import mightypork.gamecore.render.Render; +import mightypork.gamecore.resources.textures.TxQuad; public class ImageRenderer extends PluggableRenderer { diff --git a/src/mightypork/rogue/gui/renderers/PluggableRenderable.java b/src/mightypork/gamecore/gui/renderers/PluggableRenderable.java similarity index 58% rename from src/mightypork/rogue/gui/renderers/PluggableRenderable.java rename to src/mightypork/gamecore/gui/renderers/PluggableRenderable.java index 28c495c..d9dc6df 100644 --- a/src/mightypork/rogue/gui/renderers/PluggableRenderable.java +++ b/src/mightypork/gamecore/gui/renderers/PluggableRenderable.java @@ -1,9 +1,9 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; -import mightypork.rogue.render.Renderable; +import mightypork.gamecore.render.Renderable; import mightypork.utils.math.constraints.PluggableContext; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Rect; @@ -18,6 +18,6 @@ public interface PluggableRenderable extends Renderable, PluggableContext { @Override - void setContext(RectEvaluable rect); + void setContext(RectConstraint rect); } diff --git a/src/mightypork/rogue/gui/renderers/PluggableRenderer.java b/src/mightypork/gamecore/gui/renderers/PluggableRenderer.java similarity index 69% rename from src/mightypork/rogue/gui/renderers/PluggableRenderer.java rename to src/mightypork/gamecore/gui/renderers/PluggableRenderer.java index 205ed06..91146ac 100644 --- a/src/mightypork/rogue/gui/renderers/PluggableRenderer.java +++ b/src/mightypork/gamecore/gui/renderers/PluggableRenderer.java @@ -1,9 +1,9 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; -import mightypork.rogue.render.Renderable; +import mightypork.gamecore.render.Renderable; import mightypork.utils.math.constraints.ContextAdapter; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Rect; @@ -26,7 +26,7 @@ public abstract class PluggableRenderer extends ContextAdapter implements Plugga @Override - public void setContext(RectEvaluable rect) + public void setContext(RectConstraint rect) { super.setContext(rect); } diff --git a/src/mightypork/rogue/gui/renderers/RowHolder.java b/src/mightypork/gamecore/gui/renderers/RowHolder.java similarity index 72% rename from src/mightypork/rogue/gui/renderers/RowHolder.java rename to src/mightypork/gamecore/gui/renderers/RowHolder.java index edeb039..c9560ce 100644 --- a/src/mightypork/rogue/gui/renderers/RowHolder.java +++ b/src/mightypork/gamecore/gui/renderers/RowHolder.java @@ -1,9 +1,9 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; import static mightypork.utils.math.constraints.ConstraintFactory.*; -import mightypork.rogue.AppAccess; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.gamecore.AppAccess; +import mightypork.utils.math.constraints.RectConstraint; public class RowHolder extends ElementHolder { @@ -12,7 +12,7 @@ public class RowHolder extends ElementHolder { private int row = 0; - public RowHolder(AppAccess app, RectEvaluable context, int rows) { + public RowHolder(AppAccess app, RectConstraint context, int rows) { super(app, context); this.rows = rows; } diff --git a/src/mightypork/rogue/gui/renderers/TextRenderer.java b/src/mightypork/gamecore/gui/renderers/TextRenderer.java similarity index 88% rename from src/mightypork/rogue/gui/renderers/TextRenderer.java rename to src/mightypork/gamecore/gui/renderers/TextRenderer.java index a83ed69..3d7ef2f 100644 --- a/src/mightypork/rogue/gui/renderers/TextRenderer.java +++ b/src/mightypork/gamecore/gui/renderers/TextRenderer.java @@ -1,8 +1,8 @@ -package mightypork.rogue.gui.renderers; +package mightypork.gamecore.gui.renderers; -import mightypork.rogue.fonts.FontRenderer; -import mightypork.rogue.fonts.GLFont; +import mightypork.gamecore.resources.fonts.FontRenderer; +import mightypork.gamecore.resources.fonts.GLFont; import mightypork.utils.math.color.RGB; import mightypork.utils.math.coord.Coord; diff --git a/src/mightypork/rogue/gui/screens/LayeredScreen.java b/src/mightypork/gamecore/gui/screens/LayeredScreen.java similarity index 90% rename from src/mightypork/rogue/gui/screens/LayeredScreen.java rename to src/mightypork/gamecore/gui/screens/LayeredScreen.java index f99ed79..430a196 100644 --- a/src/mightypork/rogue/gui/screens/LayeredScreen.java +++ b/src/mightypork/gamecore/gui/screens/LayeredScreen.java @@ -1,10 +1,10 @@ -package mightypork.rogue.gui.screens; +package mightypork.gamecore.gui.screens; import java.util.Collection; import java.util.LinkedList; -import mightypork.rogue.AppAccess; +import mightypork.gamecore.AppAccess; public abstract class LayeredScreen extends Screen { diff --git a/src/mightypork/rogue/gui/screens/Screen.java b/src/mightypork/gamecore/gui/screens/Screen.java similarity index 79% rename from src/mightypork/rogue/gui/screens/Screen.java rename to src/mightypork/gamecore/gui/screens/Screen.java index 4c5ae06..9251ae8 100644 --- a/src/mightypork/rogue/gui/screens/Screen.java +++ b/src/mightypork/gamecore/gui/screens/Screen.java @@ -1,16 +1,16 @@ -package mightypork.rogue.gui.screens; +package mightypork.gamecore.gui.screens; import static org.lwjgl.opengl.GL11.*; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.ChildClient; -import mightypork.rogue.bus.events.ScreenChangeEvent; -import mightypork.rogue.input.KeyBinder; -import mightypork.rogue.input.KeyBindingPool; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.render.Renderable; -import mightypork.utils.control.interf.Destroyable; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.control.bus.events.ScreenChangeEvent; +import mightypork.gamecore.control.interf.Destroyable; +import mightypork.gamecore.input.KeyBinder; +import mightypork.gamecore.input.KeyBindingPool; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.render.Renderable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Coord; import mightypork.utils.math.coord.Rect; @@ -20,7 +20,7 @@ import mightypork.utils.math.coord.Rect; * * @author MightyPork */ -public abstract class Screen extends ChildClient implements Renderable, Destroyable, KeyBinder, RectEvaluable, ScreenChangeEvent.Listener { +public abstract class Screen extends Subsystem implements Renderable, Destroyable, KeyBinder, RectConstraint, ScreenChangeEvent.Listener { private final KeyBindingPool keybindings = new KeyBindingPool(); @@ -53,7 +53,7 @@ public abstract class Screen extends ChildClient implements Renderable, Destroya @Override - public final void destroy() + public final void deinit() { deinitScreen(); } diff --git a/src/mightypork/rogue/gui/screens/ScreenLayer.java b/src/mightypork/gamecore/gui/screens/ScreenLayer.java similarity index 59% rename from src/mightypork/rogue/gui/screens/ScreenLayer.java rename to src/mightypork/gamecore/gui/screens/ScreenLayer.java index 7a30957..1505392 100644 --- a/src/mightypork/rogue/gui/screens/ScreenLayer.java +++ b/src/mightypork/gamecore/gui/screens/ScreenLayer.java @@ -1,12 +1,12 @@ -package mightypork.rogue.gui.screens; +package mightypork.gamecore.gui.screens; -import mightypork.rogue.bus.ChildClient; -import mightypork.rogue.input.KeyBinder; -import mightypork.rogue.input.KeyBindingPool; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.render.Renderable; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.input.KeyBinder; +import mightypork.gamecore.input.KeyBindingPool; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.render.Renderable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Rect; @@ -15,7 +15,7 @@ import mightypork.utils.math.coord.Rect; * * @author MightyPork */ -public abstract class ScreenLayer extends ChildClient implements Renderable, RectEvaluable, KeyBinder { +public abstract class ScreenLayer extends Subsystem implements Renderable, RectConstraint, KeyBinder { private final Screen screen; @@ -56,4 +56,11 @@ public abstract class ScreenLayer extends ChildClient implements Renderable, Rec return screen.getRect(); } + + @Override + protected void deinit() + { + // noimpl + } + } diff --git a/src/mightypork/rogue/gui/screens/ScreenRegistry.java b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java similarity index 79% rename from src/mightypork/rogue/gui/screens/ScreenRegistry.java rename to src/mightypork/gamecore/gui/screens/ScreenRegistry.java index c803fa5..c6aa4ed 100644 --- a/src/mightypork/rogue/gui/screens/ScreenRegistry.java +++ b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java @@ -1,12 +1,12 @@ -package mightypork.rogue.gui.screens; +package mightypork.gamecore.gui.screens; 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.gamecore.AppAccess; +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.control.bus.events.ScreenRequestEvent; +import mightypork.gamecore.render.Renderable; import mightypork.utils.logging.Log; diff --git a/src/mightypork/gamecore/input/Action.java b/src/mightypork/gamecore/input/Action.java new file mode 100644 index 0000000..9cef075 --- /dev/null +++ b/src/mightypork/gamecore/input/Action.java @@ -0,0 +1,37 @@ +package mightypork.gamecore.input; + + +/** + * Triggered action + * + * @author MightyPork + */ +public abstract class Action implements Runnable { + + private boolean enabled = true; + + + /** + * Enable the action + * + * @param enable true to enable + */ + public final void enable(boolean enable) + { + this.enabled = enable; + } + + + @Override + public final void run() + { + if (enabled) execute(); + } + + + /** + * Do the work. + */ + public abstract void execute(); + +} diff --git a/src/mightypork/gamecore/input/ActionTrigger.java b/src/mightypork/gamecore/input/ActionTrigger.java new file mode 100644 index 0000000..afc0e38 --- /dev/null +++ b/src/mightypork/gamecore/input/ActionTrigger.java @@ -0,0 +1,7 @@ +package mightypork.gamecore.input; + + +public interface ActionTrigger { + + void setAction(Action action); +} diff --git a/src/mightypork/rogue/input/InputSystem.java b/src/mightypork/gamecore/input/InputSystem.java similarity index 82% rename from src/mightypork/rogue/input/InputSystem.java rename to src/mightypork/gamecore/input/InputSystem.java index 5674f3e..affe4fc 100644 --- a/src/mightypork/rogue/input/InputSystem.java +++ b/src/mightypork/gamecore/input/InputSystem.java @@ -1,15 +1,15 @@ -package mightypork.rogue.input; +package mightypork.gamecore.input; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.Subsystem; -import mightypork.rogue.bus.events.ActionRequest; -import mightypork.rogue.bus.events.ActionRequest.RequestType; -import mightypork.rogue.bus.events.KeyboardEvent; -import mightypork.rogue.bus.events.MouseButtonEvent; -import mightypork.rogue.bus.events.MouseMotionEvent; -import mightypork.utils.control.interf.Updateable; -import mightypork.utils.math.constraints.NumEvaluable; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.control.bus.events.KeyboardEvent; +import mightypork.gamecore.control.bus.events.MouseButtonEvent; +import mightypork.gamecore.control.bus.events.MouseMotionEvent; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.rogue.events.ActionRequest; +import mightypork.rogue.events.ActionRequest.RequestType; +import mightypork.utils.math.constraints.NumberConstraint; import mightypork.utils.math.coord.Coord; import org.lwjgl.LWJGLException; @@ -175,7 +175,7 @@ public class InputSystem extends Subsystem implements Updateable, KeyBinder { Mouse.setGrabbed(grab); } - private final NumEvaluable cmousex = new NumEvaluable() { + private final NumberConstraint cmousex = new NumberConstraint() { @Override public double getValue() @@ -184,7 +184,7 @@ public class InputSystem extends Subsystem implements Updateable, KeyBinder { } }; - private final NumEvaluable cmousey = new NumEvaluable() { + private final NumberConstraint cmousey = new NumberConstraint() { @Override public double getValue() @@ -194,13 +194,13 @@ public class InputSystem extends Subsystem implements Updateable, KeyBinder { }; - public NumEvaluable c_mouse_x() + public NumberConstraint c_mouse_x() { return cmousex; } - public NumEvaluable c_mouse_y() + public NumberConstraint c_mouse_y() { return cmousey; } diff --git a/src/mightypork/rogue/input/KeyBinder.java b/src/mightypork/gamecore/input/KeyBinder.java similarity index 91% rename from src/mightypork/rogue/input/KeyBinder.java rename to src/mightypork/gamecore/input/KeyBinder.java index b881d32..ad78512 100644 --- a/src/mightypork/rogue/input/KeyBinder.java +++ b/src/mightypork/gamecore/input/KeyBinder.java @@ -1,4 +1,4 @@ -package mightypork.rogue.input; +package mightypork.gamecore.input; public interface KeyBinder { diff --git a/src/mightypork/rogue/input/KeyBinding.java b/src/mightypork/gamecore/input/KeyBinding.java similarity index 92% rename from src/mightypork/rogue/input/KeyBinding.java rename to src/mightypork/gamecore/input/KeyBinding.java index 15ba81a..800c84b 100644 --- a/src/mightypork/rogue/input/KeyBinding.java +++ b/src/mightypork/gamecore/input/KeyBinding.java @@ -1,7 +1,7 @@ -package mightypork.rogue.input; +package mightypork.gamecore.input; -import mightypork.rogue.bus.events.KeyboardEvent; +import mightypork.gamecore.control.bus.events.KeyboardEvent; /** diff --git a/src/mightypork/rogue/input/KeyBindingPool.java b/src/mightypork/gamecore/input/KeyBindingPool.java similarity index 92% rename from src/mightypork/rogue/input/KeyBindingPool.java rename to src/mightypork/gamecore/input/KeyBindingPool.java index 9acfb13..ce3a677 100644 --- a/src/mightypork/rogue/input/KeyBindingPool.java +++ b/src/mightypork/gamecore/input/KeyBindingPool.java @@ -1,11 +1,11 @@ -package mightypork.rogue.input; +package mightypork.gamecore.input; import java.util.HashSet; import java.util.Iterator; import java.util.Set; -import mightypork.rogue.bus.events.KeyboardEvent; +import mightypork.gamecore.control.bus.events.KeyboardEvent; import mightypork.utils.logging.Log; diff --git a/src/mightypork/rogue/input/KeyStroke.java b/src/mightypork/gamecore/input/KeyStroke.java similarity index 98% rename from src/mightypork/rogue/input/KeyStroke.java rename to src/mightypork/gamecore/input/KeyStroke.java index 1c2b751..1cb8c0e 100644 --- a/src/mightypork/rogue/input/KeyStroke.java +++ b/src/mightypork/gamecore/input/KeyStroke.java @@ -1,4 +1,4 @@ -package mightypork.rogue.input; +package mightypork.gamecore.input; import java.util.Iterator; diff --git a/src/mightypork/rogue/input/Keys.java b/src/mightypork/gamecore/input/Keys.java similarity index 99% rename from src/mightypork/rogue/input/Keys.java rename to src/mightypork/gamecore/input/Keys.java index 2c1db9f..29a86bd 100644 --- a/src/mightypork/rogue/input/Keys.java +++ b/src/mightypork/gamecore/input/Keys.java @@ -1,4 +1,4 @@ -package mightypork.rogue.input; +package mightypork.gamecore.input; import org.lwjgl.input.Keyboard; diff --git a/src/mightypork/rogue/loading/AsyncResourceLoader.java b/src/mightypork/gamecore/loading/AsyncResourceLoader.java similarity index 83% rename from src/mightypork/rogue/loading/AsyncResourceLoader.java rename to src/mightypork/gamecore/loading/AsyncResourceLoader.java index 1e5a6b6..e0269b8 100644 --- a/src/mightypork/rogue/loading/AsyncResourceLoader.java +++ b/src/mightypork/gamecore/loading/AsyncResourceLoader.java @@ -1,14 +1,14 @@ -package mightypork.rogue.loading; +package mightypork.gamecore.loading; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.events.MainLoopTaskRequest; -import mightypork.rogue.bus.events.ResourceLoadRequest; -import mightypork.utils.control.interf.Destroyable; +import mightypork.gamecore.BusAccess; +import mightypork.gamecore.control.bus.events.MainLoopTaskRequest; +import mightypork.gamecore.control.bus.events.ResourceLoadRequest; +import mightypork.gamecore.control.interf.Destroyable; import mightypork.utils.logging.Log; @@ -19,7 +19,7 @@ import mightypork.utils.logging.Log; */ public class AsyncResourceLoader extends Thread implements ResourceLoadRequest.Listener, Destroyable { - public static void launch(AppAccess app) + public static void launch(BusAccess app) { (new AsyncResourceLoader(app)).start(); } @@ -28,10 +28,10 @@ public class AsyncResourceLoader extends Thread implements ResourceLoadRequest.L private final LinkedBlockingQueue toLoad = new LinkedBlockingQueue(); private boolean stopped; - private final AppAccess app; + private final BusAccess app; - public AsyncResourceLoader(AppAccess app) { + public AsyncResourceLoader(BusAccess app) { super("Deferred loader"); this.app = app; app.bus().subscribe(this); diff --git a/src/mightypork/rogue/loading/BaseDeferredResource.java b/src/mightypork/gamecore/loading/BaseDeferredResource.java similarity index 96% rename from src/mightypork/rogue/loading/BaseDeferredResource.java rename to src/mightypork/gamecore/loading/BaseDeferredResource.java index 3f8d02d..f8237a9 100644 --- a/src/mightypork/rogue/loading/BaseDeferredResource.java +++ b/src/mightypork/gamecore/loading/BaseDeferredResource.java @@ -1,7 +1,7 @@ -package mightypork.rogue.loading; +package mightypork.gamecore.loading; -import mightypork.utils.control.interf.Destroyable; +import mightypork.gamecore.control.interf.Destroyable; import mightypork.utils.logging.Log; import mightypork.utils.logging.LoggedName; diff --git a/src/mightypork/rogue/loading/DeferredResource.java b/src/mightypork/gamecore/loading/DeferredResource.java similarity index 88% rename from src/mightypork/rogue/loading/DeferredResource.java rename to src/mightypork/gamecore/loading/DeferredResource.java index c274368..a56654c 100644 --- a/src/mightypork/rogue/loading/DeferredResource.java +++ b/src/mightypork/gamecore/loading/DeferredResource.java @@ -1,4 +1,4 @@ -package mightypork.rogue.loading; +package mightypork.gamecore.loading; /** diff --git a/src/mightypork/rogue/loading/MustLoadInMainThread.java b/src/mightypork/gamecore/loading/MustLoadInMainThread.java similarity index 89% rename from src/mightypork/rogue/loading/MustLoadInMainThread.java rename to src/mightypork/gamecore/loading/MustLoadInMainThread.java index c4e9199..87d253b 100644 --- a/src/mightypork/rogue/loading/MustLoadInMainThread.java +++ b/src/mightypork/gamecore/loading/MustLoadInMainThread.java @@ -1,4 +1,4 @@ -package mightypork.rogue.loading; +package mightypork.gamecore.loading; import java.lang.annotation.*; diff --git a/src/mightypork/rogue/loading/NullResource.java b/src/mightypork/gamecore/loading/NullResource.java similarity index 84% rename from src/mightypork/rogue/loading/NullResource.java rename to src/mightypork/gamecore/loading/NullResource.java index af48646..7df2d11 100644 --- a/src/mightypork/rogue/loading/NullResource.java +++ b/src/mightypork/gamecore/loading/NullResource.java @@ -1,4 +1,4 @@ -package mightypork.rogue.loading; +package mightypork.gamecore.loading; /** diff --git a/src/mightypork/rogue/render/DisplaySystem.java b/src/mightypork/gamecore/render/DisplaySystem.java similarity index 75% rename from src/mightypork/rogue/render/DisplaySystem.java rename to src/mightypork/gamecore/render/DisplaySystem.java index 574e6ea..bf2cbf5 100644 --- a/src/mightypork/rogue/render/DisplaySystem.java +++ b/src/mightypork/gamecore/render/DisplaySystem.java @@ -1,15 +1,20 @@ -package mightypork.rogue.render; +package mightypork.gamecore.render; import static org.lwjgl.opengl.GL11.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; import java.nio.ByteBuffer; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.Subsystem; -import mightypork.rogue.bus.events.ScreenChangeEvent; +import javax.imageio.ImageIO; + +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.control.bus.events.ScreenChangeEvent; import mightypork.utils.logging.Log; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Coord; import mightypork.utils.math.coord.Rect; @@ -19,7 +24,7 @@ import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; -public class DisplaySystem extends Subsystem implements RectEvaluable { +public class DisplaySystem extends Subsystem implements RectConstraint { private DisplayMode windowDisplayMode; private int targetFps; @@ -192,10 +197,11 @@ public class DisplaySystem extends Subsystem implements RectEvaluable { public static class Screenshot { - public int width; - public int height; - public int bpp; - public ByteBuffer bytes; + private int width; + private int height; + private int bpp; + private ByteBuffer bytes; + private BufferedImage image; public Screenshot(int width, int height, int bpp, ByteBuffer buffer) { @@ -204,5 +210,32 @@ public class DisplaySystem extends Subsystem implements RectEvaluable { this.bpp = bpp; this.bytes = buffer; } + + + public BufferedImage getImage() + { + if (image != null) return image; + + image = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_RGB); + + // convert to a buffered image + for (int x = 0; x < this.width; x++) { + for (int y = 0; y < this.height; y++) { + final int i = (x + (this.width * y)) * this.bpp; + final int r = this.bytes.get(i) & 0xFF; + final int g = this.bytes.get(i + 1) & 0xFF; + final int b = this.bytes.get(i + 2) & 0xFF; + image.setRGB(x, this.height - (y + 1), (0xFF << 24) | (r << 16) | (g << 8) | b); + } + } + + return image; + } + + + public void save(File file) throws IOException + { + ImageIO.write(getImage(), "PNG", file); + } } } diff --git a/src/mightypork/rogue/render/Render.java b/src/mightypork/gamecore/render/Render.java similarity index 99% rename from src/mightypork/rogue/render/Render.java rename to src/mightypork/gamecore/render/Render.java index a986d91..ee223de 100644 --- a/src/mightypork/rogue/render/Render.java +++ b/src/mightypork/gamecore/render/Render.java @@ -1,11 +1,11 @@ -package mightypork.rogue.render; +package mightypork.gamecore.render; import static org.lwjgl.opengl.GL11.*; import java.io.IOException; -import mightypork.rogue.textures.TxQuad; +import mightypork.gamecore.resources.textures.TxQuad; import mightypork.utils.files.FileUtils; import mightypork.utils.logging.Log; import mightypork.utils.math.color.RGB; diff --git a/src/mightypork/rogue/render/Renderable.java b/src/mightypork/gamecore/render/Renderable.java similarity index 79% rename from src/mightypork/rogue/render/Renderable.java rename to src/mightypork/gamecore/render/Renderable.java index 6c73885..5fda9cb 100644 --- a/src/mightypork/rogue/render/Renderable.java +++ b/src/mightypork/gamecore/render/Renderable.java @@ -1,4 +1,4 @@ -package mightypork.rogue.render; +package mightypork.gamecore.render; /** diff --git a/src/mightypork/rogue/fonts/DeferredFont.java b/src/mightypork/gamecore/resources/fonts/DeferredFont.java similarity index 95% rename from src/mightypork/rogue/fonts/DeferredFont.java rename to src/mightypork/gamecore/resources/fonts/DeferredFont.java index 26b2153..9e41c3c 100644 --- a/src/mightypork/rogue/fonts/DeferredFont.java +++ b/src/mightypork/gamecore/resources/fonts/DeferredFont.java @@ -1,4 +1,4 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; import java.awt.Font; @@ -6,8 +6,8 @@ import java.awt.FontFormatException; import java.io.IOException; import java.io.InputStream; -import mightypork.rogue.loading.BaseDeferredResource; -import mightypork.rogue.loading.MustLoadInMainThread; +import mightypork.gamecore.loading.BaseDeferredResource; +import mightypork.gamecore.loading.MustLoadInMainThread; import mightypork.utils.files.FileUtils; import mightypork.utils.logging.LoggedName; import mightypork.utils.math.color.RGB; diff --git a/src/mightypork/rogue/fonts/DeferredFontNative.java b/src/mightypork/gamecore/resources/fonts/DeferredFontNative.java similarity index 97% rename from src/mightypork/rogue/fonts/DeferredFontNative.java rename to src/mightypork/gamecore/resources/fonts/DeferredFontNative.java index f44e212..52fb3b2 100644 --- a/src/mightypork/rogue/fonts/DeferredFontNative.java +++ b/src/mightypork/gamecore/resources/fonts/DeferredFontNative.java @@ -1,4 +1,4 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; import java.awt.Font; diff --git a/src/mightypork/rogue/fonts/FontBank.java b/src/mightypork/gamecore/resources/fonts/FontBank.java similarity index 85% rename from src/mightypork/rogue/fonts/FontBank.java rename to src/mightypork/gamecore/resources/fonts/FontBank.java index 861fd6e..5d12e28 100644 --- a/src/mightypork/rogue/fonts/FontBank.java +++ b/src/mightypork/gamecore/resources/fonts/FontBank.java @@ -1,11 +1,11 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; import java.util.HashMap; -import mightypork.rogue.AppAccess; -import mightypork.rogue.AppAdapter; -import mightypork.rogue.bus.events.ResourceLoadRequest; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.AppAdapter; +import mightypork.gamecore.control.bus.events.ResourceLoadRequest; import mightypork.utils.logging.Log; import org.newdawn.slick.opengl.Texture; diff --git a/src/mightypork/rogue/fonts/FontRenderer.java b/src/mightypork/gamecore/resources/fonts/FontRenderer.java similarity index 92% rename from src/mightypork/rogue/fonts/FontRenderer.java rename to src/mightypork/gamecore/resources/fonts/FontRenderer.java index 04874f3..e2415a3 100644 --- a/src/mightypork/rogue/fonts/FontRenderer.java +++ b/src/mightypork/gamecore/resources/fonts/FontRenderer.java @@ -1,7 +1,7 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; -import mightypork.rogue.render.Render; +import mightypork.gamecore.render.Render; import mightypork.utils.math.color.RGB; import mightypork.utils.math.coord.Coord; import mightypork.utils.math.coord.Rect; diff --git a/src/mightypork/rogue/fonts/GLFont.java b/src/mightypork/gamecore/resources/fonts/GLFont.java similarity index 92% rename from src/mightypork/rogue/fonts/GLFont.java rename to src/mightypork/gamecore/resources/fonts/GLFont.java index e93daf2..779ee63 100644 --- a/src/mightypork/rogue/fonts/GLFont.java +++ b/src/mightypork/gamecore/resources/fonts/GLFont.java @@ -1,4 +1,4 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; import mightypork.utils.math.color.RGB; diff --git a/src/mightypork/rogue/fonts/Glyphs.java b/src/mightypork/gamecore/resources/fonts/Glyphs.java similarity index 95% rename from src/mightypork/rogue/fonts/Glyphs.java rename to src/mightypork/gamecore/resources/fonts/Glyphs.java index 24edd1e..7f1da30 100644 --- a/src/mightypork/rogue/fonts/Glyphs.java +++ b/src/mightypork/gamecore/resources/fonts/Glyphs.java @@ -1,4 +1,4 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; /** diff --git a/src/mightypork/rogue/fonts/NullFont.java b/src/mightypork/gamecore/resources/fonts/NullFont.java similarity index 91% rename from src/mightypork/rogue/fonts/NullFont.java rename to src/mightypork/gamecore/resources/fonts/NullFont.java index c97e892..2599caa 100644 --- a/src/mightypork/rogue/fonts/NullFont.java +++ b/src/mightypork/gamecore/resources/fonts/NullFont.java @@ -1,4 +1,4 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; import mightypork.utils.math.color.RGB; diff --git a/src/mightypork/rogue/fonts/SlickFont.java b/src/mightypork/gamecore/resources/fonts/SlickFont.java similarity index 95% rename from src/mightypork/rogue/fonts/SlickFont.java rename to src/mightypork/gamecore/resources/fonts/SlickFont.java index 77ea5a3..5acb81e 100644 --- a/src/mightypork/rogue/fonts/SlickFont.java +++ b/src/mightypork/gamecore/resources/fonts/SlickFont.java @@ -1,11 +1,11 @@ -package mightypork.rogue.fonts; +package mightypork.gamecore.resources.fonts; import static org.lwjgl.opengl.GL11.*; import java.awt.Font; -import mightypork.rogue.render.Render; +import mightypork.gamecore.render.Render; import mightypork.utils.math.color.RGB; import mightypork.utils.math.coord.Coord; diff --git a/src/mightypork/rogue/sounds/DeferredAudio.java b/src/mightypork/gamecore/resources/sounds/DeferredAudio.java similarity index 97% rename from src/mightypork/rogue/sounds/DeferredAudio.java rename to src/mightypork/gamecore/resources/sounds/DeferredAudio.java index ba3902b..b97224d 100644 --- a/src/mightypork/rogue/sounds/DeferredAudio.java +++ b/src/mightypork/gamecore/resources/sounds/DeferredAudio.java @@ -1,9 +1,9 @@ -package mightypork.rogue.sounds; +package mightypork.gamecore.resources.sounds; import java.io.IOException; -import mightypork.rogue.loading.BaseDeferredResource; +import mightypork.gamecore.loading.BaseDeferredResource; import mightypork.utils.files.FileUtils; import mightypork.utils.logging.LoggedName; import mightypork.utils.math.coord.Coord; diff --git a/src/mightypork/rogue/sounds/JointVolume.java b/src/mightypork/gamecore/resources/sounds/JointVolume.java similarity index 94% rename from src/mightypork/rogue/sounds/JointVolume.java rename to src/mightypork/gamecore/resources/sounds/JointVolume.java index 21aa8f1..1ad34be 100644 --- a/src/mightypork/rogue/sounds/JointVolume.java +++ b/src/mightypork/gamecore/resources/sounds/JointVolume.java @@ -1,4 +1,4 @@ -package mightypork.rogue.sounds; +package mightypork.gamecore.resources.sounds; import mightypork.utils.math.Calc; diff --git a/src/mightypork/rogue/sounds/NullAudio.java b/src/mightypork/gamecore/resources/sounds/NullAudio.java similarity index 78% rename from src/mightypork/rogue/sounds/NullAudio.java rename to src/mightypork/gamecore/resources/sounds/NullAudio.java index 6b086fb..c39a6f4 100644 --- a/src/mightypork/rogue/sounds/NullAudio.java +++ b/src/mightypork/gamecore/resources/sounds/NullAudio.java @@ -1,7 +1,7 @@ -package mightypork.rogue.sounds; +package mightypork.gamecore.resources.sounds; -import mightypork.rogue.loading.NullResource; +import mightypork.gamecore.loading.NullResource; import mightypork.utils.logging.LoggedName; diff --git a/src/mightypork/rogue/sounds/SoundBank.java b/src/mightypork/gamecore/resources/sounds/SoundBank.java similarity index 89% rename from src/mightypork/rogue/sounds/SoundBank.java rename to src/mightypork/gamecore/resources/sounds/SoundBank.java index 62e7fb5..ada3998 100644 --- a/src/mightypork/rogue/sounds/SoundBank.java +++ b/src/mightypork/gamecore/resources/sounds/SoundBank.java @@ -1,13 +1,13 @@ -package mightypork.rogue.sounds; +package mightypork.gamecore.resources.sounds; import java.util.HashMap; import java.util.Map; -import mightypork.rogue.AppAccess; -import mightypork.rogue.AppAdapter; -import mightypork.rogue.sounds.players.EffectPlayer; -import mightypork.rogue.sounds.players.LoopPlayer; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.AppAdapter; +import mightypork.gamecore.resources.sounds.players.EffectPlayer; +import mightypork.gamecore.resources.sounds.players.LoopPlayer; import mightypork.utils.logging.Log; diff --git a/src/mightypork/rogue/sounds/SoundSystem.java b/src/mightypork/gamecore/resources/sounds/SoundSystem.java similarity index 91% rename from src/mightypork/rogue/sounds/SoundSystem.java rename to src/mightypork/gamecore/resources/sounds/SoundSystem.java index 87e57c0..9a4882a 100644 --- a/src/mightypork/rogue/sounds/SoundSystem.java +++ b/src/mightypork/gamecore/resources/sounds/SoundSystem.java @@ -1,16 +1,16 @@ -package mightypork.rogue.sounds; +package mightypork.gamecore.resources.sounds; import java.nio.FloatBuffer; import java.util.HashSet; import java.util.Set; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.Subsystem; -import mightypork.rogue.bus.events.ResourceLoadRequest; -import mightypork.rogue.sounds.players.EffectPlayer; -import mightypork.rogue.sounds.players.LoopPlayer; -import mightypork.utils.control.interf.Updateable; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.Subsystem; +import mightypork.gamecore.control.bus.events.ResourceLoadRequest; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.gamecore.resources.sounds.players.EffectPlayer; +import mightypork.gamecore.resources.sounds.players.LoopPlayer; import mightypork.utils.math.Calc.Buffers; import mightypork.utils.math.coord.Coord; import mightypork.utils.objects.Mutable; diff --git a/src/mightypork/rogue/sounds/players/BaseAudioPlayer.java b/src/mightypork/gamecore/resources/sounds/players/BaseAudioPlayer.java similarity index 88% rename from src/mightypork/rogue/sounds/players/BaseAudioPlayer.java rename to src/mightypork/gamecore/resources/sounds/players/BaseAudioPlayer.java index 72623d4..d681305 100644 --- a/src/mightypork/rogue/sounds/players/BaseAudioPlayer.java +++ b/src/mightypork/gamecore/resources/sounds/players/BaseAudioPlayer.java @@ -1,8 +1,8 @@ -package mightypork.rogue.sounds.players; +package mightypork.gamecore.resources.sounds.players; -import mightypork.rogue.sounds.DeferredAudio; -import mightypork.utils.control.interf.Destroyable; +import mightypork.gamecore.control.interf.Destroyable; +import mightypork.gamecore.resources.sounds.DeferredAudio; import mightypork.utils.objects.Mutable; diff --git a/src/mightypork/rogue/sounds/players/EffectPlayer.java b/src/mightypork/gamecore/resources/sounds/players/EffectPlayer.java similarity index 86% rename from src/mightypork/rogue/sounds/players/EffectPlayer.java rename to src/mightypork/gamecore/resources/sounds/players/EffectPlayer.java index 248b47e..09599fb 100644 --- a/src/mightypork/rogue/sounds/players/EffectPlayer.java +++ b/src/mightypork/gamecore/resources/sounds/players/EffectPlayer.java @@ -1,7 +1,7 @@ -package mightypork.rogue.sounds.players; +package mightypork.gamecore.resources.sounds.players; -import mightypork.rogue.sounds.DeferredAudio; +import mightypork.gamecore.resources.sounds.DeferredAudio; import mightypork.utils.math.coord.Coord; import mightypork.utils.objects.Mutable; diff --git a/src/mightypork/rogue/sounds/players/LoopPlayer.java b/src/mightypork/gamecore/resources/sounds/players/LoopPlayer.java similarity index 90% rename from src/mightypork/rogue/sounds/players/LoopPlayer.java rename to src/mightypork/gamecore/resources/sounds/players/LoopPlayer.java index 12e381d..dd6d23a 100644 --- a/src/mightypork/rogue/sounds/players/LoopPlayer.java +++ b/src/mightypork/gamecore/resources/sounds/players/LoopPlayer.java @@ -1,9 +1,9 @@ -package mightypork.rogue.sounds.players; +package mightypork.gamecore.resources.sounds.players; -import mightypork.rogue.sounds.DeferredAudio; -import mightypork.utils.control.interf.Updateable; -import mightypork.utils.control.timing.Pauseable; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.gamecore.control.timing.Pauseable; +import mightypork.gamecore.resources.sounds.DeferredAudio; import mightypork.utils.math.animation.AnimDouble; import mightypork.utils.objects.Mutable; diff --git a/src/mightypork/rogue/textures/DeferredTexture.java b/src/mightypork/gamecore/resources/textures/DeferredTexture.java similarity index 94% rename from src/mightypork/rogue/textures/DeferredTexture.java rename to src/mightypork/gamecore/resources/textures/DeferredTexture.java index 61cca06..aa456d2 100644 --- a/src/mightypork/rogue/textures/DeferredTexture.java +++ b/src/mightypork/gamecore/resources/textures/DeferredTexture.java @@ -1,9 +1,9 @@ -package mightypork.rogue.textures; +package mightypork.gamecore.resources.textures; -import mightypork.rogue.loading.BaseDeferredResource; -import mightypork.rogue.loading.MustLoadInMainThread; -import mightypork.rogue.render.Render; +import mightypork.gamecore.loading.BaseDeferredResource; +import mightypork.gamecore.loading.MustLoadInMainThread; +import mightypork.gamecore.render.Render; import mightypork.utils.logging.LoggedName; import mightypork.utils.math.coord.Rect; diff --git a/src/mightypork/rogue/textures/FilteredTexture.java b/src/mightypork/gamecore/resources/textures/FilteredTexture.java similarity index 94% rename from src/mightypork/rogue/textures/FilteredTexture.java rename to src/mightypork/gamecore/resources/textures/FilteredTexture.java index e45c20d..f6dcae5 100644 --- a/src/mightypork/rogue/textures/FilteredTexture.java +++ b/src/mightypork/gamecore/resources/textures/FilteredTexture.java @@ -1,4 +1,4 @@ -package mightypork.rogue.textures; +package mightypork.gamecore.resources.textures; import org.lwjgl.opengl.GL11; diff --git a/src/mightypork/rogue/textures/TextureBank.java b/src/mightypork/gamecore/resources/textures/TextureBank.java similarity index 89% rename from src/mightypork/rogue/textures/TextureBank.java rename to src/mightypork/gamecore/resources/textures/TextureBank.java index c66733c..60270b0 100644 --- a/src/mightypork/rogue/textures/TextureBank.java +++ b/src/mightypork/gamecore/resources/textures/TextureBank.java @@ -1,13 +1,13 @@ -package mightypork.rogue.textures; +package mightypork.gamecore.resources.textures; import java.util.HashMap; -import mightypork.rogue.AppAccess; -import mightypork.rogue.AppAdapter; -import mightypork.rogue.bus.events.ResourceLoadRequest; -import mightypork.rogue.textures.FilteredTexture.Filter; -import mightypork.rogue.textures.FilteredTexture.Wrap; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.AppAdapter; +import mightypork.gamecore.control.bus.events.ResourceLoadRequest; +import mightypork.gamecore.resources.textures.FilteredTexture.Filter; +import mightypork.gamecore.resources.textures.FilteredTexture.Wrap; import mightypork.utils.math.coord.Rect; import org.newdawn.slick.opengl.Texture; diff --git a/src/mightypork/rogue/textures/TxQuad.java b/src/mightypork/gamecore/resources/textures/TxQuad.java similarity index 97% rename from src/mightypork/rogue/textures/TxQuad.java rename to src/mightypork/gamecore/resources/textures/TxQuad.java index 8a7ec0a..4bbcf4e 100644 --- a/src/mightypork/rogue/textures/TxQuad.java +++ b/src/mightypork/gamecore/resources/textures/TxQuad.java @@ -1,4 +1,4 @@ -package mightypork.rogue.textures; +package mightypork.gamecore.resources.textures; import mightypork.utils.math.coord.Rect; diff --git a/src/mightypork/rogue/App.java b/src/mightypork/rogue/App.java index 508ee3d..88cf1e6 100644 --- a/src/mightypork/rogue/App.java +++ b/src/mightypork/rogue/App.java @@ -9,21 +9,24 @@ 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.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; -import mightypork.rogue.input.InputSystem; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.input.Keys; -import mightypork.rogue.render.DisplaySystem; -import mightypork.rogue.sounds.SoundSystem; -import mightypork.rogue.util.SlickLogRedirector; -import mightypork.utils.control.bus.EventBus; -import mightypork.utils.control.interf.Destroyable; -import mightypork.utils.control.interf.Updateable; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.GameLoop; +import mightypork.gamecore.SlickLogRedirector; +import mightypork.gamecore.control.bus.EventBus; +import mightypork.gamecore.control.bus.events.*; +import mightypork.gamecore.control.interf.Destroyable; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.gamecore.gui.screens.ScreenRegistry; +import mightypork.gamecore.input.InputSystem; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.input.Keys; +import mightypork.gamecore.render.DisplaySystem; +import mightypork.gamecore.resources.sounds.SoundSystem; +import mightypork.rogue.events.ActionRequest; +import mightypork.rogue.events.ActionRequest.RequestType; +import mightypork.rogue.screens.test_bouncyboxes.ScreenTestBouncy; +import mightypork.rogue.screens.test_cat_sound.ScreenTestCat; +import mightypork.rogue.screens.test_font.ScreenTestFont; import mightypork.utils.logging.Log; import mightypork.utils.logging.LogInstance; @@ -43,7 +46,7 @@ public class App implements AppAccess { private DisplaySystem displaySystem; private static SoundSystem soundSystem; private EventBus eventBus; - private MainLoop mainLoop; + private GameLoop mainLoop; private ScreenRegistry screens; diff --git a/src/mightypork/rogue/MainLoop.java b/src/mightypork/rogue/MainLoop.java index 4531987..e493e37 100644 --- a/src/mightypork/rogue/MainLoop.java +++ b/src/mightypork/rogue/MainLoop.java @@ -1,24 +1,17 @@ package mightypork.rogue; -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.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.gamecore.GameLoop; +import mightypork.gamecore.input.Action; +import mightypork.gamecore.render.Renderable; +import mightypork.rogue.events.ActionRequest; +import mightypork.rogue.events.ActionRequest.RequestType; import mightypork.rogue.util.Utils; -import mightypork.utils.control.timing.TimerDelta; -public class MainLoop extends Subsystem implements ActionRequest.Listener, MainLoopTaskRequest.Listener { +public class MainLoop extends GameLoop implements ActionRequest.Listener { - private final Queue taskQueue = new ConcurrentLinkedQueue(); - private final Renderable renderable; + final Renderable renderable; public MainLoop(App app, Renderable masterRenderable) { @@ -31,36 +24,11 @@ public class MainLoop extends Subsystem implements ActionRequest.Listener, MainL this.renderable = masterRenderable; } - /** timer */ - private TimerDelta timer; - private boolean running = true; - - - public void start() - { - timer = new TimerDelta(); - - while (running) { - disp().beginFrame(); - - bus().send(new UpdateEvent(timer.getDelta())); - - Runnable r; - while ((r = taskQueue.poll()) != null) { - r.run(); - } - - renderable.render(); - - disp().endFrame(); - } - } - @Override - protected void deinit() + protected void tick() { - running = false; + renderable.render(); } @@ -82,10 +50,10 @@ public class MainLoop extends Subsystem implements ActionRequest.Listener, MainL } /** Take a screenshot */ - private final Runnable taskScreenshot = new Runnable() { + private final Action taskScreenshot = new Action() { @Override - public void run() + public void execute() { Res.getEffect("gui.shutter").play(1); Utils.runAsThread(new TaskTakeScreenshot(disp())); @@ -93,29 +61,22 @@ public class MainLoop extends Subsystem implements ActionRequest.Listener, MainL }; /** Shutdown the application */ - private final Runnable taskShutdown = new Runnable() { + private final Action taskShutdown = new Action() { @Override - public void run() + public void execute() { shutdown(); } }; /** Toggle fullscreen */ - private final Runnable taskFullscreen = new Runnable() { + private final Action taskFullscreen = new Action() { @Override - public void run() + public void execute() { disp().switchFullscreen(); } }; - - - @Override - public synchronized void queueTask(Runnable request) - { - taskQueue.add(request); - } } diff --git a/src/mightypork/rogue/Res.java b/src/mightypork/rogue/Res.java index 4284a9b..02cd3c7 100644 --- a/src/mightypork/rogue/Res.java +++ b/src/mightypork/rogue/Res.java @@ -1,18 +1,19 @@ package mightypork.rogue; -import mightypork.rogue.fonts.DeferredFont; -import mightypork.rogue.fonts.DeferredFont.FontStyle; -import mightypork.rogue.fonts.FontBank; -import mightypork.rogue.fonts.GLFont; -import mightypork.rogue.loading.AsyncResourceLoader; -import mightypork.rogue.sounds.SoundBank; -import mightypork.rogue.sounds.players.EffectPlayer; -import mightypork.rogue.sounds.players.LoopPlayer; -import mightypork.rogue.textures.FilteredTexture.Filter; -import mightypork.rogue.textures.FilteredTexture.Wrap; -import mightypork.rogue.textures.TextureBank; -import mightypork.rogue.textures.TxQuad; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.loading.AsyncResourceLoader; +import mightypork.gamecore.resources.fonts.DeferredFont; +import mightypork.gamecore.resources.fonts.DeferredFont.FontStyle; +import mightypork.gamecore.resources.fonts.FontBank; +import mightypork.gamecore.resources.fonts.GLFont; +import mightypork.gamecore.resources.sounds.SoundBank; +import mightypork.gamecore.resources.sounds.players.EffectPlayer; +import mightypork.gamecore.resources.sounds.players.LoopPlayer; +import mightypork.gamecore.resources.textures.FilteredTexture.Filter; +import mightypork.gamecore.resources.textures.FilteredTexture.Wrap; +import mightypork.gamecore.resources.textures.TextureBank; +import mightypork.gamecore.resources.textures.TxQuad; import org.newdawn.slick.opengl.Texture; diff --git a/src/mightypork/rogue/tasks/TaskTakeScreenshot.java b/src/mightypork/rogue/TaskTakeScreenshot.java similarity index 54% rename from src/mightypork/rogue/tasks/TaskTakeScreenshot.java rename to src/mightypork/rogue/TaskTakeScreenshot.java index 1d116e8..d98c4d3 100644 --- a/src/mightypork/rogue/tasks/TaskTakeScreenshot.java +++ b/src/mightypork/rogue/TaskTakeScreenshot.java @@ -1,18 +1,14 @@ -package mightypork.rogue.tasks; +package mightypork.rogue; -import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; -import javax.imageio.ImageIO; - -import mightypork.rogue.Paths; -import mightypork.rogue.render.DisplaySystem; -import mightypork.rogue.render.DisplaySystem.Screenshot; +import mightypork.gamecore.render.DisplaySystem; +import mightypork.gamecore.render.DisplaySystem.Screenshot; import mightypork.utils.logging.Log; @@ -29,20 +25,6 @@ public class TaskTakeScreenshot implements Runnable { @Override public void run() { - - final BufferedImage image = new BufferedImage(scr.width, scr.height, BufferedImage.TYPE_INT_RGB); - - // convert to a buffered image - for (int x = 0; x < scr.width; x++) { - for (int y = 0; y < scr.height; y++) { - final int i = (x + (scr.width * y)) * scr.bpp; - final int r = scr.bytes.get(i) & 0xFF; - final int g = scr.bytes.get(i + 1) & 0xFF; - final int b = scr.bytes.get(i + 2) & 0xFF; - image.setRGB(x, scr.height - (y + 1), (0xFF << 24) | (r << 16) | (g << 8) | b); - } - } - final String fname = getUniqueScreenshotName(); // generate unique filename @@ -56,11 +38,9 @@ public class TaskTakeScreenshot implements Runnable { Log.f3("Saving screenshot to file: " + file); - final String format = "PNG"; - // save to disk try { - ImageIO.write(image, format, file); + scr.save(file); } catch (final IOException e) { Log.e("Failed to save screenshot.", e); } diff --git a/src/mightypork/rogue/bus/Subsystem.java b/src/mightypork/rogue/bus/Subsystem.java deleted file mode 100644 index 99f2ad5..0000000 --- a/src/mightypork/rogue/bus/Subsystem.java +++ /dev/null @@ -1,38 +0,0 @@ -package mightypork.rogue.bus; - - -import mightypork.rogue.AppAccess; -import mightypork.utils.control.interf.Destroyable; - - -/** - * App event bus client, to be used for subsystems, screens and anything that - * needs access to the eventbus - * - * @author MightyPork - */ -public abstract class Subsystem extends ChildClient implements Destroyable { - - public Subsystem(AppAccess app) { - super(app); - - bus().subscribe(this); - } - - - @Override - public final void destroy() - { - deinit(); - - bus().unsubscribe(this); - } - - - /** - * Deinitialize the subsystem
- * (called during destruction) - */ - protected abstract void deinit(); - -} diff --git a/src/mightypork/rogue/bus/events/ActionRequest.java b/src/mightypork/rogue/events/ActionRequest.java similarity index 81% rename from src/mightypork/rogue/bus/events/ActionRequest.java rename to src/mightypork/rogue/events/ActionRequest.java index 53c8893..1870e73 100644 --- a/src/mightypork/rogue/bus/events/ActionRequest.java +++ b/src/mightypork/rogue/events/ActionRequest.java @@ -1,8 +1,8 @@ -package mightypork.rogue.bus.events; +package mightypork.rogue.events; -import mightypork.utils.control.bus.events.Event; -import mightypork.utils.control.bus.events.types.SingleReceiverEvent; +import mightypork.gamecore.control.bus.events.Event; +import mightypork.gamecore.control.bus.events.types.SingleReceiverEvent; /** diff --git a/src/mightypork/rogue/gui/screens/test_bouncyboxes/BouncyBox.java b/src/mightypork/rogue/screens/test_bouncyboxes/BouncyBox.java similarity index 61% rename from src/mightypork/rogue/gui/screens/test_bouncyboxes/BouncyBox.java rename to src/mightypork/rogue/screens/test_bouncyboxes/BouncyBox.java index afc87dc..187b74d 100644 --- a/src/mightypork/rogue/gui/screens/test_bouncyboxes/BouncyBox.java +++ b/src/mightypork/rogue/screens/test_bouncyboxes/BouncyBox.java @@ -1,37 +1,37 @@ -package mightypork.rogue.gui.screens.test_bouncyboxes; +package mightypork.rogue.screens.test_bouncyboxes; import static mightypork.utils.math.constraints.ConstraintFactory.*; import java.util.Random; -import mightypork.rogue.gui.renderers.PluggableRenderer; -import mightypork.rogue.render.Render; -import mightypork.utils.control.interf.Updateable; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.gamecore.gui.renderers.PluggableRenderer; +import mightypork.gamecore.render.Render; import mightypork.utils.math.animation.AnimDouble; import mightypork.utils.math.animation.Easing; import mightypork.utils.math.color.RGB; -import mightypork.utils.math.constraints.NumEvaluable; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.utils.math.constraints.NumberConstraint; +import mightypork.utils.math.constraints.RectConstraint; public class BouncyBox extends PluggableRenderer implements Updateable { private final Random rand = new Random(); - private final RectEvaluable box; + private final RectConstraint box; private final AnimDouble pos = new AnimDouble(0, Easing.BOUNCE_OUT); public BouncyBox() { // create box - final NumEvaluable side = c_height(this); - RectEvaluable abox = c_box(this, side, side); + final NumberConstraint side = c_height(this); + RectConstraint abox = c_box(this, side, side); // move - final NumEvaluable move_length = c_sub(c_width(this), side); - final NumEvaluable offset = c_mul(move_length, c_n(pos)); + final NumberConstraint move_length = c_sub(c_width(this), side); + final NumberConstraint offset = c_mul(move_length, c_n(pos)); abox = c_move(abox, offset, c_n(0)); // add padding diff --git a/src/mightypork/rogue/gui/screens/test_bouncyboxes/LayerBouncyBoxes.java b/src/mightypork/rogue/screens/test_bouncyboxes/LayerBouncyBoxes.java similarity index 69% rename from src/mightypork/rogue/gui/screens/test_bouncyboxes/LayerBouncyBoxes.java rename to src/mightypork/rogue/screens/test_bouncyboxes/LayerBouncyBoxes.java index 801653c..2496ce0 100644 --- a/src/mightypork/rogue/gui/screens/test_bouncyboxes/LayerBouncyBoxes.java +++ b/src/mightypork/rogue/screens/test_bouncyboxes/LayerBouncyBoxes.java @@ -1,4 +1,4 @@ -package mightypork.rogue.gui.screens.test_bouncyboxes; +package mightypork.rogue.screens.test_bouncyboxes; import static mightypork.utils.math.constraints.ConstraintFactory.*; @@ -6,16 +6,16 @@ import static mightypork.utils.math.constraints.ConstraintFactory.*; import java.util.ArrayList; import java.util.List; +import mightypork.gamecore.gui.renderers.RowHolder; +import mightypork.gamecore.gui.renderers.TextRenderer; +import mightypork.gamecore.gui.renderers.TextRenderer.Align; +import mightypork.gamecore.gui.screens.Screen; +import mightypork.gamecore.gui.screens.ScreenLayer; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.input.Keys; import mightypork.rogue.Res; -import mightypork.rogue.gui.renderers.RowHolder; -import mightypork.rogue.gui.renderers.TextRenderer; -import mightypork.rogue.gui.renderers.TextRenderer.Align; -import mightypork.rogue.gui.screens.Screen; -import mightypork.rogue.gui.screens.ScreenLayer; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.input.Keys; import mightypork.utils.math.color.RGB; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.utils.math.constraints.RectConstraint; public class LayerBouncyBoxes extends ScreenLayer { @@ -46,7 +46,7 @@ public class LayerBouncyBoxes extends ScreenLayer { }); // shrink screen rect by 8% on all sides - final RectEvaluable holder_rect = c_shrink(this, c_percent(c_height(this), c_n(8))); + final RectConstraint holder_rect = c_shrink(this, c_percent(c_height(this), c_n(8))); addChildClient(layout = new RowHolder(screen, holder_rect, 8)); diff --git a/src/mightypork/rogue/gui/screens/test_bouncyboxes/ScreenTestBouncy.java b/src/mightypork/rogue/screens/test_bouncyboxes/ScreenTestBouncy.java similarity index 69% rename from src/mightypork/rogue/gui/screens/test_bouncyboxes/ScreenTestBouncy.java rename to src/mightypork/rogue/screens/test_bouncyboxes/ScreenTestBouncy.java index 8d57b3f..f6159ed 100644 --- a/src/mightypork/rogue/gui/screens/test_bouncyboxes/ScreenTestBouncy.java +++ b/src/mightypork/rogue/screens/test_bouncyboxes/ScreenTestBouncy.java @@ -1,11 +1,11 @@ -package mightypork.rogue.gui.screens.test_bouncyboxes; +package mightypork.rogue.screens.test_bouncyboxes; -import mightypork.rogue.AppAccess; -import mightypork.rogue.bus.events.ScreenRequestEvent; -import mightypork.rogue.gui.screens.LayeredScreen; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.input.Keys; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.bus.events.ScreenRequestEvent; +import mightypork.gamecore.gui.screens.LayeredScreen; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.input.Keys; public class ScreenTestBouncy extends LayeredScreen { diff --git a/src/mightypork/rogue/gui/screens/test_cat_sound/LayerFlyingCat.java b/src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java similarity index 75% rename from src/mightypork/rogue/gui/screens/test_cat_sound/LayerFlyingCat.java rename to src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java index 9ebe2c5..b080483 100644 --- a/src/mightypork/rogue/gui/screens/test_cat_sound/LayerFlyingCat.java +++ b/src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java @@ -1,24 +1,24 @@ -package mightypork.rogue.gui.screens.test_cat_sound; +package mightypork.rogue.screens.test_cat_sound; import static mightypork.utils.math.constraints.ConstraintFactory.*; import java.util.Random; +import mightypork.gamecore.control.bus.events.MouseButtonEvent; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.gamecore.gui.renderers.ImageRenderer; +import mightypork.gamecore.gui.renderers.TextRenderer; +import mightypork.gamecore.gui.renderers.TextRenderer.Align; +import mightypork.gamecore.gui.screens.Screen; +import mightypork.gamecore.gui.screens.ScreenLayer; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.input.Keys; import mightypork.rogue.Res; -import mightypork.rogue.bus.events.MouseButtonEvent; -import mightypork.rogue.gui.renderers.ImageRenderer; -import mightypork.rogue.gui.renderers.TextRenderer; -import mightypork.rogue.gui.renderers.TextRenderer.Align; -import mightypork.rogue.gui.screens.Screen; -import mightypork.rogue.gui.screens.ScreenLayer; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.input.Keys; -import mightypork.utils.control.interf.Updateable; import mightypork.utils.math.animation.AnimDouble; import mightypork.utils.math.animation.Easing; import mightypork.utils.math.color.RGB; -import mightypork.utils.math.constraints.RectEvaluable; +import mightypork.utils.math.constraints.RectConstraint; import mightypork.utils.math.coord.Coord; @@ -44,7 +44,7 @@ public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButt cat.setContext(c_centered(c_box(this, c_n(size), c_n(size)), c_n(xPos), c_n(yPos))); //@formatter:off - final RectEvaluable flyingFontBox = c_centered( + final RectConstraint flyingFontBox = c_centered( c_box(this, c_n(0), c_n(64)), input().c_mouse_x(), input().c_mouse_y() diff --git a/src/mightypork/rogue/gui/screens/test_cat_sound/ScreenTestCat.java b/src/mightypork/rogue/screens/test_cat_sound/ScreenTestCat.java similarity index 70% rename from src/mightypork/rogue/gui/screens/test_cat_sound/ScreenTestCat.java rename to src/mightypork/rogue/screens/test_cat_sound/ScreenTestCat.java index fb0a6a7..6703dd9 100644 --- a/src/mightypork/rogue/gui/screens/test_cat_sound/ScreenTestCat.java +++ b/src/mightypork/rogue/screens/test_cat_sound/ScreenTestCat.java @@ -1,14 +1,14 @@ -package mightypork.rogue.gui.screens.test_cat_sound; +package mightypork.rogue.screens.test_cat_sound; -import mightypork.rogue.AppAccess; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.control.bus.events.ScreenRequestEvent; +import mightypork.gamecore.gui.screens.LayeredScreen; +import mightypork.gamecore.input.KeyStroke; +import mightypork.gamecore.input.Keys; 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.screens.LayeredScreen; -import mightypork.rogue.input.KeyStroke; -import mightypork.rogue.input.Keys; +import mightypork.rogue.events.ActionRequest; +import mightypork.rogue.events.ActionRequest.RequestType; public class ScreenTestCat extends LayeredScreen { diff --git a/src/mightypork/rogue/gui/screens/test_font/ScreenTestFont.java b/src/mightypork/rogue/screens/test_font/ScreenTestFont.java similarity index 86% rename from src/mightypork/rogue/gui/screens/test_font/ScreenTestFont.java rename to src/mightypork/rogue/screens/test_font/ScreenTestFont.java index 4d57bba..85de253 100644 --- a/src/mightypork/rogue/gui/screens/test_font/ScreenTestFont.java +++ b/src/mightypork/rogue/screens/test_font/ScreenTestFont.java @@ -1,10 +1,10 @@ -package mightypork.rogue.gui.screens.test_font; +package mightypork.rogue.screens.test_font; -import mightypork.rogue.AppAccess; +import mightypork.gamecore.AppAccess; +import mightypork.gamecore.gui.screens.Screen; +import mightypork.gamecore.resources.fonts.FontRenderer; import mightypork.rogue.Res; -import mightypork.rogue.fonts.FontRenderer; -import mightypork.rogue.gui.screens.Screen; import mightypork.utils.math.color.RGB; import mightypork.utils.math.coord.Coord; diff --git a/src/mightypork/utils/math/animation/AnimDouble.java b/src/mightypork/utils/math/animation/AnimDouble.java index 73f0f26..4126b96 100644 --- a/src/mightypork/utils/math/animation/AnimDouble.java +++ b/src/mightypork/utils/math/animation/AnimDouble.java @@ -1,8 +1,8 @@ package mightypork.utils.math.animation; -import mightypork.utils.control.interf.Updateable; -import mightypork.utils.control.timing.Pauseable; +import mightypork.gamecore.control.interf.Updateable; +import mightypork.gamecore.control.timing.Pauseable; import mightypork.utils.math.Calc; diff --git a/src/mightypork/utils/math/constraints/ConstraintFactory.java b/src/mightypork/utils/math/constraints/ConstraintFactory.java index 10c8da4..91a82e6 100644 --- a/src/mightypork/utils/math/constraints/ConstraintFactory.java +++ b/src/mightypork/utils/math/constraints/ConstraintFactory.java @@ -14,9 +14,9 @@ import mightypork.utils.math.coord.Rect; */ public class ConstraintFactory { - public static NumEvaluable c_min(final NumEvaluable a, final NumEvaluable b) + public static NumberConstraint c_min(final NumberConstraint a, final NumberConstraint b) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -27,9 +27,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_max(final NumEvaluable a, final NumEvaluable b) + public static NumberConstraint c_max(final NumberConstraint a, final NumberConstraint b) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -40,9 +40,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_abs(final NumEvaluable a) + public static NumberConstraint c_abs(final NumberConstraint a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -53,9 +53,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_round(final NumEvaluable a) + public static NumberConstraint c_round(final NumberConstraint a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -66,9 +66,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_round(final RectEvaluable r) + public static RectConstraint c_round(final RectConstraint r) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -79,9 +79,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_ceil(final NumEvaluable a) + public static NumberConstraint c_ceil(final NumberConstraint a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -92,9 +92,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_floor(final NumEvaluable a) + public static NumberConstraint c_floor(final NumberConstraint a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -105,9 +105,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_neg(final NumEvaluable a) + public static NumberConstraint c_neg(final NumberConstraint a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -118,9 +118,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_add(final NumEvaluable a, final NumEvaluable b) + public static NumberConstraint c_add(final NumberConstraint a, final NumberConstraint b) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -131,9 +131,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_sub(final NumEvaluable a, final NumEvaluable b) + public static NumberConstraint c_sub(final NumberConstraint a, final NumberConstraint b) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -144,9 +144,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_mul(final NumEvaluable a, final NumEvaluable b) + public static NumberConstraint c_mul(final NumberConstraint a, final NumberConstraint b) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -157,9 +157,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_div(final NumEvaluable a, final NumEvaluable b) + public static NumberConstraint c_div(final NumberConstraint a, final NumberConstraint b) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -170,9 +170,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_percent(final NumEvaluable whole, final NumEvaluable percent) + public static NumberConstraint c_percent(final NumberConstraint whole, final NumberConstraint percent) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -183,9 +183,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_n(final double a) + public static NumberConstraint c_n(final double a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -196,9 +196,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_n(final AnimDouble a) + public static NumberConstraint c_n(final AnimDouble a) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -209,9 +209,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_width(final RectEvaluable r) + public static NumberConstraint c_width(final RectConstraint r) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -222,9 +222,9 @@ public class ConstraintFactory { } - public static NumEvaluable c_height(final RectEvaluable r) + public static NumberConstraint c_height(final RectConstraint r) { - return new NumEvaluable() { + return new NumberConstraint() { @Override public double getValue() @@ -235,9 +235,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_row(final RectEvaluable r, final int rows, final int index) + public static RectConstraint c_row(final RectConstraint r, final int rows, final int index) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -254,9 +254,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_column(final RectEvaluable r, final int columns, final int index) + public static RectConstraint c_column(final RectConstraint r, final int columns, final int index) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -273,21 +273,21 @@ public class ConstraintFactory { } - public static RectEvaluable c_shrink(RectEvaluable r, NumEvaluable shrink) + public static RectConstraint c_shrink(RectConstraint r, NumberConstraint shrink) { return c_shrink(r, shrink, shrink, shrink, shrink); } - public static RectEvaluable c_shrink(RectEvaluable context, NumEvaluable horiz, NumEvaluable vert) + public static RectConstraint c_shrink(RectConstraint context, NumberConstraint horiz, NumberConstraint vert) { return c_shrink(context, horiz, vert, horiz, vert); } - public static RectEvaluable c_shrink(final RectEvaluable r, final NumEvaluable x1, final NumEvaluable y1, final NumEvaluable x2, final NumEvaluable y2) + public static RectConstraint c_shrink(final RectConstraint r, final NumberConstraint x1, final NumberConstraint y1, final NumberConstraint x2, final NumberConstraint y2) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -298,9 +298,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_center(final RectEvaluable r) + public static RectConstraint c_center(final RectConstraint r) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -311,21 +311,21 @@ public class ConstraintFactory { } - public static RectEvaluable c_grow(RectEvaluable r, NumEvaluable grow) + public static RectConstraint c_grow(RectConstraint r, NumberConstraint grow) { return c_grow(r, grow, grow, grow, grow); } - public static RectEvaluable c_grow(RectEvaluable r, NumEvaluable horiz, NumEvaluable vert) + public static RectConstraint c_grow(RectConstraint r, NumberConstraint horiz, NumberConstraint vert) { return c_grow(r, horiz, vert, horiz, vert); } - public static RectEvaluable c_grow(final RectEvaluable r, final NumEvaluable x1, final NumEvaluable y1, final NumEvaluable x2, final NumEvaluable y2) + public static RectConstraint c_grow(final RectConstraint r, final NumberConstraint x1, final NumberConstraint y1, final NumberConstraint x2, final NumberConstraint y2) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -336,9 +336,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_tile(final RectEvaluable r, final int rows, final int cols, final int left, final int top) + public static RectConstraint c_tile(final RectConstraint r, final int rows, final int cols, final int left, final int top) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -356,9 +356,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_box(final RectEvaluable r, final NumEvaluable width, final NumEvaluable height) + public static RectConstraint c_box(final RectConstraint r, final NumberConstraint width, final NumberConstraint height) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -378,9 +378,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_box(final RectEvaluable r, final NumEvaluable x, final NumEvaluable y, final NumEvaluable width, final NumEvaluable height) + public static RectConstraint c_box(final RectConstraint r, final NumberConstraint x, final NumberConstraint y, final NumberConstraint width, final NumberConstraint height) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -400,9 +400,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_centered(final RectEvaluable r, final NumEvaluable x, final NumEvaluable y) + public static RectConstraint c_centered(final RectConstraint r, final NumberConstraint x, final NumberConstraint y) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -415,9 +415,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_box_abs(final RectEvaluable r, final NumEvaluable x1, final NumEvaluable y1, final NumEvaluable x2, final NumEvaluable y2) + public static RectConstraint c_box_abs(final RectConstraint r, final NumberConstraint x1, final NumberConstraint y1, final NumberConstraint x2, final NumberConstraint y2) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() @@ -432,9 +432,9 @@ public class ConstraintFactory { } - public static RectEvaluable c_move(final RectEvaluable r, final NumEvaluable x, final NumEvaluable y) + public static RectConstraint c_move(final RectConstraint r, final NumberConstraint x, final NumberConstraint y) { - return new RectEvaluable() { + return new RectConstraint() { @Override public Rect getRect() diff --git a/src/mightypork/utils/math/constraints/ContextAdapter.java b/src/mightypork/utils/math/constraints/ContextAdapter.java index ca6d9e2..7574295 100644 --- a/src/mightypork/utils/math/constraints/ContextAdapter.java +++ b/src/mightypork/utils/math/constraints/ContextAdapter.java @@ -6,11 +6,11 @@ import mightypork.utils.math.coord.Rect; public class ContextAdapter implements PluggableContext { - private RectEvaluable backing = null; + private RectConstraint backing = null; @Override - public void setContext(RectEvaluable rect) + public void setContext(RectConstraint rect) { this.backing = rect; } diff --git a/src/mightypork/utils/math/constraints/NumEvaluable.java b/src/mightypork/utils/math/constraints/NumberConstraint.java similarity index 66% rename from src/mightypork/utils/math/constraints/NumEvaluable.java rename to src/mightypork/utils/math/constraints/NumberConstraint.java index b31a236..72973ca 100644 --- a/src/mightypork/utils/math/constraints/NumEvaluable.java +++ b/src/mightypork/utils/math/constraints/NumberConstraint.java @@ -1,7 +1,7 @@ package mightypork.utils.math.constraints; -public interface NumEvaluable { +public interface NumberConstraint { double getValue(); diff --git a/src/mightypork/utils/math/constraints/PluggableContext.java b/src/mightypork/utils/math/constraints/PluggableContext.java index f3b512b..6815050 100644 --- a/src/mightypork/utils/math/constraints/PluggableContext.java +++ b/src/mightypork/utils/math/constraints/PluggableContext.java @@ -4,9 +4,9 @@ package mightypork.utils.math.constraints; import mightypork.utils.math.coord.Rect; -public interface PluggableContext extends RectEvaluable { +public interface PluggableContext extends RectConstraint { - abstract void setContext(RectEvaluable rect); + abstract void setContext(RectConstraint rect); @Override diff --git a/src/mightypork/utils/math/constraints/RectConstraint.java b/src/mightypork/utils/math/constraints/RectConstraint.java new file mode 100644 index 0000000..34b6961 --- /dev/null +++ b/src/mightypork/utils/math/constraints/RectConstraint.java @@ -0,0 +1,18 @@ +package mightypork.utils.math.constraints; + + +import mightypork.utils.math.coord.Rect; + + +/** + * Rect constraint (ie. region) + * + * @author MightyPork + */ +public interface RectConstraint { + + /** + * @return rect region + */ + Rect getRect(); +} diff --git a/src/mightypork/utils/math/constraints/RectEvaluable.java b/src/mightypork/utils/math/constraints/RectEvaluable.java deleted file mode 100644 index ec7e475..0000000 --- a/src/mightypork/utils/math/constraints/RectEvaluable.java +++ /dev/null @@ -1,10 +0,0 @@ -package mightypork.utils.math.constraints; - - -import mightypork.utils.math.coord.Rect; - - -public interface RectEvaluable { - - Rect getRect(); -} diff --git a/src/mightypork/utils/math/coord/Coord.java b/src/mightypork/utils/math/coord/Coord.java index e53600b..dc540b3 100644 --- a/src/mightypork/utils/math/coord/Coord.java +++ b/src/mightypork/utils/math/coord/Coord.java @@ -4,6 +4,7 @@ package mightypork.utils.math.coord; import java.util.Random; import mightypork.utils.math.Calc; +import mightypork.utils.math.constraints.RectConstraint; /** @@ -200,9 +201,10 @@ public class Coord { * @param rect checked rect. * @return is inside */ - public boolean isInRect(Rect rect) + public boolean isInRect(RectConstraint rect) { - return isInRect(rect.getMin(), rect.getMax()); + Rect r = rect.getRect(); + return isInRect(r.getMin(), r.getMax()); } diff --git a/src/mightypork/utils/math/coord/CoordAnimated.java b/src/mightypork/utils/math/coord/CoordAnimated.java index 487ec05..f714715 100644 --- a/src/mightypork/utils/math/coord/CoordAnimated.java +++ b/src/mightypork/utils/math/coord/CoordAnimated.java @@ -1,7 +1,7 @@ package mightypork.utils.math.coord; -import mightypork.utils.control.interf.Updateable; +import mightypork.gamecore.control.interf.Updateable; import mightypork.utils.math.Calc; diff --git a/src/mightypork/utils/math/coord/Rect.java b/src/mightypork/utils/math/coord/Rect.java index 86f0abe..1ce3b5f 100644 --- a/src/mightypork/utils/math/coord/Rect.java +++ b/src/mightypork/utils/math/coord/Rect.java @@ -2,6 +2,7 @@ package mightypork.utils.math.coord; import mightypork.utils.math.Calc; +import mightypork.utils.math.constraints.RectConstraint; /** @@ -9,7 +10,7 @@ import mightypork.utils.math.Calc; * * @author MightyPork */ -public class Rect { +public class Rect implements RectConstraint { /** * Rectangle from size @@ -776,4 +777,11 @@ public class Rect { { return new Coord(max.x - min.x, max.y - min.y); } + + + @Override + public Rect getRect() + { + return this; + } }