diff --git a/.classpath b/.classpath index f2e05f6..88401bd 100644 --- a/.classpath +++ b/.classpath @@ -32,7 +32,6 @@ - - + diff --git a/src/mightypork/gamecore/core/Config.java b/src/mightypork/gamecore/core/Config.java index 3755345..b1d2556 100644 --- a/src/mightypork/gamecore/core/Config.java +++ b/src/mightypork/gamecore/core/Config.java @@ -7,9 +7,9 @@ import java.util.Map; import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.Keys; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.files.config.Property; -import mightypork.gamecore.util.files.config.PropertyManager; +import mightypork.utils.files.config.Property; +import mightypork.utils.files.config.PropertyManager; +import mightypork.utils.logging.Log; /** diff --git a/src/mightypork/gamecore/core/WorkDir.java b/src/mightypork/gamecore/core/WorkDir.java index ca84b30..5a08670 100644 --- a/src/mightypork/gamecore/core/WorkDir.java +++ b/src/mightypork/gamecore/core/WorkDir.java @@ -5,7 +5,7 @@ import java.io.File; import java.util.HashMap; import java.util.Map; -import mightypork.gamecore.logging.Log; +import mightypork.utils.logging.Log; /** diff --git a/src/mightypork/gamecore/core/events/MainLoopRequest.java b/src/mightypork/gamecore/core/events/MainLoopRequest.java index 3e43807..7034aa9 100644 --- a/src/mightypork/gamecore/core/events/MainLoopRequest.java +++ b/src/mightypork/gamecore/core/events/MainLoopRequest.java @@ -2,8 +2,8 @@ package mightypork.gamecore.core.events; import mightypork.gamecore.core.modules.MainLoop; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; /** diff --git a/src/mightypork/gamecore/core/events/ShudownRequest.java b/src/mightypork/gamecore/core/events/ShudownRequest.java index ac8c2ac..16ad909 100644 --- a/src/mightypork/gamecore/core/events/ShudownRequest.java +++ b/src/mightypork/gamecore/core/events/ShudownRequest.java @@ -2,9 +2,9 @@ package mightypork.gamecore.core.events; import mightypork.gamecore.core.modules.MainLoop; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.NonConsumableEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.NonConsumableEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; /** diff --git a/src/mightypork/gamecore/core/events/UserQuitRequest.java b/src/mightypork/gamecore/core/events/UserQuitRequest.java index 8fea244..b762c52 100644 --- a/src/mightypork/gamecore/core/events/UserQuitRequest.java +++ b/src/mightypork/gamecore/core/events/UserQuitRequest.java @@ -1,8 +1,8 @@ package mightypork.gamecore.core.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.EventBus; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.EventBus; /** diff --git a/src/mightypork/gamecore/core/modules/AppAccess.java b/src/mightypork/gamecore/core/modules/AppAccess.java index 72f2393..0b98452 100644 --- a/src/mightypork/gamecore/core/modules/AppAccess.java +++ b/src/mightypork/gamecore/core/modules/AppAccess.java @@ -1,10 +1,10 @@ package mightypork.gamecore.core.modules; -import mightypork.gamecore.eventbus.BusAccess; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.resources.audio.SoundSystem; +import mightypork.utils.eventbus.BusAccess; /** diff --git a/src/mightypork/gamecore/core/modules/AppAccessAdapter.java b/src/mightypork/gamecore/core/modules/AppAccessAdapter.java index 4e47e37..897757b 100644 --- a/src/mightypork/gamecore/core/modules/AppAccessAdapter.java +++ b/src/mightypork/gamecore/core/modules/AppAccessAdapter.java @@ -1,10 +1,10 @@ package mightypork.gamecore.core.modules; -import mightypork.gamecore.eventbus.EventBus; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.resources.audio.SoundSystem; +import mightypork.utils.eventbus.EventBus; /** diff --git a/src/mightypork/gamecore/core/modules/AppModule.java b/src/mightypork/gamecore/core/modules/AppModule.java index dcefb16..074f588 100644 --- a/src/mightypork/gamecore/core/modules/AppModule.java +++ b/src/mightypork/gamecore/core/modules/AppModule.java @@ -1,10 +1,10 @@ package mightypork.gamecore.core.modules; -import mightypork.gamecore.eventbus.clients.RootBusNode; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.resources.audio.SoundSystem; +import mightypork.utils.eventbus.clients.RootBusNode; /** diff --git a/src/mightypork/gamecore/core/modules/AppSubModule.java b/src/mightypork/gamecore/core/modules/AppSubModule.java index 098f111..0433539 100644 --- a/src/mightypork/gamecore/core/modules/AppSubModule.java +++ b/src/mightypork/gamecore/core/modules/AppSubModule.java @@ -1,12 +1,12 @@ package mightypork.gamecore.core.modules; -import mightypork.gamecore.eventbus.clients.BusNode; -import mightypork.gamecore.eventbus.clients.DelegatingClient; -import mightypork.gamecore.eventbus.clients.RootBusNode; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.resources.audio.SoundSystem; +import mightypork.utils.eventbus.clients.BusNode; +import mightypork.utils.eventbus.clients.DelegatingClient; +import mightypork.utils.eventbus.clients.RootBusNode; /** diff --git a/src/mightypork/gamecore/core/modules/BaseApp.java b/src/mightypork/gamecore/core/modules/BaseApp.java index 2dd7cd9..2cf1a4c 100644 --- a/src/mightypork/gamecore/core/modules/BaseApp.java +++ b/src/mightypork/gamecore/core/modules/BaseApp.java @@ -15,25 +15,28 @@ import mightypork.gamecore.core.Config.ConfigSetup; import mightypork.gamecore.core.Config.KeySetup; import mightypork.gamecore.core.WorkDir; import mightypork.gamecore.core.WorkDir.RouteSetup; -import mightypork.gamecore.eventbus.EventBus; -import mightypork.gamecore.eventbus.events.DestroyEvent; import mightypork.gamecore.gui.screens.ScreenRegistry; import mightypork.gamecore.gui.screens.impl.CrossfadeOverlay; import mightypork.gamecore.input.InputSystem; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.logging.SlickLogRedirector; -import mightypork.gamecore.logging.writers.LogWriter; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.resources.AsyncResourceLoader; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.ResourceLoader; import mightypork.gamecore.resources.ResourceSetup; import mightypork.gamecore.resources.audio.SoundSystem; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.files.InstanceLock; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.ion.Ion; +import mightypork.gamecore.util.SlickLogRedirector; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.eventbus.EventBus; +import mightypork.utils.eventbus.events.DestroyEvent; +import mightypork.utils.files.InstanceLock; +import mightypork.utils.ion.Ion; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; +import mightypork.utils.ion.IonizerBinary; +import mightypork.utils.logging.Log; +import mightypork.utils.logging.writers.LogWriter; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; /** @@ -344,8 +347,46 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler { protected void registerIonizables() { - Ion.register(Coord.class); - Ion.register(Move.class); + Ion.registerIndirect(255, new IonizerBinary() { + + @Override + public void save(Coord object, IonOutput out) throws IOException + { + out.writeInt(object.x); + out.writeInt(object.y); + } + + + @Override + public Coord load(IonInput in) throws IOException + { + final int x = in.readInt(); + final int y = in.readInt(); + return new Coord(x, y); + } + + }); + + + Ion.registerIndirect(254, new IonizerBinary() { + + @Override + public void save(Move object, IonOutput out) throws IOException + { + out.writeInt(object.x()); + out.writeInt(object.y()); + } + + + @Override + public Move load(IonInput in) throws IOException + { + final int x = in.readInt(); + final int y = in.readInt(); + return new Move(x, y); + } + + }); } diff --git a/src/mightypork/gamecore/core/modules/MainLoop.java b/src/mightypork/gamecore/core/modules/MainLoop.java index 19580fa..92be51c 100644 --- a/src/mightypork/gamecore/core/modules/MainLoop.java +++ b/src/mightypork/gamecore/core/modules/MainLoop.java @@ -4,16 +4,16 @@ package mightypork.gamecore.core.modules; import java.util.Deque; import java.util.concurrent.ConcurrentLinkedDeque; -import mightypork.gamecore.eventbus.events.UpdateEvent; import mightypork.gamecore.gui.screens.ScreenRegistry; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.Renderable; import mightypork.gamecore.render.TaskTakeScreenshot; import mightypork.gamecore.render.events.ScreenshotRequestListener; -import mightypork.gamecore.resources.Profiler; -import mightypork.gamecore.util.Utils; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.timing.TimerDelta; +import mightypork.utils.Support; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.eventbus.events.UpdateEvent; +import mightypork.utils.logging.Log; +import mightypork.utils.math.timing.Profiler; +import mightypork.utils.math.timing.TimerDelta; /** @@ -147,7 +147,7 @@ public class MainLoop extends AppModule implements ScreenshotRequestListener { @Override public void run() { - Utils.runAsThread(new TaskTakeScreenshot()); + Support.runAsThread(new TaskTakeScreenshot()); } }, false); } diff --git a/src/mightypork/gamecore/eventbus/BusAccess.java b/src/mightypork/gamecore/eventbus/BusAccess.java deleted file mode 100644 index f21a3a3..0000000 --- a/src/mightypork/gamecore/eventbus/BusAccess.java +++ /dev/null @@ -1,16 +0,0 @@ -package mightypork.gamecore.eventbus; - - -/** - * Access to an {@link EventBus} instance - * - * @author Ondřej Hruška (MightyPork) - */ -public interface BusAccess { - - /** - * @return event bus - */ - EventBus getEventBus(); - -} diff --git a/src/mightypork/gamecore/eventbus/BusEvent.java b/src/mightypork/gamecore/eventbus/BusEvent.java deleted file mode 100644 index c5f1677..0000000 --- a/src/mightypork/gamecore/eventbus/BusEvent.java +++ /dev/null @@ -1,121 +0,0 @@ -package mightypork.gamecore.eventbus; - - -import mightypork.gamecore.eventbus.event_flags.DelayedEvent; -import mightypork.gamecore.eventbus.event_flags.DirectEvent; -import mightypork.gamecore.eventbus.event_flags.NonConsumableEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; - - -/** - *

- * Event that can be handled by HANDLER, subscribing to the event bus. - *

- *

- * Can be annotated as {@link SingleReceiverEvent} to be delivered once only, - * and {@link DelayedEvent} or {@link DirectEvent} to specify default sending - * mode. When marked as {@link NotLoggedEvent}, it will not appear in detailed - * bus logging (useful for very frequent events, such as UpdateEvent). - *

- *

- * Events annotated as {@link NonConsumableEvent} will throw an exception upon - * an attempt to consume them. - *

- *

- * Default sending mode (if not changed by annotations) is queued with - * zero delay. - *

- * - * @author Ondřej Hruška (MightyPork) - * @param handler type - */ -public abstract class BusEvent { - - private boolean consumed; - private boolean served; - - - /** - * Ask handler to handle this message. - * - * @param handler handler instance - */ - protected abstract void handleBy(HANDLER handler); - - - /** - * Consume the event, so no other clients will receive it. - * - * @throws UnsupportedOperationException if the {@link NonConsumableEvent} - * annotation is present. - */ - public final void consume() - { - if (consumed) throw new IllegalStateException("Already consumed."); - - if (getClass().isAnnotationPresent(NonConsumableEvent.class)) { - throw new UnsupportedOperationException("Not consumable."); - } - - consumed = true; - } - - - /** - * Deliver to a handler using the handleBy method. - * - * @param handler handler instance - */ - final void deliverTo(HANDLER handler) - { - handleBy(handler); - - if (!served) { - if (getClass().isAnnotationPresent(SingleReceiverEvent.class)) { - consumed = true; - } - - served = true; - } - } - - - /** - * Check if the event is consumed. Consumed event is not served to other - * clients. - * - * @return true if consumed - */ - public final boolean isConsumed() - { - return consumed; - } - - - /** - * @return true if the event was served to at least 1 client - */ - final boolean wasServed() - { - return served; - } - - - /** - * Clear "served" and "consumed" flags before dispatching. - */ - final void clearFlags() - { - served = false; - consumed = false; - } - - - /** - * Called after all clients have received the event. - */ - public void onDispatchComplete(EventBus bus) - { - } -} diff --git a/src/mightypork/gamecore/eventbus/EventBus.java b/src/mightypork/gamecore/eventbus/EventBus.java deleted file mode 100644 index 38afa0e..0000000 --- a/src/mightypork/gamecore/eventbus/EventBus.java +++ /dev/null @@ -1,399 +0,0 @@ -package mightypork.gamecore.eventbus; - - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.Collections; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.DelayQueue; -import java.util.concurrent.Delayed; -import java.util.concurrent.TimeUnit; - -import mightypork.gamecore.eventbus.clients.DelegatingClient; -import mightypork.gamecore.eventbus.event_flags.DelayedEvent; -import mightypork.gamecore.eventbus.event_flags.DirectEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; -import mightypork.gamecore.eventbus.events.Destroyable; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.Utils; - - -/** - * An event bus, accommodating multiple EventChannels.
- * Channel will be created when an event of type is first encountered. - * - * @author Ondřej Hruška (MightyPork) - */ -final public class EventBus implements Destroyable, BusAccess { - - /** - * Queued event holder - */ - private class DelayQueueEntry implements Delayed { - - private final long due; - private final BusEvent evt; - - - public DelayQueueEntry(double seconds, BusEvent event) - { - super(); - this.due = System.currentTimeMillis() + (long) (seconds * 1000); - this.evt = event; - } - - - @Override - public int compareTo(Delayed o) - { - return Long.valueOf(getDelay(TimeUnit.MILLISECONDS)).compareTo(o.getDelay(TimeUnit.MILLISECONDS)); - } - - - @Override - public long getDelay(TimeUnit unit) - { - return unit.convert(due - System.currentTimeMillis(), TimeUnit.MILLISECONDS); - } - - - public BusEvent getEvent() - { - return evt; - } - - } - - /** - * Thread handling queued events - */ - private class QueuePollingThread extends Thread { - - public volatile boolean stopped = false; - - - public QueuePollingThread() - { - super("Queue Polling Thread"); - } - - - @Override - public void run() - { - DelayQueueEntry evt; - - while (!stopped) { - evt = null; - - try { - evt = sendQueue.take(); - } catch (final InterruptedException ignored) { - // - } - - if (evt != null) { - try { - dispatch(evt.getEvent()); - } catch (final Throwable t) { - Log.w(logMark + "Error while dispatching event: ", t); - } - } - } - } - - } - - static final String logMark = "(bus) "; - - - private static Class getEventListenerClass(BusEvent event) - { - // BEHOLD, MAGIC! - - final Type evtc = event.getClass().getGenericSuperclass(); - - if (evtc instanceof ParameterizedType) { - if (((ParameterizedType) evtc).getRawType() == BusEvent.class) { - final Type[] types = ((ParameterizedType) evtc).getActualTypeArguments(); - for (final Type genericType : types) { - return (Class) genericType; - } - } - } - - throw new RuntimeException("Could not detect event listener type."); - } - - /** Log detailed messages (debug) */ - public boolean detailedLogging = false; - - /** Queue polling thread */ - private final QueuePollingThread busThread; - - /** Registered clients */ - private final Set clients = Collections.newSetFromMap(new ConcurrentHashMap()); - - /** Whether the bus was destroyed */ - private boolean dead = false; - - /** Message channels */ - private final Set> channels = Collections.newSetFromMap(new ConcurrentHashMap, Boolean>()); - - /** Messages queued for delivery */ - private final DelayQueue sendQueue = new DelayQueue<>(); - - - /** - * Make a new bus and start it's queue thread. - */ - public EventBus() - { - busThread = new QueuePollingThread(); - busThread.setDaemon(true); - busThread.start(); - } - - - /** - * Halt bus thread and reject any future events. - */ - @Override - public void destroy() - { - assertLive(); - - busThread.stopped = true; - dead = true; - } - - - /** - * Send based on annotation - * - * @param event event - */ - public void send(BusEvent event) - { - assertLive(); - - final DelayedEvent adelay = Utils.getAnnotation(event, DelayedEvent.class); - if (adelay != null) { - sendDelayed(event, adelay.delay()); - return; - } - - if (Utils.hasAnnotation(event, DirectEvent.class)) { - sendDirect(event); - return; - } - - sendQueued(event); - } - - - /** - * Add event to a queue - * - * @param event event - */ - public void sendQueued(BusEvent event) - { - assertLive(); - - sendDelayed(event, 0); - } - - - /** - * Add event to a queue, scheduled for given time. - * - * @param event event - * @param delay delay before event is dispatched - */ - public void sendDelayed(BusEvent event, double delay) - { - assertLive(); - - final DelayQueueEntry dm = new DelayQueueEntry(delay, event); - - if (shallLog(event)) { - Log.f3(logMark + "Qu [" + Log.str(event) + "]" + (delay == 0 ? "" : (", delay: " + delay + "s"))); - } - - sendQueue.add(dm); - } - - - /** - * Send immediately.
- * Should be used for real-time events that require immediate response, such - * as timing events. - * - * @param event event - */ - public void sendDirect(BusEvent event) - { - assertLive(); - - if (shallLog(event)) Log.f3(logMark + "Di [" + Log.str(event) + "]"); - - dispatch(event); - } - - - public void sendDirectToChildren(DelegatingClient delegatingClient, BusEvent event) - { - assertLive(); - - if (shallLog(event)) Log.f3(logMark + "Di->sub [" + Log.str(event) + "]"); - - doDispatch(delegatingClient.getChildClients(), event); - } - - - /** - * Connect a client to the bus. The client will be connected to all current - * and future channels, until removed from the bus. - * - * @param client the client - */ - public void subscribe(Object client) - { - assertLive(); - - if (client == null) return; - - clients.add(client); - - if (detailedLogging) Log.f3(logMark + "Client joined: " + Log.str(client)); - } - - - /** - * Disconnect a client from the bus. - * - * @param client the client - */ - public void unsubscribe(Object client) - { - assertLive(); - - clients.remove(client); - - if (detailedLogging) Log.f3(logMark + "Client left: " + Log.str(client)); - } - - - @SuppressWarnings("unchecked") - private boolean addChannelForEvent(BusEvent event) - { - try { - if (detailedLogging) { - Log.f3(logMark + "Setting up channel for new event type: " + Log.str(event.getClass())); - } - - final Class listener = getEventListenerClass(event); - final EventChannel ch = EventChannel.create(event.getClass(), listener); - - if (ch.canBroadcast(event)) { - - channels.add(ch); - //channels.flush(); - - if (detailedLogging) { - Log.f3(logMark + "Created new channel: " + Log.str(event.getClass()) + " -> " + Log.str(listener)); - } - - return true; - - } else { - Log.w(logMark + "Could not create channel for event " + Log.str(event.getClass())); - } - - } catch (final Throwable t) { - Log.w(logMark + "Error while trying to add channel for event.", t); - } - - return false; - } - - - /** - * Make sure the bus is not destroyed. - * - * @throws IllegalStateException if the bus is dead. - */ - private void assertLive() throws IllegalStateException - { - if (dead) throw new IllegalStateException("EventBus is dead."); - } - - - /** - * Send immediately.
- * Should be used for real-time events that require immediate response, such - * as timing events. - * - * @param event event - */ - private synchronized void dispatch(BusEvent event) - { - assertLive(); - - doDispatch(clients, event); - event.onDispatchComplete(this); - } - - - /** - * Send to a set of clients - * - * @param clients clients - * @param event event - */ - private synchronized void doDispatch(Collection clients, BusEvent event) - { - boolean accepted = false; - - event.clearFlags(); - - for (int i = 0; i < 2; i++) { // two tries. - - for (final EventChannel b : channels) { - if (b.canBroadcast(event)) { - accepted = true; - b.broadcast(event, clients); - } - - if (event.isConsumed()) break; - } - - if (!accepted) if (addChannelForEvent(event)) continue; - - break; - } - - if (!accepted) Log.e(logMark + "Not accepted by any channel: " + Log.str(event)); - if (!event.wasServed() && shallLog(event)) Log.w(logMark + "Not delivered: " + Log.str(event)); - } - - - private boolean shallLog(BusEvent event) - { - if (!detailedLogging) return false; - if (Utils.hasAnnotation(event, NotLoggedEvent.class)) return false; - - return true; - } - - - @Override - public EventBus getEventBus() - { - return this; // just for compatibility use-case - } - -} diff --git a/src/mightypork/gamecore/eventbus/EventChannel.java b/src/mightypork/gamecore/eventbus/EventChannel.java deleted file mode 100644 index f24ae11..0000000 --- a/src/mightypork/gamecore/eventbus/EventChannel.java +++ /dev/null @@ -1,207 +0,0 @@ -package mightypork.gamecore.eventbus; - - -import java.util.Collection; -import java.util.HashSet; - -import mightypork.gamecore.eventbus.clients.DelegatingClient; -import mightypork.gamecore.eventbus.clients.ToggleableClient; -import mightypork.gamecore.eventbus.event_flags.NonRejectableEvent; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.Utils; - - -/** - * Event delivery channel, module of {@link EventBus} - * - * @author Ondřej Hruška (MightyPork) - * @param event type - * @param client (subscriber) type - */ -class EventChannel, CLIENT> { - - private final Class clientClass; - private final Class eventClass; - - - /** - * Create a channel - * - * @param eventClass event class - * @param clientClass client class - */ - public EventChannel(Class eventClass, Class clientClass) - { - - if (eventClass == null || clientClass == null) { - throw new NullPointerException("Null Event or Client class."); - } - - this.clientClass = clientClass; - this.eventClass = eventClass; - } - - - /** - * Try to broadcast a event.
- * If event is of wrong type, false is returned. - * - * @param event a event to be sent - * @param clients collection of clients - */ - public void broadcast(BusEvent event, Collection clients) - { - if (!canBroadcast(event)) return; - - doBroadcast(eventClass.cast(event), clients, new HashSet<>()); - } - - - /** - * Send the event - * - * @param event sent event - * @param clients subscribing clients - * @param processed clients already processed - */ - private void doBroadcast(final EVENT event, final Collection clients, final Collection processed) - { - for (final Object client : clients) { - - // exclude obvious non-clients - if (!isClientValid(client)) { - continue; - } - - // avoid executing more times - if (processed.contains(client)) { - Log.w(EventBus.logMark + "Client already served: " + Log.str(client)); - continue; - } - processed.add(client); - - final boolean must_deliver = Utils.hasAnnotation(event, NonRejectableEvent.class); - - // opt-out - if (client instanceof ToggleableClient) { - if (!must_deliver && !((ToggleableClient) client).isListening()) continue; - } - - sendTo(client, event); - - if (event.isConsumed()) return; - - // pass on to delegated clients - if (client instanceof DelegatingClient) { - if (must_deliver || ((DelegatingClient) client).doesDelegate()) { - - final Collection children = ((DelegatingClient) client).getChildClients(); - - if (children != null && children.size() > 0) { - doBroadcast(event, children, processed); - } - - } - } - } - } - - - /** - * Send an event to a client. - * - * @param client target client - * @param event event to send - */ - @SuppressWarnings("unchecked") - private void sendTo(Object client, EVENT event) - { - if (isClientOfChannelType(client)) { - ((BusEvent) event).deliverTo((CLIENT) client); - } - } - - - /** - * Check if the given event can be broadcasted by this channel - * - * @param event event object - * @return can be broadcasted - */ - public boolean canBroadcast(BusEvent event) - { - return event != null && eventClass.isInstance(event); - } - - - /** - * Create an instance for given types - * - * @param eventClass event class - * @param clientClass client class - * @return the broadcaster - */ - public static , F_CLIENT> EventChannel create(Class eventClass, Class clientClass) - { - return new EventChannel<>(eventClass, clientClass); - } - - - /** - * Check if client is of channel type - * - * @param client client - * @return is of type - */ - private boolean isClientOfChannelType(Object client) - { - return clientClass.isInstance(client); - } - - - /** - * Check if the channel is compatible with given - * - * @param client client - * @return is supported - */ - public boolean isClientValid(Object client) - { - return isClientOfChannelType(client) || (client instanceof DelegatingClient); - } - - - @Override - public int hashCode() - { - final int prime = 13; - int result = 1; - result = prime * result + ((clientClass == null) ? 0 : clientClass.hashCode()); - result = prime * result + ((eventClass == null) ? 0 : eventClass.hashCode()); - return result; - } - - - @Override - public boolean equals(Object obj) - { - if (this == obj) return true; - if (obj == null) return false; - if (!(obj instanceof EventChannel)) return false; - final EventChannel other = (EventChannel) obj; - if (clientClass == null) { - if (other.clientClass != null) return false; - } else if (!clientClass.equals(other.clientClass)) return false; - if (eventClass == null) { - if (other.eventClass != null) return false; - } else if (!eventClass.equals(other.eventClass)) return false; - return true; - } - - - @Override - public String toString() - { - return "{ " + Log.str(eventClass) + " => " + Log.str(clientClass) + " }"; - } -} diff --git a/src/mightypork/gamecore/eventbus/clients/BusNode.java b/src/mightypork/gamecore/eventbus/clients/BusNode.java deleted file mode 100644 index 1671dee..0000000 --- a/src/mightypork/gamecore/eventbus/clients/BusNode.java +++ /dev/null @@ -1,115 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.Set; - -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.EventBus; - - -/** - * Client that can be attached to the {@link EventBus}, or added as a child - * client to another {@link DelegatingClient} - * - * @author Ondřej Hruška (MightyPork) - */ -public abstract class BusNode implements BusAccess, ClientHub { - - private final BusAccess busAccess; - - private final Set clients = new LinkedHashSet<>(); - private boolean listening = true; - private boolean delegating = true; - - - /** - * @param busAccess access to bus - */ - public BusNode(BusAccess busAccess) - { - this.busAccess = busAccess; - } - - - @Override - public Collection getChildClients() - { - return clients; - } - - - @Override - public boolean doesDelegate() - { - return delegating; - } - - - @Override - public boolean isListening() - { - return listening; - } - - - /** - * Add a child subscriber to the {@link EventBus}.
- * - * @param client - */ - @Override - public void addChildClient(Object client) - { - if (client instanceof RootBusNode) { - throw new IllegalArgumentException("Cannot nest RootBusNode."); - } - - clients.add(client); - } - - - /** - * Remove a child subscriber - * - * @param client subscriber to remove - */ - @Override - public void removeChildClient(Object client) - { - if (client != null) { - clients.remove(client); - } - } - - - /** - * Set whether events should be received. - * - * @param listening receive events - */ - public void setListening(boolean listening) - { - this.listening = listening; - } - - - /** - * Set whether events should be passed on to child nodes - * - * @param delegating - */ - public void setDelegating(boolean delegating) - { - this.delegating = delegating; - } - - - @Override - public EventBus getEventBus() - { - return busAccess.getEventBus(); - } - -} diff --git a/src/mightypork/gamecore/eventbus/clients/ClientHub.java b/src/mightypork/gamecore/eventbus/clients/ClientHub.java deleted file mode 100644 index 97f5b61..0000000 --- a/src/mightypork/gamecore/eventbus/clients/ClientHub.java +++ /dev/null @@ -1,42 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -import java.util.Collection; - -import mightypork.gamecore.eventbus.EventBus; - - -/** - * Common methods for client hubs (ie delegating vlient implementations) - * - * @author Ondřej Hruška (MightyPork) - */ -public interface ClientHub extends DelegatingClient, ToggleableClient { - - @Override - public boolean doesDelegate(); - - - @Override - public Collection getChildClients(); - - - @Override - public boolean isListening(); - - - /** - * Add a child subscriber to the {@link EventBus}.
- * - * @param client - */ - public void addChildClient(Object client); - - - /** - * Remove a child subscriber - * - * @param client subscriber to remove - */ - void removeChildClient(Object client); -} diff --git a/src/mightypork/gamecore/eventbus/clients/ClientList.java b/src/mightypork/gamecore/eventbus/clients/ClientList.java deleted file mode 100644 index 7286365..0000000 --- a/src/mightypork/gamecore/eventbus/clients/ClientList.java +++ /dev/null @@ -1,21 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -import java.util.ArrayList; - - -/** - * Array-list with varargs constructor - * - * @author Ondřej Hruška (MightyPork) - */ -public class ClientList extends ArrayList { - - public ClientList(Object... clients) - { - for (final Object c : clients) { - super.add(c); - } - } - -} diff --git a/src/mightypork/gamecore/eventbus/clients/DelegatingClient.java b/src/mightypork/gamecore/eventbus/clients/DelegatingClient.java deleted file mode 100644 index 8c7743f..0000000 --- a/src/mightypork/gamecore/eventbus/clients/DelegatingClient.java +++ /dev/null @@ -1,27 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -import java.util.Collection; - - -/** - * Client containing child clients. According to the contract, if the collection - * of clients is ordered, the clients will be served in that order. In any case, - * the {@link DelegatingClient} itself will be served beforehand. - * - * @author Ondřej Hruška (MightyPork) - */ -public interface DelegatingClient { - - /** - * @return collection of child clients. Can not be null. - */ - public Collection getChildClients(); - - - /** - * @return true if delegating is active - */ - public boolean doesDelegate(); - -} diff --git a/src/mightypork/gamecore/eventbus/clients/DelegatingList.java b/src/mightypork/gamecore/eventbus/clients/DelegatingList.java deleted file mode 100644 index 90ef0d2..0000000 --- a/src/mightypork/gamecore/eventbus/clients/DelegatingList.java +++ /dev/null @@ -1,51 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -import java.util.Collection; - -import mightypork.gamecore.gui.Enableable; - - -/** - * Basic delegating client - * - * @author Ondřej Hruška (MightyPork) - */ -public class DelegatingList extends ClientList implements DelegatingClient, Enableable { - - private boolean enabled = true; - - - public DelegatingList(Object... clients) - { - super(clients); - } - - - @Override - public Collection getChildClients() - { - return this; - } - - - @Override - public boolean doesDelegate() - { - return isEnabled(); - } - - - @Override - public void setEnabled(boolean yes) - { - enabled = yes; - } - - - @Override - public boolean isEnabled() - { - return enabled; - } -} diff --git a/src/mightypork/gamecore/eventbus/clients/RootBusNode.java b/src/mightypork/gamecore/eventbus/clients/RootBusNode.java deleted file mode 100644 index fea0bf1..0000000 --- a/src/mightypork/gamecore/eventbus/clients/RootBusNode.java +++ /dev/null @@ -1,45 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.events.Destroyable; -import mightypork.gamecore.util.annot.DefaultImpl; - - -/** - * Bus node that should be directly attached to the bus. - * - * @author Ondřej Hruška (MightyPork) - */ -public abstract class RootBusNode extends BusNode implements Destroyable { - - /** - * @param busAccess access to bus - */ - public RootBusNode(BusAccess busAccess) - { - super(busAccess); - - getEventBus().subscribe(this); - } - - - @Override - public final void destroy() - { - deinit(); - - getEventBus().unsubscribe(this); - } - - - /** - * Deinitialize the subsystem
- * (called during destruction) - */ - @DefaultImpl - protected void deinit() - { - } - -} diff --git a/src/mightypork/gamecore/eventbus/clients/ToggleableClient.java b/src/mightypork/gamecore/eventbus/clients/ToggleableClient.java deleted file mode 100644 index cdcec27..0000000 --- a/src/mightypork/gamecore/eventbus/clients/ToggleableClient.java +++ /dev/null @@ -1,16 +0,0 @@ -package mightypork.gamecore.eventbus.clients; - - -/** - * Client that can toggle receiving messages. - * - * @author Ondřej Hruška (MightyPork) - */ -public interface ToggleableClient { - - /** - * @return true if the client wants to receive messages - */ - public boolean isListening(); - -} diff --git a/src/mightypork/gamecore/eventbus/event_flags/DelayedEvent.java b/src/mightypork/gamecore/eventbus/event_flags/DelayedEvent.java deleted file mode 100644 index e98040d..0000000 --- a/src/mightypork/gamecore/eventbus/event_flags/DelayedEvent.java +++ /dev/null @@ -1,22 +0,0 @@ -package mightypork.gamecore.eventbus.event_flags; - - -import java.lang.annotation.*; - - -/** - * Event that should be queued with given delay (default: 0); - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Inherited -@Documented -public @interface DelayedEvent { - - /** - * @return event dispatch delay [seconds] - */ - double delay() default 0; -} diff --git a/src/mightypork/gamecore/eventbus/event_flags/DirectEvent.java b/src/mightypork/gamecore/eventbus/event_flags/DirectEvent.java deleted file mode 100644 index 13ab3af..0000000 --- a/src/mightypork/gamecore/eventbus/event_flags/DirectEvent.java +++ /dev/null @@ -1,16 +0,0 @@ -package mightypork.gamecore.eventbus.event_flags; - - -import java.lang.annotation.*; - - -/** - * Event that should not be queued. - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Inherited -@Documented -public @interface DirectEvent {} diff --git a/src/mightypork/gamecore/eventbus/event_flags/NonConsumableEvent.java b/src/mightypork/gamecore/eventbus/event_flags/NonConsumableEvent.java deleted file mode 100644 index 3c8a9b0..0000000 --- a/src/mightypork/gamecore/eventbus/event_flags/NonConsumableEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package mightypork.gamecore.eventbus.event_flags; - - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Event that cannot be consumed - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Target(ElementType.TYPE) -public @interface NonConsumableEvent { - -} diff --git a/src/mightypork/gamecore/eventbus/event_flags/NonRejectableEvent.java b/src/mightypork/gamecore/eventbus/event_flags/NonRejectableEvent.java deleted file mode 100644 index 98f5ae8..0000000 --- a/src/mightypork/gamecore/eventbus/event_flags/NonRejectableEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package mightypork.gamecore.eventbus.event_flags; - - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Event that is forcibly delivered to all clients (bypass Toggleable etc) - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Target(ElementType.TYPE) -public @interface NonRejectableEvent { - -} diff --git a/src/mightypork/gamecore/eventbus/event_flags/NotLoggedEvent.java b/src/mightypork/gamecore/eventbus/event_flags/NotLoggedEvent.java deleted file mode 100644 index 3188774..0000000 --- a/src/mightypork/gamecore/eventbus/event_flags/NotLoggedEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package mightypork.gamecore.eventbus.event_flags; - - -import java.lang.annotation.*; - - -/** - * Event that's not worth logging, unless there was an error with it.
- * Useful for common events that would otherwise clutter the log. - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Inherited -@Documented -public @interface NotLoggedEvent {} diff --git a/src/mightypork/gamecore/eventbus/event_flags/SingleReceiverEvent.java b/src/mightypork/gamecore/eventbus/event_flags/SingleReceiverEvent.java deleted file mode 100644 index 93a99c0..0000000 --- a/src/mightypork/gamecore/eventbus/event_flags/SingleReceiverEvent.java +++ /dev/null @@ -1,16 +0,0 @@ -package mightypork.gamecore.eventbus.event_flags; - - -import java.lang.annotation.*; - - -/** - * Handled only by the first client, then discarded. - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Inherited -@Documented -public @interface SingleReceiverEvent {} diff --git a/src/mightypork/gamecore/eventbus/events/DestroyEvent.java b/src/mightypork/gamecore/eventbus/events/DestroyEvent.java deleted file mode 100644 index da33a6b..0000000 --- a/src/mightypork/gamecore/eventbus/events/DestroyEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package mightypork.gamecore.eventbus.events; - - -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.DirectEvent; -import mightypork.gamecore.eventbus.event_flags.NonConsumableEvent; - - -/** - * Invoke destroy() method of all subscribers. Used to deinit a system. - * - * @author Ondřej Hruška (MightyPork) - */ -@DirectEvent -@NonConsumableEvent -public class DestroyEvent extends BusEvent { - - @Override - public void handleBy(Destroyable handler) - { - handler.destroy(); - } - -} diff --git a/src/mightypork/gamecore/eventbus/events/Destroyable.java b/src/mightypork/gamecore/eventbus/events/Destroyable.java deleted file mode 100644 index ca3436a..0000000 --- a/src/mightypork/gamecore/eventbus/events/Destroyable.java +++ /dev/null @@ -1,15 +0,0 @@ -package mightypork.gamecore.eventbus.events; - - -/** - * Object that can be destroyed (free resources etc) - * - * @author Ondřej Hruška (MightyPork) - */ -public interface Destroyable { - - /** - * Destroy this object - */ - public void destroy(); -} diff --git a/src/mightypork/gamecore/eventbus/events/UpdateEvent.java b/src/mightypork/gamecore/eventbus/events/UpdateEvent.java deleted file mode 100644 index 6988a65..0000000 --- a/src/mightypork/gamecore/eventbus/events/UpdateEvent.java +++ /dev/null @@ -1,38 +0,0 @@ -package mightypork.gamecore.eventbus.events; - - -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.DirectEvent; -import mightypork.gamecore.eventbus.event_flags.NonConsumableEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; -import mightypork.gamecore.util.math.timing.Updateable; - - -/** - * Delta timing update event. Not logged. - * - * @author Ondřej Hruška (MightyPork) - */ -@NotLoggedEvent -@DirectEvent -@NonConsumableEvent -public class UpdateEvent extends BusEvent { - - private final double deltaTime; - - - /** - * @param deltaTime time since last update (sec) - */ - public UpdateEvent(double deltaTime) - { - this.deltaTime = deltaTime; - } - - - @Override - public void handleBy(Updateable handler) - { - handler.update(deltaTime); - } -} diff --git a/src/mightypork/gamecore/gui/Action.java b/src/mightypork/gamecore/gui/Action.java index 3aa378e..e8ac2d2 100644 --- a/src/mightypork/gamecore/gui/Action.java +++ b/src/mightypork/gamecore/gui/Action.java @@ -1,6 +1,9 @@ package mightypork.gamecore.gui; +import mightypork.utils.interfaces.Enableable; + + /** * Triggered action * diff --git a/src/mightypork/gamecore/gui/ActionGroup.java b/src/mightypork/gamecore/gui/ActionGroup.java index 686a850..b7dc37c 100644 --- a/src/mightypork/gamecore/gui/ActionGroup.java +++ b/src/mightypork/gamecore/gui/ActionGroup.java @@ -4,6 +4,8 @@ package mightypork.gamecore.gui; import java.util.HashSet; import java.util.Set; +import mightypork.utils.interfaces.Enableable; + public class ActionGroup implements Enableable { diff --git a/src/mightypork/gamecore/gui/Enableable.java b/src/mightypork/gamecore/gui/Enableable.java deleted file mode 100644 index bc9b608..0000000 --- a/src/mightypork/gamecore/gui/Enableable.java +++ /dev/null @@ -1,25 +0,0 @@ -package mightypork.gamecore.gui; - - -/** - * Can be enabled or disabled.
- * Implementations should take appropriate action (ie. stop listening to events, - * updating etc.) - * - * @author Ondřej Hruška (MightyPork) - */ -public interface Enableable { - - /** - * Change enabled state - * - * @param yes enabled - */ - public void setEnabled(boolean yes); - - - /** - * @return true if enabled - */ - public boolean isEnabled(); -} diff --git a/src/mightypork/gamecore/gui/components/BaseComponent.java b/src/mightypork/gamecore/gui/components/BaseComponent.java index 439f407..083783c 100644 --- a/src/mightypork/gamecore/gui/components/BaseComponent.java +++ b/src/mightypork/gamecore/gui/components/BaseComponent.java @@ -1,19 +1,20 @@ package mightypork.gamecore.gui.components; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.rect.caching.AbstractRectCache; -import mightypork.dynmath.rect.proxy.RectProxy; -import mightypork.gamecore.gui.Enableable; import mightypork.gamecore.gui.events.LayoutChangeEvent; import mightypork.gamecore.gui.events.LayoutChangeListener; import mightypork.gamecore.input.InputSystem; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.Renderable; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.Support; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.interfaces.Enableable; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.rect.caching.AbstractRectCache; +import mightypork.utils.math.constraints.rect.proxy.RectProxy; /** @@ -83,7 +84,7 @@ public abstract class BaseComponent extends AbstractRectCache implements Compone try { poll(); } catch (final NullPointerException e) { - Log.e("Component is missing a bounding rect, at: " + Log.str(getClass())); + Log.e("Component is missing a bounding rect, at: " + Support.str(getClass())); } } diff --git a/src/mightypork/gamecore/gui/components/Component.java b/src/mightypork/gamecore/gui/components/Component.java index 73787ea..53820c8 100644 --- a/src/mightypork/gamecore/gui/components/Component.java +++ b/src/mightypork/gamecore/gui/components/Component.java @@ -1,9 +1,9 @@ package mightypork.gamecore.gui.components; -import mightypork.dynmath.num.Num; -import mightypork.gamecore.gui.Enableable; import mightypork.gamecore.gui.Hideable; +import mightypork.utils.interfaces.Enableable; +import mightypork.utils.math.constraints.num.Num; /** diff --git a/src/mightypork/gamecore/gui/components/InputComponent.java b/src/mightypork/gamecore/gui/components/InputComponent.java index d286a34..8f35f95 100644 --- a/src/mightypork/gamecore/gui/components/InputComponent.java +++ b/src/mightypork/gamecore/gui/components/InputComponent.java @@ -1,8 +1,8 @@ package mightypork.gamecore.gui.components; -import mightypork.gamecore.eventbus.clients.ToggleableClient; -import mightypork.gamecore.gui.Enableable; +import mightypork.utils.eventbus.clients.ToggleableClient; +import mightypork.utils.interfaces.Enableable; public abstract class InputComponent extends BaseComponent implements Enableable, ToggleableClient { diff --git a/src/mightypork/gamecore/gui/components/LayoutComponent.java b/src/mightypork/gamecore/gui/components/LayoutComponent.java index db66402..46759a9 100644 --- a/src/mightypork/gamecore/gui/components/LayoutComponent.java +++ b/src/mightypork/gamecore/gui/components/LayoutComponent.java @@ -4,14 +4,14 @@ package mightypork.gamecore.gui.components; import java.util.Collection; import java.util.LinkedList; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppSubModule; -import mightypork.gamecore.eventbus.EventBus; -import mightypork.gamecore.eventbus.clients.ClientHub; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.resources.audio.SoundSystem; +import mightypork.utils.eventbus.EventBus; +import mightypork.utils.eventbus.clients.ClientHub; +import mightypork.utils.math.constraints.rect.RectBound; public abstract class LayoutComponent extends BaseComponent implements ClientHub, AppAccess { diff --git a/src/mightypork/gamecore/gui/components/LinearComponent.java b/src/mightypork/gamecore/gui/components/LinearComponent.java index 5a52d3d..893149c 100644 --- a/src/mightypork/gamecore/gui/components/LinearComponent.java +++ b/src/mightypork/gamecore/gui/components/LinearComponent.java @@ -1,11 +1,11 @@ package mightypork.gamecore.gui.components; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.proxy.VectAdapter; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.proxy.VectAdapter; public abstract class LinearComponent extends BaseComponent implements DynamicWidthComponent { diff --git a/src/mightypork/gamecore/gui/components/PluggableRenderable.java b/src/mightypork/gamecore/gui/components/PluggableRenderable.java index 744ac93..90674fb 100644 --- a/src/mightypork/gamecore/gui/components/PluggableRenderable.java +++ b/src/mightypork/gamecore/gui/components/PluggableRenderable.java @@ -1,10 +1,10 @@ package mightypork.gamecore.gui.components; -import mightypork.dynmath.rect.PluggableRectBound; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.render.Renderable; +import mightypork.utils.math.constraints.rect.PluggableRectBound; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; /** diff --git a/src/mightypork/gamecore/gui/components/input/ClickableWrapper.java b/src/mightypork/gamecore/gui/components/input/ClickableWrapper.java index 437d10c..45dc6b7 100644 --- a/src/mightypork/gamecore/gui/components/input/ClickableWrapper.java +++ b/src/mightypork/gamecore/gui/components/input/ClickableWrapper.java @@ -3,9 +3,9 @@ package mightypork.gamecore.gui.components.input; import java.util.Collection; -import mightypork.gamecore.eventbus.clients.ClientList; -import mightypork.gamecore.eventbus.clients.DelegatingClient; import mightypork.gamecore.gui.components.Component; +import mightypork.utils.eventbus.clients.ClientList; +import mightypork.utils.eventbus.clients.DelegatingClient; public class ClickableWrapper extends ClickableComponent implements DelegatingClient { diff --git a/src/mightypork/gamecore/gui/components/input/TextButton.java b/src/mightypork/gamecore/gui/components/input/TextButton.java index b17d0b8..40eb506 100644 --- a/src/mightypork/gamecore/gui/components/input/TextButton.java +++ b/src/mightypork/gamecore/gui/components/input/TextButton.java @@ -1,15 +1,15 @@ package mightypork.gamecore.gui.components.input; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.mutable.VectVar; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.DynamicWidthComponent; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.var.VectVar; /** diff --git a/src/mightypork/gamecore/gui/components/layout/ColumnLayout.java b/src/mightypork/gamecore/gui/components/layout/ColumnLayout.java index 17a48e3..abbdf2a 100644 --- a/src/mightypork/gamecore/gui/components/layout/ColumnLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/ColumnLayout.java @@ -1,9 +1,9 @@ package mightypork.gamecore.gui.components.layout; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.components.Component; +import mightypork.utils.math.constraints.rect.RectBound; public class ColumnLayout extends GridLayout { diff --git a/src/mightypork/gamecore/gui/components/layout/ConstraintLayout.java b/src/mightypork/gamecore/gui/components/layout/ConstraintLayout.java index 64ac1f5..3bf0ae8 100644 --- a/src/mightypork/gamecore/gui/components/layout/ConstraintLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/ConstraintLayout.java @@ -1,10 +1,10 @@ package mightypork.gamecore.gui.components.layout; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.components.Component; import mightypork.gamecore.gui.components.LayoutComponent; +import mightypork.utils.math.constraints.rect.RectBound; /** diff --git a/src/mightypork/gamecore/gui/components/layout/FlowColumnLayout.java b/src/mightypork/gamecore/gui/components/layout/FlowColumnLayout.java index 6e9a2e9..b00d8e3 100644 --- a/src/mightypork/gamecore/gui/components/layout/FlowColumnLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/FlowColumnLayout.java @@ -1,13 +1,13 @@ package mightypork.gamecore.gui.components.layout; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.Component; import mightypork.gamecore.gui.components.LayoutComponent; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; /** diff --git a/src/mightypork/gamecore/gui/components/layout/FlowRowLayout.java b/src/mightypork/gamecore/gui/components/layout/FlowRowLayout.java index 7ec13a1..180a1e6 100644 --- a/src/mightypork/gamecore/gui/components/layout/FlowRowLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/FlowRowLayout.java @@ -1,13 +1,13 @@ package mightypork.gamecore.gui.components.layout; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.AlignY; import mightypork.gamecore.gui.components.Component; import mightypork.gamecore.gui.components.LayoutComponent; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; /** diff --git a/src/mightypork/gamecore/gui/components/layout/GridLayout.java b/src/mightypork/gamecore/gui/components/layout/GridLayout.java index 9585d52..56da8b5 100644 --- a/src/mightypork/gamecore/gui/components/layout/GridLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/GridLayout.java @@ -1,11 +1,11 @@ package mightypork.gamecore.gui.components.layout; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.rect.builders.TiledRect; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.components.Component; import mightypork.gamecore.gui.components.LayoutComponent; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.rect.builders.TiledRect; /** diff --git a/src/mightypork/gamecore/gui/components/layout/RowLayout.java b/src/mightypork/gamecore/gui/components/layout/RowLayout.java index d5edfba..0db4442 100644 --- a/src/mightypork/gamecore/gui/components/layout/RowLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/RowLayout.java @@ -1,9 +1,9 @@ package mightypork.gamecore.gui.components.layout; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.components.Component; +import mightypork.utils.math.constraints.rect.RectBound; public class RowLayout extends GridLayout { diff --git a/src/mightypork/gamecore/gui/components/layout/linear/AbstractLinearWrapper.java b/src/mightypork/gamecore/gui/components/layout/linear/AbstractLinearWrapper.java index 1802c6f..d2142b5 100644 --- a/src/mightypork/gamecore/gui/components/layout/linear/AbstractLinearWrapper.java +++ b/src/mightypork/gamecore/gui/components/layout/linear/AbstractLinearWrapper.java @@ -3,10 +3,10 @@ package mightypork.gamecore.gui.components.layout.linear; import java.util.Collection; -import mightypork.gamecore.eventbus.clients.ClientList; -import mightypork.gamecore.eventbus.clients.DelegatingClient; import mightypork.gamecore.gui.components.Component; import mightypork.gamecore.gui.components.LinearComponent; +import mightypork.utils.eventbus.clients.ClientList; +import mightypork.utils.eventbus.clients.DelegatingClient; /** diff --git a/src/mightypork/gamecore/gui/components/layout/linear/LinearGap.java b/src/mightypork/gamecore/gui/components/layout/linear/LinearGap.java index e1b6dda..d5f6d25 100644 --- a/src/mightypork/gamecore/gui/components/layout/linear/LinearGap.java +++ b/src/mightypork/gamecore/gui/components/layout/linear/LinearGap.java @@ -1,8 +1,8 @@ package mightypork.gamecore.gui.components.layout.linear; -import mightypork.dynmath.num.Num; import mightypork.gamecore.gui.components.layout.NullComponent; +import mightypork.utils.math.constraints.num.Num; /** diff --git a/src/mightypork/gamecore/gui/components/layout/linear/LinearLayout.java b/src/mightypork/gamecore/gui/components/layout/linear/LinearLayout.java index 3f71d57..bee938d 100644 --- a/src/mightypork/gamecore/gui/components/layout/linear/LinearLayout.java +++ b/src/mightypork/gamecore/gui/components/layout/linear/LinearLayout.java @@ -1,16 +1,16 @@ package mightypork.gamecore.gui.components.layout.linear; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.num.batch.NumSum; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.proxy.VectAdapter; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.DynamicWidthComponent; import mightypork.gamecore.gui.components.LayoutComponent; import mightypork.gamecore.gui.components.LinearComponent; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.num.batch.NumSum; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.proxy.VectAdapter; public class LinearLayout extends LayoutComponent { diff --git a/src/mightypork/gamecore/gui/components/layout/linear/LinearRectangle.java b/src/mightypork/gamecore/gui/components/layout/linear/LinearRectangle.java index 1671361..78e3f9c 100644 --- a/src/mightypork/gamecore/gui/components/layout/linear/LinearRectangle.java +++ b/src/mightypork/gamecore/gui/components/layout/linear/LinearRectangle.java @@ -1,8 +1,8 @@ package mightypork.gamecore.gui.components.layout.linear; -import mightypork.dynmath.num.Num; import mightypork.gamecore.gui.components.Component; +import mightypork.utils.math.constraints.num.Num; public class LinearRectangle extends AbstractLinearWrapper { diff --git a/src/mightypork/gamecore/gui/components/painters/QuadPainter.java b/src/mightypork/gamecore/gui/components/painters/QuadPainter.java index 32b124e..1631ad7 100644 --- a/src/mightypork/gamecore/gui/components/painters/QuadPainter.java +++ b/src/mightypork/gamecore/gui/components/painters/QuadPainter.java @@ -3,8 +3,8 @@ package mightypork.gamecore.gui.components.painters; import mightypork.gamecore.gui.components.BaseComponent; import mightypork.gamecore.render.Render; -import mightypork.gamecore.util.annot.FactoryMethod; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.annotations.FactoryMethod; +import mightypork.utils.math.color.Color; /** diff --git a/src/mightypork/gamecore/gui/components/painters/TextPainter.java b/src/mightypork/gamecore/gui/components/painters/TextPainter.java index 4caa4c8..d29bb31 100644 --- a/src/mightypork/gamecore/gui/components/painters/TextPainter.java +++ b/src/mightypork/gamecore/gui/components/painters/TextPainter.java @@ -1,19 +1,19 @@ package mightypork.gamecore.gui.components.painters; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.BaseComponent; import mightypork.gamecore.gui.components.DynamicWidthComponent; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.fonts.FontRenderer; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.strings.StringProvider; -import mightypork.gamecore.util.strings.StringWrapper; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.string.StringProvider; +import mightypork.utils.string.StringWrapper; /** diff --git a/src/mightypork/gamecore/gui/events/LayoutChangeEvent.java b/src/mightypork/gamecore/gui/events/LayoutChangeEvent.java index 6938030..99e66ec 100644 --- a/src/mightypork/gamecore/gui/events/LayoutChangeEvent.java +++ b/src/mightypork/gamecore/gui/events/LayoutChangeEvent.java @@ -1,10 +1,10 @@ package mightypork.gamecore.gui.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.DirectEvent; -import mightypork.gamecore.eventbus.event_flags.NonConsumableEvent; -import mightypork.gamecore.eventbus.event_flags.NonRejectableEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.DirectEvent; +import mightypork.utils.eventbus.events.flags.NonConsumableEvent; +import mightypork.utils.eventbus.events.flags.NonRejectableEvent; /** diff --git a/src/mightypork/gamecore/gui/events/ScreenRequest.java b/src/mightypork/gamecore/gui/events/ScreenRequest.java index 14020f5..eaa7f4c 100644 --- a/src/mightypork/gamecore/gui/events/ScreenRequest.java +++ b/src/mightypork/gamecore/gui/events/ScreenRequest.java @@ -1,8 +1,8 @@ package mightypork.gamecore.gui.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; /** diff --git a/src/mightypork/gamecore/gui/screens/LayeredScreen.java b/src/mightypork/gamecore/gui/screens/LayeredScreen.java index c1310de..0f0e5e1 100644 --- a/src/mightypork/gamecore/gui/screens/LayeredScreen.java +++ b/src/mightypork/gamecore/gui/screens/LayeredScreen.java @@ -8,7 +8,7 @@ import java.util.Comparator; import java.util.List; import mightypork.gamecore.core.modules.AppAccess; -import mightypork.gamecore.eventbus.clients.DelegatingClient; +import mightypork.utils.eventbus.clients.DelegatingClient; /** diff --git a/src/mightypork/gamecore/gui/screens/Overlay.java b/src/mightypork/gamecore/gui/screens/Overlay.java index bef1f22..15e3bfa 100644 --- a/src/mightypork/gamecore/gui/screens/Overlay.java +++ b/src/mightypork/gamecore/gui/screens/Overlay.java @@ -4,11 +4,8 @@ package mightypork.gamecore.gui.screens; import java.util.ArrayList; import java.util.Collection; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppSubModule; -import mightypork.gamecore.gui.Enableable; import mightypork.gamecore.gui.Hideable; import mightypork.gamecore.gui.components.layout.ConstraintLayout; import mightypork.gamecore.gui.events.LayoutChangeListener; @@ -17,9 +14,12 @@ import mightypork.gamecore.input.KeyBindingPool; import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.render.Renderable; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.timing.Updateable; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.interfaces.Enableable; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/gamecore/gui/screens/Screen.java b/src/mightypork/gamecore/gui/screens/Screen.java index 7fdf2de..7a8f4f0 100644 --- a/src/mightypork/gamecore/gui/screens/Screen.java +++ b/src/mightypork/gamecore/gui/screens/Screen.java @@ -1,8 +1,6 @@ package mightypork.gamecore.gui.screens; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppSubModule; import mightypork.gamecore.gui.events.LayoutChangeEvent; @@ -14,7 +12,9 @@ import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.render.Render; import mightypork.gamecore.render.Renderable; -import mightypork.gamecore.util.annot.DefaultImpl; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; /** diff --git a/src/mightypork/gamecore/gui/screens/ScreenLayer.java b/src/mightypork/gamecore/gui/screens/ScreenLayer.java index 9f81408..6465918 100644 --- a/src/mightypork/gamecore/gui/screens/ScreenLayer.java +++ b/src/mightypork/gamecore/gui/screens/ScreenLayer.java @@ -1,7 +1,7 @@ package mightypork.gamecore.gui.screens; -import mightypork.gamecore.util.annot.DefaultImpl; +import mightypork.utils.annotations.DefaultImpl; /** diff --git a/src/mightypork/gamecore/gui/screens/ScreenRegistry.java b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java index c04bb8f..7d2ac24 100644 --- a/src/mightypork/gamecore/gui/screens/ScreenRegistry.java +++ b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java @@ -10,11 +10,11 @@ import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppModule; import mightypork.gamecore.gui.events.LayoutChangeEvent; import mightypork.gamecore.gui.events.ScreenRequestListener; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.Renderable; import mightypork.gamecore.render.events.ViewportChangeEvent; import mightypork.gamecore.render.events.ViewportChangeListener; -import mightypork.gamecore.util.annot.DefaultImpl; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.logging.Log; /** diff --git a/src/mightypork/gamecore/gui/screens/impl/CrossfadeOverlay.java b/src/mightypork/gamecore/gui/screens/impl/CrossfadeOverlay.java index 12489e4..0a09842 100644 --- a/src/mightypork/gamecore/gui/screens/impl/CrossfadeOverlay.java +++ b/src/mightypork/gamecore/gui/screens/impl/CrossfadeOverlay.java @@ -6,10 +6,10 @@ import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.events.ScreenRequest; import mightypork.gamecore.gui.screens.Overlay; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.math.timing.TimedTask; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.NumAnimated; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.timing.TimedTask; /** diff --git a/src/mightypork/gamecore/gui/screens/impl/CrossfadeRequest.java b/src/mightypork/gamecore/gui/screens/impl/CrossfadeRequest.java index 95f2212..ec14232 100644 --- a/src/mightypork/gamecore/gui/screens/impl/CrossfadeRequest.java +++ b/src/mightypork/gamecore/gui/screens/impl/CrossfadeRequest.java @@ -1,8 +1,8 @@ package mightypork.gamecore.gui.screens.impl; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; /** diff --git a/src/mightypork/gamecore/gui/screens/impl/FadingLayer.java b/src/mightypork/gamecore/gui/screens/impl/FadingLayer.java index 2d2f3cc..34d97f0 100644 --- a/src/mightypork/gamecore/gui/screens/impl/FadingLayer.java +++ b/src/mightypork/gamecore/gui/screens/impl/FadingLayer.java @@ -3,10 +3,10 @@ package mightypork.gamecore.gui.screens.impl; import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.ScreenLayer; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.timing.TimedTask; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.NumAnimated; +import mightypork.utils.math.timing.TimedTask; /** diff --git a/src/mightypork/gamecore/gui/screens/impl/LayerColor.java b/src/mightypork/gamecore/gui/screens/impl/LayerColor.java index 37574b0..b4f2451 100644 --- a/src/mightypork/gamecore/gui/screens/impl/LayerColor.java +++ b/src/mightypork/gamecore/gui/screens/impl/LayerColor.java @@ -4,7 +4,7 @@ package mightypork.gamecore.gui.screens.impl; import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.ScreenLayer; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.math.color.Color; public class LayerColor extends ScreenLayer { diff --git a/src/mightypork/gamecore/input/InputSystem.java b/src/mightypork/gamecore/input/InputSystem.java index fb01154..4413fd2 100644 --- a/src/mightypork/gamecore/input/InputSystem.java +++ b/src/mightypork/gamecore/input/InputSystem.java @@ -1,17 +1,17 @@ package mightypork.gamecore.input; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.mutable.VectVar; import mightypork.gamecore.core.events.UserQuitRequest; import mightypork.gamecore.core.modules.AppAccess; -import mightypork.gamecore.eventbus.clients.RootBusNode; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.input.events.InputReadyEvent; import mightypork.gamecore.input.events.KeyEvent; import mightypork.gamecore.input.events.MouseButtonEvent; import mightypork.gamecore.input.events.MouseMotionEvent; -import mightypork.gamecore.util.math.timing.Updateable; +import mightypork.utils.eventbus.clients.RootBusNode; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.var.VectVar; import org.lwjgl.LWJGLException; import org.lwjgl.input.Keyboard; diff --git a/src/mightypork/gamecore/input/KeyBindingPool.java b/src/mightypork/gamecore/input/KeyBindingPool.java index d8abd88..e6e3460 100644 --- a/src/mightypork/gamecore/input/KeyBindingPool.java +++ b/src/mightypork/gamecore/input/KeyBindingPool.java @@ -8,7 +8,7 @@ import java.util.Set; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.input.events.KeyEvent; import mightypork.gamecore.input.events.KeyEventHandler; -import mightypork.gamecore.logging.Log; +import mightypork.utils.logging.Log; /** diff --git a/src/mightypork/gamecore/input/KeyStroke.java b/src/mightypork/gamecore/input/KeyStroke.java index db3ceb9..4957ac9 100644 --- a/src/mightypork/gamecore/input/KeyStroke.java +++ b/src/mightypork/gamecore/input/KeyStroke.java @@ -1,7 +1,7 @@ package mightypork.gamecore.input; -import mightypork.gamecore.util.strings.StringUtils; +import mightypork.utils.string.StringUtil; import org.lwjgl.input.Keyboard; @@ -90,8 +90,8 @@ public class KeyStroke { //implements Pollable if (dataString1.contains("+")) { - final String keyStr = StringUtils.fromLastChar(dataString1, '+'); - final String modStr = StringUtils.toLastChar(dataString1, '+'); + final String keyStr = StringUtil.fromLastChar(dataString1, '+'); + final String modStr = StringUtil.toLastChar(dataString1, '+'); setTo(Keys.keyFromString(keyStr), Keys.modFromString(modStr)); diff --git a/src/mightypork/gamecore/input/Keys.java b/src/mightypork/gamecore/input/Keys.java index e221837..58ea129 100644 --- a/src/mightypork/gamecore/input/Keys.java +++ b/src/mightypork/gamecore/input/Keys.java @@ -3,7 +3,7 @@ package mightypork.gamecore.input; import java.util.HashMap; -import mightypork.gamecore.logging.Log; +import mightypork.utils.logging.Log; import org.lwjgl.input.Keyboard; diff --git a/src/mightypork/gamecore/input/events/InputReadyEvent.java b/src/mightypork/gamecore/input/events/InputReadyEvent.java index 1c2156d..0e4b469 100644 --- a/src/mightypork/gamecore/input/events/InputReadyEvent.java +++ b/src/mightypork/gamecore/input/events/InputReadyEvent.java @@ -1,7 +1,7 @@ package mightypork.gamecore.input.events; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; public class InputReadyEvent extends BusEvent { diff --git a/src/mightypork/gamecore/input/events/KeyEvent.java b/src/mightypork/gamecore/input/events/KeyEvent.java index 8c9c159..27cd820 100644 --- a/src/mightypork/gamecore/input/events/KeyEvent.java +++ b/src/mightypork/gamecore/input/events/KeyEvent.java @@ -1,8 +1,8 @@ package mightypork.gamecore.input.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.NotLoggedEvent; import org.lwjgl.input.Keyboard; diff --git a/src/mightypork/gamecore/input/events/MouseButtonEvent.java b/src/mightypork/gamecore/input/events/MouseButtonEvent.java index 3aaac01..e116804 100644 --- a/src/mightypork/gamecore/input/events/MouseButtonEvent.java +++ b/src/mightypork/gamecore/input/events/MouseButtonEvent.java @@ -1,11 +1,11 @@ package mightypork.gamecore.input.events; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.NotLoggedEvent; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.VectConst; /** diff --git a/src/mightypork/gamecore/input/events/MouseMotionEvent.java b/src/mightypork/gamecore/input/events/MouseMotionEvent.java index 77f2ad3..06fda84 100644 --- a/src/mightypork/gamecore/input/events/MouseMotionEvent.java +++ b/src/mightypork/gamecore/input/events/MouseMotionEvent.java @@ -1,10 +1,10 @@ package mightypork.gamecore.input.events; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.NotLoggedEvent; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.VectConst; /** diff --git a/src/mightypork/gamecore/logging/Log.java b/src/mightypork/gamecore/logging/Log.java deleted file mode 100644 index ca11689..0000000 --- a/src/mightypork/gamecore/logging/Log.java +++ /dev/null @@ -1,385 +0,0 @@ -package mightypork.gamecore.logging; - - -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.HashMap; -import java.util.logging.Level; - -import mightypork.gamecore.logging.monitors.LogMonitor; -import mightypork.gamecore.logging.monitors.LogToSysoutMonitor; -import mightypork.gamecore.logging.writers.ArchivingLog; -import mightypork.gamecore.logging.writers.LogWriter; -import mightypork.gamecore.logging.writers.SimpleLog; -import mightypork.gamecore.util.annot.FactoryMethod; -import mightypork.gamecore.util.strings.StringUtils; - - -/** - * A log. - * - * @author Ondřej Hruška (MightyPork) - */ -public class Log { - - private static LogWriter main = null; - private static boolean enabled = true; - private static final LogToSysoutMonitor sysoMonitor = new LogToSysoutMonitor(); - private static final long start_ms = System.currentTimeMillis(); - - private static HashMap logs = new HashMap<>(); - - - /** - * Create a logger. If another with the name already exists, it'll be - * retrieved instead of creating a new one. - * - * @param logName log name (used for filename, should be application-unique) - * @param logFile log file; old logs will be kept here too. - * @param oldLogsCount number of old logs to keep, -1 infinite, 0 none. - * @return the created Log instance - */ - @FactoryMethod - public static synchronized LogWriter create(String logName, File logFile, int oldLogsCount) - { - if (logs.containsKey(logName)) return logs.get(logName); - - final ArchivingLog log = new ArchivingLog(logName, logFile, oldLogsCount); - log.init(); - - logs.put(logName, log); - - return log; - } - - - /** - * Create a logger. If another with the name already exists, it'll be - * retrieved instead of creating a new one. - * - * @param logName log name (used for filename, must be application-unique) - * @param logFile log file; old logs will be kept here too. - * @return the created Log instance - */ - @FactoryMethod - public static synchronized LogWriter create(String logName, File logFile) - { - if (logs.containsKey(logName)) return logs.get(logName); - - final SimpleLog log = new SimpleLog(logName, logFile); - log.init(); - - logs.put(logName, log); - - return log; - } - - - public static void setMainLogger(LogWriter log) - { - main = log; - } - - - public static void addMonitor(LogMonitor mon) - { - assertInited(); - - main.addMonitor(mon); - } - - - public static void removeMonitor(LogMonitor mon) - { - assertInited(); - - main.removeMonitor(mon); - } - - - private static void assertInited() - { - if (main == null) throw new IllegalStateException("Main logger not initialized."); - } - - - /** - * Log a message - * - * @param level message level - * @param msg message text - */ - public static void log(Level level, String msg) - { - if (enabled) { - sysoMonitor.onMessageLogged(level, formatMessage(level, msg, null, start_ms)); - - if (main != null) { - main.log(level, msg); - } - } - } - - - /** - * Log a message - * - * @param level message level - * @param msg message text - * @param t thrown exception - */ - public static void log(Level level, String msg, Throwable t) - { - if (enabled) { - sysoMonitor.onMessageLogged(level, formatMessage(level, msg, t, start_ms)); - - if (main != null) { - main.log(level, msg, t); - } - } - } - - - /** - * Log FINE message - * - * @param msg message - */ - public static void f1(String msg) - { - log(Level.FINE, msg); - } - - - /** - * Log FINER message - * - * @param msg message - */ - public static void f2(String msg) - { - log(Level.FINER, msg); - } - - - /** - * Log FINEST message - * - * @param msg message - */ - public static void f3(String msg) - { - log(Level.FINEST, msg); - } - - - /** - * Log INFO message - * - * @param msg message - */ - public static void i(String msg) - { - log(Level.INFO, msg); - } - - - /** - * Log WARNING message (less severe than ERROR) - * - * @param msg message - */ - public static void w(String msg) - { - log(Level.WARNING, msg); - } - - - /** - * Log ERROR message - * - * @param msg message - */ - public static void e(String msg) - { - log(Level.SEVERE, msg); - } - - - /** - * Log warning message with exception - * - * @param msg message - * @param thrown thrown exception - */ - public static void w(String msg, Throwable thrown) - { - log(Level.WARNING, msg, thrown); - } - - - /** - * Log exception thrown as warning - * - * @param thrown thrown exception - */ - public static void w(Throwable thrown) - { - log(Level.WARNING, null, thrown); - } - - - /** - * Log error message - * - * @param msg message - * @param thrown thrown exception - */ - public static void e(String msg, Throwable thrown) - { - log(Level.SEVERE, msg, thrown); - } - - - /** - * Log exception thrown as error - * - * @param thrown thrown exception - */ - public static void e(Throwable thrown) - { - log(Level.SEVERE, null, thrown); - } - - - public static void enable(boolean flag) - { - enabled = flag; - } - - - public static void setSysoutLevel(Level level) - { - sysoMonitor.setLevel(level); - } - - - public static void setLevel(Level level) - { - assertInited(); - - main.setLevel(level); - } - - - /** - * Get stack trace from throwable - * - * @param t - * @return trace - */ - public static String getStackTrace(Throwable t) - { - final StringWriter sw = new StringWriter(); - final PrintWriter pw = new PrintWriter(sw, true); - t.printStackTrace(pw); - pw.flush(); - sw.flush(); - return sw.toString(); - } - - - public static String formatMessage(Level level, String message, Throwable throwable, long start_ms) - { - if (message == null) message = ""; - - final String nl = System.getProperty("line.separator"); - - if (message.length() > 0) { - if (message.equals("\n")) { - return nl; - } - - if (message.charAt(0) == '\n') { - message = nl + message.substring(1); - } - } - - final long time_ms = (System.currentTimeMillis() - start_ms); - final double time_s = time_ms / 1000D; - final String time = String.format("%6.2f ", time_s); - final String time_blank = StringUtils.repeat(" ", time.length()); - - String prefix = "[ ? ]"; - - if (level == Level.FINE) { - prefix = "[ # ] "; - } else if (level == Level.FINER) { - prefix = "[ - ] "; - } else if (level == Level.FINEST) { - prefix = "[ ] "; - } else if (level == Level.INFO) { - prefix = "[ i ] "; - } else if (level == Level.SEVERE) { - prefix = "[!E!] "; - } else if (level == Level.WARNING) { - prefix = "[!W!] "; - } - - message = time + prefix + message.replaceAll("\n", nl + time_blank + prefix) + nl; - - if (throwable != null) { - message += getStackTrace(throwable); - } - - return message; - } - - - public static String str(Object o) - { - - if (o == null) return ""; - - boolean hasToString = false; - - try { - hasToString = (o.getClass().getMethod("toString").getDeclaringClass() != Object.class); - } catch (final Throwable t) { - // oh well.. - } - - if (hasToString) { - return o.toString(); - } else { - - return str(o.getClass()); - } - } - - - public static String str(Class cls) - { - final LogAlias ln = cls.getAnnotation(LogAlias.class); - if (ln != null) { - return ln.name(); - } - - String name = cls.getName(); - - String sep = ""; - - if (name.contains("$")) { - name = name.substring(name.lastIndexOf("$") + 1); - sep = "$"; - } else { - name = name.substring(name.lastIndexOf(".") + 1); - sep = "."; - } - - final Class enclosing = cls.getEnclosingClass(); - - return (enclosing == null ? "" : str(enclosing) + sep) + name; - } -} diff --git a/src/mightypork/gamecore/logging/LogAlias.java b/src/mightypork/gamecore/logging/LogAlias.java deleted file mode 100644 index a2e03fa..0000000 --- a/src/mightypork/gamecore/logging/LogAlias.java +++ /dev/null @@ -1,21 +0,0 @@ -package mightypork.gamecore.logging; - - -import java.lang.annotation.Documented; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - - -/** - * Specify pretty name to be used when logging (eg. Log.str()) - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.RUNTIME) -@Inherited -@Documented -public @interface LogAlias { - - String name(); -} diff --git a/src/mightypork/gamecore/logging/monitors/BaseLogMonitor.java b/src/mightypork/gamecore/logging/monitors/BaseLogMonitor.java deleted file mode 100644 index de965ac..0000000 --- a/src/mightypork/gamecore/logging/monitors/BaseLogMonitor.java +++ /dev/null @@ -1,39 +0,0 @@ -package mightypork.gamecore.logging.monitors; - - -import java.util.logging.Level; - - -public abstract class BaseLogMonitor implements LogMonitor { - - private boolean enabled = true; - private Level accepted = Level.ALL; - - - @Override - public void onMessageLogged(Level level, String message) - { - if (!enabled) return; - if (accepted.intValue() > level.intValue()) return; - - logMessage(level, message); - } - - - protected abstract void logMessage(Level level, String message); - - - @Override - public void setLevel(Level level) - { - this.accepted = level; - } - - - @Override - public void enable(boolean flag) - { - this.enabled = flag; - } - -} diff --git a/src/mightypork/gamecore/logging/monitors/LogMonitor.java b/src/mightypork/gamecore/logging/monitors/LogMonitor.java deleted file mode 100644 index acfdada..0000000 --- a/src/mightypork/gamecore/logging/monitors/LogMonitor.java +++ /dev/null @@ -1,17 +0,0 @@ -package mightypork.gamecore.logging.monitors; - - -import java.util.logging.Level; - - -public interface LogMonitor { - - void onMessageLogged(Level level, String message); - - - void setLevel(Level level); - - - void enable(boolean flag); - -} diff --git a/src/mightypork/gamecore/logging/monitors/LogToSysoutMonitor.java b/src/mightypork/gamecore/logging/monitors/LogToSysoutMonitor.java deleted file mode 100644 index 2ef98be..0000000 --- a/src/mightypork/gamecore/logging/monitors/LogToSysoutMonitor.java +++ /dev/null @@ -1,19 +0,0 @@ -package mightypork.gamecore.logging.monitors; - - -import java.util.logging.Level; - - -public class LogToSysoutMonitor extends BaseLogMonitor { - - @Override - protected void logMessage(Level level, String message) - { - if (level == Level.SEVERE || level == Level.WARNING) { - System.err.print(message); - } else { - System.out.print(message); - } - } - -} diff --git a/src/mightypork/gamecore/logging/writers/ArchivingLog.java b/src/mightypork/gamecore/logging/writers/ArchivingLog.java deleted file mode 100644 index f5d3685..0000000 --- a/src/mightypork/gamecore/logging/writers/ArchivingLog.java +++ /dev/null @@ -1,129 +0,0 @@ -package mightypork.gamecore.logging.writers; - - -import java.io.File; -import java.io.FileFilter; -import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.List; - -import mightypork.gamecore.util.files.FileUtils; - - -/** - * Logger that cleans directory & archives old logs - * - * @author Ondřej Hruška (MightyPork) - * @copy (c) 2014 - */ -public class ArchivingLog extends SimpleLog { - - /** Number of old logs to keep */ - private final int logs_to_keep; - - - /** - * Log - * - * @param name log name - * @param file log file (in log directory) - * @param oldLogCount number of old log files to keep: -1 all, 0 none. - */ - public ArchivingLog(String name, File file, int oldLogCount) - { - super(name, file); - this.logs_to_keep = oldLogCount; - } - - - /** - * Log, not keeping 5 last log files (default); - * - * @param name log name - * @param file log file (in log directory) - */ - public ArchivingLog(String name, File file) - { - super(name, file); - this.logs_to_keep = 5; - } - - - @Override - public void init() - { - cleanLoggingDirectory(); - - super.init(); - } - - - private void cleanLoggingDirectory() - { - if (logs_to_keep == 0) return; // overwrite - - final File log_file = getFile(); - final File log_dir = log_file.getParentFile(); - final String fname = FileUtils.getBasename(log_file.toString()); - - // move old file - for (final File f : FileUtils.listDirectory(log_dir)) { - if (!f.isFile()) continue; - if (f.equals(getFile())) { - - final Date d = new Date(f.lastModified()); - final String fbase = fname + '_' + (new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss")).format(d); - final String suff = "." + getSuffix(); - String cntStr = ""; - File f2; - - for (int cnt = 0; (f2 = new File(log_dir, fbase + cntStr + suff)).exists(); cntStr = "_" + (++cnt)) {} - - if (!f.renameTo(f2)) throw new RuntimeException("Could not move log file."); - } - } - - if (logs_to_keep == -1) return; // keep all - - final List oldLogs = FileUtils.listDirectory(log_dir, new FileFilter() { - - @Override - public boolean accept(File f) - { - if (f.isDirectory()) return false; - if (!f.getName().endsWith(getSuffix())) return false; - if (!f.getName().startsWith(fname)) return false; - - return true; - } - - }); - - Collections.sort(oldLogs, new Comparator() { - - @Override - public int compare(File o1, File o2) - { - return o1.getName().compareTo(o2.getName()); - } - }); - - // playing with fireee - for (int i = 0; i < oldLogs.size() - logs_to_keep; i++) { - if (!oldLogs.get(i).delete()) { - throw new RuntimeException("Could not delete old log file."); - } - } - } - - - /** - * @return log filename suffix - */ - private String getSuffix() - { - return FileUtils.getExtension(getFile()); - } -} diff --git a/src/mightypork/gamecore/logging/writers/LogWriter.java b/src/mightypork/gamecore/logging/writers/LogWriter.java deleted file mode 100644 index db2bc1c..0000000 --- a/src/mightypork/gamecore/logging/writers/LogWriter.java +++ /dev/null @@ -1,72 +0,0 @@ -package mightypork.gamecore.logging.writers; - - -import java.util.logging.Level; - -import mightypork.gamecore.logging.monitors.LogMonitor; - - -/** - * Log interface - * - * @author Ondřej Hruška (MightyPork) - */ -public interface LogWriter { - - /** - * Prepare logs for logging - */ - void init(); - - - /** - * Add log monitor - * - * @param mon monitor - */ - void addMonitor(LogMonitor mon); - - - /** - * Remove a monitor - * - * @param removed monitor to remove - */ - void removeMonitor(LogMonitor removed); - - - /** - * Set logging level - * - * @param level - */ - void setLevel(Level level); - - - /** - * Enable logging. - * - * @param flag do enable logging - */ - void enable(boolean flag); - - - /** - * Log a message - * - * @param level message level - * @param msg message text - */ - void log(Level level, String msg); - - - /** - * Log a message - * - * @param level message level - * @param msg message text - * @param t thrown exception - */ - void log(Level level, String msg, Throwable t); - -} diff --git a/src/mightypork/gamecore/logging/writers/SimpleLog.java b/src/mightypork/gamecore/logging/writers/SimpleLog.java deleted file mode 100644 index 9e141e2..0000000 --- a/src/mightypork/gamecore/logging/writers/SimpleLog.java +++ /dev/null @@ -1,166 +0,0 @@ -package mightypork.gamecore.logging.writers; - - -import java.io.File; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashSet; -import java.util.logging.FileHandler; -import java.util.logging.Formatter; -import java.util.logging.Level; -import java.util.logging.LogRecord; -import java.util.logging.Logger; - -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.logging.monitors.LogMonitor; - - -/** - * Basic logger - * - * @author Ondřej Hruška (MightyPork) - */ -public class SimpleLog implements LogWriter { - - /** - * Log file formatter. - */ - class LogFormatter extends Formatter { - - @Override - public String format(LogRecord record) - { - return Log.formatMessage(record.getLevel(), record.getMessage(), record.getThrown(), started_ms); - } - } - - /** Log file */ - private final File file; - - /** Log name */ - private final String name; - - /** Logger instance. */ - private Logger logger; - - private boolean enabled = true; - private final HashSet monitors = new HashSet<>(); - private final long started_ms; - - - public SimpleLog(String name, File file) - { - this.name = name; - this.file = file; - this.started_ms = System.currentTimeMillis(); - } - - - @Override - public void init() - { - logger = Logger.getLogger(getName()); - - FileHandler handler = null; - try { - handler = new FileHandler(getFile().getPath()); - } catch (final Throwable t) { - throw new RuntimeException("Failed to init log.", t); - } - - handler.setFormatter(new LogFormatter()); - logger.addHandler(handler); - logger.setUseParentHandlers(false); - logger.setLevel(Level.ALL); - - printHeader(); - } - - - protected void printHeader() - { - final String stamp = (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).format(new Date()); - log(Level.INFO, "Logger \"" + getName() + "\" initialized.\n" + stamp); - } - - - /** - * Add log monitor - * - * @param mon monitor - */ - @Override - public synchronized void addMonitor(LogMonitor mon) - { - monitors.add(mon); - } - - - /** - * Remove a monitor - * - * @param removed monitor to remove - */ - @Override - public synchronized void removeMonitor(LogMonitor removed) - { - monitors.remove(removed); - } - - - @Override - public void setLevel(Level level) - { - logger.setLevel(level); - } - - - @Override - public void enable(boolean flag) - { - enabled = flag; - } - - - public File getFile() - { - return file; - } - - - public String getName() - { - return name; - } - - - @Override - public void log(Level level, String msg) - { - if (enabled) { - logger.log(level, msg); - - final String fmt = Log.formatMessage(level, msg, null, started_ms); - - for (final LogMonitor mon : monitors) { - mon.onMessageLogged(level, fmt); - } - } - } - - - @Override - public void log(Level level, String msg, Throwable t) - { - if (enabled) { - logger.log(level, msg, t); - - final String fmt = Log.formatMessage(level, msg, t, started_ms); - - for (final LogMonitor mon : monitors) { - mon.onMessageLogged(level, fmt); - } - } - } - -} diff --git a/src/mightypork/gamecore/render/DisplaySystem.java b/src/mightypork/gamecore/render/DisplaySystem.java index c99c7e6..713a468 100644 --- a/src/mightypork/gamecore/render/DisplaySystem.java +++ b/src/mightypork/gamecore/render/DisplaySystem.java @@ -5,15 +5,15 @@ import static org.lwjgl.opengl.GL11.*; import java.nio.ByteBuffer; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppModule; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.events.DisplayReadyEvent; import mightypork.gamecore.render.events.ViewportChangeEvent; -import mightypork.gamecore.util.math.timing.FpsMeter; +import mightypork.utils.logging.Log; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.timing.FpsMeter; import org.lwjgl.BufferUtils; import org.lwjgl.LWJGLException; diff --git a/src/mightypork/gamecore/render/Render.java b/src/mightypork/gamecore/render/Render.java index bc69115..5f0146f 100644 --- a/src/mightypork/gamecore/render/Render.java +++ b/src/mightypork/gamecore/render/Render.java @@ -5,17 +5,17 @@ import static org.lwjgl.opengl.GL11.*; import java.io.IOException; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.caching.RectDigest; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.textures.FilterMode; import mightypork.gamecore.resources.textures.GLTexture; import mightypork.gamecore.resources.textures.TxQuad; -import mightypork.gamecore.util.files.FileUtils; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; +import mightypork.utils.files.FileUtils; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.caching.RectDigest; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.VectConst; import org.lwjgl.opengl.GL11; import org.newdawn.slick.opengl.Texture; diff --git a/src/mightypork/gamecore/render/TaskTakeScreenshot.java b/src/mightypork/gamecore/render/TaskTakeScreenshot.java index 4df222c..afdf858 100644 --- a/src/mightypork/gamecore/render/TaskTakeScreenshot.java +++ b/src/mightypork/gamecore/render/TaskTakeScreenshot.java @@ -5,8 +5,8 @@ import java.io.File; import java.io.IOException; import mightypork.gamecore.core.WorkDir; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.Utils; +import mightypork.utils.Support; +import mightypork.utils.logging.Log; import org.newdawn.slick.opengl.GLUtils; @@ -26,7 +26,7 @@ public class TaskTakeScreenshot implements Runnable { @Override public void run() { - final String fname = Utils.getTime("yyyy-MM-dd_HH-mm-ss"); + final String fname = Support.getTime("yyyy-MM-dd_HH-mm-ss"); // generate unique filename File file; diff --git a/src/mightypork/gamecore/render/events/DisplayReadyEvent.java b/src/mightypork/gamecore/render/events/DisplayReadyEvent.java index 778d9b8..2dd4606 100644 --- a/src/mightypork/gamecore/render/events/DisplayReadyEvent.java +++ b/src/mightypork/gamecore/render/events/DisplayReadyEvent.java @@ -1,7 +1,7 @@ package mightypork.gamecore.render.events; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; public class DisplayReadyEvent extends BusEvent { diff --git a/src/mightypork/gamecore/render/events/FullscreenToggleRequest.java b/src/mightypork/gamecore/render/events/FullscreenToggleRequest.java index 1410692..10aaa64 100644 --- a/src/mightypork/gamecore/render/events/FullscreenToggleRequest.java +++ b/src/mightypork/gamecore/render/events/FullscreenToggleRequest.java @@ -1,9 +1,9 @@ package mightypork.gamecore.render.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; import mightypork.gamecore.render.DisplaySystem; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; @SingleReceiverEvent diff --git a/src/mightypork/gamecore/render/events/ScreenshotRequest.java b/src/mightypork/gamecore/render/events/ScreenshotRequest.java index a7ea0b6..a9acebc 100644 --- a/src/mightypork/gamecore/render/events/ScreenshotRequest.java +++ b/src/mightypork/gamecore/render/events/ScreenshotRequest.java @@ -1,7 +1,7 @@ package mightypork.gamecore.render.events; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; public class ScreenshotRequest extends BusEvent { diff --git a/src/mightypork/gamecore/render/events/ViewportChangeEvent.java b/src/mightypork/gamecore/render/events/ViewportChangeEvent.java index 8943b60..92f1017 100644 --- a/src/mightypork/gamecore/render/events/ViewportChangeEvent.java +++ b/src/mightypork/gamecore/render/events/ViewportChangeEvent.java @@ -1,10 +1,10 @@ package mightypork.gamecore.render.events; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.NonConsumableEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.NonConsumableEvent; +import mightypork.utils.eventbus.events.flags.NotLoggedEvent; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/gamecore/resources/AsyncResourceLoader.java b/src/mightypork/gamecore/resources/AsyncResourceLoader.java index 04ab676..1dbd1f7 100644 --- a/src/mightypork/gamecore/resources/AsyncResourceLoader.java +++ b/src/mightypork/gamecore/resources/AsyncResourceLoader.java @@ -6,9 +6,10 @@ import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import mightypork.gamecore.core.events.MainLoopRequest; -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.events.Destroyable; -import mightypork.gamecore.logging.Log; +import mightypork.utils.Support; +import mightypork.utils.eventbus.BusAccess; +import mightypork.utils.interfaces.Destroyable; +import mightypork.utils.logging.Log; /** @@ -59,7 +60,7 @@ public class AsyncResourceLoader extends Thread implements ResourceLoader, Destr if (!mainLoopQueuing) { // just let it be } else { - Log.f3("(loader) Delegating to main thread: " + Log.str(resource)); + Log.f3("(loader) Delegating to main thread: " + Support.str(resource)); app.getEventBus().send(new MainLoopRequest(new Runnable() { @@ -91,7 +92,7 @@ public class AsyncResourceLoader extends Thread implements ResourceLoader, Destr if (!def.isLoaded()) { - Log.f3("(loader) Scheduling... " + Log.str(def)); + Log.f3("(loader) Scheduling... " + Support.str(def)); exs.submit(new Runnable() { diff --git a/src/mightypork/gamecore/resources/BaseLazyResource.java b/src/mightypork/gamecore/resources/BaseLazyResource.java index 5e303d9..7094fca 100644 --- a/src/mightypork/gamecore/resources/BaseLazyResource.java +++ b/src/mightypork/gamecore/resources/BaseLazyResource.java @@ -3,10 +3,11 @@ package mightypork.gamecore.resources; import java.io.IOException; -import mightypork.gamecore.eventbus.events.Destroyable; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.logging.LogAlias; -import mightypork.gamecore.util.strings.StringUtils; +import mightypork.utils.annotations.Alias; +import mightypork.utils.interfaces.Destroyable; +import mightypork.utils.logging.Log; +import mightypork.utils.math.timing.Profiler; +import mightypork.utils.string.StringUtil; /** @@ -14,7 +15,7 @@ import mightypork.gamecore.util.strings.StringUtils; * * @author Ondřej Hruška (MightyPork) */ -@LogAlias(name = "Resource") +@Alias(name = "Resource") public abstract class BaseLazyResource implements LazyResource, Destroyable { private final String resource; @@ -106,7 +107,7 @@ public abstract class BaseLazyResource implements LazyResource, Destroyable { @Override public String toString() { - return StringUtils.fromLastChar(resource, '/'); + return StringUtil.fromLastChar(resource, '/'); } diff --git a/src/mightypork/gamecore/resources/Profiler.java b/src/mightypork/gamecore/resources/Profiler.java deleted file mode 100644 index 83429e1..0000000 --- a/src/mightypork/gamecore/resources/Profiler.java +++ /dev/null @@ -1,32 +0,0 @@ -package mightypork.gamecore.resources; - - -import mightypork.gamecore.util.math.Calc; - - -public class Profiler { - - public static long begin() - { - return System.currentTimeMillis(); - } - - - public static double end(long begun) - { - return endLong(begun) / 1000D; - } - - - public static long endLong(long begun) - { - return System.currentTimeMillis() - begun; - } - - - public static String endStr(long begun) - { - return Calc.toString(end(begun)) + " s"; - } - -} diff --git a/src/mightypork/gamecore/resources/ResourceLoadRequest.java b/src/mightypork/gamecore/resources/ResourceLoadRequest.java index cf06400..33abc64 100644 --- a/src/mightypork/gamecore/resources/ResourceLoadRequest.java +++ b/src/mightypork/gamecore/resources/ResourceLoadRequest.java @@ -1,8 +1,8 @@ package mightypork.gamecore.resources; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; /** diff --git a/src/mightypork/gamecore/resources/ResourceLoader.java b/src/mightypork/gamecore/resources/ResourceLoader.java index 23d75d2..6cdd70f 100644 --- a/src/mightypork/gamecore/resources/ResourceLoader.java +++ b/src/mightypork/gamecore/resources/ResourceLoader.java @@ -1,7 +1,7 @@ package mightypork.gamecore.resources; -import mightypork.gamecore.eventbus.BusAccess; +import mightypork.utils.eventbus.BusAccess; /** diff --git a/src/mightypork/gamecore/resources/TextureBasedResource.java b/src/mightypork/gamecore/resources/TextureBasedResource.java index 8bc5612..ab74205 100644 --- a/src/mightypork/gamecore/resources/TextureBasedResource.java +++ b/src/mightypork/gamecore/resources/TextureBasedResource.java @@ -1,7 +1,12 @@ package mightypork.gamecore.resources; -import java.lang.annotation.*; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; /** diff --git a/src/mightypork/gamecore/resources/audio/AudioReadyEvent.java b/src/mightypork/gamecore/resources/audio/AudioReadyEvent.java index 24566e9..df31402 100644 --- a/src/mightypork/gamecore/resources/audio/AudioReadyEvent.java +++ b/src/mightypork/gamecore/resources/audio/AudioReadyEvent.java @@ -1,7 +1,7 @@ package mightypork.gamecore.resources.audio; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; public class AudioReadyEvent extends BusEvent { diff --git a/src/mightypork/gamecore/resources/audio/JointVolume.java b/src/mightypork/gamecore/resources/audio/JointVolume.java index ac0baf7..393b17d 100644 --- a/src/mightypork/gamecore/resources/audio/JointVolume.java +++ b/src/mightypork/gamecore/resources/audio/JointVolume.java @@ -1,7 +1,7 @@ package mightypork.gamecore.resources.audio; -import mightypork.gamecore.util.math.Calc; +import mightypork.utils.math.Calc; /** diff --git a/src/mightypork/gamecore/resources/audio/LazyAudio.java b/src/mightypork/gamecore/resources/audio/LazyAudio.java index 6911f01..4b844ad 100644 --- a/src/mightypork/gamecore/resources/audio/LazyAudio.java +++ b/src/mightypork/gamecore/resources/audio/LazyAudio.java @@ -4,10 +4,10 @@ package mightypork.gamecore.resources.audio; import java.io.IOException; import java.io.InputStream; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.logging.LogAlias; import mightypork.gamecore.resources.BaseLazyResource; -import mightypork.gamecore.util.files.FileUtils; +import mightypork.utils.annotations.Alias; +import mightypork.utils.files.FileUtils; +import mightypork.utils.math.constraints.vect.Vect; import org.newdawn.slick.openal.Audio; import org.newdawn.slick.openal.SoundStore; @@ -18,7 +18,7 @@ import org.newdawn.slick.openal.SoundStore; * * @author Ondřej Hruška (MightyPork) */ -@LogAlias(name = "Audio") +@Alias(name = "Audio") public class LazyAudio extends BaseLazyResource { private enum PlayMode diff --git a/src/mightypork/gamecore/resources/audio/SoundSystem.java b/src/mightypork/gamecore/resources/audio/SoundSystem.java index 187ae31..9267d07 100644 --- a/src/mightypork/gamecore/resources/audio/SoundSystem.java +++ b/src/mightypork/gamecore/resources/audio/SoundSystem.java @@ -5,16 +5,16 @@ import java.nio.FloatBuffer; import java.util.ArrayList; import java.util.List; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.mutable.VectVar; import mightypork.gamecore.core.modules.AppAccess; -import mightypork.gamecore.eventbus.clients.RootBusNode; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.ResourceLoadRequest; import mightypork.gamecore.resources.audio.players.EffectPlayer; import mightypork.gamecore.resources.audio.players.LoopPlayer; -import mightypork.gamecore.util.math.Calc.Buffers; -import mightypork.gamecore.util.math.timing.Updateable; +import mightypork.gamecore.util.BufferHelper; +import mightypork.utils.eventbus.clients.RootBusNode; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.logging.Log; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.var.VectVar; import org.lwjgl.openal.AL; import org.lwjgl.openal.AL10; @@ -43,16 +43,16 @@ public class SoundSystem extends RootBusNode implements Updateable { public static void setListener(Vect pos) { listener.setTo(pos); - final FloatBuffer buf3 = Buffers.alloc(3); - final FloatBuffer buf6 = Buffers.alloc(6); + final FloatBuffer buf3 = BufferHelper.alloc(3); + final FloatBuffer buf6 = BufferHelper.alloc(6); buf3.clear(); - Buffers.fill(buf3, (float) pos.x(), (float) pos.y(), (float) pos.z()); + BufferHelper.fill(buf3, (float) pos.x(), (float) pos.y(), (float) pos.z()); AL10.alListener(AL10.AL_POSITION, buf3); buf3.clear(); - Buffers.fill(buf3, 0, 0, 0); + BufferHelper.fill(buf3, 0, 0, 0); AL10.alListener(AL10.AL_VELOCITY, buf3); buf6.clear(); - Buffers.fill(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f); + BufferHelper.fill(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f); AL10.alListener(AL10.AL_ORIENTATION, buf6); } diff --git a/src/mightypork/gamecore/resources/audio/Volume.java b/src/mightypork/gamecore/resources/audio/Volume.java index d815716..c801c11 100644 --- a/src/mightypork/gamecore/resources/audio/Volume.java +++ b/src/mightypork/gamecore/resources/audio/Volume.java @@ -1,8 +1,8 @@ package mightypork.gamecore.resources.audio; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.objects.Mutable; +import mightypork.utils.math.Calc; +import mightypork.utils.struct.Mutable; /** diff --git a/src/mightypork/gamecore/resources/audio/players/BaseAudioPlayer.java b/src/mightypork/gamecore/resources/audio/players/BaseAudioPlayer.java index b2fc516..740c28f 100644 --- a/src/mightypork/gamecore/resources/audio/players/BaseAudioPlayer.java +++ b/src/mightypork/gamecore/resources/audio/players/BaseAudioPlayer.java @@ -1,9 +1,9 @@ package mightypork.gamecore.resources.audio.players; -import mightypork.gamecore.eventbus.events.Destroyable; import mightypork.gamecore.resources.audio.LazyAudio; import mightypork.gamecore.resources.audio.Volume; +import mightypork.utils.interfaces.Destroyable; /** diff --git a/src/mightypork/gamecore/resources/audio/players/EffectPlayer.java b/src/mightypork/gamecore/resources/audio/players/EffectPlayer.java index c8e038a..859f1b7 100644 --- a/src/mightypork/gamecore/resources/audio/players/EffectPlayer.java +++ b/src/mightypork/gamecore/resources/audio/players/EffectPlayer.java @@ -1,9 +1,9 @@ package mightypork.gamecore.resources.audio.players; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.resources.audio.LazyAudio; import mightypork.gamecore.resources.audio.Volume; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/gamecore/resources/audio/players/LoopPlayer.java b/src/mightypork/gamecore/resources/audio/players/LoopPlayer.java index 33f0536..97a76ef 100644 --- a/src/mightypork/gamecore/resources/audio/players/LoopPlayer.java +++ b/src/mightypork/gamecore/resources/audio/players/LoopPlayer.java @@ -3,9 +3,9 @@ package mightypork.gamecore.resources.audio.players; import mightypork.gamecore.resources.audio.LazyAudio; import mightypork.gamecore.resources.audio.Volume; -import mightypork.gamecore.util.math.timing.Pauseable; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; +import mightypork.utils.interfaces.Pauseable; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.animation.NumAnimated; import org.lwjgl.openal.AL10; diff --git a/src/mightypork/gamecore/resources/fonts/FontRenderer.java b/src/mightypork/gamecore/resources/fonts/FontRenderer.java index ca9a578..281150c 100644 --- a/src/mightypork/gamecore/resources/fonts/FontRenderer.java +++ b/src/mightypork/gamecore/resources/fonts/FontRenderer.java @@ -1,12 +1,12 @@ package mightypork.gamecore.resources.fonts; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.render.Render; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/gamecore/resources/fonts/GLFont.java b/src/mightypork/gamecore/resources/fonts/GLFont.java index 4a27898..273ad3f 100644 --- a/src/mightypork/gamecore/resources/fonts/GLFont.java +++ b/src/mightypork/gamecore/resources/fonts/GLFont.java @@ -1,8 +1,8 @@ package mightypork.gamecore.resources.fonts; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/gamecore/resources/fonts/impl/LazyFont.java b/src/mightypork/gamecore/resources/fonts/impl/LazyFont.java index c33a654..19291d3 100644 --- a/src/mightypork/gamecore/resources/fonts/impl/LazyFont.java +++ b/src/mightypork/gamecore/resources/fonts/impl/LazyFont.java @@ -6,14 +6,14 @@ import java.awt.FontFormatException; import java.io.IOException; import java.io.InputStream; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.logging.LogAlias; import mightypork.gamecore.resources.BaseLazyResource; import mightypork.gamecore.resources.TextureBasedResource; import mightypork.gamecore.resources.fonts.GLFont; import mightypork.gamecore.resources.textures.FilterMode; -import mightypork.gamecore.util.files.FileUtils; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.annotations.Alias; +import mightypork.utils.files.FileUtils; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.constraints.vect.Vect; /** @@ -22,7 +22,7 @@ import mightypork.gamecore.util.math.color.Color; * @author Ondřej Hruška (MightyPork) */ @TextureBasedResource -@LogAlias(name = "Font") +@Alias(name = "Font") public class LazyFont extends BaseLazyResource implements GLFont { public static enum FontStyle diff --git a/src/mightypork/gamecore/resources/fonts/impl/LazyFontNative.java b/src/mightypork/gamecore/resources/fonts/impl/LazyFontNative.java index b8bf820..f373770 100644 --- a/src/mightypork/gamecore/resources/fonts/impl/LazyFontNative.java +++ b/src/mightypork/gamecore/resources/fonts/impl/LazyFontNative.java @@ -4,8 +4,8 @@ package mightypork.gamecore.resources.fonts.impl; import java.awt.Font; import java.io.IOException; -import mightypork.gamecore.logging.LogAlias; import mightypork.gamecore.resources.textures.FilterMode; +import mightypork.utils.annotations.Alias; /** @@ -13,7 +13,7 @@ import mightypork.gamecore.resources.textures.FilterMode; * * @author Ondřej Hruška (MightyPork) */ -@LogAlias(name = "FontNative") +@Alias(name = "FontNative") public class LazyFontNative extends LazyFont { /** diff --git a/src/mightypork/gamecore/resources/fonts/impl/TextureBackedFont.java b/src/mightypork/gamecore/resources/fonts/impl/TextureBackedFont.java index d65a3f1..42a9a77 100644 --- a/src/mightypork/gamecore/resources/fonts/impl/TextureBackedFont.java +++ b/src/mightypork/gamecore/resources/fonts/impl/TextureBackedFont.java @@ -18,13 +18,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.fonts.GLFont; import mightypork.gamecore.resources.textures.FilterMode; import mightypork.gamecore.resources.textures.LazyTexture; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.VectConst; import org.lwjgl.BufferUtils; import org.lwjgl.util.glu.GLU; diff --git a/src/mightypork/gamecore/resources/textures/GLTexture.java b/src/mightypork/gamecore/resources/textures/GLTexture.java index 3ecd837..b38c47a 100644 --- a/src/mightypork/gamecore/resources/textures/GLTexture.java +++ b/src/mightypork/gamecore/resources/textures/GLTexture.java @@ -1,8 +1,8 @@ package mightypork.gamecore.resources.textures; -import mightypork.dynmath.rect.Rect; -import mightypork.gamecore.eventbus.events.Destroyable; +import mightypork.utils.interfaces.Destroyable; +import mightypork.utils.math.constraints.rect.Rect; /** diff --git a/src/mightypork/gamecore/resources/textures/LazyTexture.java b/src/mightypork/gamecore/resources/textures/LazyTexture.java index 1a001ad..fdc06d4 100644 --- a/src/mightypork/gamecore/resources/textures/LazyTexture.java +++ b/src/mightypork/gamecore/resources/textures/LazyTexture.java @@ -1,11 +1,11 @@ package mightypork.gamecore.resources.textures; -import mightypork.dynmath.rect.Rect; -import mightypork.gamecore.logging.LogAlias; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.BaseLazyResource; import mightypork.gamecore.resources.TextureBasedResource; +import mightypork.utils.annotations.Alias; +import mightypork.utils.math.constraints.rect.Rect; import org.lwjgl.opengl.GL11; @@ -15,7 +15,7 @@ import org.lwjgl.opengl.GL11; * * @author Ondřej Hruška (MightyPork) */ -@LogAlias(name = "Texture") +@Alias(name = "Texture") @TextureBasedResource public class LazyTexture extends BaseLazyResource implements GLTexture { diff --git a/src/mightypork/gamecore/resources/textures/QuadGrid.java b/src/mightypork/gamecore/resources/textures/QuadGrid.java index 8d101ea..147882b 100644 --- a/src/mightypork/gamecore/resources/textures/QuadGrid.java +++ b/src/mightypork/gamecore/resources/textures/QuadGrid.java @@ -1,7 +1,7 @@ package mightypork.gamecore.resources.textures; -import mightypork.dynmath.rect.Rect; +import mightypork.utils.math.constraints.rect.Rect; /** diff --git a/src/mightypork/gamecore/resources/textures/TextureRegistry.java b/src/mightypork/gamecore/resources/textures/TextureRegistry.java index 2ea4d74..cddfe51 100644 --- a/src/mightypork/gamecore/resources/textures/TextureRegistry.java +++ b/src/mightypork/gamecore/resources/textures/TextureRegistry.java @@ -4,11 +4,11 @@ package mightypork.gamecore.resources.textures; import java.util.HashMap; import java.util.Map; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppAccessAdapter; import mightypork.gamecore.resources.ResourceLoadRequest; -import mightypork.gamecore.util.error.KeyAlreadyExistsException; +import mightypork.utils.exceptions.KeyAlreadyExistsException; +import mightypork.utils.math.constraints.rect.Rect; /** diff --git a/src/mightypork/gamecore/resources/textures/TxQuad.java b/src/mightypork/gamecore/resources/textures/TxQuad.java index e5b12db..02a0cc5 100644 --- a/src/mightypork/gamecore/resources/textures/TxQuad.java +++ b/src/mightypork/gamecore/resources/textures/TxQuad.java @@ -1,8 +1,8 @@ package mightypork.gamecore.resources.textures; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectConst; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectConst; /** diff --git a/src/mightypork/gamecore/resources/textures/TxSheet.java b/src/mightypork/gamecore/resources/textures/TxSheet.java index a4c2c1a..918a634 100644 --- a/src/mightypork/gamecore/resources/textures/TxSheet.java +++ b/src/mightypork/gamecore/resources/textures/TxSheet.java @@ -3,7 +3,7 @@ package mightypork.gamecore.resources.textures; import java.util.Random; -import mightypork.gamecore.logging.Log; +import mightypork.utils.logging.Log; /** diff --git a/src/mightypork/gamecore/util/BufferHelper.java b/src/mightypork/gamecore/util/BufferHelper.java new file mode 100644 index 0000000..3e1a001 --- /dev/null +++ b/src/mightypork/gamecore/util/BufferHelper.java @@ -0,0 +1,52 @@ +package mightypork.gamecore.util; + + +import java.nio.FloatBuffer; + +import org.lwjgl.BufferUtils; + + +/** + * Calc subclass with buffer utils. + * + * @author Ondřej Hruška (MightyPork) + */ +public class BufferHelper { + + /** + * Create java.nio.FloatBuffer of given floats, and flip it. + * + * @param obj floats or float array + * @return float buffer + */ + public static FloatBuffer mkFillBuff(float... obj) + { + return (FloatBuffer) BufferUtils.createFloatBuffer(obj.length).put(obj).flip(); + } + + + /** + * Fill java.nio.FloatBuffer with floats or float array + * + * @param buff + * @param obj + */ + public static void fill(FloatBuffer buff, float... obj) + { + buff.put(obj); + buff.flip(); + } + + + /** + * Create new java.nio.FloatBuffer of given length + * + * @param count elements + * @return the new java.nio.FloatBuffer + */ + public static FloatBuffer alloc(int count) + { + return BufferUtils.createFloatBuffer(count); + } + +} diff --git a/src/mightypork/gamecore/logging/SlickLogRedirector.java b/src/mightypork/gamecore/util/SlickLogRedirector.java similarity index 91% rename from src/mightypork/gamecore/logging/SlickLogRedirector.java rename to src/mightypork/gamecore/util/SlickLogRedirector.java index 5831164..7af26b2 100644 --- a/src/mightypork/gamecore/logging/SlickLogRedirector.java +++ b/src/mightypork/gamecore/util/SlickLogRedirector.java @@ -1,9 +1,9 @@ -package mightypork.gamecore.logging; +package mightypork.gamecore.util; import java.util.logging.Level; -import mightypork.gamecore.logging.writers.LogWriter; +import mightypork.utils.logging.writers.LogWriter; /** diff --git a/src/mightypork/gamecore/util/Utils.java b/src/mightypork/gamecore/util/Utils.java deleted file mode 100644 index 682346e..0000000 --- a/src/mightypork/gamecore/util/Utils.java +++ /dev/null @@ -1,56 +0,0 @@ -package mightypork.gamecore.util; - - -import java.lang.annotation.Annotation; -import java.text.SimpleDateFormat; -import java.util.Date; - - -/** - * Assorted utils - * - * @author Ondřej Hruška (MightyPork) - */ -public final class Utils { - - public static Thread runAsThread(Runnable r) - { - final Thread t = new Thread(r); - t.start(); - return t; - } - - - public static boolean hasAnnotation(Object tested, Class annotation) - { - return tested.getClass().isAnnotationPresent(annotation); - } - - - public static T getAnnotation(Object tested, Class annotation) - { - return tested.getClass().getAnnotation(annotation); - } - - - /** - * Pick first non-null option - * - * @param options options - * @return the selected option - */ - public static Object fallback(Object... options) - { - for (final Object o : options) { - if (o != null) return o; - } - - return null; // all null - } - - - public static String getTime(String format) - { - return (new SimpleDateFormat(format)).format(new Date()); - } -} diff --git a/src/mightypork/gamecore/util/annot/DefaultImpl.java b/src/mightypork/gamecore/util/annot/DefaultImpl.java deleted file mode 100644 index 87a4c31..0000000 --- a/src/mightypork/gamecore/util/annot/DefaultImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package mightypork.gamecore.util.annot; - - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Marked method can be safely overriden; it's left blank (or with default - * implementation) as a convenience.
- * This is a description annotation and has no other function. - * - * @author Ondřej Hruška (MightyPork) - */ -@Documented -@Retention(RetentionPolicy.SOURCE) -@Target(value = { ElementType.METHOD }) -public @interface DefaultImpl { - // -} diff --git a/src/mightypork/gamecore/util/annot/FactoryMethod.java b/src/mightypork/gamecore/util/annot/FactoryMethod.java deleted file mode 100644 index 3e2f076..0000000 --- a/src/mightypork/gamecore/util/annot/FactoryMethod.java +++ /dev/null @@ -1,22 +0,0 @@ -package mightypork.gamecore.util.annot; - - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Marks a static factory method. This is a description annotation and has no - * other function. - * - * @author Ondřej Hruška (MightyPork) - */ -@Retention(RetentionPolicy.SOURCE) -@Target(ElementType.METHOD) -@Documented -public @interface FactoryMethod { - -} diff --git a/src/mightypork/gamecore/util/error/CorruptDataException.java b/src/mightypork/gamecore/util/error/CorruptDataException.java deleted file mode 100644 index b86b399..0000000 --- a/src/mightypork/gamecore/util/error/CorruptDataException.java +++ /dev/null @@ -1,34 +0,0 @@ -package mightypork.gamecore.util.error; - - -/** - * Thrown when data could not be read successfully. - * - * @author Ondřej Hruška (MightyPork) - */ -public class CorruptDataException extends RuntimeException { - - public CorruptDataException() - { - super(); - } - - - public CorruptDataException(String message, Throwable cause) - { - super(message, cause); - } - - - public CorruptDataException(String message) - { - super(message); - } - - - public CorruptDataException(Throwable cause) - { - super(cause); - } - -} diff --git a/src/mightypork/gamecore/util/error/IllegalValueException.java b/src/mightypork/gamecore/util/error/IllegalValueException.java deleted file mode 100644 index d086e59..0000000 --- a/src/mightypork/gamecore/util/error/IllegalValueException.java +++ /dev/null @@ -1,34 +0,0 @@ -package mightypork.gamecore.util.error; - - -/** - * Thrown when a invalid value is given to a method, or found in a data object / - * file etc - * - * @author Ondřej Hruška (MightyPork) - */ -public class IllegalValueException extends RuntimeException { - - public IllegalValueException() - { - } - - - public IllegalValueException(String message) - { - super(message); - } - - - public IllegalValueException(Throwable cause) - { - super(cause); - } - - - public IllegalValueException(String message, Throwable cause) - { - super(message, cause); - } - -} diff --git a/src/mightypork/gamecore/util/error/KeyAlreadyExistsException.java b/src/mightypork/gamecore/util/error/KeyAlreadyExistsException.java deleted file mode 100644 index 957ce17..0000000 --- a/src/mightypork/gamecore/util/error/KeyAlreadyExistsException.java +++ /dev/null @@ -1,34 +0,0 @@ -package mightypork.gamecore.util.error; - - -/** - * Thrown by a map-like class when the key specified is already taken. - * - * @author Ondřej Hruška (MightyPork) - */ -public class KeyAlreadyExistsException extends RuntimeException { - - public KeyAlreadyExistsException() - { - super(); - } - - - public KeyAlreadyExistsException(String message, Throwable cause) - { - super(message, cause); - } - - - public KeyAlreadyExistsException(String message) - { - super(message); - } - - - public KeyAlreadyExistsException(Throwable cause) - { - super(cause); - } - -} diff --git a/src/mightypork/gamecore/util/files/FileSuffixFilter.java b/src/mightypork/gamecore/util/files/FileSuffixFilter.java deleted file mode 100644 index 52d3f14..0000000 --- a/src/mightypork/gamecore/util/files/FileSuffixFilter.java +++ /dev/null @@ -1,46 +0,0 @@ -package mightypork.gamecore.util.files; - - -import java.io.File; -import java.io.FileFilter; - - -/** - * File filter for certain suffixes - * - * @author Ondřej Hruška (MightyPork) - */ -public class FileSuffixFilter implements FileFilter { - - /** Array of allowed suffixes */ - private String[] suffixes = null; - - - /** - * Suffix filter - * - * @param suffixes var-args allowed suffixes, case insensitive - */ - public FileSuffixFilter(String... suffixes) - { - this.suffixes = suffixes; - } - - - @Override - public boolean accept(File pathname) - { - if (!pathname.isFile()) return false; - - final String fname = pathname.getName().toLowerCase().trim(); - - for (final String suffix : suffixes) { - if (fname.endsWith(suffix.toLowerCase().trim())) { - return true; - } - } - - return false; - } - -} diff --git a/src/mightypork/gamecore/util/files/FileTreeDiff.java b/src/mightypork/gamecore/util/files/FileTreeDiff.java deleted file mode 100644 index 8e03748..0000000 --- a/src/mightypork/gamecore/util/files/FileTreeDiff.java +++ /dev/null @@ -1,153 +0,0 @@ -package mightypork.gamecore.util.files; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.zip.Adler32; -import java.util.zip.CheckedInputStream; -import java.util.zip.Checksum; - -import mightypork.gamecore.logging.Log; - - -public class FileTreeDiff { - - private static final byte[] BUFFER = new byte[2048]; - private final Checksum ck1 = new Adler32(); - private final Checksum ck2 = new Adler32(); - - private boolean logging = true; - - private final List> compared = new ArrayList<>(); - private final Comparator fileFirstSorter = new Comparator() { - - @Override - public int compare(File o1, File o2) - { - if (!o1.isDirectory() && o2.isDirectory()) return -1; - if (o1.isDirectory() && !o2.isDirectory()) return 1; - - return o1.getName().compareTo(o2.getName()); - } - }; - - - public void enableLogging(boolean state) - { - logging = state; - } - - - public boolean areEqual(File dir1, File dir2) - { - if (logging) Log.f3("Comparing directory trees:\n 1. " + dir1 + "\n 2. " + dir2); - - try { - compared.clear(); - buildList(dir1, dir2); - - calcChecksum(); - - if (logging) Log.f3("No difference found."); - - return true; - - } catch (final NotEqualException e) { - if (logging) Log.f3("Difference found:\n" + e.getMessage()); - - return false; - } - } - - - private void calcChecksum() throws NotEqualException - { - - for (final Tuple pair : compared) { - ck1.reset(); - ck2.reset(); - - try(FileInputStream in1 = new FileInputStream(pair.a); - FileInputStream in2 = new FileInputStream(pair.b)) { - - try(CheckedInputStream cin1 = new CheckedInputStream(in1, ck1); - CheckedInputStream cin2 = new CheckedInputStream(in2, ck2)) { - - while (true) { - final int read1 = cin1.read(BUFFER); - final int read2 = cin2.read(BUFFER); - - if (read1 != read2 || ck1.getValue() != ck2.getValue()) { - throw new NotEqualException("Bytes differ:\n" + pair.a + "\n" + pair.b); - } - - if (read1 == -1) break; - } - } - - } catch (final IOException e) { - // ignore - } - } - } - - - private void buildList(File f1, File f2) throws NotEqualException - { - if (f1.isDirectory() != f2.isDirectory()) throw new NotEqualException("isDirectory differs:\n" + f1 + "\n" + f2); - - if (f1.isFile() && f2.isFile()) { - if (f1.length() != f2.length()) throw new NotEqualException("Sizes differ:\n" + f1 + "\n" + f2); - } - - if (f1.isDirectory()) { - final File[] children1 = f1.listFiles(); - final File[] children2 = f2.listFiles(); - - Arrays.sort(children1, fileFirstSorter); - Arrays.sort(children2, fileFirstSorter); - - if (children1.length != children2.length) throw new NotEqualException("Child counts differ:\n" + f1 + "\n" + f2); - - for (int i = 0; i < children1.length; i++) { - final File ch1 = children1[i]; - final File ch2 = children2[i]; - - if (!ch1.getName().equals(ch2.getName())) throw new NotEqualException("Filenames differ:\n" + ch1 + "\n" + ch2); - - buildList(ch1, ch2); - } - - } else { - compared.add(new Tuple<>(f1, f2)); - } - } - - private class NotEqualException extends Exception { - - public NotEqualException(String msg) - { - super(msg); - } - - } - - private class Tuple { - - public T a; - public T b; - - - public Tuple(T a, T b) - { - this.a = a; - this.b = b; - } - } - -} diff --git a/src/mightypork/gamecore/util/files/FileUtils.java b/src/mightypork/gamecore/util/files/FileUtils.java deleted file mode 100644 index 95918a2..0000000 --- a/src/mightypork/gamecore/util/files/FileUtils.java +++ /dev/null @@ -1,499 +0,0 @@ -package mightypork.gamecore.util.files; - - -import java.io.*; -import java.util.ArrayList; -import java.util.List; - -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.strings.StringUtils; -import mightypork.gamecore.util.strings.filtering.StringFilter; - - -public class FileUtils { - - /** - * Copy directory recursively. - * - * @param source source file - * @param target target file - * @throws IOException on error - */ - public static void copyDirectory(File source, File target) throws IOException - { - copyDirectory(source, target, null, null); - } - - - /** - * Copy directory recursively - advanced variant. - * - * @param source source file - * @param target target file - * @param filter filter accepting only files and dirs to be copied - * @param filesCopied list into which all the target files will be added - * @throws IOException on error - */ - public static void copyDirectory(File source, File target, FileFilter filter, List filesCopied) throws IOException - { - if (!source.exists()) return; - - if (source.isDirectory()) { - if (!target.exists() && !target.mkdir()) { - throw new IOException("Could not open destination directory."); - } - - final String[] children = source.list(); - for (final String element : children) { - copyDirectory(new File(source, element), new File(target, element), filter, filesCopied); - } - - } else { - if (filter != null && !filter.accept(source)) { - return; - } - - if (filesCopied != null) filesCopied.add(target); - copyFile(source, target); - } - } - - - /** - * List directory recursively - * - * @param source source file - * @param filter filter accepting only files and dirs to be copied (or null) - * @param files list of the found files - * @throws IOException on error - */ - public static void listDirectoryRecursive(File source, StringFilter filter, List files) throws IOException - { - if (source.isDirectory()) { - final String[] children = source.list(); - for (final String element : children) { - listDirectoryRecursive(new File(source, element), filter, files); - } - - } else { - if (filter != null && !filter.isValid(source.getAbsolutePath())) { - return; - } - - files.add(source); - } - } - - - /** - * Copy file using streams. Make sure target directory exists! - * - * @param source source file - * @param target target file - * @throws IOException on error - */ - public static void copyFile(File source, File target) throws IOException - { - - try(InputStream in = new FileInputStream(source); - OutputStream out = new FileOutputStream(target)) { - - copyStream(in, out); - } - } - - - /** - * Copy bytes from input to output stream, leaving out stream open - * - * @param in input stream - * @param out output stream - * @throws IOException on error - */ - public static void copyStream(InputStream in, OutputStream out) throws IOException - { - if (in == null) { - throw new NullPointerException("Input stream is null"); - } - - if (out == null) { - throw new NullPointerException("Output stream is null"); - } - - final byte[] buf = new byte[2048]; - int len; - while ((len = in.read(buf)) > 0) { - out.write(buf, 0, len); - } - } - - - /** - * Improved delete - * - * @param path deleted path - * @param recursive recursive delete - * @return success - */ - public static boolean delete(File path, boolean recursive) - { - if (!path.exists()) { - return true; - } - - if (!recursive || !path.isDirectory()) return path.delete(); - - final String[] list = path.list(); - for (int i = 0; i < list.length; i++) { - if (!delete(new File(path, list[i]), true)) return false; - } - - return path.delete(); - } - - - /** - * Read entire file to a string. - * - * @param file file - * @return file contents - * @throws IOException - */ - public static String fileToString(File file) throws IOException - { - try(FileInputStream fin = new FileInputStream(file)) { - - return streamToString(fin); - } - } - - - /** - * Get files in a folder (create folder if needed) - * - * @param dir folder - * @return list of files - */ - public static List listDirectory(File dir) - { - return FileUtils.listDirectory(dir, null); - } - - - /** - * Get files in a folder (create folder if needed) - * - * @param dir folder - * @param filter file filter - * @return list of files - */ - public static List listDirectory(File dir, FileFilter filter) - { - dir.mkdir(); - - final List list = new ArrayList<>(); - - for (final File f : dir.listFiles(filter)) { - list.add(f); - } - - return list; - } - - - /** - * Remove extension. - * - * @param file file - * @return filename without extension - */ - public static String[] getFilenameParts(File file) - { - return getFilenameParts(file.getName()); - } - - - public static String getExtension(File file) - { - return getExtension(file.getName()); - } - - - public static String getExtension(String file) - { - return StringUtils.fromLastChar(file, '.'); - } - - - /** - * Remove extension. - * - * @param filename - * @return filename and extension - */ - public static String[] getFilenameParts(String filename) - { - String ext, name; - - try { - ext = StringUtils.fromLastDot(filename); - } catch (final StringIndexOutOfBoundsException e) { - ext = ""; - } - - try { - name = StringUtils.toLastDot(filename); - } catch (final StringIndexOutOfBoundsException e) { - name = ""; - Log.w("Error extracting extension from file " + filename); - } - - return new String[] { name, ext }; - } - - - /** - * Read entire input stream to a string, and close it. - * - * @param in input stream - * @return file contents - */ - public static String streamToString(InputStream in) - { - return streamToString(in, -1); - } - - - /** - * Read input stream to a string, and close it. - * - * @param in input stream - * @param lines max number of lines (-1 to disable limit) - * @return file contents - */ - public static String streamToString(InputStream in, int lines) - { - if (in == null) { - Log.e(new NullPointerException("Null stream to be converted to String.")); - return ""; // to avoid NPE's - } - - BufferedReader br = null; - final StringBuilder sb = new StringBuilder(); - - String line; - try { - int cnt = 0; - br = new BufferedReader(new InputStreamReader(in, "UTF-8")); - while ((line = br.readLine()) != null && (cnt < lines || lines <= 0)) { - sb.append(line + "\n"); - cnt++; - } - - if (cnt == lines && lines > 0) { - sb.append("--- end of preview ---\n"); - } - - } catch (final IOException e) { - Log.e(e); - } finally { - try { - if (br != null) br.close(); - } catch (final IOException e) { - // ignore - } - } - - return sb.toString(); - } - - - public static InputStream stringToStream(String text) - { - if (text == null) return null; - - try { - return new ByteArrayInputStream(text.getBytes("UTF-8")); - } catch (final UnsupportedEncodingException e) { - Log.e(e); - return null; - } - } - - - public static InputStream getResource(String path) - { - final InputStream in = FileUtils.class.getResourceAsStream(path); - - if (in != null) return in; - - try { - return new FileInputStream(new File(".", path)); - } catch (final FileNotFoundException e) { - // error - Log.w("Could not open resource stream: " + path); - return null; - } - - } - - - public static String getResourceAsString(String path) - { - return streamToString(FileUtils.class.getResourceAsStream(path)); - } - - - /** - * Save string to file - * - * @param file file - * @param text string - * @throws IOException on error - */ - public static void stringToFile(File file, String text) throws IOException - { - try(PrintStream out = new PrintStream(new FileOutputStream(file), false, "UTF-8")) { - - out.print(text); - - out.flush(); - - } - } - - - public static void deleteEmptyDirs(File base) throws IOException - { - for (final File f : listDirectory(base)) { - if (!f.isDirectory()) continue; - - deleteEmptyDirs(f); - - final List children = listDirectory(f); - if (children.size() == 0) { - if (!f.delete()) throw new IOException("Could not delete a directory: " + f); - continue; - } - } - - } - - - /** - * Replace special characters with place holders in a filename. - * - * @param filestring filename string - * @return escaped - */ - public static String escapeFileString(String filestring) - { - final StringBuilder sb = new StringBuilder(); - - for (final char c : filestring.toCharArray()) { - switch (c) { - case '%': - sb.append("%%"); - break; - - case '.': - sb.append("%d"); - break; - - default: - sb.append(c); - } - - } - - return sb.toString(); - } - - - /** - * Unescape filename string obtained by escapeFileString(). - * - * @param filestring escaped string - * @return clean string - */ - public static String unescapeFileString(String filestring) - { - filestring = filestring.replace("%d", "."); - filestring = filestring.replace("%%", "%"); - - return filestring; - } - - - /** - * Escape filename, keeping the same extension - * - * @param filename filename - * @return escaped - */ - public static String escapeFilename(String filename) - { - final String[] parts = getFilenameParts(filename); - - return escapeFileString(parts[0]) + "." + parts[1]; - } - - - /** - * Unescape filename, keeping the same extension - * - * @param filename escaped filename - * @return unesaped - */ - public static String unescapeFilename(String filename) - { - final String[] parts = getFilenameParts(filename); - - return unescapeFileString(parts[0]) + "." + parts[1]; - } - - - public static String getBasename(String name) - { - return StringUtils.toLastChar(StringUtils.fromLastChar(name, '/'), '.'); - } - - - public static String getFilename(String name) - { - return StringUtils.fromLastChar(name, '/'); - } - - - /** - * Copy resource to file - * - * @param resname resource name - * @param file out file - * @throws IOException - */ - public static void resourceToFile(String resname, File file) throws IOException - { - try(InputStream in = FileUtils.getResource(resname); - OutputStream out = new FileOutputStream(file)) { - - FileUtils.copyStream(in, out); - } - - } - - - /** - * Get resource as string, safely closing streams. - * - * @param resname resource name - * @return resource as string, empty string on failure - * @throws IOException on fail - */ - public static String resourceToString(String resname) throws IOException - { - try(InputStream in = FileUtils.getResource(resname)) { - return streamToString(in); - } - } -} diff --git a/src/mightypork/gamecore/util/files/InstanceLock.java b/src/mightypork/gamecore/util/files/InstanceLock.java deleted file mode 100644 index 00f0b63..0000000 --- a/src/mightypork/gamecore/util/files/InstanceLock.java +++ /dev/null @@ -1,54 +0,0 @@ -package mightypork.gamecore.util.files; - - -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; -import java.nio.channels.FileLock; - - -/** - * Instance lock (avoid running twice) - * - * @author Ondřej Hruška (MightyPork) - */ -public class InstanceLock { - - @SuppressWarnings("resource") - public static boolean onFile(final File lockFile) - { - try { - lockFile.getParentFile().mkdirs(); - final RandomAccessFile randomAccessFile = new RandomAccessFile(lockFile, "rw"); - - final FileLock fileLock = randomAccessFile.getChannel().tryLock(); - if (fileLock != null) { - - Runtime.getRuntime().addShutdownHook(new Thread() { - - @Override - public void run() - { - try { - fileLock.release(); - randomAccessFile.close(); - if (!lockFile.delete()) throw new IOException(); - } catch (final Throwable t) { - System.err.println("Unable to remove lock file."); - t.printStackTrace(); - } - } - }); - - return true; - } - - return false; - } catch (final IOException e) { - System.err.println("IO error while obtaining lock."); - e.printStackTrace(); - return false; - } - } - -} diff --git a/src/mightypork/gamecore/util/files/OsUtils.java b/src/mightypork/gamecore/util/files/OsUtils.java deleted file mode 100644 index e1598c3..0000000 --- a/src/mightypork/gamecore/util/files/OsUtils.java +++ /dev/null @@ -1,94 +0,0 @@ -package mightypork.gamecore.util.files; - - -import java.io.File; - - -public class OsUtils { - - public static enum EnumOS - { - linux, macos, solaris, unknown, windows; - - public boolean isLinux() - { - return this == linux || this == solaris; - } - - - public boolean isMac() - { - return this == macos; - } - - - public boolean isWindows() - { - return this == windows; - } - } - - private static EnumOS cachedOs; - - - public static File getHomeWorkDir(String dirname) - { - final String userhome = System.getProperty("user.home", "."); - File file; - - switch (getOs()) { - case linux: - case solaris: - file = new File(userhome, dirname + '/'); - break; - - case windows: - final String appdata = System.getenv("APPDATA"); - - if (appdata != null) { - file = new File(appdata, dirname + '/'); - } else { - file = new File(userhome, dirname + '/'); - } - - break; - - case macos: - file = new File(userhome, "Library/Application Support/" + dirname); - break; - - default: - file = new File(userhome, dirname + "/"); - break; - } - - return file; - } - - - public static EnumOS getOs() - { - if (cachedOs != null) return cachedOs; - - final String s = System.getProperty("os.name").toLowerCase(); - - if (s.contains("win")) { - cachedOs = EnumOS.windows; - - } else if (s.contains("mac")) { - cachedOs = EnumOS.macos; - - } else if (s.contains("linux") || s.contains("unix")) { - cachedOs = EnumOS.linux; - - } else if (s.contains("solaris") || s.contains("sunos")) { - cachedOs = EnumOS.solaris; - - } else { - cachedOs = EnumOS.unknown; - } - - return cachedOs; - } - -} diff --git a/src/mightypork/gamecore/util/files/config/Property.java b/src/mightypork/gamecore/util/files/config/Property.java deleted file mode 100644 index dfeb97d..0000000 --- a/src/mightypork/gamecore/util/files/config/Property.java +++ /dev/null @@ -1,71 +0,0 @@ -package mightypork.gamecore.util.files.config; - - -import mightypork.gamecore.util.objects.Convert; - - -public abstract class Property { - - private final String comment; - private final String key; - - private T value; - private final T defaultValue; - - - public Property(String key, T defaultValue, String comment) - { - super(); - this.comment = comment; - this.key = key; - this.value = defaultValue; - this.defaultValue = defaultValue; - } - - - public final void parse(String string) - { - setValue(decode(string, defaultValue)); - } - - - public abstract T decode(String string, T defval); - - - public String encode(T value) - { - return Convert.toString(value, Convert.toString(defaultValue)); - } - - - @Override - public final String toString() - { - return encode(value); - } - - - public T getValue() - { - return value; - } - - - @SuppressWarnings("unchecked") - public void setValue(Object value) - { - this.value = (T) value; - } - - - public String getComment() - { - return comment; - } - - - public String getKey() - { - return key; - } -} diff --git a/src/mightypork/gamecore/util/files/config/PropertyManager.java b/src/mightypork/gamecore/util/files/config/PropertyManager.java deleted file mode 100644 index f0a64fe..0000000 --- a/src/mightypork/gamecore/util/files/config/PropertyManager.java +++ /dev/null @@ -1,377 +0,0 @@ -package mightypork.gamecore.util.files.config; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Map.Entry; -import java.util.TreeMap; - -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.objects.Convert; - - -/** - * Property manager with advanced formatting and value checking. - * - * @author Ondřej Hruška (MightyPork) - */ -public class PropertyManager { - - private class BooleanProperty extends Property { - - public BooleanProperty(String key, Boolean defaultValue, String comment) - { - super(key, defaultValue, comment); - } - - - @Override - public Boolean decode(String string, Boolean defval) - { - return Convert.toBoolean(string, defval); - } - } - - private class IntegerProperty extends Property { - - public IntegerProperty(String key, Integer defaultValue, String comment) - { - super(key, defaultValue, comment); - } - - - @Override - public Integer decode(String string, Integer defval) - { - return Convert.toInteger(string, defval); - } - } - - private class DoubleProperty extends Property { - - public DoubleProperty(String key, Double defaultValue, String comment) - { - super(key, defaultValue, comment); - } - - - @Override - public Double decode(String string, Double defval) - { - return Convert.toDouble(string, defval); - } - } - - private class StringProperty extends Property { - - public StringProperty(String key, String defaultValue, String comment) - { - super(key, defaultValue, comment); - } - - - @Override - public String decode(String string, String defval) - { - return Convert.toString(string, defval); - } - } - - /** put newline before entry comments */ - private boolean cfgNewlineBeforeComments = true; - - /** Put newline between sections. */ - private boolean cfgSeparateSections = true; - - private final File file; - private String fileComment = ""; - - private final TreeMap> entries; - private final TreeMap renameTable; - private SortedProperties props = new SortedProperties(); - - - /** - * Create property manager from file path and an initial comment. - * - * @param file file with the props - * @param comment the initial comment. Use \n in it if you want. - */ - public PropertyManager(File file, String comment) - { - this.file = file; - this.entries = new TreeMap<>(); - this.renameTable = new TreeMap<>(); - this.fileComment = comment; - } - - - /** - * Load, fix and write to file. - */ - public void load() - { - if (!file.getParentFile().mkdirs()) { - if (!file.getParentFile().exists()) { - throw new RuntimeException("Cound not create config file."); - } - } - - try(FileInputStream fis = new FileInputStream(file)) { - props.load(fis); - } catch (final IOException e) { - props = new SortedProperties(); - } - - props.cfgBlankRowBetweenSections = cfgSeparateSections; - props.cfgBlankRowBeforeComment = cfgNewlineBeforeComments; - - // rename keys - for (final Entry entry : renameTable.entrySet()) { - - final String pr = props.getProperty(entry.getKey()); - - if (pr == null) continue; - - props.remove(entry.getKey()); - props.setProperty(entry.getValue(), pr); - } - - for (final Property entry : entries.values()) { - entry.parse(props.getProperty(entry.getKey())); - } - - renameTable.clear(); - } - - - public void save() - { - try { - final ArrayList keyList = new ArrayList<>(); - - // validate entries one by one, replace with default when needed - for (final Property entry : entries.values()) { - keyList.add(entry.getKey()); - - if (entry.getComment() != null) { - props.setKeyComment(entry.getKey(), entry.getComment()); - } - - props.setProperty(entry.getKey(), entry.toString()); - } - - // removed unused props - for (final String propname : props.keySet().toArray(new String[props.size()])) { - if (!keyList.contains(propname)) { - props.remove(propname); - } - } - - try(FileOutputStream fos = new FileOutputStream(file)) { - - props.store(fos, fileComment); - } - } catch (final IOException ioe) { - ioe.printStackTrace(); - } - } - - - /** - * @param newlineBeforeComments put newline before comments - */ - public void cfgNewlineBeforeComments(boolean newlineBeforeComments) - { - this.cfgNewlineBeforeComments = newlineBeforeComments; - } - - - /** - * @param separateSections do separate sections by newline - */ - public void cfgSeparateSections(boolean separateSections) - { - this.cfgSeparateSections = separateSections; - } - - - /** - * Get a property entry (rarely used) - * - * @param k key - * @return the entry - */ - public Property getProperty(String k) - { - try { - return entries.get(k); - } catch (final Exception e) { - Log.w(e); - return null; - } - } - - - /** - * Get boolean property - * - * @param k key - * @return the boolean found, or false - */ - public Boolean getBoolean(String k) - { - return Convert.toBoolean(getProperty(k).getValue()); - } - - - /** - * Get numeric property - * - * @param k key - * @return the int found, or null - */ - public Integer getInteger(String k) - { - return Convert.toInteger(getProperty(k).getValue()); - } - - - /** - * Get numeric property as double - * - * @param k key - * @return the double found, or null - */ - public Double getDouble(String k) - { - return Convert.toDouble(getProperty(k).getValue()); - } - - - /** - * Get string property - * - * @param k key - * @return the string found, or null - */ - public String getString(String k) - { - return Convert.toString(getProperty(k).getValue()); - } - - - /** - * Get arbitrary property. Make sure it's of the right type! - * - * @param k key - * @return the prioperty found - */ - @SuppressWarnings("unchecked") - public T getValue(String k) - { - try { - return ((Property) getProperty(k)).getValue(); - } catch (final ClassCastException e) { - return null; - } - } - - - /** - * Add a boolean property - * - * @param k key - * @param d default value - * @param comment the in-file comment - */ - public void putBoolean(String k, boolean d, String comment) - { - putProperty(new BooleanProperty(k, d, comment)); - } - - - /** - * Add a numeric property (double) - * - * @param k key - * @param d default value - * @param comment the in-file comment - */ - public void putDouble(String k, double d, String comment) - { - putProperty(new DoubleProperty(k, d, comment)); - } - - - /** - * Add a numeric property - * - * @param k key - * @param d default value - * @param comment the in-file comment - */ - public void putInteger(String k, int d, String comment) - { - putProperty(new IntegerProperty(k, d, comment)); - } - - - /** - * Add a string property - * - * @param k key - * @param d default value - * @param comment the in-file comment - */ - public void putString(String k, String d, String comment) - { - putProperty(new StringProperty(k, d, comment)); - } - - - /** - * Add a range property - * - * @param prop property to put - */ - public void putProperty(Property prop) - { - entries.put(prop.getKey(), prop); - } - - - /** - * Rename key before loading; value is preserved - * - * @param oldKey old key - * @param newKey new key - */ - public void renameKey(String oldKey, String newKey) - { - renameTable.put(oldKey, newKey); - return; - } - - - /** - * Set value saved to certain key. - * - * @param key key - * @param value the saved value - */ - public void setValue(String key, Object value) - { - getProperty(key).setValue(value); - } - - - public void setFileComment(String fileComment) - { - this.fileComment = fileComment; - } - -} diff --git a/src/mightypork/gamecore/util/files/config/SimpleConfig.java b/src/mightypork/gamecore/util/files/config/SimpleConfig.java deleted file mode 100644 index ea9da8f..0000000 --- a/src/mightypork/gamecore/util/files/config/SimpleConfig.java +++ /dev/null @@ -1,205 +0,0 @@ -package mightypork.gamecore.util.files.config; - - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.files.FileUtils; - - -/** - * Utility for parsing simple config files
- * # and // mark a comment
- * empty lines and lines without "=" are ignored
- * lines with "=" must have "key = value" format, or a warning is logged.
- * use "NULL" to create empty value. - * - * @author Ondřej Hruška (MightyPork) - */ -public class SimpleConfig { - - /** - * Load list from file - * - * @param file file - * @return map of keys and values - * @throws IOException - */ - public static List listFromFile(File file) throws IOException - { - final String fileText = FileUtils.fileToString(file); - - return listFromString(fileText); - } - - - /** - * Load map from file - * - * @param file file - * @return map of keys and values - * @throws IOException - */ - public static Map mapFromFile(File file) throws IOException - { - final String fileText = FileUtils.fileToString(file); - - return mapFromString(fileText); - } - - - /** - * Load list from string - * - * @param text text of the file - * @return map of keys and values - */ - public static List listFromString(String text) - { - final List list = new ArrayList<>(); - - final String[] groupsLines = text.split("\n"); - - for (String s : groupsLines) { - // ignore invalid lines - if (s.length() == 0) continue; - if (s.startsWith("#") || s.startsWith("//")) continue; - - // NULL value - if (s.equalsIgnoreCase("NULL")) s = null; - - if (s != null) s = s.replace("\\n", "\n"); - - // save extracted key-value pair - list.add(s); - } - - return list; - } - - - /** - * Load map from string - * - * @param text text of the file - * @return map of keys and values - */ - public static Map mapFromString(String text) - { - final LinkedHashMap pairs = new LinkedHashMap<>(); - - final String[] groupsLines = text.split("\n"); - - for (final String s : groupsLines) { - // ignore invalid lines - if (s.length() == 0) continue; - if (s.startsWith("#") || s.startsWith("//")) continue; - if (!s.contains("=")) continue; - - // split and trim - String[] parts = s.split("="); - for (int i = 0; i < parts.length; i++) { - parts[i] = parts[i].trim(); - } - - // check if both parts are valid - if (parts.length == 0) { - Log.w("Bad line in config file: " + s); - continue; - } - - if (parts.length == 1) { - parts = new String[] { parts[0], "" }; - } - - if (parts.length != 2) { - Log.w("Bad line in config file: " + s); - continue; - } - - // NULL value - if (parts[0].equalsIgnoreCase("NULL")) parts[0] = null; - if (parts[1].equalsIgnoreCase("NULL")) parts[1] = null; - - if (parts[0] != null) parts[0] = parts[0].replace("\\n", "\n"); - if (parts[1] != null) parts[1] = parts[1].replace("\\n", "\n"); - - // save extracted key-value pair - pairs.put(parts[0], parts[1]); - } - - return pairs; - } - - - /** - * Save map to file - * - * @param target - * @param data - * @param allowNulls allow nulls. - * @throws IOException - */ - public static void mapToFile(File target, Map data, boolean allowNulls) throws IOException - { - final List lines = new ArrayList<>(); - - for (final Entry e : data.entrySet()) { - String key = e.getKey(); - String value = e.getValue(); - - if (!allowNulls && (key == null || value == null || key.length() == 0 || value.length() == 0)) continue; - - if (key == null) key = "NULL"; - if (value == null) value = "NULL"; - - key = key.replace("\n", "\\n"); - value = value.replace("\n", "\\n"); - - lines.add(key + " = " + value); - } - - String text = ""; // # File written by SimpleConfig - - for (final String s : lines) { - if (text.length() > 0) text += "\n"; - - text += s; - } - - FileUtils.stringToFile(target, text); - - } - - - /** - * Save list to file - * - * @param target - * @param data - * @throws IOException - */ - public static void listToFile(File target, List data) throws IOException - { - String text = ""; // # File written by SimpleConfig - - for (String s : data) { - if (text.length() > 0) text += "\n"; - - if (s == null) s = "NULL"; - - s = s.replace("\n", "\\n"); - - text += s; - } - - FileUtils.stringToFile(target, text); - - } -} diff --git a/src/mightypork/gamecore/util/files/config/SortedProperties.java b/src/mightypork/gamecore/util/files/config/SortedProperties.java deleted file mode 100644 index f16989c..0000000 --- a/src/mightypork/gamecore/util/files/config/SortedProperties.java +++ /dev/null @@ -1,303 +0,0 @@ -package mightypork.gamecore.util.files.config; - - -import java.io.*; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Vector; - - -/** - * Properties stored in file, alphabetically sorted.
- * Uses UTF-8 encoding and each property can have it's own comment. - * - * @author Ondřej Hruška (MightyPork) - */ -public class SortedProperties extends java.util.Properties { - - /** Option: put empty line before each comment. */ - public boolean cfgBlankRowBeforeComment = true; - - /** - * Option: Separate sections by newline
- * Section = string before first dot in key. - */ - public boolean cfgBlankRowBetweenSections = true; - - /** Comments for individual keys */ - private final Hashtable keyComments = new Hashtable<>(); - - - private static void writeComments(BufferedWriter bw, String comm) throws IOException - { - final String comments = comm.replace("\n\n", "\n \n"); - - final int len = comments.length(); - int current = 0; - int last = 0; - final char[] uu = new char[6]; - uu[0] = '\\'; - uu[1] = 'u'; - while (current < len) { - final char c = comments.charAt(current); - if (c > '\u00ff' || c == '\n' || c == '\r') { - if (last != current) { - bw.write("# " + comments.substring(last, current)); - } - - if (c > '\u00ff') { - uu[2] = hexDigit(c, 12); - uu[3] = hexDigit(c, 8); - uu[4] = hexDigit(c, 4); - uu[5] = hexDigit(c, 0); - bw.write(new String(uu)); - } else { - bw.newLine(); - if (c == '\r' && current != len - 1 && comments.charAt(current + 1) == '\n') { - current++; - } - } - last = current + 1; - } - current++; - } - if (last != current) { - bw.write("# " + comments.substring(last, current)); - } - - bw.newLine(); - bw.newLine(); - bw.newLine(); - } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public synchronized Enumeration keys() - { - final Enumeration keysEnum = super.keys(); - final Vector keyList = new Vector(); - while (keysEnum.hasMoreElements()) { - keyList.add(keysEnum.nextElement()); - } - Collections.sort(keyList); //sort! - return keyList.elements(); - } - - - private static String saveConvert(String theString, boolean escapeSpace, boolean escapeUnicode) - { - final int len = theString.length(); - int bufLen = len * 2; - if (bufLen < 0) { - bufLen = Integer.MAX_VALUE; - } - final StringBuffer result = new StringBuffer(bufLen); - - for (int x = 0; x < len; x++) { - final char ch = theString.charAt(x); - - // Handle common case first, selecting largest block that - // avoids the specials below - if ((ch > 61) && (ch < 127)) { - if (ch == '\\') { - result.append('\\'); - result.append('\\'); - continue; - } - result.append(ch); - continue; - } - - switch (ch) { - case ' ': - if (x == 0 || escapeSpace) { - result.append('\\'); - } - result.append(' '); - break; - - case '\t': - result.append('\\'); - result.append('t'); - break; - - case '\n': - result.append('\\'); - result.append('n'); - break; - - case '\r': - result.append('\\'); - result.append('r'); - break; - - case '\f': - result.append('\\'); - result.append('f'); - break; - - case '=': // Fall through - case ':': // Fall through - case '#': // Fall through - case '!': - result.append('\\'); - result.append(ch); - break; - - default: - if (((ch < 0x0020) || (ch > 0x007e)) & escapeUnicode) { - result.append('\\'); - result.append('u'); - result.append(hexDigit(ch, 12)); - result.append(hexDigit(ch, 8)); - result.append(hexDigit(ch, 4)); - result.append(hexDigit(ch, 0)); - } else { - result.append(ch); - } - } - } - - return result.toString(); - } - - - /** - * Set additional comment to a key - * - * @param key key for comment - * @param comment the comment - */ - public void setKeyComment(String key, String comment) - { - keyComments.put(key, comment); - } - - - @SuppressWarnings("rawtypes") - @Override - public void store(OutputStream out, String comments) throws IOException - { - final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, "UTF-8")); - - final boolean escUnicode = false; - boolean firstEntry = true; - String lastSectionBeginning = ""; - - if (comments != null) { - writeComments(bw, comments); - } - - synchronized (this) { - for (final Enumeration e = keys(); e.hasMoreElements();) { - boolean wasNewLine = false; - - String key = (String) e.nextElement(); - String val = (String) get(key); - key = saveConvert(key, true, escUnicode); - val = saveConvert(val, false, escUnicode); - - if (cfgBlankRowBetweenSections && !lastSectionBeginning.equals(key.split("[.]")[0])) { - if (!firstEntry) { - bw.newLine(); - bw.newLine(); - } - - wasNewLine = true; - lastSectionBeginning = key.split("[.]")[0]; - } - - if (keyComments.containsKey(key)) { - String cm = keyComments.get(key); - cm = cm.replace("\r", "\n"); - cm = cm.replace("\r\n", "\n"); - cm = cm.replace("\n\n", "\n \n"); - - final String[] cmlines = cm.split("\n"); - - if (!wasNewLine && !firstEntry && cfgBlankRowBeforeComment) { - bw.newLine(); - } - - for (final String cmline : cmlines) { - bw.write("# " + cmline); - bw.newLine(); - } - } - - bw.write(key + " = " + val); - bw.newLine(); - - firstEntry = false; - } - } - bw.flush(); - } - - - private static String escapifyStr(String str) - { - final StringBuilder result = new StringBuilder(); - - final int len = str.length(); - for (int x = 0; x < len; x++) { - final char ch = str.charAt(x); - if (ch <= 0x007e) { - result.append(ch); - continue; - } - - result.append('\\'); - result.append('u'); - result.append(hexDigit(ch, 12)); - result.append(hexDigit(ch, 8)); - result.append(hexDigit(ch, 4)); - result.append(hexDigit(ch, 0)); - } - return result.toString(); - } - - - private static char hexDigit(char ch, int offset) - { - final int val = (ch >> offset) & 0xF; - if (val <= 9) { - return (char) ('0' + val); - } - - return (char) ('A' + val - 10); - } - - - @Override - public synchronized void load(InputStream is) throws IOException - { - load(is, "utf-8"); - } - - - public void load(InputStream is, String encoding) throws IOException - { - final StringBuilder sb = new StringBuilder(); - final InputStreamReader isr = new InputStreamReader(is, encoding); - while (true) { - final int temp = isr.read(); - if (temp < 0) { - break; - } - - final char c = (char) temp; - sb.append(c); - } - - final String read = sb.toString().replaceAll("(#|;|//|--)[^\n]*\n", "\n"); - - final String inputString = escapifyStr(read); - final byte[] bs = inputString.getBytes("ISO-8859-1"); - final ByteArrayInputStream bais = new ByteArrayInputStream(bs); - - super.load(bais); - } -} diff --git a/src/mightypork/gamecore/util/files/zip/ZipBuilder.java b/src/mightypork/gamecore/util/files/zip/ZipBuilder.java deleted file mode 100644 index b185de9..0000000 --- a/src/mightypork/gamecore/util/files/zip/ZipBuilder.java +++ /dev/null @@ -1,131 +0,0 @@ -package mightypork.gamecore.util.files.zip; - - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashSet; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.files.FileUtils; - - -/** - * Class for building a zip file - * - * @author Ondřej Hruška (MightyPork) - */ -public class ZipBuilder { - - private final ZipOutputStream out; - private final HashSet included = new HashSet<>(); - - - /** - * @param target target zip file - * @throws IOException if the file is directory or cannot be created - */ - public ZipBuilder(File target) throws IOException - { - - if (!target.getParentFile().mkdirs()) throw new IOException("Could not create output directory."); - - final FileOutputStream dest = new FileOutputStream(target); - out = new ZipOutputStream(new BufferedOutputStream(dest)); - } - - - /** - * Add stream to a path - * - * @param path path - * @param in stream - * @throws IOException - */ - public void addStream(String path, InputStream in) throws IOException - { - path = preparePath(path); - if (included.contains(path)) { - Log.f3("Zip already contains file " + path + ", skipping."); - return; // ignore - } - included.add(path); - - out.putNextEntry(new ZipEntry(path)); - - FileUtils.copyStream(in, out); - } - - - /** - * Add string as a file - * - * @param path path - * @param text text to write - * @throws IOException - */ - public void addString(String path, String text) throws IOException - { - path = preparePath(path); - if (included.contains(path)) return; // ignore - included.add(path); - - out.putNextEntry(new ZipEntry(path)); - - try(InputStream in = FileUtils.stringToStream(text)) { - FileUtils.copyStream(in, out); - } - } - - - /** - * Add resource obtained via FileUtils.getResource() - * - * @param path path - * @param resPath resource path - * @throws IOException - */ - public void addResource(String path, String resPath) throws IOException - { - path = preparePath(path); - if (included.contains(path)) return; // ignore - included.add(path); - - out.putNextEntry(new ZipEntry(path)); - - try(InputStream in = FileUtils.getResource(resPath)) { - FileUtils.copyStream(in, out); - } - } - - - /** - * Normalize path - * - * @param path original path - * @return normalized path - */ - private static String preparePath(String path) - { - path = path.replace("\\", "/"); - - if (path.charAt(0) == '/') path = path.substring(1); - - return path; - } - - - /** - * Close the zip stream - * - * @throws IOException - */ - public void close() throws IOException - { - out.close(); - } -} diff --git a/src/mightypork/gamecore/util/files/zip/ZipUtils.java b/src/mightypork/gamecore/util/files/zip/ZipUtils.java deleted file mode 100644 index 23afc0d..0000000 --- a/src/mightypork/gamecore/util/files/zip/ZipUtils.java +++ /dev/null @@ -1,182 +0,0 @@ -package mightypork.gamecore.util.files.zip; - - -import java.io.*; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.files.FileUtils; -import mightypork.gamecore.util.strings.filtering.StringFilter; - - -/** - * Utilities for manipulating zip files - * - * @author Ondřej Hruška (MightyPork) - */ -public class ZipUtils { - - private static final int BUFFER_SIZE = 2048; - - - /** - * Extract zip file to target directory - * - * @param file zip file - * @param outputDir target directory - * @param filter string filter (will be used to test entry names (paths)) - * @return list of entries extracted (paths) - * @throws IOException - */ - public static List extractZip(File file, File outputDir, StringFilter filter) throws IOException - { - try(ZipFile zip = new ZipFile(file)) { - return extractZip(zip, outputDir, filter); - } - } - - - /** - * Extract zip file to target directory - * - * @param zip open zip file - * @param outputDir target directory - * @param filter string filter (will be used to test entry names (paths)) - * @return list of entries extracted (paths) - * @throws IOException if the file)s) cannot be created - */ - public static List extractZip(ZipFile zip, File outputDir, StringFilter filter) throws IOException - { - final ArrayList files = new ArrayList<>(); - - if (!outputDir.mkdirs()) throw new IOException("Could not create output directory."); - - final Enumeration zipFileEntries = zip.entries(); - - // process each entry - while (zipFileEntries.hasMoreElements()) { - final ZipEntry entry = zipFileEntries.nextElement(); - - // parse filename and path - final String entryPath = entry.getName(); - final File destFile = new File(outputDir, entryPath); - final File destinationParent = destFile.getParentFile(); - - if (entry.isDirectory() || (filter != null && !filter.isValid(entryPath))) continue; - - // make sure directories exist - if (!destinationParent.mkdirs()) throw new IOException("Could not create directory."); - - if (!entry.isDirectory()) { - extractZipEntry(zip, entry, destFile); - files.add(entryPath); - } - } - - return files; - } - - - /** - * Read zip entries and add their paths to a list - * - * @param zipFile open zip file - * @return list of entry names - * @throws IOException on error - */ - public static List listZip(File zipFile) throws IOException - { - try(ZipFile zip = new ZipFile(zipFile)) { - return listZip(zip); - } - } - - - /** - * Read zip entries and add their paths to a list - * - * @param zip open zip file - * @return list of entry names - * @throws IOException on error - */ - public static List listZip(ZipFile zip) throws IOException - { - final ArrayList files = new ArrayList<>(); - - final Enumeration zipFileEntries = zip.entries(); - - // process each entry - while (zipFileEntries.hasMoreElements()) { - final ZipEntry entry = zipFileEntries.nextElement(); - - if (!entry.isDirectory()) { - files.add(entry.getName()); - } - } - - return files; - } - - - /** - * Extract one zip entry to target file - * - * @param zip open zip file - * @param entry entry from the zip file - * @param destFile destination file ((NOT directory!) - * @throws IOException on error - */ - public static void extractZipEntry(ZipFile zip, ZipEntry entry, File destFile) throws IOException - { - if (!destFile.getParentFile().mkdirs()) throw new IOException("Could not create output directory."); - - try(InputStream in = zip.getInputStream(entry); - BufferedInputStream is = new BufferedInputStream(in); - FileOutputStream fos = new FileOutputStream(destFile); - BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER_SIZE)) { - - FileUtils.copyStream(is, dest); - } - } - - - /** - * Load zip entry to String - * - * @param zip open zip file - * @param entry entry from the zip file - * @return loaded string - * @throws IOException on error - */ - public static String zipEntryToString(ZipFile zip, ZipEntry entry) throws IOException - { - BufferedInputStream is = null; - try { - is = new BufferedInputStream(zip.getInputStream(entry)); - final String s = FileUtils.streamToString(is); - return s; - } finally { - try { - if (is != null) is.close(); - } catch (final IOException e) { - // ignore - } - } - } - - - public static boolean entryExists(File selectedFile, String string) - { - try(ZipFile zf = new ZipFile(selectedFile)) { - return zf.getEntry(string) != null; - } catch (final IOException | RuntimeException e) { - Log.w("Error reading zip.", e); - return false; - } - - } -} diff --git a/src/mightypork/gamecore/util/math/Calc.java b/src/mightypork/gamecore/util/math/Calc.java deleted file mode 100644 index bac3d02..0000000 --- a/src/mightypork/gamecore/util/math/Calc.java +++ /dev/null @@ -1,744 +0,0 @@ -package mightypork.gamecore.util.math; - - -import java.nio.FloatBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import mightypork.dynmath.vect.Vect; - -import org.lwjgl.BufferUtils; - - -/** - * Math utils - * - * @author Ondřej Hruška (MightyPork) - */ -public class Calc { - - /** Square root of two */ - public static final double SQ2 = 1.41421356237; - - - /** - * Get distance from 2D line to 2D point [X,Y] - * - * @param lineDirVec line directional vector - * @param linePoint point of line - * @param point point coordinate - * @return distance - */ - public static double linePointDist(Vect lineDirVec, Vect linePoint, Vect point) - { - // line point L[lx,ly] - final double lx = linePoint.x(); - final double ly = linePoint.y(); - - // line equation ax+by+c=0 - final double a = -lineDirVec.y(); - final double b = lineDirVec.x(); - final double c = -a * lx - b * ly; - - // checked point P[x,y] - final double x = point.x(); - final double y = point.y(); - - // distance - return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b); - } - - private static class Angles { - - public static double delta(double alpha, double beta, double a360) - { - while (Math.abs(alpha - beta) > a360 / 2D) { - alpha = norm(alpha + a360 / 2D, a360); - beta = norm(beta + a360 / 2D, a360); - } - - return beta - alpha; - } - - - public static double norm(double angle, double a360) - { - while (angle < 0) - angle += a360; - while (angle > a360) - angle -= a360; - return angle; - } - } - - /** - * Calc subclass with buffer utils. - * - * @author Ondřej Hruška (MightyPork) - */ - public static class Buffers { - - /** - * Create java.nio.FloatBuffer of given floats, and flip it. - * - * @param obj floats or float array - * @return float buffer - */ - public static FloatBuffer mkFillBuff(float... obj) - { - return (FloatBuffer) BufferUtils.createFloatBuffer(obj.length).put(obj).flip(); - } - - - /** - * Fill java.nio.FloatBuffer with floats or float array - * - * @param buff - * @param obj - */ - public static void fill(FloatBuffer buff, float... obj) - { - buff.put(obj); - buff.flip(); - } - - - /** - * Create new java.nio.FloatBuffer of given length - * - * @param count elements - * @return the new java.nio.FloatBuffer - */ - public static FloatBuffer alloc(int count) - { - return BufferUtils.createFloatBuffer(count); - } - - } - - /** - * Angle calculations for degrees. - * - * @author Ondřej Hruška (MightyPork) - */ - public static class Deg { - - /** 180° in degrees */ - public static final double a180 = 180; - /** 270° in degrees */ - public static final double a270 = 270; - /** 360° in degrees */ - public static final double a360 = 360; - /** 45° in degrees */ - public static final double a45 = 45; - /** 90° in degrees */ - public static final double a90 = 90; - - - /** - * Subtract two angles alpha - beta - * - * @param alpha first angle - * @param beta second angle - * @return (alpha - beta) in degrees - */ - public static double delta(double alpha, double beta) - { - return Angles.delta(alpha, beta, a360); - } - - - /** - * Difference of two angles (absolute value of delta) - * - * @param alpha first angle - * @param beta second angle - * @return difference in radians - */ - public static double diff(double alpha, double beta) - { - return Math.abs(Angles.delta(alpha, beta, a360)); - } - - - /** - * Cosinus in degrees - * - * @param deg angle in degrees - * @return cosinus - */ - public static double cos(double deg) - { - return Math.cos(toRad(deg)); - } - - - /** - * Sinus in degrees - * - * @param deg angle in degrees - * @return sinus - */ - public static double sin(double deg) - { - return Math.sin(toRad(deg)); - } - - - /** - * Tangents in degrees - * - * @param deg angle in degrees - * @return tangents - */ - public static double tan(double deg) - { - return Math.tan(toRad(deg)); - } - - - /** - * Angle normalized to 0-360 range - * - * @param angle angle to normalize - * @return normalized angle - */ - public static double norm(double angle) - { - return Angles.norm(angle, a360); - } - - - /** - * Convert to radians - * - * @param deg degrees - * @return radians - */ - public static double toRad(double deg) - { - return Math.toRadians(deg); - } - - - /** - * Round angle to 0,45,90,135... - * - * @param deg angle in deg. to round - * @param increment rounding increment (45 - round to 0,45,90...) - * @return rounded - */ - public static int roundToIncrement(double deg, double increment) - { - final double half = increment / 2d; - deg += half; - deg = norm(deg); - final int times = (int) Math.floor(deg / increment); - double a = times * increment; - if (a == 360) a = 0; - return (int) Math.round(a); - } - - - /** - * Round angle to 0,45,90,135... - * - * @param deg angle in deg. to round - * @return rounded - */ - public static int round45(double deg) - { - return roundToIncrement(deg, 45); - } - - - /** - * Round angle to 0,90,180,270 - * - * @param deg angle in deg. to round - * @return rounded - */ - public static int round90(double deg) - { - return roundToIncrement(deg, 90); - } - - - /** - * Round angle to 0,15,30,45,60,75,90... - * - * @param deg angle in deg to round - * @return rounded - */ - public static int round15(double deg) - { - return roundToIncrement(deg, 15); - } - } - - /** - * Angle calculations for radians. - * - * @author Ondřej Hruška (MightyPork) - */ - public static class Rad { - - /** 180° in radians */ - public static final double a180 = Math.PI; - /** 270° in radians */ - public static final double a270 = Math.PI * 1.5D; - /** 360° in radians */ - public static final double a360 = Math.PI * 2D; - /** 45° in radians */ - public static final double a45 = Math.PI / 4D; - /** 90° in radians */ - public static final double a90 = Math.PI / 2D; - - - /** - * Subtract two angles alpha - beta - * - * @param alpha first angle - * @param beta second angle - * @return (alpha - beta) in radians - */ - public static double delta(double alpha, double beta) - { - return Angles.delta(alpha, beta, a360); - } - - - /** - * Difference of two angles (absolute value of delta) - * - * @param alpha first angle - * @param beta second angle - * @return difference in radians - */ - public static double diff(double alpha, double beta) - { - return Math.abs(Angles.delta(alpha, beta, a360)); - } - - - /** - * Cos - * - * @param rad angle in rads - * @return cos - */ - public static double cos(double rad) - { - return Math.cos(rad); - } - - - /** - * Sin - * - * @param rad angle in rads - * @return sin - */ - public static double sin(double rad) - { - return Math.sin(rad); - } - - - /** - * Tan - * - * @param rad angle in rads - * @return tan - */ - public static double tan(double rad) - { - return Math.tan(rad); - } - - - /** - * Angle normalized to 0-2*PI range - * - * @param angle angle to normalize - * @return normalized angle - */ - public static double norm(double angle) - { - return Angles.norm(angle, a360); - } - - - /** - * Convert to degrees - * - * @param rad radians - * @return degrees - */ - public static double toDeg(double rad) - { - return Math.toDegrees(rad); - } - } - - public static final Random rand = new Random(); - - - public static double sphereSurface(double radius) - { - return 4D * Math.PI * square(radius); - } - - - public static double sphereVolume(double radius) - { - return (4D / 3D) * Math.PI * cube(radius); - } - - - public static double sphereRadius(double volume) - { - return Math.cbrt((3D * volume) / (4 * Math.PI)); - } - - - public static double circleSurface(double radius) - { - return Math.PI * square(radius); - } - - - public static double circleRadius(double surface) - { - return Math.sqrt(surface / Math.PI); - } - - - /** - * Safe equals that works with nulls - * - * @param a - * @param b - * @return are equal - */ - public static boolean areEqual(Object a, Object b) - { - return a == null ? b == null : a.equals(b); - } - - - /** - * Clamp integer - * - * @param number - * @param min - * @param max - * @return result - */ - public static int clamp(int number, int min, int max) - { - return number < min ? min : number > max ? max : number; - } - - - /** - * Clamp double - * - * @param number - * @param min - * @param max - * @return result - */ - public static double clamp(double number, double min, double max) - { - return number < min ? min : number > max ? max : number; - } - - - /** - * Convert double to string, remove the mess at the end. - * - * @param d double - * @return string - */ - public static String toString(double d) - { - String s = Double.toString(d); - s = s.replace(',', '.'); - s = s.replaceAll("([0-9]+\\.[0-9]+)00+[0-9]+", "$1"); - s = s.replaceAll("0+$", ""); - s = s.replaceAll("\\.$", ""); - return s; - } - - - /** - * Convert float to string, remove the mess at the end. - * - * @param f float - * @return string - */ - public static String toString(float f) - { - String s = Float.toString(f); - s = s.replaceAll("([0-9]+\\.[0-9]+)00+[0-9]+", "$1"); - s = s.replaceAll("0+$", ""); - s = s.replaceAll("\\.$", ""); - return s; - } - - - public static boolean inRange(double number, double left, double right) - { - return number >= left && number <= right; - } - - - public static boolean inRange(int number, int low, int high) - { - return number >= low && number <= high; - } - - - /** - * Get number from A to B at delta time (A -> B) - * - * @param from - * @param to - * @param elapsed progress ratio 0..1 - * @param easing - * @return result - */ - public static double interpolate(double from, double to, double elapsed, Easing easing) - { - return from + (to - from) * easing.get(elapsed); - } - - - /** - * Get angle [degrees] from A to B at delta time (tween A to B) - * - * @param from - * @param to - * @param elapsed progress ratio 0..1 - * @param easing - * @return result - */ - public static double interpolateDeg(double from, double to, double elapsed, Easing easing) - { - return Deg.norm(from - Deg.delta(to, from) * easing.get(elapsed)); - } - - - /** - * Get angle [radians] from A to B at delta time (tween A to B) - * - * @param from - * @param to - * @param elapsed progress ratio 0..1 - * @param easing - * @return result - */ - public static double interpolateRad(double from, double to, double elapsed, Easing easing) - { - return Rad.norm(from - Rad.delta(to, from) * easing.get(elapsed)); - } - - - public static double max(double... numbers) - { - double highest = numbers[0]; - for (final double num : numbers) { - if (num > highest) highest = num; - } - return highest; - } - - - public static int max(int... numbers) - { - int highest = numbers[0]; - for (final int num : numbers) { - if (num > highest) highest = num; - } - return highest; - } - - - public static double min(double... numbers) - { - double lowest = numbers[0]; - for (final double num : numbers) { - if (num < lowest) lowest = num; - } - return lowest; - } - - - public static int min(int... numbers) - { - int lowest = numbers[0]; - for (final int num : numbers) { - if (num < lowest) lowest = num; - } - return lowest; - } - - - /** - * Split comma separated list of integers. - * - * @param list String containing the list. - * @return array of integers or null. - */ - public static List parseIntList(String list) - { - if (list == null) { - return null; - } - final String[] parts = list.split(","); - - final ArrayList intList = new ArrayList<>(); - - for (final String part : parts) { - try { - intList.add(Integer.parseInt(part)); - } catch (final NumberFormatException e) {} - } - - return intList; - - } - - - /** - * Pick random element from a given list. - * - * @param list list of choices - * @return picked element - */ - public static T pick(List list) - { - return pick(rand, list); - } - - - /** - * Pick random element from a given list. - * - * @param rand RNG - * @param list list of choices - * @return picked element - */ - public static T pick(Random rand, List list) - { - if (list.size() == 0) return null; - return list.get(rand.nextInt(list.size())); - } - - - public static double square(double a) - { - return a * a; - } - - - public static double cube(double a) - { - return a * a * a; - } - - - /** - * @param d number - * @return fractional part - */ - public static double frag(double d) - { - return d - Math.floor(d); - } - - - /** - * Make sure value is within array length. - * - * @param index tested index - * @param length array length - * @throws IndexOutOfBoundsException if the index is not in range. - */ - public static void assertValidIndex(int index, int length) - { - if (!inRange(index, 0, length - 1)) { - throw new IndexOutOfBoundsException(); - } - } - - - public static double dist(double x1, double y1, double x2, double y2) - { - return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); - } - - - public static int randInt(Random rand, int low, int high) - { - final int range = Math.abs(high - low) + 1; - return low + rand.nextInt(range); - } - - - public static int randInt(int low, int high) - { - return randInt(rand, low, high); - } - - - /** - * Get ordinal version of numbers (1 = 1st, 5 = 5th etc.) - * - * @param number number - * @return ordinal, string - */ - public static String ordinal(int number) - { - if (number % 100 < 4 || number % 100 > 13) { - if (number % 10 == 1) return number + "st"; - if (number % 10 == 2) return number + "nd"; - if (number % 10 == 3) return number + "rd"; - } - return number + "th"; - } - - - /** - * Format number with thousands separated by a dot. - * - * @param number number - * @return string 12.004.225 - */ - public static String formatInt(long number) - { - final String num = number + ""; - String out = ""; - final String dot = "."; - int cnt = 1; - for (int i = num.length() - 1; i >= 0; i--) { - out = num.charAt(i) + out; - if (cnt % 3 == 0 && i > 0) out = dot + out; - cnt++; - } - - return out; - } - - - public static int countBits(byte b) - { - int c = 0; - for (int i = 0; i < 8; i++) { - c += (b >> i) & 1; - } - return c; - } -} diff --git a/src/mightypork/gamecore/util/math/Easing.java b/src/mightypork/gamecore/util/math/Easing.java deleted file mode 100644 index dfcc16e..0000000 --- a/src/mightypork/gamecore/util/math/Easing.java +++ /dev/null @@ -1,319 +0,0 @@ -package mightypork.gamecore.util.math; - - -import mightypork.gamecore.util.annot.FactoryMethod; - - -/** - * EasingFunction function. - * - * @author Ondřej Hruška (MightyPork) - */ -public abstract class Easing { - - /** - * Get value at time t. - * - * @param t time parameter (t = 1..1) - * @return value at given t (0..1, can exceed if needed) - */ - public abstract double get(double t); - - - /** - * Reverse an easing - * - * @param original original easing - * @return reversed easing - */ - @FactoryMethod - public static Easing reverse(Easing original) - { - return new Reverse(original); - } - - - /** - * Combine two easings - * - * @param in initial easing - * @param out terminal easing - * @return product - */ - @FactoryMethod - public static Easing combine(Easing in, Easing out) - { - return new Composite(in, out); - } - - - /** - * Create "bilinear" easing - compose of straight and reverse. - * - * @param in initial easing - * @return product - */ - @FactoryMethod - public static Easing inOut(Easing in) - { - return combine(in, reverse(in)); - } - - /** - * Reverse EasingFunction - * - * @author Ondřej Hruška (MightyPork) - */ - private static class Reverse extends Easing { - - private final Easing ea; - - - /** - * @param in Easing to reverse - */ - public Reverse(Easing in) - { - this.ea = in; - } - - - @Override - public double get(double t) - { - return 1 - ea.get(1 - t); - } - } - - /** - * Composite EasingFunction (0-0.5 EasingFunction A, 0.5-1 EasingFunction B) - * - * @author Ondřej Hruška (MightyPork) - */ - private static class Composite extends Easing { - - private final Easing in; - private final Easing out; - - - /** - * Create a composite EasingFunction - * - * @param in initial EasingFunction - * @param out terminal EasingFunction - */ - public Composite(Easing in, Easing out) - { - this.in = in; - this.out = out; - } - - - @Override - public double get(double t) - { - if (t < 0.5) return in.get(2 * t) * 0.5; - return 0.5 + out.get(2 * t - 1) * 0.5; - } - } - - /** No easing; At t=0.5 goes high. */ - public static final Easing NONE = new Easing() { - - @Override - public double get(double t) - { - return (t < 0.5 ? 0 : 1); - } - }; - - /** Linear (y=t) easing */ - public static final Easing LINEAR = new Easing() { - - @Override - public double get(double t) - { - return t; - } - }; - - /** Quadratic (y=t^2) easing in */ - public static final Easing QUADRATIC_IN = new Easing() { - - @Override - public double get(double t) - { - return t * t; - } - }; - - /** Quadratic (y=t^2) easing out */ - public static final Easing QUADRATIC_OUT = reverse(QUADRATIC_IN); - - /** Quadratic (y=t^2) easing both */ - public static final Easing QUADRATIC_BOTH = inOut(QUADRATIC_IN); - - /** Cubic (y=t^3) easing in */ - public static final Easing CUBIC_IN = new Easing() { - - @Override - public double get(double t) - { - return t * t * t; - } - }; - - /** Cubic (y=t^3) easing out */ - public static final Easing CUBIC_OUT = reverse(CUBIC_IN); - - /** Cubic (y=t^3) easing both */ - public static final Easing CUBIC_BOTH = inOut(CUBIC_IN); - - /** Quartic (y=t^4) easing in */ - public static final Easing QUARTIC_IN = new Easing() { - - @Override - public double get(double t) - { - return t * t * t * t; - } - }; - - /** Quartic (y=t^4) easing out */ - public static final Easing QUARTIC_OUT = reverse(QUADRATIC_IN); - - /** Quartic (y=t^4) easing both */ - public static final Easing QUARTIC_BOTH = inOut(QUADRATIC_IN); - - /** Quintic (y=t^5) easing in */ - public static final Easing QUINTIC_IN = new Easing() { - - @Override - public double get(double t) - { - return t * t * t * t * t; - } - }; - - /** Quintic (y=t^5) easing out */ - public static final Easing QUINTIC_OUT = reverse(QUINTIC_IN); - - /** Quintic (y=t^5) easing both */ - public static final Easing QUINTIC_BOTH = inOut(QUINTIC_IN); - - /** Sine easing in */ - public static final Easing SINE_IN = new Easing() { - - @Override - public double get(double t) - { - return 1 - Math.cos(t * (Math.PI / 2)); - } - }; - - /** Sine easing out */ - public static final Easing SINE_OUT = reverse(SINE_IN); - - /** Sine easing both */ - public static final Easing SINE_BOTH = inOut(SINE_IN); - - /** Exponential easing in */ - public static final Easing EXPO_IN = new Easing() { - - @Override - public double get(double t) - { - return Math.pow(2, 10 * (t - 1)); - } - }; - - /** Exponential easing out */ - public static final Easing EXPO_OUT = reverse(EXPO_IN); - - /** Exponential easing both */ - public static final Easing EXPO_BOTH = inOut(EXPO_IN); - - /** Circular easing in */ - public static final Easing CIRC_IN = new Easing() { - - @Override - public double get(double t) - { - return 1 - Math.sqrt(1 - t * t); - } - }; - - /** Circular easing out */ - public static final Easing CIRC_OUT = reverse(CIRC_IN); - - /** Circular easing both */ - public static final Easing CIRC_BOTH = inOut(CIRC_IN); - - /** Bounce easing in */ - public static final Easing BOUNCE_OUT = new Easing() { - - @Override - public double get(double t) - { - if (t < (1 / 2.75f)) { - return (7.5625f * t * t); - - } else if (t < (2 / 2.75f)) { - t -= (1.5f / 2.75f); - return (7.5625f * t * t + 0.75f); - - } else if (t < (2.5 / 2.75)) { - t -= (2.25f / 2.75f); - return (7.5625f * t * t + 0.9375f); - - } else { - t -= (2.625f / 2.75f); - return (7.5625f * t * t + 0.984375f); - } - } - }; - - /** Bounce easing out */ - public static final Easing BOUNCE_IN = reverse(BOUNCE_OUT); - - /** Bounce easing both */ - public static final Easing BOUNCE_BOTH = inOut(BOUNCE_IN); - - /** Back easing in */ - public static final Easing BACK_IN = new Easing() { - - @Override - public double get(double t) - { - final float s = 1.70158f; - return t * t * ((s + 1) * t - s); - } - }; - - /** Back easing out */ - public static final Easing BACK_OUT = reverse(BACK_IN); - - /** Back easing both */ - public static final Easing BACK_BOTH = inOut(BACK_IN); - - /** Elastic easing in */ - public static final Easing ELASTIC_IN = new Easing() { - - @Override - public double get(double t) - { - if (t == 0) return 0; - if (t == 1) return 1; - - final double p = .3f; - final double s = p / 4; - return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - } - }; - - /** Elastic easing out */ - public static final Easing ELASTIC_OUT = reverse(ELASTIC_IN); - - /** Elastic easing both */ - public static final Easing ELASTIC_BOTH = inOut(ELASTIC_IN); -} diff --git a/src/mightypork/gamecore/util/math/Polar.java b/src/mightypork/gamecore/util/math/Polar.java deleted file mode 100644 index 7663d1d..0000000 --- a/src/mightypork/gamecore/util/math/Polar.java +++ /dev/null @@ -1,192 +0,0 @@ -package mightypork.gamecore.util.math; - - -import mightypork.dynmath.vect.Vect; - - -/** - * Polar coordinate - * - * @author Ondřej Hruška (MightyPork) - */ -public class Polar { - - /** angle in radians */ - private double angle = 0; - - /** distance in units */ - private double radius = 0; - - private Vect coord = null; - - - /** - * Create a polar - * - * @param angle angle in RAD - * @param distance distance from origin - */ - public Polar(double angle, double distance) - { - this(angle, false, distance); - } - - - /** - * Create a polar - * - * @param angle angle - * @param deg angle is in DEG - * @param distance radius - */ - public Polar(double angle, boolean deg, double distance) - { - this.radius = distance; - this.angle = deg ? Math.toRadians(angle) : angle; - } - - - /** - * @return angle in RAD - */ - public double getAngle() - { - return angle; - } - - - /** - * @return angle in DEG - */ - public double getAngleDeg() - { - return Math.toDegrees(angle); - } - - - /** - * @param angle angle in RAD - */ - public void setAngle(double angle) - { - this.angle = angle; - } - - - /** - * @param angle angle in DEG - */ - public void setAngleDeg(double angle) - { - this.angle = Math.toRadians(angle); - } - - - /** - * @return radius - */ - public double getRadius() - { - return radius; - } - - - /** - * @param r radius - */ - public void setRadius(double r) - { - this.radius = r; - } - - - /** - * Make polar from coord - * - * @param coord coord - * @return polar - */ - public static Polar fromCoord(Vect coord) - { - return Polar.fromCoord(coord.x(), coord.y()); - - } - - - /** - * Make polar from coords - * - * @param x x coord - * @param y y coord - * @return polar - */ - public static Polar fromCoord(double x, double y) - { - final double a = Math.atan2(y, x); - final double r = Math.sqrt(x * x + y * y); - - return new Polar(a, r); - } - - - /** - * Get coord from polar - * - * @return coord - */ - public Vect toCoord() - { - // lazy init - if (coord == null) coord = new Vect() { - - @Override - public double x() - { - return radius * Math.cos(angle); - } - - - @Override - public double y() - { - return radius * Math.sin(angle); - } - }; - - return coord; - } - - - @Override - public String toString() - { - return "Polar(" + angle + "rad, " + radius + ")"; - } - - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - long temp; - temp = Double.doubleToLongBits(angle); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(radius); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - - @Override - public boolean equals(Object obj) - { - if (this == obj) return true; - if (obj == null) return false; - if (!(obj instanceof Polar)) return false; - final Polar other = (Polar) obj; - if (Double.doubleToLongBits(angle) != Double.doubleToLongBits(other.angle)) return false; - if (Double.doubleToLongBits(radius) != Double.doubleToLongBits(other.radius)) return false; - return true; - } -} diff --git a/src/mightypork/gamecore/util/math/Range.java b/src/mightypork/gamecore/util/math/Range.java deleted file mode 100644 index e3b5267..0000000 --- a/src/mightypork/gamecore/util/math/Range.java +++ /dev/null @@ -1,206 +0,0 @@ -package mightypork.gamecore.util.math; - - -import java.util.Random; - - -/** - * Numeric range, able to generate random numbers and give min/max values. - * - * @author Ondřej Hruška (MightyPork) - */ -public class Range { - - public static Range make(double low, double high) - { - return new Range(low, high); - } - - private double min = 0; - private double max = 1; - - - /** - * Implicit range constructor 0-1 - */ - public Range() - { - } - - - /** - * Create new range - * - * @param min min number - * @param max max number - */ - public Range(double min, double max) - { - this.min = min; - this.max = max; - norm(); - } - - - /** - * Create new range - * - * @param minmax min = max number - */ - public Range(double minmax) - { - this.min = minmax; - this.max = minmax; - } - - - /** - * Make sure min is <= max - */ - private void norm() - { - if (min > max) { - final double t = min; - min = max; - max = t; - } - } - - - /** - * Get random integer from range - * - * @return random int - */ - public int randInt() - { - return randInt(Calc.rand); - } - - - /** - * Get random double from this range - * - * @return random double - */ - public double randDouble() - { - return randDouble(Calc.rand); - } - - - /** - * Get random integer from range - * - * @param rand RNG - * @return random int - */ - public int randInt(Random rand) - { - return Calc.randInt(rand, (int) Math.round(min), (int) Math.round(min)); - } - - - /** - * Get random double from this range - * - * @param rand RNG - * @return random double - */ - public double randDouble(Random rand) - { - return min + rand.nextDouble() * (max - min); - } - - - /** - * Get min - * - * @return min number - */ - public double getMin() - { - return min; - } - - - /** - * Get max - * - * @return max number - */ - public double getMax() - { - return max; - } - - - /** - * Set min - * - * @param min min value - */ - public void setMin(double min) - { - this.min = min; - norm(); - } - - - /** - * Set max - * - * @param max max value - */ - public void setMax(double max) - { - this.max = max; - norm(); - } - - - @Override - public String toString() - { - return String.format("{%.1f|%.1f}", min, max); - } - - - /** - * Get identical copy - * - * @return copy - */ - public Range copy() - { - return new Range(min, max); - } - - - /** - * Set to value of other range - * - * @param other copied range - */ - public void setTo(Range other) - { - if (other == null) return; - min = other.min; - max = other.max; - norm(); - } - - - /** - * Set to min-max values - * - * @param min min value - * @param max max value - */ - public void setTo(double min, double max) - { - this.min = min; - this.max = max; - norm(); - } -} diff --git a/src/mightypork/gamecore/util/math/algo/Coord.java b/src/mightypork/gamecore/util/math/algo/Coord.java deleted file mode 100644 index 59a65c0..0000000 --- a/src/mightypork/gamecore/util/math/algo/Coord.java +++ /dev/null @@ -1,203 +0,0 @@ -package mightypork.gamecore.util.math.algo; - - -import java.io.IOException; - -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.util.annot.FactoryMethod; -import mightypork.gamecore.util.math.Calc; -import mightypork.ion.IonBundle; -import mightypork.ion.IonInput; -import mightypork.ion.IonObjBinary; -import mightypork.ion.IonObjBundled; -import mightypork.ion.IonOutput; - - -/** - * Very simple integer coordinate - * - * @author Ondřej Hruška (MightyPork) - */ -public class Coord implements IonObjBinary, IonObjBundled { - - public static final int ION_MARK = 255; - - public int x; - public int y; - - - @FactoryMethod - public static Coord make(int x, int y) - { - return new Coord(x, y); - } - - - @FactoryMethod - public static Coord make(Coord other) - { - return new Coord(other); - } - - - @FactoryMethod - public static Coord zero() - { - return make(0, 0); - } - - - public Coord() - { - // for ion - } - - - public Coord(int x, int y) - { - super(); - this.x = x; - this.y = y; - } - - - public Coord(Coord other) - { - this.x = other.x; - this.y = other.y; - } - - - public Coord add(int addX, int addY) - { - return new Coord(x + addX, y + addY); - } - - - /** - * Add other coord in a copy - * - * @param added - * @return changed copy - */ - public Coord add(Coord added) - { - return add(added.x, added.y); - } - - - public Coord add(Move added) - { - return add(added.x(), added.y()); - } - - - public Coord copy() - { - return make(this); - } - - - public void setTo(int x, int y) - { - this.x = x; - this.y = y; - } - - - public void setTo(Coord pos) - { - setTo(pos.x, pos.y); - } - - - /** - * Check if coord is in a range (inclusive) - */ - public boolean isInRange(int x0, int y0, int x1, int y1) - { - return !(x < x0 || x > x1 || y < y0 || y > y1); - } - - - public double dist(Coord coord) - { - return Calc.dist(x, y, coord.x, coord.y); - } - - - public VectConst toVect() - { - return Vect.make(x, y); - } - - - @Override - public String toString() - { - return "Coord(" + x + "," + y + ")"; - } - - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result + x; - result = prime * result + y; - return result; - } - - - @Override - public boolean equals(Object obj) - { - if (this == obj) return true; - if (obj == null) return false; - if (!(obj instanceof Coord)) return false; - final Coord other = (Coord) obj; - if (x != other.x) return false; - if (y != other.y) return false; - return true; - } - - - @Override - public void load(IonInput in) throws IOException - { - x = in.readInt(); - y = in.readInt(); - } - - - @Override - public void save(IonOutput out) throws IOException - { - out.writeInt(x); - out.writeInt(y); - } - - - public static Coord fromVect(Vect vect) - { - return make((int) Math.floor(vect.x()), (int) Math.floor(vect.y())); - } - - - @Override - public void load(IonBundle in) - { - x = in.get("x", x); - y = in.get("y", y); - } - - - @Override - public void save(IonBundle out) - { - out.put("x", x); - out.put("y", y); - } -} diff --git a/src/mightypork/gamecore/util/math/algo/Move.java b/src/mightypork/gamecore/util/math/algo/Move.java deleted file mode 100644 index 9ff6b77..0000000 --- a/src/mightypork/gamecore/util/math/algo/Move.java +++ /dev/null @@ -1,98 +0,0 @@ -package mightypork.gamecore.util.math.algo; - - -import java.io.IOException; - -import mightypork.ion.IonInput; -import mightypork.ion.IonObjBinary; -import mightypork.ion.IonOutput; - - -/** - * Path step.
- * Must be binary in order to be saveable in lists. - * - * @author Ondřej Hruška (MightyPork) - */ -public class Move implements IonObjBinary { - - public static final int ION_MARK = 254; - - public static final Move NORTH = new Move(0, -1); - public static final Move SOUTH = new Move(0, 1); - public static final Move EAST = new Move(1, 0); - public static final Move WEST = new Move(-1, 0); - public static final Move NONE = new Move(0, 0); - - - public static Move make(int x, int y) - { - x = x < 0 ? -1 : x > 0 ? 1 : 0; - y = y < 0 ? -1 : y > 0 ? 1 : 0; - - if (y == -1 && x == 0) return NORTH; - if (y == 1 && x == 0) return SOUTH; - if (x == -1 && y == 0) return WEST; - if (x == 1 && y == 0) return EAST; - if (x == 0 && y == 0) return NONE; - - return new Move(x, y); - } - - private byte x; - private byte y; - - - public Move() - { - // for ion - } - - - public Move(int x, int y) - { - this.x = (byte) (x < 0 ? -1 : x > 0 ? 1 : 0); - this.y = (byte) (y < 0 ? -1 : y > 0 ? 1 : 0); - } - - - public int x() - { - return x; - } - - - public int y() - { - return y; - } - - - public Coord toCoord() - { - return Coord.make(x, y); - } - - - @Override - public String toString() - { - return "(" + x + ";" + y + ")"; - } - - - @Override - public void load(IonInput in) throws IOException - { - x = in.readByte(); - y = in.readByte(); - } - - - @Override - public void save(IonOutput out) throws IOException - { - out.writeByte(x); - out.writeByte(y); - } -} diff --git a/src/mightypork/gamecore/util/math/algo/Moves.java b/src/mightypork/gamecore/util/math/algo/Moves.java deleted file mode 100644 index 141030a..0000000 --- a/src/mightypork/gamecore/util/math/algo/Moves.java +++ /dev/null @@ -1,95 +0,0 @@ -package mightypork.gamecore.util.math.algo; - - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import mightypork.gamecore.util.math.Calc; - - -/** - * Move lists, bit masks and other utilities - * - * @author Ondřej Hruška (MightyPork) - */ -public class Moves { - - public static final byte BIT_NW = (byte) 0b10000000; - public static final byte BIT_N = (byte) 0b01000000; - public static final byte BIT_NE = (byte) 0b00100000; - public static final byte BIT_E = (byte) 0b00010000; - public static final byte BIT_SE = (byte) 0b00001000; - public static final byte BIT_S = (byte) 0b00000100; - public static final byte BIT_SW = (byte) 0b00000010; - public static final byte BIT_W = (byte) 0b00000001; - - public static final byte BITS_CARDINAL = BIT_N | BIT_S | BIT_E | BIT_W; - public static final byte BITS_DIAGONAL = BIT_NE | BIT_NW | BIT_SE | BIT_SW; - - public static final byte BITS_NW_CORNER = BIT_W | BIT_NW | BIT_N; - public static final byte BITS_NE_CORNER = BIT_E | BIT_NE | BIT_N; - public static final byte BITS_SW_CORNER = BIT_W | BIT_SW | BIT_S; - public static final byte BITS_SE_CORNER = BIT_E | BIT_SE | BIT_S; - - public static final Move NW = Move.make(-1, -1); - public static final Move N = Move.make(0, -1); - public static final Move NE = Move.make(1, -1); - public static final Move E = Move.make(1, 0); - public static final Move SE = Move.make(1, 1); - public static final Move S = Move.make(0, 1); - public static final Move SW = Move.make(-1, 1); - public static final Move W = Move.make(-1, 0); - - //@formatter:off - /** All sides, in the order of bits. */ - public final static List ALL_SIDES = Collections.unmodifiableList(Arrays.asList( - NW, - N, - NE, - E, - SE, - S, - SW, - W - )); - - public final static List CARDINAL_SIDES = Collections.unmodifiableList(Arrays.asList( - N, - E, - S, - W - )); - - //@formatter:on - - /** - * Get element from all sides - * - * @param i side index - * @return the side coord - */ - public static Move getSide(int i) - { - return ALL_SIDES.get(i); - } - - - public static byte getBit(int i) - { - return (byte) (1 << (7 - i)); - } - - - public static Move randomCardinal() - { - return Calc.pick(CARDINAL_SIDES); - } - - - public static Move randomCardinal(Random rand) - { - return Calc.pick(rand, CARDINAL_SIDES); - } -} diff --git a/src/mightypork/gamecore/util/math/algo/floodfill/FloodFill.java b/src/mightypork/gamecore/util/math/algo/floodfill/FloodFill.java deleted file mode 100644 index e6a84fc..0000000 --- a/src/mightypork/gamecore/util/math/algo/floodfill/FloodFill.java +++ /dev/null @@ -1,84 +0,0 @@ -package mightypork.gamecore.util.math.algo.floodfill; - - -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; - -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; - - -public abstract class FloodFill { - - public abstract boolean canEnter(Coord pos); - - - public abstract boolean canSpreadFrom(Coord pos); - - - public abstract List getSpreadSides(); - - - /** - * Get the max distance filled form start point. Use -1 for unlimited range. - * - * @return max distance - */ - public abstract double getMaxDistance(); - - - /** - * @return true if start should be spread no matter what - */ - public abstract boolean forceSpreadStart(); - - - /** - * Fill an area - * - * @param start start point - * @param foundNodes collection to put filled coords in - * @return true if fill was successful; false if max range was reached. - */ - public final boolean fill(Coord start, Collection foundNodes) - { - final Queue activeNodes = new LinkedList<>(); - - final double maxDist = getMaxDistance(); - - activeNodes.add(start); - - boolean forceSpreadNext = forceSpreadStart(); - - boolean limitReached = false; - - while (!activeNodes.isEmpty()) { - final Coord current = activeNodes.poll(); - foundNodes.add(current); - - if (!canSpreadFrom(current) && !forceSpreadNext) continue; - - forceSpreadNext = false; - - for (final Move spr : getSpreadSides()) { - final Coord next = current.add(spr); - if (activeNodes.contains(next) || foundNodes.contains(next)) continue; - - if (next.dist(start) > maxDist) { - limitReached = true; - continue; - } - - if (canEnter(next)) { - activeNodes.add(next); - } else { - foundNodes.add(next); - } - } - } - - return !limitReached; - } -} diff --git a/src/mightypork/gamecore/util/math/algo/pathfinding/Heuristic.java b/src/mightypork/gamecore/util/math/algo/pathfinding/Heuristic.java deleted file mode 100644 index 2b79d9a..0000000 --- a/src/mightypork/gamecore/util/math/algo/pathfinding/Heuristic.java +++ /dev/null @@ -1,17 +0,0 @@ -package mightypork.gamecore.util.math.algo.pathfinding; - - -import mightypork.gamecore.util.math.algo.Coord; - - -public abstract class Heuristic { - - /** - * Get tile cost (estimate of how many tiles remain to the target) - * - * @param pos current pos - * @param target target pos - * @return estimated number of tiles - */ - public abstract double getCost(Coord pos, Coord target); -} diff --git a/src/mightypork/gamecore/util/math/algo/pathfinding/PathFinder.java b/src/mightypork/gamecore/util/math/algo/pathfinding/PathFinder.java deleted file mode 100644 index 5b0f16a..0000000 --- a/src/mightypork/gamecore/util/math/algo/pathfinding/PathFinder.java +++ /dev/null @@ -1,250 +0,0 @@ -package mightypork.gamecore.util.math.algo.pathfinding; - - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; - -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.algo.pathfinding.heuristics.DiagonalHeuristic; -import mightypork.gamecore.util.math.algo.pathfinding.heuristics.ManhattanHeuristic; - - -/** - * A* pathfinder - * - * @author Ondřej Hruška (MightyPork) - */ -public abstract class PathFinder { - - private static final FComparator F_COMPARATOR = new FComparator(); - - public static final Heuristic CORNER_HEURISTIC = new ManhattanHeuristic(); - public static final Heuristic DIAGONAL_HEURISTIC = new DiagonalHeuristic(); - - private boolean ignoreStart; - private boolean ignoreEnd; - - - public List findPathRelative(Coord start, Coord end) - { - return findPathRelative(start, end, ignoreStart, ignoreEnd); - } - - - public List findPathRelative(Coord start, Coord end, boolean ignoreStart, boolean ignoreEnd) - { - final List path = findPath(start, end, ignoreStart, ignoreEnd); - - if (path == null) return null; - - final List out = new ArrayList<>(); - - final Coord current = start.copy(); - for (final Coord c : path) { - if (c.equals(current)) continue; - out.add(Move.make(c.x - current.x, c.y - current.y)); - current.x = c.x; - current.y = c.y; - } - - return out; - } - - - public List findPath(Coord start, Coord end) - { - return findPath(start, end, ignoreStart, ignoreEnd); - } - - - public List findPath(Coord start, Coord end, boolean ignoreStart, boolean ignoreEnd) - { - final LinkedList open = new LinkedList<>(); - final LinkedList closed = new LinkedList<>(); - - final Heuristic heuristic = getHeuristic(); - - // add first node - { - final Node n = new Node(start); - n.h_cost = (int) (heuristic.getCost(start, end) * getMinCost()); - n.g_cost = 0; - open.add(n); - } - - Node current = null; - - while (true) { - current = open.poll(); - - if (current == null) { - break; - } - - closed.add(current); - - if (current.pos.equals(end)) { - break; - } - - for (final Move go : getWalkSides()) { - - final Coord c = current.pos.add(go); - if (!isAccessible(c) && !(c.equals(end) && ignoreEnd) && !(c.equals(start) && ignoreStart)) continue; - final Node a = new Node(c); - a.g_cost = current.g_cost + getCost(c, a.pos); - a.h_cost = (int) (heuristic.getCost(a.pos, end) * getMinCost()); - a.parent = current; - - - if (!closed.contains(a)) { - - if (open.contains(a)) { - - boolean needSort = false; - - // find where it is - for (final Node n : open) { - if (n.pos.equals(a.pos)) { // found it - if (n.g_cost > a.g_cost) { - n.parent = current; - n.g_cost = a.g_cost; - needSort = true; - } - break; - } - } - - if (needSort) Collections.sort(open, F_COMPARATOR); - - } else { - open.add(a); - } - } - } - - } - - if (current == null) { - return null; // no path found - } - - final LinkedList path = new LinkedList<>(); - - // extract path elements - while (current != null) { - path.addFirst(current.pos); - current = current.parent; - } - - return path; - } - - private static class Node { - - Coord pos; - int g_cost; // to get there - int h_cost; // to target - Node parent; - - - public Node(Coord pos) - { - this.pos = pos; - } - - - int fCost() - { - return g_cost + h_cost; - } - - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result + ((pos == null) ? 0 : pos.hashCode()); - return result; - } - - - @Override - public boolean equals(Object obj) - { - if (this == obj) return true; - if (obj == null) return false; - if (!(obj instanceof Node)) return false; - final Node other = (Node) obj; - if (pos == null) { - if (other.pos != null) return false; - } else if (!pos.equals(other.pos)) return false; - return true; - } - - - @Override - public String toString() - { - return "N " + pos + ", G =" + g_cost + ", H = " + h_cost; - } - } - - private static class FComparator implements Comparator { - - @Override - public int compare(Node n1, Node n2) - { - return n1.fCost() - n2.fCost(); - } - } - - - public void setIgnoreEnd(boolean ignoreEnd) - { - this.ignoreEnd = ignoreEnd; - } - - - public void setIgnoreStart(boolean ignoreStart) - { - this.ignoreStart = ignoreStart; - } - - - /** - * @return used heuristic - */ - protected abstract Heuristic getHeuristic(); - - - protected abstract List getWalkSides(); - - - /** - * @param pos tile pos - * @return true if the tile is walkable - */ - public abstract boolean isAccessible(Coord pos); - - - /** - * Cost of walking onto a tile. It's useful to use ie. 10 for basic step. - * - * @param from last tile - * @param to current tile - * @return cost - */ - protected abstract int getCost(Coord from, Coord to); - - - /** - * @return lowest cost. Used to multiply heuristics. - */ - protected abstract int getMinCost(); -} diff --git a/src/mightypork/gamecore/util/math/algo/pathfinding/PathFinderProxy.java b/src/mightypork/gamecore/util/math/algo/pathfinding/PathFinderProxy.java deleted file mode 100644 index 38f4be5..0000000 --- a/src/mightypork/gamecore/util/math/algo/pathfinding/PathFinderProxy.java +++ /dev/null @@ -1,61 +0,0 @@ -package mightypork.gamecore.util.math.algo.pathfinding; - - -import java.util.List; - -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; - - -/** - * Pathfinder proxy. Can be used to override individual methods but keep the - * rest as is. - * - * @author Ondřej Hruška (MightyPork) - */ -public class PathFinderProxy extends PathFinder { - - private final PathFinder source; - - - public PathFinderProxy(PathFinder other) - { - this.source = other; - } - - - @Override - public boolean isAccessible(Coord pos) - { - return source.isAccessible(pos); - } - - - @Override - public int getCost(Coord from, Coord to) - { - return source.getCost(from, to); - } - - - @Override - public int getMinCost() - { - return source.getMinCost(); - } - - - @Override - protected Heuristic getHeuristic() - { - return source.getHeuristic(); - } - - - @Override - protected List getWalkSides() - { - return source.getWalkSides(); - } - -} diff --git a/src/mightypork/gamecore/util/math/algo/pathfinding/heuristics/DiagonalHeuristic.java b/src/mightypork/gamecore/util/math/algo/pathfinding/heuristics/DiagonalHeuristic.java deleted file mode 100644 index 7a939e7..0000000 --- a/src/mightypork/gamecore/util/math/algo/pathfinding/heuristics/DiagonalHeuristic.java +++ /dev/null @@ -1,15 +0,0 @@ -package mightypork.gamecore.util.math.algo.pathfinding.heuristics; - - -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.pathfinding.Heuristic; - - -public class DiagonalHeuristic extends Heuristic { - - @Override - public double getCost(Coord pos, Coord target) - { - return Math.sqrt(Math.pow(pos.x - target.x, 2) + Math.pow(pos.y - target.y, 2)); - } -} diff --git a/src/mightypork/gamecore/util/math/algo/pathfinding/heuristics/ManhattanHeuristic.java b/src/mightypork/gamecore/util/math/algo/pathfinding/heuristics/ManhattanHeuristic.java deleted file mode 100644 index 8c1a506..0000000 --- a/src/mightypork/gamecore/util/math/algo/pathfinding/heuristics/ManhattanHeuristic.java +++ /dev/null @@ -1,15 +0,0 @@ -package mightypork.gamecore.util.math.algo.pathfinding.heuristics; - - -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.pathfinding.Heuristic; - - -public class ManhattanHeuristic extends Heuristic { - - @Override - public double getCost(Coord pos, Coord target) - { - return Math.abs(target.x - pos.x) + Math.abs(target.y - pos.y); - } -} diff --git a/src/mightypork/gamecore/util/math/color/Color.java b/src/mightypork/gamecore/util/math/color/Color.java deleted file mode 100644 index f2eea2c..0000000 --- a/src/mightypork/gamecore/util/math/color/Color.java +++ /dev/null @@ -1,247 +0,0 @@ -package mightypork.gamecore.util.math.color; - - -import java.util.EmptyStackException; -import java.util.Stack; - -import mightypork.dynmath.num.Num; -import mightypork.gamecore.util.annot.FactoryMethod; -import mightypork.gamecore.util.math.Calc; - - -/** - * Color.
- * All values are 0-1 - * - * @author Ondřej Hruška (MightyPork) - */ -public abstract class Color { - - private static final Stack alphaStack = new Stack<>(); - private static volatile boolean alphaStackEnabled = true; - - - @FactoryMethod - public static final Color fromHex(int rgb_hex) - { - final int bi = rgb_hex & 0xff; - final int gi = (rgb_hex >> 8) & 0xff; - final int ri = (rgb_hex >> 16) & 0xff; - return rgb(ri / 255D, gi / 255D, bi / 255D); - } - - - @FactoryMethod - public static final Color rgb(double r, double g, double b) - { - return rgba(Num.make(r), Num.make(g), Num.make(b), Num.ONE); - } - - - @FactoryMethod - public static final Color rgba(double r, double g, double b, double a) - { - return rgba(Num.make(r), Num.make(g), Num.make(b), Num.make(a)); - } - - - @FactoryMethod - public static final Color rgb(Num r, Num g, Num b) - { - return rgba(r, g, b, Num.ONE); - } - - - @FactoryMethod - public static final Color rgba(Num r, Num g, Num b, Num a) - { - return new ColorRgb(r, g, b, a); - } - - - @FactoryMethod - public static final Color hsb(double h, double s, double b) - { - return hsba(Num.make(h), Num.make(s), Num.make(b), Num.ONE); - } - - - @FactoryMethod - public static final Color hsba(double h, double s, double b, double a) - { - return hsba(Num.make(h), Num.make(s), Num.make(b), Num.make(a)); - } - - - @FactoryMethod - public static final Color hsb(Num h, Num s, Num b) - { - return hsba(h, s, b, Num.ONE); - } - - - @FactoryMethod - public static final Color hsba(Num h, Num s, Num b, Num a) - { - return new ColorHsb(h, s, b, a); - } - - - @FactoryMethod - public static final Color light(double a) - { - return light(Num.make(a)); - } - - - @FactoryMethod - public static final Color light(Num a) - { - return rgba(Num.ONE, Num.ONE, Num.ONE, a); - } - - - @FactoryMethod - public static final Color dark(double a) - { - return dark(Num.make(a)); - } - - - @FactoryMethod - public static final Color dark(Num a) - { - return rgba(Num.ZERO, Num.ZERO, Num.ZERO, a); - } - - - protected static final double clamp(Num n) - { - return Calc.clamp(n.value(), 0, 1); - } - - - protected static final double clamp(double n) - { - return Calc.clamp(n, 0, 1); - } - - - /** - * @return red 0-1 - */ - public abstract double r(); - - - /** - * @return green 0-1 - */ - public abstract double g(); - - - /** - * @return blue 0-1 - */ - public abstract double b(); - - - /** - * @return alpha 0-1 - */ - public final double a() - { - double alpha = rawAlpha(); - - if (alphaStackEnabled) { - - for (final Num n : alphaStack) { - alpha *= clamp(n.value()); - } - } - - return clamp(alpha); - } - - - /** - * @return alpha 0-1, before multiplying with the global alpha value. - */ - protected abstract double rawAlpha(); - - - /** - *

- * Push alpha multiplier on the stack (can be animated or whatever you - * like). Once done with rendering, the popAlpha() method should be called, - * otherwise you may experience unexpected glitches (such as all going - * transparent). - *

- *

- * multiplier value should not exceed the range 0..1, otherwise it will be - * clamped to it. - *

- * - * @param alpha alpha multiplier - */ - public static void pushAlpha(Num alpha) - { - if (!alphaStackEnabled) { - return; - } - - alphaStack.push(alpha); - } - - - /** - * Remove a pushed alpha multiplier from the stack. If there's no remaining - * multiplier on the stack, an exception is raised. - * - * @throws EmptyStackException if the stack is empty - */ - public static void popAlpha() - { - if (!alphaStackEnabled) { - return; - } - - if (alphaStack.isEmpty()) { - throw new EmptyStackException(); - } - - alphaStack.pop(); - } - - - /** - * Enable alpha stack. When disabled, pushAlpha() and popAlpha() have no - * effect. - * - * @param yes - */ - public static void enableAlphaStack(boolean yes) - { - alphaStackEnabled = yes; - } - - - /** - * @return true if alpha stack is enabled. - */ - public static boolean isAlphaStackEnabled() - { - return alphaStackEnabled; - } - - - public Color withAlpha(double multiplier) - { - return new ColorAlphaAdjuster(this, Num.make(multiplier)); - } - - - public Color withAlpha(Num multiplier) - { - return new ColorAlphaAdjuster(this, multiplier); - } -} diff --git a/src/mightypork/gamecore/util/math/color/ColorAlphaAdjuster.java b/src/mightypork/gamecore/util/math/color/ColorAlphaAdjuster.java deleted file mode 100644 index 0de2050..0000000 --- a/src/mightypork/gamecore/util/math/color/ColorAlphaAdjuster.java +++ /dev/null @@ -1,47 +0,0 @@ -package mightypork.gamecore.util.math.color; - - -import mightypork.dynmath.num.Num; - - -public class ColorAlphaAdjuster extends Color { - - private final Color source; - private final Num alphaAdjust; - - - public ColorAlphaAdjuster(Color source, Num alphaMul) - { - this.source = source; - this.alphaAdjust = alphaMul; - } - - - @Override - public double r() - { - return source.r(); - } - - - @Override - public double g() - { - return source.g(); - } - - - @Override - public double b() - { - return source.b(); - } - - - @Override - protected double rawAlpha() - { - return source.rawAlpha() * alphaAdjust.value(); - } - -} diff --git a/src/mightypork/gamecore/util/math/color/ColorHsb.java b/src/mightypork/gamecore/util/math/color/ColorHsb.java deleted file mode 100644 index 2cd5800..0000000 --- a/src/mightypork/gamecore/util/math/color/ColorHsb.java +++ /dev/null @@ -1,62 +0,0 @@ -package mightypork.gamecore.util.math.color; - - -import mightypork.dynmath.num.Num; - - -public class ColorHsb extends Color { - - private final Num h; - private final Num s; - private final Num b; - private final Num a; - - - public ColorHsb(Num h, Num s, Num b, Num a) - { - this.h = h; - this.s = s; - this.b = b; - this.a = a; - } - - - private double[] asRgb() - { - final int hex = java.awt.Color.HSBtoRGB((float) clamp(h), (float) clamp(s), (float) clamp(b)); - - final int bi = hex & 0xff; - final int gi = (hex >> 8) & 0xff; - final int ri = (hex >> 16) & 0xff; - return new double[] { ri / 255D, gi / 255D, bi / 255D, clamp(a) }; - } - - - @Override - public double r() - { - return asRgb()[0]; - } - - - @Override - public double g() - { - return asRgb()[1]; - } - - - @Override - public double b() - { - return asRgb()[2]; - } - - - @Override - protected double rawAlpha() - { - return asRgb()[3]; - } - -} diff --git a/src/mightypork/gamecore/util/math/color/ColorRgb.java b/src/mightypork/gamecore/util/math/color/ColorRgb.java deleted file mode 100644 index 63c1172..0000000 --- a/src/mightypork/gamecore/util/math/color/ColorRgb.java +++ /dev/null @@ -1,51 +0,0 @@ -package mightypork.gamecore.util.math.color; - - -import mightypork.dynmath.num.Num; - - -public class ColorRgb extends Color { - - private final Num r; - private final Num g; - private final Num b; - private final Num a; - - - public ColorRgb(Num r, Num g, Num b, Num a) - { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - - - @Override - public double r() - { - return clamp(r); - } - - - @Override - public double g() - { - return clamp(g); - } - - - @Override - public double b() - { - return clamp(b); - } - - - @Override - protected double rawAlpha() - { - return clamp(a); - } - -} diff --git a/src/mightypork/gamecore/util/math/color/pal/CGA.java b/src/mightypork/gamecore/util/math/color/pal/CGA.java deleted file mode 100644 index e8a49b1..0000000 --- a/src/mightypork/gamecore/util/math/color/pal/CGA.java +++ /dev/null @@ -1,32 +0,0 @@ -package mightypork.gamecore.util.math.color.pal; - - -import mightypork.gamecore.util.math.color.Color; - - -/** - * CGA palette - * - * @author Ondřej Hruška (MightyPork) - */ -public interface CGA { - - Color BLACK = Color.fromHex(0x000000); - Color GRAY_DARK = Color.fromHex(0x686868); - Color GRAY_LIGHT = Color.fromHex(0xB8B8B8); - Color WHITE = Color.fromHex(0xFFFFFF); - - Color RED_DARK = Color.fromHex(0xC41F0C); - Color RED_LIGHT = Color.fromHex(0xFF706A); - Color MAGENTA_DARK = Color.fromHex(0xC12BB6); - Color MAGENTA_LIGHT = Color.fromHex(0xFF76FD); - Color BLUE_DARK = Color.fromHex(0x0019B6); - Color BLUE_LIGHT = Color.fromHex(0x5F6EFC); - Color CYAN_DARK = Color.fromHex(0x00B6B8); - Color CYAN_LIGHT = Color.fromHex(0x23FCFE); - Color GREEN_DARK = Color.fromHex(0x00B41D); - Color GREEN_LIGHT = Color.fromHex(0x39FA6F); - - Color YELLOW = Color.fromHex(0xFFFD72); - Color BROWN = Color.fromHex(0xC16A14); -} diff --git a/src/mightypork/gamecore/util/math/color/pal/CMDR.java b/src/mightypork/gamecore/util/math/color/pal/CMDR.java deleted file mode 100644 index a5f7109..0000000 --- a/src/mightypork/gamecore/util/math/color/pal/CMDR.java +++ /dev/null @@ -1,30 +0,0 @@ -package mightypork.gamecore.util.math.color.pal; - - -import mightypork.gamecore.util.math.color.Color; - - -/** - * COMMODORE palette - * - * @author Ondřej Hruška (MightyPork) - */ -public interface CMDR { - - Color BLACK = Color.fromHex(0x040013); - Color WHITE = Color.fromHex(0xFFFFFF); - Color RED = Color.fromHex(0x883932); - Color CYAN = Color.fromHex(0x67B6BD); - Color PURPLE = Color.fromHex(0x8B3F96); - Color GREEN = Color.fromHex(0x55A049); - Color BLUE = Color.fromHex(0x40318D); - Color YELLOW = Color.fromHex(0xBFCE72); - Color ORANGE = Color.fromHex(0x8B5429); - Color BROWN = Color.fromHex(0x574200); - Color RED_LIGHT = Color.fromHex(0xB86962); - Color GRAY_DARK = Color.fromHex(0x505050); - Color GRAY = Color.fromHex(0x787878); - Color GREEN_LIGHT = Color.fromHex(0x94E089); - Color BLUE_LIGHT = Color.fromHex(0x7869C4); - Color GRAY_LIGHT = Color.fromHex(0x9F9F9F); -} diff --git a/src/mightypork/gamecore/util/math/color/pal/PAL16.java b/src/mightypork/gamecore/util/math/color/pal/PAL16.java deleted file mode 100644 index 4a31117..0000000 --- a/src/mightypork/gamecore/util/math/color/pal/PAL16.java +++ /dev/null @@ -1,34 +0,0 @@ -package mightypork.gamecore.util.math.color.pal; - - -import mightypork.gamecore.util.math.color.Color; - - -/** - * PAL16 palette via http://androidarts.com/palette/16pal.htm - * - * @author Ondřej Hruška (MightyPork) - */ -public interface PAL16 { - - Color VOID = Color.fromHex(0x000000); - Color ASH = Color.fromHex(0x9D9D9D); - Color BLIND = Color.fromHex(0xFFFFFF); - - Color BLOODRED = Color.fromHex(0xBE2633); - Color PIGMEAT = Color.fromHex(0xE06F8B); - - Color OLDPOOP = Color.fromHex(0x493C2B); - Color NEWPOOP = Color.fromHex(0xA46422); - Color BLAZE = Color.fromHex(0xEB8931); - Color ZORNSKIN = Color.fromHex(0xF7E26B); - - Color SHADEGREEN = Color.fromHex(0x2F484E); - Color LEAFGREEN = Color.fromHex(0x44891A); - Color SLIMEGREEN = Color.fromHex(0xA3CE27); - - Color NIGHTBLUE = Color.fromHex(0x1B2632); - Color SEABLUE = Color.fromHex(0x005784); - Color SKYBLUE = Color.fromHex(0x31A2F2); - Color CLOUDBLUE = Color.fromHex(0xB2DCEF); -} diff --git a/src/mightypork/gamecore/util/math/color/pal/RGB.java b/src/mightypork/gamecore/util/math/color/pal/RGB.java deleted file mode 100644 index 3714eae..0000000 --- a/src/mightypork/gamecore/util/math/color/pal/RGB.java +++ /dev/null @@ -1,44 +0,0 @@ -package mightypork.gamecore.util.math.color.pal; - - -import mightypork.gamecore.util.math.color.Color; - - -/** - * Basic RGB palette - * - * @author Ondřej Hruška (MightyPork) - */ -public class RGB { - - public static final Color BLACK_10 = Color.rgba(0, 0, 0, 0.1); - public static final Color BLACK_20 = Color.rgba(0, 0, 0, 0.2); - public static final Color BLACK_30 = Color.rgba(0, 0, 0, 0.3); - public static final Color BLACK_40 = Color.rgba(0, 0, 0, 0.4); - public static final Color BLACK_50 = Color.rgba(0, 0, 0, 0.5); - public static final Color BLACK_60 = Color.rgba(0, 0, 0, 0.6); - public static final Color BLACK_70 = Color.rgba(0, 0, 0, 0.7); - public static final Color BLACK_80 = Color.rgba(0, 0, 0, 0.8); - public static final Color BLACK_90 = Color.rgba(0, 0, 0, 0.9); - - - public static final Color WHITE = Color.fromHex(0xFFFFFF); - public static final Color BLACK = Color.fromHex(0x000000); - public static final Color GRAY_DARK = Color.fromHex(0x808080); - public static final Color GRAY = Color.fromHex(0xA0A0A0); - public static final Color GRAY_LIGHT = Color.fromHex(0xC0C0C0); - - public static final Color RED = Color.fromHex(0xFF0000); - public static final Color GREEN = Color.fromHex(0x00FF00); - public static final Color BLUE = Color.fromHex(0x0000FF); - - public static final Color YELLOW = Color.fromHex(0xFFFF00); - public static final Color CYAN = Color.fromHex(0x00FFFF); - public static final Color MAGENTA = Color.fromHex(0xFF00FF); - - public static final Color PINK = Color.fromHex(0xFF3FFC); - public static final Color ORANGE = Color.fromHex(0xFC4800); - public static final Color BROWN = Color.fromHex(0x83501B); - - public static final Color NONE = Color.rgba(0, 0, 0, 0); -} diff --git a/src/mightypork/gamecore/util/math/color/pal/ZX.java b/src/mightypork/gamecore/util/math/color/pal/ZX.java deleted file mode 100644 index 1de5e6e..0000000 --- a/src/mightypork/gamecore/util/math/color/pal/ZX.java +++ /dev/null @@ -1,31 +0,0 @@ -package mightypork.gamecore.util.math.color.pal; - - -import mightypork.gamecore.util.math.color.Color; - - -/** - * ZX Spectrum palette - * - * @author Ondřej Hruška (MightyPork) - */ -public interface ZX { - - Color BLACK = Color.fromHex(0x000000); - Color GRAY = Color.fromHex(0xCBCBCB); - Color WHITE = Color.fromHex(0xFFFFFF); - - Color RED_DARK = Color.fromHex(0xD8240F); - Color RED_LIGHT = Color.fromHex(0xFF3016); - Color MAGENTA_DARK = Color.fromHex(0xD530C9); - Color MAGENTA_LIGHT = Color.fromHex(0xFF3FFC); - Color BLUE_DARK = Color.fromHex(0x001DC8); - Color BLUE_LIGHT = Color.fromHex(0x0027FB); - Color CYAN_DARK = Color.fromHex(0x00C9CB); - Color CYAN_LIGHT = Color.fromHex(0xFFFD33); - Color GREEN_DARK = Color.fromHex(0x00C721); - Color GREEN_LIGHT = Color.fromHex(0x00F92C); - - Color YELLOW_DARK = Color.fromHex(0xCECA26); - Color YELLOW_LIGHT = Color.fromHex(0xFFFD33); -} diff --git a/src/mightypork/gamecore/util/math/noise/NoiseGen.java b/src/mightypork/gamecore/util/math/noise/NoiseGen.java deleted file mode 100644 index 5667789..0000000 --- a/src/mightypork/gamecore/util/math/noise/NoiseGen.java +++ /dev/null @@ -1,109 +0,0 @@ -package mightypork.gamecore.util.math.noise; - - -/** - * 2D Perlin noise generator - * - * @author Ondřej Hruška (MightyPork) - */ -public class NoiseGen { - - private static final double lowBound = -0.7072; - private static final double highBound = 0.7072; - - private final PerlinNoiseGenerator noiser; - - private final double lowMul; - private final double highMul; - private final double middle; - private final double density; - - - /** - * make a new noise generator with a random seed - * - * @param density noise density (0..1). Lower density means larger "spots". - * @param low low bound ("valley") - * @param middle middle bound ("surface") - * @param high high bound ("hill") - */ - public NoiseGen(double density, double low, double middle, double high) - { - this(density, low, middle, high, Double.doubleToLongBits(Math.random())); - } - - - /** - * make a new noise generator - * - * @param density noise density (0..1). Lower density means larger "spots". - * @param low low bound ("valley") - * @param middle middle bound ("surface") - * @param high high bound ("hill") - * @param seed random seed to use - */ - public NoiseGen(double density, double low, double middle, double high, long seed) - { - if (low > middle || middle > high) throw new IllegalArgumentException("Invalid value range."); - - this.density = density; - - // norm low and high to be around zero - low -= middle; - high -= middle; - - // scale - this.middle = middle; - - lowMul = Math.abs(low / lowBound); - highMul = Math.abs(high / highBound); - - noiser = new PerlinNoiseGenerator(seed); - } - - - /** - * Get value at coord - * - * @param x x coordinate - * @param y y coordinate - * @return value - */ - public double valueAt(double x, double y) - { - double raw = noiser.noise2(x * density, y * density); - - if (raw < lowBound) { - raw = lowBound; - } else if (raw > highBound) { - raw = highBound; - } - - if (raw < 0) { - return middle + lowMul * raw; - } else { - return middle + highMul * raw; - } - } - - - /** - * Build a map [height][width] of noise values - * - * @param width map width (number of columns) - * @param height map height (number of rows ) - * @return the map - */ - public double[][] buildMap(int width, int height) - { - final double[][] map = new double[height][width]; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - map[y][x] = valueAt(x, y); - } - } - - return map; - } -} diff --git a/src/mightypork/gamecore/util/math/noise/PerlinNoiseGenerator.java b/src/mightypork/gamecore/util/math/noise/PerlinNoiseGenerator.java deleted file mode 100644 index 3ab40fa..0000000 --- a/src/mightypork/gamecore/util/math/noise/PerlinNoiseGenerator.java +++ /dev/null @@ -1,577 +0,0 @@ -/***************************************************************************** - * J3D.org Copyright (c) 2000 - * Java Source - * - * This source is licensed under the GNU LGPL v2.1 - * Please read http://www.gnu.org/copyleft/lgpl.html for more information - * - * This software comes with the standard NO WARRANTY disclaimer for any - * purpose. Use it at your own risk. If there's a problem you get to fix it. - * - ****************************************************************************/ -package mightypork.gamecore.util.math.noise; - - -import java.util.Random; - - -/** - * Computes Perlin Noise for three dimensions. - *

- * The result is a continuous function that interpolates a smooth path along a - * series random points. The function is consitent, so given the same - * parameters, it will always return the same value. The smoothing function is - * based on the Improving Noise paper presented at Siggraph 2002. - *

- * Computing noise for one and two dimensions can make use of the 3D problem - * space by just setting the un-needed dimensions to a fixed value. - * - * @author Justin Couch - * @edited by Ondřej Hruška - * @version $Revision: 1.4 $ - * @source http://code.j3d.org/download.html - */ -public class PerlinNoiseGenerator { - - // Constants for setting up the Perlin-1 noise functions - private static final int B = 0x1000; - private static final int BM = 0xff; - - private static final int N = 0x1000; - - /** Default seed to use for the random number generation */ - private static final int DEFAULT_SEED = 100; - - /** Default sample size to work with */ - private static final int DEFAULT_SAMPLE_SIZE = 256; - - private final Random rand = new Random(DEFAULT_SEED); - - /** Permutation array for the improved noise function */ - private final int[] p_imp; - - /** P array for perline 1 noise */ - private int[] p; - private double[][] g3; - private double[][] g2; - private double[] g1; - - - /** - * Create a new noise creator with the default seed value - */ - public PerlinNoiseGenerator() - { - this(DEFAULT_SEED); - } - - - /** - * Create a new noise creator with the given seed value for the randomness - * - * @param seed The seed value to use - */ - public PerlinNoiseGenerator(long seed) - { - p_imp = new int[DEFAULT_SAMPLE_SIZE << 1]; - - int i, j, k; - rand.setSeed(seed); - - // Calculate the table of psuedo-random coefficients. - for (i = 0; i < DEFAULT_SAMPLE_SIZE; i++) - p_imp[i] = i; - - // generate the psuedo-random permutation table. - while (--i > 0) { - k = p_imp[i]; - j = (int) (rand.nextLong() & DEFAULT_SAMPLE_SIZE); - p_imp[i] = p_imp[j]; - p_imp[j] = k; - } - - initPerlin1(); - } - - - /** - * Computes noise function for three dimensions at the point (x,y,z). - * - * @param x x dimension parameter - * @param y y dimension parameter - * @param z z dimension parameter - * @return the noise value at the point (x, y, z) - */ - public double improvedNoise(double x, double y, double z) - { - // Constraint the point to a unit cube - final int uc_x = (int) Math.floor(x) & 255; - final int uc_y = (int) Math.floor(y) & 255; - final int uc_z = (int) Math.floor(z) & 255; - - // Relative location of the point in the unit cube - final double xo = x - Math.floor(x); - final double yo = y - Math.floor(y); - final double zo = z - Math.floor(z); - - // Fade curves for x, y and z - final double u = fade(xo); - final double v = fade(yo); - final double w = fade(zo); - - // Generate a hash for each coordinate to find out where in the cube - // it lies. - final int a = p_imp[uc_x] + uc_y; - final int aa = p_imp[a] + uc_z; - final int ab = p_imp[a + 1] + uc_z; - - final int b = p_imp[uc_x + 1] + uc_y; - final int ba = p_imp[b] + uc_z; - final int bb = p_imp[b + 1] + uc_z; - - // blend results from the 8 corners based on the noise function - final double c1 = grad(p_imp[aa], xo, yo, zo); - final double c2 = grad(p_imp[ba], xo - 1, yo, zo); - final double c3 = grad(p_imp[ab], xo, yo - 1, zo); - final double c4 = grad(p_imp[bb], xo - 1, yo - 1, zo); - final double c5 = grad(p_imp[aa + 1], xo, yo, zo - 1); - final double c6 = grad(p_imp[ba + 1], xo - 1, yo, zo - 1); - final double c7 = grad(p_imp[ab + 1], xo, yo - 1, zo - 1); - final double c8 = grad(p_imp[bb + 1], xo - 1, yo - 1, zo - 1); - - return lerp(w, lerp(v, lerp(u, c1, c2), lerp(u, c3, c4)), lerp(v, lerp(u, c5, c6), lerp(u, c7, c8))); - } - - - /** - * 1-D noise generation function using the original perlin algorithm. - * - * @param x Seed for the noise function - * @return The noisy output - */ - public double noise1(double x) - { - final double t = x + N; - final int bx0 = ((int) t) & BM; - final int bx1 = (bx0 + 1) & BM; - final double rx0 = t - (int) t; - final double rx1 = rx0 - 1; - - final double sx = sCurve(rx0); - - final double u = rx0 * g1[p[bx0]]; - final double v = rx1 * g1[p[bx1]]; - - return lerp(sx, u, v); - } - - - /** - * Create noise in a 2D space using the orignal perlin noise algorithm. - * - * @param x The X coordinate of the location to sample - * @param y The Y coordinate of the location to sample - * @return A noisy value at the given position - */ - public double noise2(double x, double y) - { - double t = x + N; - final int bx0 = ((int) t) & BM; - final int bx1 = (bx0 + 1) & BM; - final double rx0 = t - (int) t; - final double rx1 = rx0 - 1; - - t = y + N; - final int by0 = ((int) t) & BM; - final int by1 = (by0 + 1) & BM; - final double ry0 = t - (int) t; - final double ry1 = ry0 - 1; - - final int i = p[bx0]; - final int j = p[bx1]; - - final int b00 = p[i + by0]; - final int b10 = p[j + by0]; - final int b01 = p[i + by1]; - final int b11 = p[j + by1]; - - final double sx = sCurve(rx0); - final double sy = sCurve(ry0); - - double[] q = g2[b00]; - double u = rx0 * q[0] + ry0 * q[1]; - q = g2[b10]; - double v = rx1 * q[0] + ry0 * q[1]; - final double a = lerp(sx, u, v); - - q = g2[b01]; - u = rx0 * q[0] + ry1 * q[1]; - q = g2[b11]; - v = rx1 * q[0] + ry1 * q[1]; - final double b = lerp(sx, u, v); - - return lerp(sy, a, b); - } - - - /** - * Create noise in a 3D space using the orignal perlin noise algorithm. - * - * @param x The X coordinate of the location to sample - * @param y The Y coordinate of the location to sample - * @param z The Z coordinate of the location to sample - * @return A noisy value at the given position - */ - public double noise3(double x, double y, double z) - { - double t = x + N; - final int bx0 = ((int) t) & BM; - final int bx1 = (bx0 + 1) & BM; - final double rx0 = t - (int) t; - final double rx1 = rx0 - 1; - - t = y + N; - final int by0 = ((int) t) & BM; - final int by1 = (by0 + 1) & BM; - final double ry0 = t - (int) t; - final double ry1 = ry0 - 1; - - t = z + N; - final int bz0 = ((int) t) & BM; - final int bz1 = (bz0 + 1) & BM; - final double rz0 = t - (int) t; - final double rz1 = rz0 - 1; - - final int i = p[bx0]; - final int j = p[bx1]; - - final int b00 = p[i + by0]; - final int b10 = p[j + by0]; - final int b01 = p[i + by1]; - final int b11 = p[j + by1]; - - t = sCurve(rx0); - final double sy = sCurve(ry0); - final double sz = sCurve(rz0); - - double[] q = g3[b00 + bz0]; - double u = (rx0 * q[0] + ry0 * q[1] + rz0 * q[2]); - q = g3[b10 + bz0]; - double v = (rx1 * q[0] + ry0 * q[1] + rz0 * q[2]); - double a = lerp(t, u, v); - - q = g3[b01 + bz0]; - u = (rx0 * q[0] + ry1 * q[1] + rz0 * q[2]); - q = g3[b11 + bz0]; - v = (rx1 * q[0] + ry1 * q[1] + rz0 * q[2]); - double b = lerp(t, u, v); - - final double c = lerp(sy, a, b); - - q = g3[b00 + bz1]; - u = (rx0 * q[0] + ry0 * q[1] + rz1 * q[2]); - q = g3[b10 + bz1]; - v = (rx1 * q[0] + ry0 * q[1] + rz1 * q[2]); - a = lerp(t, u, v); - - q = g3[b01 + bz1]; - u = (rx0 * q[0] + ry1 * q[1] + rz1 * q[2]); - q = g3[b11 + bz1]; - v = (rx1 * q[0] + ry1 * q[1] + rz1 * q[2]); - b = lerp(t, u, v); - - final double d = lerp(sy, a, b); - - return lerp(sz, c, d); - } - - - /** - * Create a turbulent noise output based on the core noise function. This - * uses the noise as a base function and is suitable for creating clouds, - * marble and explosion effects. For example, a typical marble effect would - * set the colour to be: - * - *

-     *    sin(point + turbulence(point) * point.x);
-     * 
- * - * @param x - * @param y - * @param z - * @param loF - * @param hiF - * @return value - */ - public double imporvedTurbulence(double x, double y, double z, double loF, double hiF) - { - double p_x = x + 123.456f; - double p_y = y; - double p_z = z; - double t = 0; - double f; - - for (f = loF; f < hiF; f *= 2) { - t += Math.abs(improvedNoise(p_x, p_y, p_z)) / f; - - p_x *= 2; - p_y *= 2; - p_z *= 2; - } - - return t - 0.3; - } - - - /** - * Create a turbulance function in 2D using the original perlin noise - * function. - * - * @param x The X coordinate of the location to sample - * @param y The Y coordinate of the location to sample - * @param freq The frequency of the turbluance to create - * @return The value at the given coordinates - */ - public double turbulence2(double x, double y, double freq) - { - double t = 0; - - do { - t += noise2(freq * x, freq * y) / freq; - freq *= 0.5f; - } while (freq >= 1); - - return t; - } - - - /** - * Create a turbulance function in 3D using the original perlin noise - * function. - * - * @param x The X coordinate of the location to sample - * @param y The Y coordinate of the location to sample - * @param z The Z coordinate of the location to sample - * @param freq The frequency of the turbluance to create - * @return The value at the given coordinates - */ - public double turbulence3(double x, double y, double z, double freq) - { - double t = 0; - - do { - t += noise3(freq * x, freq * y, freq * z) / freq; - freq *= 0.5f; - } while (freq >= 1); - - return t; - } - - - /** - * Create a 1D tileable noise function for the given width. - * - * @param x The X coordinate to generate the noise for - * @param w The width of the tiled block - * @return The value of the noise at the given coordinate - */ - public double tileableNoise1(double x, double w) - { - return (noise1(x) * (w - x) + noise1(x - w) * x) / w; - } - - - /** - * Create a 2D tileable noise function for the given width and height. - * - * @param x The X coordinate to generate the noise for - * @param y The Y coordinate to generate the noise for - * @param w The width of the tiled block - * @param h The height of the tiled block - * @return The value of the noise at the given coordinate - */ - public double tileableNoise2(double x, double y, double w, double h) - { - return (noise2(x, y) * (w - x) * (h - y) + noise2(x - w, y) * x * (h - y) + noise2(x, y - h) * (w - x) * y + noise2(x - w, y - h) * x * y) / (w * h); - } - - - /** - * Create a 3D tileable noise function for the given width, height and - * depth. - * - * @param x The X coordinate to generate the noise for - * @param y The Y coordinate to generate the noise for - * @param z The Z coordinate to generate the noise for - * @param w The width of the tiled block - * @param h The height of the tiled block - * @param d The depth of the tiled block - * @return The value of the noise at the given coordinate - */ - public double tileableNoise3(double x, double y, double z, double w, double h, double d) - { - return (noise3(x, y, z) * (w - x) * (h - y) * (d - z) + noise3(x - w, y, z) * x * (h - y) * (d - z) + noise3(x, y - h, z) * (w - x) * y * (d - z) - + noise3(x - w, y - h, z) * x * y * (d - z) + noise3(x, y, z - d) * (w - x) * (h - y) * z + noise3(x - w, y, z - d) * x * (h - y) * z - + noise3(x, y - h, z - d) * (w - x) * y * z + noise3(x - w, y - h, z - d) * x * y * z) - / (w * h * d); - } - - - /** - * Create a turbulance function that can be tiled across a surface in 2D. - * - * @param x The X coordinate of the location to sample - * @param y The Y coordinate of the location to sample - * @param w The width to tile over - * @param h The height to tile over - * @param freq The frequency of the turbluance to create - * @return The value at the given coordinates - */ - public double tileableTurbulence2(double x, double y, double w, double h, double freq) - { - double t = 0; - - do { - t += tileableNoise2(freq * x, freq * y, w * freq, h * freq) / freq; - freq *= 0.5f; - } while (freq >= 1); - - return t; - } - - - /** - * Create a turbulance function that can be tiled across a surface in 3D. - * - * @param x The X coordinate of the location to sample - * @param y The Y coordinate of the location to sample - * @param z The Z coordinate of the location to sample - * @param w The width to tile over - * @param h The height to tile over - * @param d The depth to tile over - * @param freq The frequency of the turbluance to create - * @return The value at the given coordinates - */ - public double tileableTurbulence3(double x, double y, double z, double w, double h, double d, double freq) - { - double t = 0; - - do { - t += tileableNoise3(freq * x, freq * y, freq * z, w * freq, h * freq, d * freq) / freq; - freq *= 0.5f; - } while (freq >= 1); - - return t; - } - - - /** - * Simple lerp function using doubles. - */ - private double lerp(double t, double a, double b) - { - return a + t * (b - a); - } - - - /** - * Fade curve calculation which is 6t^5 - 15t^4 + 10t^3. This is the new - * algorithm, where the old one used to be 3t^2 - 2t^3. - * - * @param t The t parameter to calculate the fade for - * @return the drop-off amount. - */ - private double fade(double t) - { - return t * t * t * (t * (t * 6 - 15) + 10); - } - - - /** - * Calculate the gradient function based on the hash code. - */ - private double grad(int hash, double x, double y, double z) - { - // Convert low 4 bits of hash code into 12 gradient directions. - final int h = hash & 15; - final double u = (h < 8 || h == 12 || h == 13) ? x : y; - final double v = (h < 4 || h == 12 || h == 13) ? y : z; - - return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v); - } - - - /** - * S-curve function for value distribution for Perlin-1 noise function. - */ - private double sCurve(double t) - { - return (t * t * (3 - 2 * t)); - } - - - /** - * 2D-vector normalisation function. - */ - private void normalize2(double[] v) - { - final double s = 1 / Math.sqrt(v[0] * v[0] + v[1] * v[1]); - v[0] *= s; - v[1] *= s; - } - - - /** - * 3D-vector normalisation function. - */ - private void normalize3(double[] v) - { - final double s = 1 / Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - v[0] *= s; - v[1] *= s; - v[2] *= s; - } - - - /** - * Initialise the lookup arrays used by Perlin 1 function. - */ - private void initPerlin1() - { - p = new int[B + B + 2]; - g3 = new double[B + B + 2][3]; - g2 = new double[B + B + 2][2]; - g1 = new double[B + B + 2]; - int i, j, k; - - for (i = 0; i < B; i++) { - p[i] = i; - - g1[i] = (((rand.nextDouble() * Integer.MAX_VALUE) % (B + B)) - B) / B; - - for (j = 0; j < 2; j++) - g2[i][j] = (((rand.nextDouble() * Integer.MAX_VALUE) % (B + B)) - B) / B; - normalize2(g2[i]); - - for (j = 0; j < 3; j++) - g3[i][j] = (((rand.nextDouble() * Integer.MAX_VALUE) % (B + B)) - B) / B; - normalize3(g3[i]); - } - - while (--i > 0) { - k = p[i]; - j = (int) ((rand.nextDouble() * Integer.MAX_VALUE) % B); - p[i] = p[j]; - p[j] = k; - } - - for (i = 0; i < B + 2; i++) { - p[B + i] = p[i]; - g1[B + i] = g1[i]; - for (j = 0; j < 2; j++) - g2[B + i][j] = g2[i][j]; - for (j = 0; j < 3; j++) - g3[B + i][j] = g3[i][j]; - } - } -} diff --git a/src/mightypork/gamecore/util/math/timing/FpsMeter.java b/src/mightypork/gamecore/util/math/timing/FpsMeter.java deleted file mode 100644 index f14840e..0000000 --- a/src/mightypork/gamecore/util/math/timing/FpsMeter.java +++ /dev/null @@ -1,39 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -/** - * Class for counting FPS in games.
- * This class can be used also as a simple frequency meter - output is in Hz. - * - * @author Ondřej Hruška (MightyPork) - */ -public class FpsMeter { - - private long frames = 0; - private long lastTimeMillis = System.currentTimeMillis(); - private long lastSecFPS = 0; - - - /** - * @return current second's FPS - */ - public long getFPS() - { - return lastSecFPS; - } - - - /** - * Notification that frame was rendered - */ - public void frame() - { - if (System.currentTimeMillis() - lastTimeMillis > 1000) { - lastSecFPS = frames; - frames = 0; - final long over = System.currentTimeMillis() - lastTimeMillis - 1000; - lastTimeMillis = System.currentTimeMillis() - over; - } - frames++; - } -} diff --git a/src/mightypork/gamecore/util/math/timing/Pauseable.java b/src/mightypork/gamecore/util/math/timing/Pauseable.java deleted file mode 100644 index 0a5f853..0000000 --- a/src/mightypork/gamecore/util/math/timing/Pauseable.java +++ /dev/null @@ -1,28 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -/** - * Can be paused & resumed - * - * @author Ondřej Hruška (MightyPork) - */ -public interface Pauseable { - - /** - * Pause operation - */ - public void pause(); - - - /** - * Resume operation - */ - public void resume(); - - - /** - * @return paused state - */ - public boolean isPaused(); - -} diff --git a/src/mightypork/gamecore/util/math/timing/TaskRepeater.java b/src/mightypork/gamecore/util/math/timing/TaskRepeater.java deleted file mode 100644 index 8fb7e35..0000000 --- a/src/mightypork/gamecore/util/math/timing/TaskRepeater.java +++ /dev/null @@ -1,50 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -import mightypork.gamecore.gui.Enableable; -import mightypork.gamecore.util.math.timing.animation.AnimatorRewind; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; - - -public abstract class TaskRepeater extends AnimatorRewind implements Runnable, Enableable { - - private boolean enabled = true; - - - public TaskRepeater(double period) - { - super(period); - } - - - @Override - protected void nextCycle(NumAnimated anim) - { - run(); - super.nextCycle(anim); - } - - - @Override - public void setEnabled(boolean yes) - { - this.enabled = yes; - } - - - @Override - public boolean isEnabled() - { - return enabled; - } - - - @Override - public void update(double delta) - { - if (!enabled) return; - - super.update(delta); - } - -} diff --git a/src/mightypork/gamecore/util/math/timing/TimedTask.java b/src/mightypork/gamecore/util/math/timing/TimedTask.java deleted file mode 100644 index b9c0cbe..0000000 --- a/src/mightypork/gamecore/util/math/timing/TimedTask.java +++ /dev/null @@ -1,51 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -import mightypork.gamecore.util.math.timing.animation.NumAnimated; - - -/** - * Delayed runnable controlled by delta timing. - * - * @author Ondřej Hruška (MightyPork) - */ -public abstract class TimedTask implements Runnable, Updateable { - - private final NumAnimated timer = new NumAnimated(0); - private boolean running = false; - - - @Override - public void update(double delta) - { - if (running) { - timer.update(delta); - if (timer.isFinished()) { - running = false; - run(); - } - } - } - - - public boolean isRunning() - { - return !timer.isFinished(); - } - - - public void start(double seconds) - { - timer.reset(); - timer.animate(1, seconds); - running = true; - } - - - public void stop() - { - running = false; - timer.reset(); - } - -} diff --git a/src/mightypork/gamecore/util/math/timing/TimerDelta.java b/src/mightypork/gamecore/util/math/timing/TimerDelta.java deleted file mode 100644 index 12b588c..0000000 --- a/src/mightypork/gamecore/util/math/timing/TimerDelta.java +++ /dev/null @@ -1,48 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -/** - * Timer for delta timing - * - * @author Ondřej Hruška (MightyPork) - */ -public class TimerDelta { - - private long lastFrame; - - private static final long SECOND = 1000000000; // a million nanoseconds - - - /** - * New delta timer - */ - public TimerDelta() - { - lastFrame = System.nanoTime(); - } - - - /** - * Get current time in NS - * - * @return current time NS - */ - public long getTime() - { - return System.nanoTime(); - } - - - /** - * Get time since the last "getDelta()" call. - * - * @return delta time (seconds) - */ - public double getDelta() - { - final long time = getTime(); - final double delta = (time - lastFrame) / (double) SECOND; - lastFrame = time; - return delta; - } -} diff --git a/src/mightypork/gamecore/util/math/timing/TimerFps.java b/src/mightypork/gamecore/util/math/timing/TimerFps.java deleted file mode 100644 index 7a1c7bf..0000000 --- a/src/mightypork/gamecore/util/math/timing/TimerFps.java +++ /dev/null @@ -1,104 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -/** - * Timer for interpolated timing - * - * @author Ondřej Hruška (MightyPork) - */ -public class TimerFps { - - private long lastFrame = 0; - private long nextFrame = 0; - private long skipped = 0; - private long lastSkipped = 0; - - private static final long SECOND = 1000000000; // a million nanoseconds - private final long FRAME; // a time of one frame in nanoseconds - - - /** - * New interpolated timer - * - * @param fps target FPS - */ - public TimerFps(long fps) - { - FRAME = Math.round(SECOND / (double) fps); - - lastFrame = System.nanoTime(); - nextFrame = System.nanoTime() + FRAME; - } - - - /** - * Sync and calculate dropped frames etc. - */ - public void sync() - { - final long time = getTime(); - if (time >= nextFrame) { - final long skippedNow = (long) Math.floor((time - nextFrame) / (double) FRAME) + 1; - skipped += skippedNow; - lastFrame = nextFrame + (1 - skippedNow) * FRAME; - nextFrame += skippedNow * FRAME; - } - } - - - /** - * Get nanotime - * - * @return nanotime - */ - public long getTime() - { - return System.nanoTime(); - } - - - /** - * Get fraction of next frame - * - * @return fraction - */ - public double getFraction() - { - if (getSkipped() >= 1) { - return 1; - } - - final long time = getTime(); - - if (time <= nextFrame) { - return (double) (time - lastFrame) / (double) FRAME; - } - - return 1; - } - - - /** - * Get number of elapsed ticks - * - * @return ticks - */ - public int getSkipped() - { - final long change = skipped - lastSkipped; - lastSkipped = skipped; - return (int) change; - } - - - /** - * Clear timer and start counting new tick. - */ - public void startNewFrame() - { - final long time = getTime(); - lastFrame = time; - nextFrame = time + FRAME; - lastSkipped = skipped; - } -} diff --git a/src/mightypork/gamecore/util/math/timing/Updateable.java b/src/mightypork/gamecore/util/math/timing/Updateable.java deleted file mode 100644 index 1e25dd6..0000000 --- a/src/mightypork/gamecore/util/math/timing/Updateable.java +++ /dev/null @@ -1,17 +0,0 @@ -package mightypork.gamecore.util.math.timing; - - -/** - * Uses delta timing - * - * @author Ondřej Hruška (MightyPork) - */ -public interface Updateable { - - /** - * Update item state based on elapsed time - * - * @param delta time elapsed since last update, in seconds - */ - public void update(double delta); -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/Animator.java b/src/mightypork/gamecore/util/math/timing/animation/Animator.java deleted file mode 100644 index 27b9b7f..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/Animator.java +++ /dev/null @@ -1,133 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.dynmath.num.Num; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.timing.Pauseable; -import mightypork.gamecore.util.math.timing.Updateable; - - -public abstract class Animator extends Num implements Updateable, Pauseable { - - private final NumAnimated numAnim; - private final Num num; - private final double highValue; - private final double lowValue; - - - public Animator(double period) - { - this(0, 1, period, Easing.LINEAR); - } - - - public Animator(double start, double end, double period) - { - this(start, end, period, Easing.LINEAR); - } - - - public Animator(double period, Easing easing) - { - this(0, 1, period, easing); - } - - - public Animator(double start, double end, double period, Easing easing) - { - numAnim = new NumAnimated(0, easing); - numAnim.setDefaultDuration(period); - - this.lowValue = start; - this.highValue = end; - - this.num = numAnim.mul(end - start).add(start); - } - - - @Override - public void pause() - { - numAnim.pause(); - } - - - public void start() - { - resume(); - } - - - @Override - public void resume() - { - numAnim.resume(); - } - - - @Override - public boolean isPaused() - { - return numAnim.isPaused(); - } - - - public void reset() - { - numAnim.reset(); - } - - - public void restart() - { - reset(); - resume(); - } - - - public void setDuration(double secs) - { - numAnim.setDefaultDuration(secs); - } - - - public double getDuration() - { - return numAnim.getDefaultDuration(); - } - - - @Override - public void update(double delta) - { - numAnim.update(delta); - if (numAnim.isFinished()) nextCycle(numAnim); - } - - - @DefaultImpl - protected abstract void nextCycle(NumAnimated anim); - - - @Override - public double value() - { - return num.value(); - } - - - public void setProgress(double value) - { - final double target = numAnim.getEnd(); - numAnim.setTo(Calc.clamp(value, lowValue, highValue)); - numAnim.animate((target < value ? highValue : lowValue), target, numAnim.getDefaultDuration()); - } - - - public double getProgress() - { - return numAnim.value(); - } -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/AnimatorBounce.java b/src/mightypork/gamecore/util/math/timing/animation/AnimatorBounce.java deleted file mode 100644 index 22eb8a9..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/AnimatorBounce.java +++ /dev/null @@ -1,53 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.gamecore.util.math.Easing; - - -/** - * Animator that upon reaching max, animates back down and then up again - * - * @author Ondřej Hruška (MightyPork) - */ -public class AnimatorBounce extends Animator { - - private boolean wasUp = false; - - - public AnimatorBounce(double start, double end, double period, Easing easing) - { - super(start, end, period, easing); - } - - - public AnimatorBounce(double start, double end, double period) - { - super(start, end, period); - } - - - public AnimatorBounce(double period, Easing easing) - { - super(period, easing); - } - - - public AnimatorBounce(double period) - { - super(period); - } - - - @Override - protected void nextCycle(NumAnimated anim) - { - if (wasUp) { - anim.fadeOut(); - } else { - anim.fadeIn(); - } - - wasUp = !wasUp; - } - -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/AnimatorRewind.java b/src/mightypork/gamecore/util/math/timing/animation/AnimatorRewind.java deleted file mode 100644 index 01736f5..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/AnimatorRewind.java +++ /dev/null @@ -1,46 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.gamecore.util.math.Easing; - - -/** - * Animator that upon reaching top, jumps straight to zero and continues another - * cycle. - * - * @author Ondřej Hruška (MightyPork) - */ -public class AnimatorRewind extends Animator { - - public AnimatorRewind(double start, double end, double period, Easing easing) - { - super(start, end, period, easing); - } - - - public AnimatorRewind(double start, double end, double period) - { - super(start, end, period); - } - - - public AnimatorRewind(double period, Easing easing) - { - super(period, easing); - } - - - public AnimatorRewind(double period) - { - super(period); - } - - - @Override - protected void nextCycle(NumAnimated anim) - { - anim.reset(); - anim.fadeIn(); - } - -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/NumAnimated.java b/src/mightypork/gamecore/util/math/timing/animation/NumAnimated.java deleted file mode 100644 index 828f23b..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/NumAnimated.java +++ /dev/null @@ -1,458 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.dynmath.num.mutable.NumMutable; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.timing.Pauseable; -import mightypork.gamecore.util.math.timing.Updateable; - - -/** - * Double which supports delta timing.
- * When both in and out easings are set differently, then they'll be used for - * fade-in and fade-out respectively. Otherwise both use the same. - * - * @author Ondřej Hruška (MightyPork) - */ -public class NumAnimated extends NumMutable implements Updateable, Pauseable { - - /** target double */ - protected double to = 0; - - /** last tick double */ - protected double from = 0; - - /** how long the transition should last */ - protected double duration = 0; - - /** current anim time */ - protected double elapsedTime = 0; - - /** True if this animator is paused */ - protected boolean paused = false; - - /** Easing fn */ - protected Easing easingCurrent = Easing.LINEAR; - protected Easing easingOut = Easing.LINEAR; - protected Easing easingIn = Easing.LINEAR; - - /** Default duration (seconds) */ - private double defaultDuration = 1; - - - /** - * With linear easing - * - * @param value initial value - */ - public NumAnimated(double value) - { - setTo(value); - } - - - /** - * Create animator with easing - * - * @param value initial value - * @param easing easing function - */ - public NumAnimated(double value, Easing easing) - { - this(value); - setEasing(easing); - } - - - /** - * Create animator with easing - * - * @param value initial value - * @param easingIn easing function (fade in) - * @param easingOut easing function (fade out) - */ - public NumAnimated(double value, Easing easingIn, Easing easingOut) - { - this(value); - setEasing(easingIn, easingOut); - } - - - /** - * Create animator with easing - * - * @param value initial value - * @param easing easing function - * @param defaultDuration default fade duration - */ - public NumAnimated(double value, Easing easing, double defaultDuration) - { - this(value); - setEasing(easing); - setDefaultDuration(defaultDuration); - } - - - /** - * Create animator with easing - * - * @param value initial value - * @param easingIn easing function (fade in) - * @param easingOut easing function (fade out) - * @param defaultDuration default fade duration - */ - public NumAnimated(double value, Easing easingIn, Easing easingOut, double defaultDuration) - { - this(value); - setEasing(easingIn, easingOut); - setDefaultDuration(defaultDuration); - } - - - /** - * Create as copy of another - * - * @param other other animator - */ - public NumAnimated(NumAnimated other) - { - setTo(other); - } - - - /** - * @param easing easing function - */ - public void setEasing(Easing easing) - { - this.easingCurrent = this.easingIn = this.easingOut = easing; - } - - - /** - * @param easingIn easing for fade in - * @param easingOut easing for fade out - */ - public void setEasing(Easing easingIn, Easing easingOut) - { - this.easingIn = easingIn; - this.easingOut = easingOut; - this.easingCurrent = easingIn; - } - - - /** - * Get start value - * - * @return number - */ - public double getStart() - { - return from; - } - - - /** - * Get end value - * - * @return number - */ - public double getEnd() - { - return to; - } - - - /** - * @return current animation duration (seconds) - */ - public double getDuration() - { - return duration; - } - - - /** - * @return elapsed time in current animation (seconds) - */ - public double getElapsed() - { - return elapsedTime; - } - - - /** - * @return default animation duration (seconds) - */ - public double getDefaultDuration() - { - return defaultDuration; - } - - - /** - * @param defaultDuration default animation duration (seconds) - */ - public void setDefaultDuration(double defaultDuration) - { - this.defaultDuration = defaultDuration; - } - - - /** - * Get value at delta time - * - * @return the value - */ - @Override - public double value() - { - if (duration == 0) return to; - return Calc.interpolate(from, to, (elapsedTime / duration), easingCurrent); - } - - - /** - * Get how much of the animation is already finished - * - * @return completion ratio (0 to 1) - */ - public double getProgress() - { - if (duration == 0) return 1; - return elapsedTime / duration; - } - - - @Override - public void update(double delta) - { - if (paused || isFinished()) return; - - elapsedTime = Calc.clamp(elapsedTime + delta, 0, duration); - if (isFinished()) { - duration = 0; - elapsedTime = 0; - from = to; - } - } - - - /** - * Get if animation is finished - * - * @return is finished - */ - public boolean isFinished() - { - return duration == 0 || elapsedTime >= duration; - } - - - /** - * Set to a value (without animation) - * - * @param value - */ - @Override - public void setTo(double value) - { - from = to = value; - elapsedTime = 0; - duration = 0; - } - - - /** - * Copy other - * - * @param other - */ - public void setTo(NumAnimated other) - { - this.from = other.from; - this.to = other.to; - this.duration = other.duration; - this.elapsedTime = other.elapsedTime; - this.paused = other.paused; - this.easingCurrent = other.easingCurrent; - this.easingIn = other.easingIn; - this.easingOut = other.easingOut; - this.defaultDuration = other.defaultDuration; - } - - - /** - * Animate between two states, start from current value (if it's in between) - * - * @param from start value - * @param to target state - * @param time animation time (secs) - */ - public void animate(double from, double to, double time) - { - final double current = value(); - - this.from = from; - this.to = to; - - final double progress = getProgressFromValue(current); - - this.from = (progress > 0 ? current : from); - - this.duration = time * (1 - progress); - this.elapsedTime = 0; - } - - - /** - * Get progress already elapsed based on current value.
- * Used to resume animation from current point in fading etc. - * - * @param value current value - * @return progress ratio 0-1 - */ - protected double getProgressFromValue(double value) - { - double p = 0; - - if (from == to) return 0; - - if (value >= from && value <= to) { // up - p = ((value - from) / (to - from)); - } else if (value >= to && value <= from) { // down - p = ((from - value) / (from - to)); - } - - return p; - } - - - /** - * Animate to a value from current value - * - * @param to target state - * @param duration animation duration (speeds) - */ - public void animate(double to, double duration) - { - this.from = value(); - this.to = to; - this.duration = duration; - this.elapsedTime = 0; - } - - - /** - * Animate 0 to 1 - * - * @param time animation time (secs) - */ - public void fadeIn(double time) - { - easingCurrent = easingIn; - animate(0, 1, time); - } - - - /** - * Animate 1 to 0 - * - * @param time animation time (secs) - */ - public void fadeOut(double time) - { - easingCurrent = easingOut; - animate(1, 0, time); - } - - - /** - * Animate 0 to 1 with default duration - */ - public void fadeIn() - { - easingCurrent = easingIn; - animate(0, 1, defaultDuration); - } - - - /** - * Animate 1 to 0 with default duration - */ - public void fadeOut() - { - easingCurrent = easingOut; - animate(1, 0, defaultDuration); - } - - - /** - * Make a copy - * - * @return copy - */ - @Override - public NumAnimated clone() - { - return new NumAnimated(this); - } - - - @Override - public String toString() - { - return "Animation(" + from + " -> " + to + ", t=" + duration + "s, elapsed=" + elapsedTime + "s)"; - } - - - /** - * Set to zero and stop animation - */ - public void clear() - { - from = to = 0; - elapsedTime = 0; - duration = 0; - paused = false; - } - - - /** - * Stop animation, keep current value - */ - public void stop() - { - from = to = value(); - elapsedTime = 0; - duration = 0; - } - - - @Override - public void pause() - { - paused = true; - } - - - @Override - public void resume() - { - paused = false; - } - - - @Override - public boolean isPaused() - { - return paused; - } - - - public boolean isInProgress() - { - return !isFinished() && !isPaused(); - } -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/NumAnimatedDeg.java b/src/mightypork/gamecore/util/math/timing/animation/NumAnimatedDeg.java deleted file mode 100644 index bd1cad9..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/NumAnimatedDeg.java +++ /dev/null @@ -1,53 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Calc.Deg; -import mightypork.gamecore.util.math.Easing; - - -/** - * Degree animator - * - * @author Ondřej Hruška (MightyPork) - */ -public class NumAnimatedDeg extends NumAnimated { - - public NumAnimatedDeg(NumAnimated other) - { - super(other); - } - - - public NumAnimatedDeg(double value) - { - super(value); - } - - - public NumAnimatedDeg(double value, Easing easing) - { - super(value, easing); - } - - - @Override - public double value() - { - if (duration == 0) return Deg.norm(to); - return Calc.interpolateDeg(from, to, (elapsedTime / duration), easingCurrent); - } - - - @Override - protected double getProgressFromValue(double value) - { - final double whole = Deg.diff(from, to); - if (Deg.diff(value, from) < whole && Deg.diff(value, to) < whole) { - final double partial = Deg.diff(from, value); - return partial / whole; - } - - return 0; - } -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/NumAnimatedRad.java b/src/mightypork/gamecore/util/math/timing/animation/NumAnimatedRad.java deleted file mode 100644 index 423e664..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/NumAnimatedRad.java +++ /dev/null @@ -1,53 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Calc.Rad; -import mightypork.gamecore.util.math.Easing; - - -/** - * Radians animator - * - * @author Ondřej Hruška (MightyPork) - */ -public class NumAnimatedRad extends NumAnimated { - - public NumAnimatedRad(NumAnimated other) - { - super(other); - } - - - public NumAnimatedRad(double value) - { - super(value); - } - - - public NumAnimatedRad(double value, Easing easing) - { - super(value, easing); - } - - - @Override - public double value() - { - if (duration == 0) return Rad.norm(to); - return Calc.interpolateRad(from, to, (elapsedTime / duration), easingCurrent); - } - - - @Override - protected double getProgressFromValue(double value) - { - final double whole = Rad.diff(from, to); - if (Rad.diff(value, from) < whole && Rad.diff(value, to) < whole) { - final double partial = Rad.diff(from, value); - return partial / whole; - } - - return 0; - } -} diff --git a/src/mightypork/gamecore/util/math/timing/animation/VectAnimated.java b/src/mightypork/gamecore/util/math/timing/animation/VectAnimated.java deleted file mode 100644 index 08b47cb..0000000 --- a/src/mightypork/gamecore/util/math/timing/animation/VectAnimated.java +++ /dev/null @@ -1,287 +0,0 @@ -package mightypork.gamecore.util.math.timing.animation; - - -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.mutable.VectMutable; -import mightypork.gamecore.util.annot.FactoryMethod; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.timing.Pauseable; -import mightypork.gamecore.util.math.timing.Updateable; - - -/** - * 3D coordinated with support for transitions, mutable. - * - * @author Ondřej Hruška (MightyPork) - */ -public class VectAnimated extends VectMutable implements Pauseable, Updateable { - - private final NumAnimated x, y, z; - private double defaultDuration = 0.5; - - - /** - * Create an animated vector; This way different easing / settings can be - * specified for each coordinate. - * - * @param x x animator - * @param y y animator - * @param z z animator - */ - public VectAnimated(NumAnimated x, NumAnimated y, NumAnimated z) - { - this.x = x; - this.y = y; - this.z = z; - } - - - /** - * Create an animated vector - * - * @param start initial positioon - * @param easing animation easing - */ - public VectAnimated(Vect start, Easing easing) - { - x = new NumAnimated(start.x(), easing); - y = new NumAnimated(start.y(), easing); - z = new NumAnimated(start.z(), easing); - } - - - @Override - public double x() - { - return x.value(); - } - - - @Override - public double y() - { - return y.value(); - } - - - @Override - public double z() - { - return z.value(); - } - - - @Override - public void setTo(double x, double y, double z) - { - setX(x); - setY(y); - setZ(z); - } - - - @Override - public void setX(double x) - { - this.x.setTo(x); - } - - - @Override - public void setY(double y) - { - this.y.setTo(y); - } - - - @Override - public void setZ(double z) - { - this.z.setTo(z); - } - - - public void add(Vect offset, double duration) - { - animate(this.add(offset), duration); - } - - - public VectAnimated animate(double x, double y, double z, double duration) - { - this.x.animate(x, duration); - this.y.animate(y, duration); - this.z.animate(z, duration); - return this; - } - - - public VectAnimated animate(Vect target, double duration) - { - animate(target.x(), target.y(), target.z(), duration); - return this; - } - - - public VectAnimated animate(double x, double y, double z) - { - this.x.animate(x, defaultDuration); - this.y.animate(y, defaultDuration); - this.z.animate(z, defaultDuration); - return this; - } - - - public VectAnimated animate(Vect target) - { - animate(target.x(), target.y(), target.z()); - return this; - } - - - /** - * @return the default duration (seconds) - */ - public double getDefaultDuration() - { - return defaultDuration; - } - - - /** - * Set default animation duration (when changed without using animate()) - * - * @param defaultDuration default duration (seconds) - */ - public void setDefaultDuration(double defaultDuration) - { - this.defaultDuration = defaultDuration; - } - - - @Override - public void update(double delta) - { - x.update(delta); - y.update(delta); - z.update(delta); - } - - - @Override - public void pause() - { - x.pause(); - y.pause(); - z.pause(); - } - - - @Override - public void resume() - { - x.resume(); - y.resume(); - z.resume(); - } - - - @Override - public boolean isPaused() - { - return x.isPaused(); // BÚNO - } - - - /** - * @return true if the animation is finished - */ - public boolean isFinished() - { - return x.isFinished(); // BÚNO - } - - - /** - * @return current animation duration - */ - public double getDuration() - { - return x.getDuration(); // BÚNO - } - - - /** - * @return elapsed time since the start of the animation - */ - public double getElapsed() - { - return x.getElapsed(); // BÚNO - } - - - /** - * @return animation progress (elapsed / duration) - */ - public double getProgress() - { - return x.getProgress(); // BÚNO - } - - - /** - * Set easing for all three coordinates - * - * @param easing - */ - public void setEasing(Easing easing) - { - x.setEasing(easing); - y.setEasing(easing); - z.setEasing(easing); - } - - - /** - * Create an animated vector; This way different easing / settings can be - * specified for each coordinate. - * - * @param x x animator - * @param y y animator - * @param z z animator - * @return animated mutable vector - */ - @FactoryMethod - public static VectAnimated makeVar(NumAnimated x, NumAnimated y, NumAnimated z) - { - return new VectAnimated(x, y, z); - } - - - /** - * Create an animated vector - * - * @param start initial positioon - * @param easing animation easing - * @return animated mutable vector - */ - @FactoryMethod - public static VectAnimated makeVar(Vect start, Easing easing) - { - return new VectAnimated(start, easing); - } - - - /** - * Create an animated vector, initialized at 0,0,0 - * - * @param easing animation easing - * @return animated mutable vector - */ - @FactoryMethod - public static VectAnimated makeVar(Easing easing) - { - return new VectAnimated(Vect.ZERO, easing); - } - -} diff --git a/src/mightypork/gamecore/util/objects/Convert.java b/src/mightypork/gamecore/util/objects/Convert.java deleted file mode 100644 index 6b844f1..0000000 --- a/src/mightypork/gamecore/util/objects/Convert.java +++ /dev/null @@ -1,334 +0,0 @@ -package mightypork.gamecore.util.objects; - - -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Range; - - -/** - * Utility for converting Object to data types; Can also convert strings to data - * types. - * - * @author Ondřej Hruška (MightyPork) - */ -public class Convert { - - /** - * Get INTEGER - * - * @param o object - * @param def default value - * @return integer - */ - public static int toInteger(Object o, Integer def) - { - try { - if (o == null) return def; - if (o instanceof Number) return ((Number) o).intValue(); - if (o instanceof String) return (int) Math.round(Double.parseDouble((String) o)); - if (o instanceof Range) return ((Range) o).randInt(); - if (o instanceof Boolean) return ((Boolean) o) ? 1 : 0; - } catch (final NumberFormatException e) {} - return def; - } - - - /** - * Get DOUBLE - * - * @param o object - * @param def default value - * @return double - */ - public static double toDouble(Object o, Double def) - { - try { - if (o == null) return def; - if (o instanceof Number) return ((Number) o).doubleValue(); - if (o instanceof String) return Double.parseDouble((String) o); - if (o instanceof Range) return ((Range) o).randDouble(); - if (o instanceof Boolean) return ((Boolean) o) ? 1 : 0; - } catch (final NumberFormatException e) {} - return def; - } - - - /** - * Get FLOAT - * - * @param o object - * @param def default value - * @return float - */ - public static double toFloat(Object o, Float def) - { - try { - if (o == null) return def; - if (o instanceof Number) return ((Number) o).floatValue(); - } catch (final NumberFormatException e) {} - return def; - } - - - /** - * Get BOOLEAN - * - * @param o object - * @param def default value - * @return boolean - */ - public static boolean toBoolean(Object o, Boolean def) - { - if (o == null) return def; - if (o instanceof Boolean) return ((Boolean) o).booleanValue(); - if (o instanceof Number) return ((Number) o).intValue() != 0; - - if (o instanceof String) { - final String s = ((String) o).trim().toLowerCase(); - if (s.equals("0")) return false; - if (s.equals("1")) return true; - try { - final double n = Double.parseDouble(s); - return n != 0; - } catch (final NumberFormatException e) {} - - if (s.equals("true")) return true; - if (s.equals("yes")) return true; - if (s.equals("y")) return true; - if (s.equals("a")) return true; - if (s.equals("enabled")) return true; - - if (s.equals("false")) return false; - if (s.equals("no")) return false; - if (s.equals("n")) return false; - if (s.equals("disabled")) return true; - } - - return def; - } - - - /** - * Get STRING - * - * @param o object - * @param def default value - * @return String - */ - public static String toString(Object o, String def) - { - if (o == null) return def; - if (o instanceof String) return ((String) o); - - if (o instanceof Float) return Calc.toString((float) o); - - if (o instanceof Double) return Calc.toString((double) o); - - if (o instanceof Vect) { - final Vect c = (Vect) o; - return String.format("(%f|%f|%f)", c.x(), c.y(), c.z()); - } - - if (o instanceof Range) { - final Range c = (Range) o; - return String.format("{%f|%f}", c.getMin(), c.getMax()); - } - - if (o instanceof Class) { - return Log.str(o); - } - - return o.toString(); - } - - - /** - * Get a vector - * - * @param o object - * @param def default value - * @return vector - */ - public static VectConst toVect(Object o, Vect def) - { - try { - if (o == null) return def.freeze(); - if (o instanceof Vect) return ((Vect) o).freeze(); - if (o instanceof String) { - String s = ((String) o).trim(); - - // drop whitespace - s = s.replaceAll("\\s", ""); - - // drop brackets - s = s.replaceAll("[\\(\\[\\{\\)\\]\\}]", ""); - - // norm separators - s = s.replaceAll("[:;]", "|"); - - // norm floating point - s = s.replaceAll("[,]", "."); - - final String[] parts = s.split("[|]"); - - if (parts.length >= 2) { - - final double x = Double.parseDouble(parts[0].trim()); - final double y = Double.parseDouble(parts[1].trim()); - - if (parts.length == 2) { - return Vect.make(x, y); - } - - final double z = Double.parseDouble(parts[2].trim()); - - return Vect.make(x, y, z); - } - } - } catch (final NumberFormatException | ArrayIndexOutOfBoundsException e) { - // ignore - } - - return def.freeze(); - } - - - /** - * Get RANGE - * - * @param o object - * @param def default value - * @return AiCoord - */ - public static Range toRange(Object o, Range def) - { - try { - if (o == null) return def; - if (o instanceof Range) return (Range) o; - if (o instanceof Number) return new Range(((Number) o).doubleValue(), ((Number) o).doubleValue()); - if (o instanceof String) { - String s = ((String) o).trim(); - - // drop whitespace - s = s.replaceAll("\\s", ""); - - // drop brackets - s = s.replaceAll("[\\(\\[\\{\\)\\]\\}]", ""); - - // norm separators - s = s.replaceAll("[:;]", "|").replace("..", "|"); - - // norm floating point - s = s.replaceAll("[,]", "."); - - // dash to pipe, if not a minus sign - s = s.replaceAll("([0-9])\\s?[\\-]", "$1|"); - - final String[] parts = s.split("[|]"); - - if (parts.length >= 1) { - - final double low = Double.parseDouble(parts[0].trim()); - - if (parts.length == 2) { - final double high = Double.parseDouble(parts[1].trim()); - return Range.make(low, high); - } - - return Range.make(low, low); - } - } - } catch (final NumberFormatException e) { - // ignore - } - return def; - } - - - /** - * Get INTEGER - * - * @param o object - * @return integer - */ - public static int toInteger(Object o) - { - return toInteger(o, 0); - } - - - /** - * Get DOUBLE - * - * @param o object - * @return double - */ - public static double toDouble(Object o) - { - return toDouble(o, 0d); - } - - - /** - * Get FLOAT - * - * @param o object - * @return float - */ - public static double toFloat(Object o) - { - return toFloat(o, 0f); - } - - - /** - * Get BOOLEAN - * - * @param o object - * @return boolean - */ - public static boolean toBoolean(Object o) - { - return toBoolean(o, false); - } - - - /** - * Get STRING - * - * @param o object - * @return String - */ - public static String toString(Object o) - { - return toString(o, ""); - } - - - /** - * Get a vector of two or three coordinates - * - * @param o object - * @return Coord - */ - public static VectConst toVect(Object o) - { - return toVect(o, Vect.ZERO); - } - - - /** - * Get RANGE - * - * @param o object - * @return AiCoord - */ - public static Range toRange(Object o) - { - return toRange(o, new Range()); - } - -} diff --git a/src/mightypork/gamecore/util/objects/EnumerationIterator.java b/src/mightypork/gamecore/util/objects/EnumerationIterator.java deleted file mode 100644 index f8632ac..0000000 --- a/src/mightypork/gamecore/util/objects/EnumerationIterator.java +++ /dev/null @@ -1,52 +0,0 @@ -package mightypork.gamecore.util.objects; - - -import java.util.Enumeration; -import java.util.Iterator; - - -/** - * Helper class for iterationg over an {@link Enumeration} - * - * @author Ondřej Hruška (MightyPork) - * @param target element type (will be cast) - */ -public class EnumerationIterator implements Iterable { - - private final Enumeration enumeration; - - - public EnumerationIterator(Enumeration enumeration) - { - this.enumeration = enumeration; - } - - - @Override - public Iterator iterator() - { - return new Iterator() { - - @Override - public boolean hasNext() - { - return enumeration.hasMoreElements(); - } - - - @Override - public T next() - { - return enumeration.nextElement(); - } - - - @Override - public void remove() - { - throw new UnsupportedOperationException("Operation not supported."); - } - }; - } - -} diff --git a/src/mightypork/gamecore/util/objects/MapSort.java b/src/mightypork/gamecore/util/objects/MapSort.java deleted file mode 100644 index e0e28b0..0000000 --- a/src/mightypork/gamecore/util/objects/MapSort.java +++ /dev/null @@ -1,76 +0,0 @@ -package mightypork.gamecore.util.objects; - - -import java.util.*; -import java.util.Map.Entry; - - -/** - * Map sorting utils - * - * @author Ondřej Hruška (MightyPork) - */ -public class MapSort { - - /** - * Sort a map by keys, maintaining key-value pairs. - * - * @param map map to be sorted - * @param comparator a comparator, or null for natural ordering - * @return linked hash map with sorted entries - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - public static Map sortByKeys(Map map, final Comparator comparator) - { - final List keys = new LinkedList<>(map.keySet()); - - if (comparator == null) { - Collections.sort(keys); - } else { - Collections.sort(keys, comparator); - } - - // LinkedHashMap will keep the keys in the order they are inserted - // which is currently sorted on natural ordering - final Map sortedMap = new LinkedHashMap<>(); - for (final K key : keys) { - sortedMap.put(key, map.get(key)); - } - - return sortedMap; - } - - - /** - * Sort a map by values, maintaining key-value pairs. - * - * @param map map to be sorted - * @param comparator a comparator, or null for natural ordering - * @return linked hash map with sorted entries - */ - @SuppressWarnings("rawtypes") - public static Map sortByValues(Map map, final Comparator comparator) - { - final List> entries = new LinkedList<>(map.entrySet()); - - Collections.sort(entries, new Comparator>() { - - @Override - public int compare(Entry o1, Entry o2) - { - if (comparator == null) return o1.getValue().compareTo(o2.getValue()); - return comparator.compare(o1.getValue(), o2.getValue()); - } - }); - - // LinkedHashMap will keep the keys in the order they are inserted - // which is currently sorted on natural ordering - final Map sortedMap = new LinkedHashMap<>(); - - for (final Map.Entry entry : entries) { - sortedMap.put(entry.getKey(), entry.getValue()); - } - - return sortedMap; - } -} diff --git a/src/mightypork/gamecore/util/objects/Mutable.java b/src/mightypork/gamecore/util/objects/Mutable.java deleted file mode 100644 index 127efe6..0000000 --- a/src/mightypork/gamecore/util/objects/Mutable.java +++ /dev/null @@ -1,79 +0,0 @@ -package mightypork.gamecore.util.objects; - - -/** - * Mutable object - * - * @author Ondřej Hruška (MightyPork) - * @param type - */ -public class Mutable { - - /** The wrapped value */ - private T o = null; - - - /** - * New mutable object - * - * @param o value - */ - public Mutable(T o) - { - this.o = o; - } - - - /** - * Get the wrapped value - * - * @return value - */ - public T get() - { - return o; - } - - - /** - * Set value - * - * @param o new value to set - */ - public void set(T o) - { - this.o = o; - } - - - @Override - public String toString() - { - if (o == null) return ""; - return o.toString(); - } - - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result + ((o == null) ? 0 : o.hashCode()); - return result; - } - - - @Override - public boolean equals(Object obj) - { - if (this == obj) return true; - if (obj == null) return false; - if (!(obj instanceof Mutable)) return false; - final Mutable other = (Mutable) obj; - if (o == null) { - if (other.o != null) return false; - } else if (!o.equals(other.o)) return false; - return true; - } -} diff --git a/src/mightypork/gamecore/util/objects/Pair.java b/src/mightypork/gamecore/util/objects/Pair.java deleted file mode 100644 index 35e8cbf..0000000 --- a/src/mightypork/gamecore/util/objects/Pair.java +++ /dev/null @@ -1,93 +0,0 @@ -package mightypork.gamecore.util.objects; - - -import mightypork.gamecore.util.math.Calc; - - -/** - * Structure of 2 objects. - * - * @author Ondřej Hruška (MightyPork) - * @copy (c) 2012 - * @param 1st object class - * @param 2nd object class - */ -public class Pair { - - /** - * 1st object - */ - public T1 first; - - /** - * 2nd object - */ - public T2 second; - - - /** - * Make structure of 2 objects - * - * @param first 1st object - * @param second 2nd object - */ - public Pair(T1 first, T2 second) - { - this.first = first; - this.second = second; - } - - - /** - * @return 1st object - */ - public T1 getFirst() - { - return first; - } - - - /** - * @return 2nd object - */ - public T2 getSecond() - { - return second; - } - - - @Override - public boolean equals(Object obj) - { - if (obj == null) { - return false; - } - - if (!this.getClass().equals(obj.getClass())) { - return false; - } - - final Pair t = (Pair) obj; - - return Calc.areEqual(first, t.first) && Calc.areEqual(second, t.second); - - } - - - @Override - public int hashCode() - { - int hash = 71; - hash += (first == null ? 0 : first.hashCode()); - hash += (second == null ? 0 : second.hashCode()); - return hash; - } - - - @Override - public String toString() - { - return "PAIR{" + first + "," + second + "}"; - } - -} diff --git a/src/mightypork/gamecore/util/objects/Triad.java b/src/mightypork/gamecore/util/objects/Triad.java deleted file mode 100644 index bab1706..0000000 --- a/src/mightypork/gamecore/util/objects/Triad.java +++ /dev/null @@ -1,80 +0,0 @@ -package mightypork.gamecore.util.objects; - - -import mightypork.gamecore.util.math.Calc; - - -/** - * Structure of 3 objects. - * - * @author Ondřej Hruška (MightyPork) - * @copy (c) 2012 - * @param 1st object class - * @param 2nd object class - * @param 3rd object class - */ -public class Triad extends Pair { - - /** - * 3rd object - */ - public T3 third; - - - /** - * Make structure of 3 objects - * - * @param objA 1st object - * @param objB 2nd object - * @param objC 3rd object - */ - public Triad(T1 objA, T2 objB, T3 objC) - { - super(objA, objB); - third = objC; - } - - - /** - * @return 3rd object - */ - public T3 getThird() - { - return third; - } - - - /** - * Set 1st object - * - * @param obj 1st object - */ - public void setThird(T3 obj) - { - third = obj; - } - - - @Override - public boolean equals(Object obj) - { - if (!super.equals(obj)) return false; - - return Calc.areEqual(third, ((Triad) obj).third); - } - - - @Override - public int hashCode() - { - return super.hashCode() + (third == null ? 0 : third.hashCode()); - } - - - @Override - public String toString() - { - return "TRIAD{" + first + "," + second + "," + third + "}"; - } - -} diff --git a/src/mightypork/gamecore/util/objects/VarargsParser.java b/src/mightypork/gamecore/util/objects/VarargsParser.java deleted file mode 100644 index f1f32e7..0000000 --- a/src/mightypork/gamecore/util/objects/VarargsParser.java +++ /dev/null @@ -1,54 +0,0 @@ -package mightypork.gamecore.util.objects; - - -import java.util.LinkedHashMap; -import java.util.Map; - - -/** - * Varargs parser
- * Converts an array of repeated "key, value" pairs to a LinkedHashMap.
- * example: - * - *
- * Object[] array = { "one", 1, "two", 4, "three", 9, "four", 16 };
- * Map<String, Integer> args = new VarargsParser<String, Integer>().parse(array);
- * 
- * - * @author Ondřej Hruška (MightyPork) - * @param Type for Map keys - * @param Type for Map values - */ -public class VarargsParser { - - /** - * Parse array of vararg key, value pairs to a LinkedHashMap. - * - * @param args varargs - * @return LinkedHashMap - * @throws ClassCastException in case of incompatible type in the array - * @throws IllegalArgumentException in case of invalid array length (odd) - */ - @SuppressWarnings("unchecked") - public Map parse(Object... args) throws ClassCastException, IllegalArgumentException - { - final LinkedHashMap attrs = new LinkedHashMap<>(); - - if (args.length % 2 != 0) { - throw new IllegalArgumentException("Odd number of elements in varargs map!"); - } - - K key = null; - for (final Object o : args) { - if (key == null) { - if (o == null) throw new RuntimeException("Key cannot be NULL in varargs map."); - key = (K) o; - } else { - attrs.put(key, (V) o); - key = null; - } - } - - return attrs; - } -} diff --git a/src/mightypork/gamecore/util/strings/AlphanumComparator.java b/src/mightypork/gamecore/util/strings/AlphanumComparator.java deleted file mode 100644 index b9c4f73..0000000 --- a/src/mightypork/gamecore/util/strings/AlphanumComparator.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * The Alphanum Algorithm is an improved sorting algorithm for strings - * containing numbers. Instead of sorting numbers in ASCII order like - * a standard sort, this algorithm sorts numbers in numeric order. - * - * The Alphanum Algorithm is discussed at http://www.DaveKoelle.com - * - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -package mightypork.gamecore.util.strings; - - -import java.util.Comparator; - - -/** - * String comparator taking care of strings with numbers. - * - * @author Daniel Migowski - * @author Andre Bogus - * @author David Koelle - * @author Ondřej Hruška (MightyPork) - */ -public class AlphanumComparator implements Comparator { - - public static final AlphanumComparator instance = new AlphanumComparator(); - - - private final boolean isDigit(char ch) - { - return ch >= '0' && ch <= '9'; - } - - - /** - * Length of string is passed in for improved efficiency (only need to - * calculate it once) - **/ - private final String getChunk(String s, int slength, int marker) - { - final StringBuilder chunk = new StringBuilder(); - char c = s.charAt(marker); - chunk.append(c); - marker++; - - if (isDigit(c)) { - while (marker < slength) { - c = s.charAt(marker); - if (!isDigit(c)) break; - chunk.append(c); - marker++; - } - } else { - while (marker < slength) { - c = s.charAt(marker); - if (isDigit(c)) break; - chunk.append(c); - marker++; - } - } - return chunk.toString(); - } - - - @Override - public int compare(String s1, String s2) - { - int thisMarker = 0; - int thatMarker = 0; - final int s1Length = s1.length(); - final int s2Length = s2.length(); - - while (thisMarker < s1Length && thatMarker < s2Length) { - final String thisChunk = getChunk(s1, s1Length, thisMarker); - thisMarker += thisChunk.length(); - - final String thatChunk = getChunk(s2, s2Length, thatMarker); - thatMarker += thatChunk.length(); - - // If both chunks contain numeric characters, sort them numerically - int result = 0; - if (isDigit(thisChunk.charAt(0)) && isDigit(thatChunk.charAt(0))) { - // Simple chunk comparison by length. - final int thisChunkLength = thisChunk.length(); - result = thisChunkLength - thatChunk.length(); - // If equal, the first different number counts - if (result == 0) { - for (int i = 0; i < thisChunkLength; i++) { - result = thisChunk.charAt(i) - thatChunk.charAt(i); - if (result != 0) { - return result; - } - } - } - } else { - result = thisChunk.compareTo(thatChunk); - } - - if (result != 0) return result; - } - - return s1Length - s2Length; - } -} diff --git a/src/mightypork/gamecore/util/strings/StringProvider.java b/src/mightypork/gamecore/util/strings/StringProvider.java deleted file mode 100644 index fd0d2c8..0000000 --- a/src/mightypork/gamecore/util/strings/StringProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package mightypork.gamecore.util.strings; - - -/** - * Can be used for dynamic string generating - * - * @author Ondřej Hruška (MightyPork) - */ -public interface StringProvider { - - String getString(); -} diff --git a/src/mightypork/gamecore/util/strings/StringUtils.java b/src/mightypork/gamecore/util/strings/StringUtils.java deleted file mode 100644 index 1151472..0000000 --- a/src/mightypork/gamecore/util/strings/StringUtils.java +++ /dev/null @@ -1,143 +0,0 @@ -package mightypork.gamecore.util.strings; - - -/** - * General purpose string utilities - * - * @author Ondřej Hruška (MightyPork) - */ -public class StringUtils { - - /** - * Get if string is in array - * - * @param needle checked string - * @param case_sensitive case sensitive comparision - * @param haystack array of possible values - * @return is in array - */ - public static boolean isInArray(String needle, boolean case_sensitive, String... haystack) - { - if (case_sensitive) { - for (final String s : haystack) { - if (needle.equals(s)) return true; - } - return false; - } else { - for (final String s : haystack) { - if (needle.equalsIgnoreCase(s)) return true; - } - return false; - } - } - - - public static String fromLastDot(String s) - { - return fromLastChar(s, '.'); - } - - - public static String toLastDot(String s) - { - return toLastChar(s, '.'); - } - - - public static String fromLastChar(String s, char c) - { - if (s == null) return null; - return s.substring(s.lastIndexOf(c) + 1, s.length()); - } - - - public static String toLastChar(String s, char c) - { - if (s == null) return null; - if (s.lastIndexOf(c) == -1) return s; - return s.substring(0, s.lastIndexOf(c)); - } - - - /** - * Repeat a string - * - * @param repeated string - * @param count - * @return output - */ - public static String repeat(String repeated, int count) - { - String s = ""; - for (int i = 0; i < count; i++) - s += repeated; - return s; - } - - - /** - * convert string to a same-length sequence of # marks - * - * @param password password - * @return encoded - */ - public static String passwordify(String password) - { - return passwordify(password, "*"); - } - - - /** - * convert string to a same-length sequence of chars - * - * @param password password - * @param replacing character used in output - * @return encoded - */ - public static String passwordify(String password, String replacing) - { - return repeat(replacing, password.length()); - } - - - public static boolean isValidFilenameChar(char ch) - { - return isValidFilenameString(Character.toString(ch)); - } - - - public static boolean isValidFilenameString(String filename) - { - return filename.matches("[a-zA-Z0-9 +\\-.,_%@#!]+"); - } - - - public static boolean isValidIdentifierChar(char ch) - { - return isValidIdentifierString(Character.toString(ch)); - } - - - public static boolean isValidIdentifierString(String filename) - { - return filename.matches("[a-zA-Z0-9._]+"); - } - - - public static String ellipsisStart(String orig, int length) - { - if (orig.length() > length) { - orig = "\u2026" + orig.substring(length, orig.length()); - } - return orig; - } - - - public static String ellipsisEnd(String orig, int length) - { - if (orig.length() > length) { - orig = orig.substring(0, length - 1) + "\u2026"; - } - return orig; - } -} diff --git a/src/mightypork/gamecore/util/strings/StringWrapper.java b/src/mightypork/gamecore/util/strings/StringWrapper.java deleted file mode 100644 index 7ea994f..0000000 --- a/src/mightypork/gamecore/util/strings/StringWrapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package mightypork.gamecore.util.strings; - - -/** - * String provider with constant string - * - * @author Ondřej Hruška (MightyPork) - */ -public class StringWrapper implements StringProvider { - - private final String value; - - - public StringWrapper(String value) - { - this.value = value; - } - - - @Override - public String getString() - { - return value; - } - -} diff --git a/src/mightypork/gamecore/util/strings/filtering/CharFilter.java b/src/mightypork/gamecore/util/strings/filtering/CharFilter.java deleted file mode 100644 index 6585de7..0000000 --- a/src/mightypork/gamecore/util/strings/filtering/CharFilter.java +++ /dev/null @@ -1,7 +0,0 @@ -package mightypork.gamecore.util.strings.filtering; - - -public interface CharFilter { - - public boolean isValid(char c); -} diff --git a/src/mightypork/gamecore/util/strings/filtering/CharFilterRegex.java b/src/mightypork/gamecore/util/strings/filtering/CharFilterRegex.java deleted file mode 100644 index a74ba68..0000000 --- a/src/mightypork/gamecore/util/strings/filtering/CharFilterRegex.java +++ /dev/null @@ -1,21 +0,0 @@ -package mightypork.gamecore.util.strings.filtering; - - -public class CharFilterRegex implements CharFilter { - - private final String formula; - - - public CharFilterRegex(String regex) - { - this.formula = regex; - } - - - @Override - public boolean isValid(char c) - { - return Character.toString(c).matches(formula); - } - -} diff --git a/src/mightypork/gamecore/util/strings/filtering/CharFilterWhitelist.java b/src/mightypork/gamecore/util/strings/filtering/CharFilterWhitelist.java deleted file mode 100644 index f7cd1d1..0000000 --- a/src/mightypork/gamecore/util/strings/filtering/CharFilterWhitelist.java +++ /dev/null @@ -1,21 +0,0 @@ -package mightypork.gamecore.util.strings.filtering; - - -public class CharFilterWhitelist implements CharFilter { - - private final String whitelist; - - - public CharFilterWhitelist(String allowed) - { - this.whitelist = allowed; - } - - - @Override - public boolean isValid(char c) - { - return whitelist.contains(Character.toString(c)); - } - -} diff --git a/src/mightypork/gamecore/util/strings/filtering/StringFilter.java b/src/mightypork/gamecore/util/strings/filtering/StringFilter.java deleted file mode 100644 index bf07eb4..0000000 --- a/src/mightypork/gamecore/util/strings/filtering/StringFilter.java +++ /dev/null @@ -1,12 +0,0 @@ -package mightypork.gamecore.util.strings.filtering; - - -/** - * Utility interface for string filters (accepting filepaths and similar) - * - * @author Ondřej Hruška (MightyPork) - */ -public interface StringFilter { - - public boolean isValid(String entry); -} diff --git a/src/mightypork/rogue/Launcher.java b/src/mightypork/rogue/Launcher.java index 3f577d0..46f7dd8 100644 --- a/src/mightypork/rogue/Launcher.java +++ b/src/mightypork/rogue/Launcher.java @@ -5,7 +5,7 @@ import java.io.File; import java.util.logging.Level; import mightypork.gamecore.core.modules.BaseApp; -import mightypork.gamecore.util.files.OsUtils; +import mightypork.utils.files.OsUtils; public class Launcher { diff --git a/src/mightypork/rogue/RogueApp.java b/src/mightypork/rogue/RogueApp.java index da154a8..0165fcd 100644 --- a/src/mightypork/rogue/RogueApp.java +++ b/src/mightypork/rogue/RogueApp.java @@ -8,11 +8,9 @@ import mightypork.gamecore.core.events.MainLoopRequest; import mightypork.gamecore.core.events.ShudownRequest; import mightypork.gamecore.core.events.UserQuitRequest; import mightypork.gamecore.core.modules.BaseApp; -import mightypork.gamecore.eventbus.BusEvent; import mightypork.gamecore.gui.screens.ScreenRegistry; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.input.KeyStroke.Edge; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.render.events.FullscreenToggleRequest; import mightypork.gamecore.render.events.ScreenshotRequest; @@ -20,7 +18,6 @@ import mightypork.gamecore.render.events.ScreenshotRequestListener; import mightypork.gamecore.render.events.ViewportChangeEvent; import mightypork.gamecore.render.events.ViewportChangeListener; import mightypork.gamecore.resources.Res; -import mightypork.ion.Ion; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; import mightypork.rogue.screens.FpsOverlay; @@ -32,6 +29,9 @@ import mightypork.rogue.screens.story.ScreenStory; import mightypork.rogue.world.Inventory; import mightypork.rogue.world.WorldProvider; import mightypork.rogue.world.level.Level; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.ion.Ion; +import mightypork.utils.logging.Log; /** diff --git a/src/mightypork/rogue/RogueConfig.java b/src/mightypork/rogue/RogueConfig.java index 86e4f08..8e08f78 100644 --- a/src/mightypork/rogue/RogueConfig.java +++ b/src/mightypork/rogue/RogueConfig.java @@ -2,7 +2,7 @@ package mightypork.rogue; import mightypork.gamecore.core.Config.ConfigSetup; -import mightypork.gamecore.util.files.config.PropertyManager; +import mightypork.utils.files.config.PropertyManager; public class RogueConfig implements ConfigSetup { diff --git a/src/mightypork/rogue/RogueResources.java b/src/mightypork/rogue/RogueResources.java index 7ca744c..b160c83 100644 --- a/src/mightypork/rogue/RogueResources.java +++ b/src/mightypork/rogue/RogueResources.java @@ -1,7 +1,6 @@ package mightypork.rogue; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.resources.ResourceSetup; import mightypork.gamecore.resources.audio.SoundRegistry; import mightypork.gamecore.resources.fonts.FontRegistry; @@ -12,6 +11,7 @@ import mightypork.gamecore.resources.textures.GLTexture; import mightypork.gamecore.resources.textures.QuadGrid; import mightypork.gamecore.resources.textures.TextureRegistry; import mightypork.gamecore.resources.textures.WrapMode; +import mightypork.utils.math.constraints.rect.Rect; public class RogueResources implements ResourceSetup { diff --git a/src/mightypork/rogue/RogueStateManager.java b/src/mightypork/rogue/RogueStateManager.java index 25cdcc0..b4743a8 100644 --- a/src/mightypork/rogue/RogueStateManager.java +++ b/src/mightypork/rogue/RogueStateManager.java @@ -4,7 +4,7 @@ package mightypork.rogue; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.core.modules.AppModule; import mightypork.gamecore.gui.screens.impl.CrossfadeRequest; -import mightypork.gamecore.logging.Log; +import mightypork.utils.logging.Log; public class RogueStateManager extends AppModule { diff --git a/src/mightypork/rogue/events/LoadingOverlayRequest.java b/src/mightypork/rogue/events/LoadingOverlayRequest.java index b42e296..e8f2fbd 100644 --- a/src/mightypork/rogue/events/LoadingOverlayRequest.java +++ b/src/mightypork/rogue/events/LoadingOverlayRequest.java @@ -1,9 +1,9 @@ package mightypork.rogue.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.SingleReceiverEvent; import mightypork.rogue.screens.LoadingOverlay; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.SingleReceiverEvent; /** diff --git a/src/mightypork/rogue/events/RogueStateRequest.java b/src/mightypork/rogue/events/RogueStateRequest.java index 82d6cd5..8865200 100644 --- a/src/mightypork/rogue/events/RogueStateRequest.java +++ b/src/mightypork/rogue/events/RogueStateRequest.java @@ -1,9 +1,9 @@ package mightypork.rogue.events; -import mightypork.gamecore.eventbus.BusEvent; import mightypork.rogue.RogueStateManager; import mightypork.rogue.RogueStateManager.RogueState; +import mightypork.utils.eventbus.BusEvent; /** diff --git a/src/mightypork/rogue/screens/FpsOverlay.java b/src/mightypork/rogue/screens/FpsOverlay.java index b9a22ae..b33dd9a 100644 --- a/src/mightypork/rogue/screens/FpsOverlay.java +++ b/src/mightypork/rogue/screens/FpsOverlay.java @@ -1,9 +1,6 @@ package mightypork.rogue.screens; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.RectBound; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.core.Config; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.Action; @@ -13,8 +10,11 @@ import mightypork.gamecore.gui.screens.Overlay; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.strings.StringProvider; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.string.StringProvider; /** diff --git a/src/mightypork/rogue/screens/LoadingOverlay.java b/src/mightypork/rogue/screens/LoadingOverlay.java index 61aff36..125df45 100644 --- a/src/mightypork/rogue/screens/LoadingOverlay.java +++ b/src/mightypork/rogue/screens/LoadingOverlay.java @@ -1,21 +1,21 @@ package mightypork.rogue.screens; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.screens.Overlay; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.Utils; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.color.pal.PAL16; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.math.timing.TimedTask; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; -import mightypork.gamecore.util.strings.StringProvider; +import mightypork.utils.Support; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.NumAnimated; +import mightypork.utils.math.color.pal.PAL16; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.timing.TimedTask; +import mightypork.utils.string.StringProvider; /** @@ -49,7 +49,7 @@ public class LoadingOverlay extends Overlay { @Override public void run() { - Utils.runAsThread(new Runnable() { + Support.runAsThread(new Runnable() { @Override public void run() diff --git a/src/mightypork/rogue/screens/RogueScreen.java b/src/mightypork/rogue/screens/RogueScreen.java index edb77d2..deb4215 100644 --- a/src/mightypork/rogue/screens/RogueScreen.java +++ b/src/mightypork/rogue/screens/RogueScreen.java @@ -5,9 +5,9 @@ import mightypork.gamecore.core.events.UserQuitRequest; import mightypork.gamecore.core.events.UserQuitRequestListener; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.screens.LayeredScreen; -import mightypork.gamecore.util.annot.DefaultImpl; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; +import mightypork.utils.annotations.DefaultImpl; public class RogueScreen extends LayeredScreen implements UserQuitRequestListener { diff --git a/src/mightypork/rogue/screens/game/HeartBar.java b/src/mightypork/rogue/screens/game/HeartBar.java index 81ac3f9..d000636 100644 --- a/src/mightypork/rogue/screens/game/HeartBar.java +++ b/src/mightypork/rogue/screens/game/HeartBar.java @@ -1,13 +1,13 @@ package mightypork.rogue.screens.game; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.num.mutable.NumVar; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.BaseComponent; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.textures.TxQuad; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.num.var.NumVar; +import mightypork.utils.math.constraints.rect.Rect; public class HeartBar extends BaseComponent { diff --git a/src/mightypork/rogue/screens/game/IngameNav.java b/src/mightypork/rogue/screens/game/IngameNav.java index f7f9b2e..66f1340 100644 --- a/src/mightypork/rogue/screens/game/IngameNav.java +++ b/src/mightypork/rogue/screens/game/IngameNav.java @@ -1,8 +1,6 @@ package mightypork.rogue.screens.game; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.LayoutComponent; @@ -10,6 +8,8 @@ import mightypork.gamecore.gui.components.layout.FlowColumnLayout; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.textures.TxQuad; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; public class IngameNav extends LayoutComponent { diff --git a/src/mightypork/rogue/screens/game/InvSlot.java b/src/mightypork/rogue/screens/game/InvSlot.java index f04d794..34b493e 100644 --- a/src/mightypork/rogue/screens/game/InvSlot.java +++ b/src/mightypork/rogue/screens/game/InvSlot.java @@ -1,9 +1,6 @@ package mightypork.rogue.screens.game; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.caching.RectCache; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.input.ClickableComponent; @@ -11,13 +8,16 @@ import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.textures.TxQuad; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.world.PlayerFacade; import mightypork.rogue.world.WorldProvider; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.ItemType; +import mightypork.utils.Support; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.caching.RectCache; /** @@ -137,7 +137,7 @@ public class InvSlot extends ClickableComponent { } if (itm.getType() == ItemType.FOOD) { - rtTxP.setText(Calc.toString(itm.getFoodPoints() / 2D)); + rtTxP.setText(Support.str(itm.getFoodPoints() / 2D)); rtTxP.setColor(RGB.GREEN); rtTxP.render(); } else if (itm.getType() == ItemType.WEAPON) { diff --git a/src/mightypork/rogue/screens/game/LayerAskSave.java b/src/mightypork/rogue/screens/game/LayerAskSave.java index 78480c6..0fc10af 100644 --- a/src/mightypork/rogue/screens/game/LayerAskSave.java +++ b/src/mightypork/rogue/screens/game/LayerAskSave.java @@ -3,7 +3,6 @@ package mightypork.rogue.screens.game; import java.io.IOException; -import mightypork.dynmath.num.Num; import mightypork.gamecore.core.Config; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.AlignX; @@ -14,12 +13,13 @@ import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.screens.impl.FadingLayer; import mightypork.gamecore.input.KeyStroke.Edge; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.screens.game.ScreenGame.GScrState; import mightypork.rogue.world.WorldProvider; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; public class LayerAskSave extends FadingLayer { diff --git a/src/mightypork/rogue/screens/game/LayerDeath.java b/src/mightypork/rogue/screens/game/LayerDeath.java index fb6b1c8..db2c14f 100644 --- a/src/mightypork/rogue/screens/game/LayerDeath.java +++ b/src/mightypork/rogue/screens/game/LayerDeath.java @@ -3,7 +3,6 @@ package mightypork.rogue.screens.game; import java.io.IOException; -import mightypork.dynmath.num.Num; import mightypork.gamecore.core.Config; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.AlignX; @@ -16,14 +15,15 @@ import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.screens.impl.FadingLayer; import mightypork.gamecore.input.KeyStroke.Edge; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; import mightypork.rogue.screens.game.ScreenGame.GScrState; import mightypork.rogue.world.WorldProvider; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; public class LayerDeath extends FadingLayer { diff --git a/src/mightypork/rogue/screens/game/LayerGameUi.java b/src/mightypork/rogue/screens/game/LayerGameUi.java index f462dd6..ab36839 100644 --- a/src/mightypork/rogue/screens/game/LayerGameUi.java +++ b/src/mightypork/rogue/screens/game/LayerGameUi.java @@ -1,18 +1,18 @@ package mightypork.rogue.screens.game; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.strings.StringProvider; import mightypork.rogue.world.World; import mightypork.rogue.world.WorldProvider; import mightypork.rogue.world.gui.Minimap; import mightypork.rogue.world.gui.WorldConsoleRenderer; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.string.StringProvider; public class LayerGameUi extends ScreenLayer { diff --git a/src/mightypork/rogue/screens/game/LayerInv.java b/src/mightypork/rogue/screens/game/LayerInv.java index fe12f75..7d91c0f 100644 --- a/src/mightypork/rogue/screens/game/LayerInv.java +++ b/src/mightypork/rogue/screens/game/LayerInv.java @@ -1,8 +1,6 @@ package mightypork.rogue.screens.game; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.Config; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.layout.ConstraintLayout; @@ -14,14 +12,16 @@ import mightypork.gamecore.gui.screens.impl.FadingLayer; import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.strings.StringProvider; import mightypork.rogue.screens.game.ScreenGame.GScrState; import mightypork.rogue.world.PlayerFacade; import mightypork.rogue.world.World; import mightypork.rogue.world.WorldProvider; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.ItemType; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.string.StringProvider; public class LayerInv extends FadingLayer { diff --git a/src/mightypork/rogue/screens/game/LayerMapView.java b/src/mightypork/rogue/screens/game/LayerMapView.java index c7ee608..cf26ec7 100644 --- a/src/mightypork/rogue/screens/game/LayerMapView.java +++ b/src/mightypork/rogue/screens/game/LayerMapView.java @@ -1,12 +1,12 @@ package mightypork.rogue.screens.game; -import mightypork.dynmath.num.Num; import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.rogue.world.gui.MapView; import mightypork.rogue.world.gui.interaction.MIPKeyboard; import mightypork.rogue.world.gui.interaction.MIPMouse; +import mightypork.utils.math.constraints.num.Num; public class LayerMapView extends ScreenLayer { diff --git a/src/mightypork/rogue/screens/game/LayerWin.java b/src/mightypork/rogue/screens/game/LayerWin.java index 857f5b8..3bc59ab 100644 --- a/src/mightypork/rogue/screens/game/LayerWin.java +++ b/src/mightypork/rogue/screens/game/LayerWin.java @@ -3,7 +3,6 @@ package mightypork.rogue.screens.game; import java.io.File; -import mightypork.dynmath.num.Num; import mightypork.gamecore.core.Config; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.AlignX; @@ -17,10 +16,11 @@ import mightypork.gamecore.gui.screens.impl.FadingLayer; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; import mightypork.rogue.world.WorldProvider; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; public class LayerWin extends FadingLayer { diff --git a/src/mightypork/rogue/screens/game/ScreenGame.java b/src/mightypork/rogue/screens/game/ScreenGame.java index fd9591a..48ca26f 100644 --- a/src/mightypork/rogue/screens/game/ScreenGame.java +++ b/src/mightypork/rogue/screens/game/ScreenGame.java @@ -9,9 +9,7 @@ import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.ActionGroup; import mightypork.gamecore.input.KeyStroke.Edge; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.math.color.Color; import mightypork.rogue.Const; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; @@ -22,6 +20,8 @@ import mightypork.rogue.world.events.GameWinHandler; import mightypork.rogue.world.events.PlayerDeathHandler; import mightypork.rogue.world.events.WorldPauseRequest; import mightypork.rogue.world.events.WorldPauseRequest.PauseAction; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.Color; public class ScreenGame extends RogueScreen implements PlayerDeathHandler, GameWinHandler { diff --git a/src/mightypork/rogue/screens/menu/ScreenMainMenu.java b/src/mightypork/rogue/screens/menu/ScreenMainMenu.java index 19869d5..b992654 100644 --- a/src/mightypork/rogue/screens/menu/ScreenMainMenu.java +++ b/src/mightypork/rogue/screens/menu/ScreenMainMenu.java @@ -1,8 +1,6 @@ package mightypork.rogue.screens.menu; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.Config; import mightypork.gamecore.core.events.UserQuitRequest; import mightypork.gamecore.core.modules.AppAccess; @@ -18,11 +16,13 @@ import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.PAL16; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; import mightypork.rogue.screens.RogueScreen; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.PAL16; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; /** diff --git a/src/mightypork/rogue/screens/select_world/ScreenSelectWorld.java b/src/mightypork/rogue/screens/select_world/ScreenSelectWorld.java index 61a15b6..593dbfe 100644 --- a/src/mightypork/rogue/screens/select_world/ScreenSelectWorld.java +++ b/src/mightypork/rogue/screens/select_world/ScreenSelectWorld.java @@ -1,7 +1,6 @@ package mightypork.rogue.screens.select_world; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.Config; import mightypork.gamecore.core.WorkDir; import mightypork.gamecore.core.modules.AppAccess; @@ -12,14 +11,15 @@ import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.input.KeyStroke.Edge; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.PAL16; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; import mightypork.rogue.screens.RogueScreen; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.PAL16; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.rect.Rect; /** diff --git a/src/mightypork/rogue/screens/select_world/WorldSlot.java b/src/mightypork/rogue/screens/select_world/WorldSlot.java index 1fb94cc..5e1c551 100644 --- a/src/mightypork/rogue/screens/select_world/WorldSlot.java +++ b/src/mightypork/rogue/screens/select_world/WorldSlot.java @@ -3,8 +3,6 @@ package mightypork.rogue.screens.select_world; import java.io.File; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.AlignX; @@ -13,16 +11,18 @@ import mightypork.gamecore.gui.components.layout.ConstraintLayout; import mightypork.gamecore.gui.components.layout.GridLayout; import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.events.ScreenRequest; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.GLFont; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.strings.StringProvider; -import mightypork.ion.Ion; -import mightypork.ion.IonBundle; import mightypork.rogue.events.LoadingOverlayRequest; import mightypork.rogue.world.World; import mightypork.rogue.world.WorldProvider; +import mightypork.utils.ion.Ion; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.string.StringProvider; public class WorldSlot extends ConstraintLayout { @@ -39,7 +39,7 @@ public class WorldSlot extends ConstraintLayout { private File file; private String label; - private IonBundle worldBundle; + private IonDataBundle worldBundle; private TextButton loadBtn; @@ -119,7 +119,7 @@ public class WorldSlot extends ConstraintLayout { try { w = new World(); w.setSaveFile(file); - w.load((IonBundle) worldBundle.get("world")); + w.load((IonDataBundle) worldBundle.get("world")); WorldProvider.get().setWorld(w); getEventBus().send(new ScreenRequest("game")); diff --git a/src/mightypork/rogue/screens/story/ScreenStory.java b/src/mightypork/rogue/screens/story/ScreenStory.java index 40c3ae7..c26b1a6 100644 --- a/src/mightypork/rogue/screens/story/ScreenStory.java +++ b/src/mightypork/rogue/screens/story/ScreenStory.java @@ -1,8 +1,6 @@ package mightypork.rogue.screens.story; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.core.Config; import mightypork.gamecore.core.modules.AppAccess; import mightypork.gamecore.gui.Action; @@ -20,14 +18,16 @@ import mightypork.gamecore.input.Keys; import mightypork.gamecore.input.events.MouseButtonEvent; import mightypork.gamecore.input.events.MouseButtonHandler; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.math.timing.TimedTask; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; import mightypork.rogue.screens.RogueScreen; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.NumAnimated; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.timing.TimedTask; public class ScreenStory extends RogueScreen implements MouseButtonHandler { diff --git a/src/mightypork/rogue/world/Inventory.java b/src/mightypork/rogue/world/Inventory.java index 7e3751c..030eff2 100644 --- a/src/mightypork/rogue/world/Inventory.java +++ b/src/mightypork/rogue/world/Inventory.java @@ -3,14 +3,14 @@ package mightypork.rogue.world; import java.io.IOException; -import mightypork.ion.IonInput; -import mightypork.ion.IonObjBinary; -import mightypork.ion.IonOutput; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.Items; +import mightypork.utils.ion.IonBinary; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; -public class Inventory implements IonObjBinary { +public class Inventory implements IonBinary { public static final short ION_MARK = 54; private Item[] items; diff --git a/src/mightypork/rogue/world/PlayerControl.java b/src/mightypork/rogue/world/PlayerControl.java index beff05b..d990721 100644 --- a/src/mightypork/rogue/world/PlayerControl.java +++ b/src/mightypork/rogue/world/PlayerControl.java @@ -4,14 +4,14 @@ package mightypork.rogue.world; import java.util.HashSet; import java.util.Set; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityType; import mightypork.rogue.world.entity.modules.EntityMoveListener; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.constraints.vect.Vect; public abstract class PlayerControl { diff --git a/src/mightypork/rogue/world/PlayerData.java b/src/mightypork/rogue/world/PlayerData.java index 913b725..9db30e6 100644 --- a/src/mightypork/rogue/world/PlayerData.java +++ b/src/mightypork/rogue/world/PlayerData.java @@ -1,9 +1,9 @@ package mightypork.rogue.world; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; import mightypork.rogue.world.item.Item; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; /** @@ -11,7 +11,7 @@ import mightypork.rogue.world.item.Item; * * @author Ondřej Hruška (MightyPork) */ -public class PlayerData implements IonObjBundled { +public class PlayerData implements IonBundled { /** Player inventory size */ private static final int INV_SIZE = 8; @@ -29,7 +29,7 @@ public class PlayerData implements IonObjBundled { @Override - public void load(IonBundle bundle) + public void load(IonDataBundle bundle) { eid = bundle.get("eid", -1); level = bundle.get("floor", -1); @@ -40,7 +40,7 @@ public class PlayerData implements IonObjBundled { @Override - public void save(IonBundle bundle) + public void save(IonDataBundle bundle) { bundle.put("eid", eid); bundle.put("floor", level); diff --git a/src/mightypork/rogue/world/PlayerFacade.java b/src/mightypork/rogue/world/PlayerFacade.java index 08f5c5d..1585360 100644 --- a/src/mightypork/rogue/world/PlayerFacade.java +++ b/src/mightypork/rogue/world/PlayerFacade.java @@ -6,13 +6,13 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.ItemType; import mightypork.rogue.world.level.Level; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/rogue/world/World.java b/src/mightypork/rogue/world/World.java index 29131ff..233a416 100644 --- a/src/mightypork/rogue/world/World.java +++ b/src/mightypork/rogue/world/World.java @@ -6,21 +6,20 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Random; -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.EventBus; -import mightypork.gamecore.eventbus.clients.DelegatingClient; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.error.CorruptDataException; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.timing.Pauseable; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; import mightypork.rogue.world.entity.Entities; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.events.GameWinHandler; import mightypork.rogue.world.events.PlayerDeathHandler; import mightypork.rogue.world.level.Level; +import mightypork.utils.eventbus.BusAccess; +import mightypork.utils.eventbus.EventBus; +import mightypork.utils.eventbus.clients.DelegatingClient; +import mightypork.utils.interfaces.Pauseable; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.logging.Log; +import mightypork.utils.math.algo.Coord; /** @@ -28,7 +27,7 @@ import mightypork.rogue.world.level.Level; * * @author Ondřej Hruška (MightyPork) */ -public class World implements DelegatingClient, BusAccess, IonObjBundled, Pauseable, Updateable, PlayerDeathHandler, GameWinHandler { +public class World implements DelegatingClient, BusAccess, IonBundled, Pauseable, Updateable, PlayerDeathHandler, GameWinHandler { // not saved stuffs private final PlayerFacade playerFacade = new PlayerFacade(this); @@ -70,7 +69,7 @@ public class World implements DelegatingClient, BusAccess, IonObjBundled, Pausea @Override - public void load(IonBundle in) + public void load(IonDataBundle in) { seed = in.get("seed", seed); eid = in.get("next_eid", eid); @@ -99,13 +98,13 @@ public class World implements DelegatingClient, BusAccess, IonObjBundled, Pausea } } - throw new CorruptDataException("Player not found in world."); + throw new RuntimeException("Player not found in world."); } } @Override - public void save(IonBundle out) + public void save(IonDataBundle out) { out.put("seed", seed); out.put("next_eid", eid); diff --git a/src/mightypork/rogue/world/WorldConsole.java b/src/mightypork/rogue/world/WorldConsole.java index c413c10..a324c5e 100644 --- a/src/mightypork/rogue/world/WorldConsole.java +++ b/src/mightypork/rogue/world/WorldConsole.java @@ -6,11 +6,11 @@ import java.util.Deque; import java.util.Iterator; import java.util.concurrent.LinkedBlockingDeque; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.item.Item; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.NumAnimated; /** diff --git a/src/mightypork/rogue/world/WorldProvider.java b/src/mightypork/rogue/world/WorldProvider.java index d49c74a..c59a5f0 100644 --- a/src/mightypork/rogue/world/WorldProvider.java +++ b/src/mightypork/rogue/world/WorldProvider.java @@ -4,13 +4,13 @@ package mightypork.rogue.world; import java.io.File; import java.io.IOException; -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.clients.RootBusNode; -import mightypork.gamecore.logging.Log; -import mightypork.ion.Ion; -import mightypork.ion.IonBundle; import mightypork.rogue.world.gen.WorldCreator; import mightypork.rogue.world.level.Level; +import mightypork.utils.eventbus.BusAccess; +import mightypork.utils.eventbus.clients.RootBusNode; +import mightypork.utils.ion.Ion; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.logging.Log; /** @@ -94,7 +94,7 @@ public class WorldProvider extends RootBusNode { { Log.f2("Loading world from: " + file); - final IonBundle bu = Ion.fromFile(file); + final IonDataBundle bu = Ion.fromFile(file); setWorld(bu.loadBundled("world", new World())); world.setSaveFile(file); } @@ -115,7 +115,7 @@ public class WorldProvider extends RootBusNode { Log.f2("Saving world to: " + file); - final IonBundle bu = new IonBundle(); + final IonDataBundle bu = new IonDataBundle(); bu.put("level", world.getPlayer().getLevelNumber()); bu.putBundled("world", world); diff --git a/src/mightypork/rogue/world/WorldRenderer.java b/src/mightypork/rogue/world/WorldRenderer.java index 21aadc1..4597e33 100644 --- a/src/mightypork/rogue/world/WorldRenderer.java +++ b/src/mightypork/rogue/world/WorldRenderer.java @@ -1,20 +1,20 @@ package mightypork.rogue.world; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectConst; -import mightypork.dynmath.rect.proxy.RectProxy; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.Res; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.Const; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.level.render.TileRenderContext; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectConst; +import mightypork.utils.math.constraints.rect.proxy.RectProxy; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.VectConst; /** diff --git a/src/mightypork/rogue/world/entity/AiTimer.java b/src/mightypork/rogue/world/entity/AiTimer.java index 0f1c2b1..2e4545a 100644 --- a/src/mightypork/rogue/world/entity/AiTimer.java +++ b/src/mightypork/rogue/world/entity/AiTimer.java @@ -1,12 +1,12 @@ package mightypork.rogue.world.entity; -import mightypork.gamecore.util.math.timing.TaskRepeater; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.timing.TaskRepeater; -public abstract class AiTimer extends TaskRepeater implements IonObjBundled { +public abstract class AiTimer extends TaskRepeater implements IonBundled { public AiTimer(double duration) { @@ -19,7 +19,7 @@ public abstract class AiTimer extends TaskRepeater implements IonObjBundled { @Override - public void load(IonBundle bundle) + public void load(IonDataBundle bundle) { final boolean wasPaused = bundle.get("paused", isPaused()); if (wasPaused) { @@ -34,7 +34,7 @@ public abstract class AiTimer extends TaskRepeater implements IonObjBundled { @Override - public void save(IonBundle bundle) + public void save(IonDataBundle bundle) { bundle.put("paused", isPaused()); bundle.put("progress", getProgress()); diff --git a/src/mightypork/rogue/world/entity/Entities.java b/src/mightypork/rogue/world/entity/Entities.java index 8c19b22..7d7d7fd 100644 --- a/src/mightypork/rogue/world/entity/Entities.java +++ b/src/mightypork/rogue/world/entity/Entities.java @@ -4,12 +4,12 @@ package mightypork.rogue.world.entity; import java.io.IOException; import java.util.Collection; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.entity.impl.EntityBossRat; import mightypork.rogue.world.entity.impl.EntityBrownRat; import mightypork.rogue.world.entity.impl.EntityGrayRat; import mightypork.rogue.world.entity.impl.EntityPlayer; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; /** diff --git a/src/mightypork/rogue/world/entity/Entity.java b/src/mightypork/rogue/world/entity/Entity.java index 52af7e7..3014b4a 100644 --- a/src/mightypork/rogue/world/entity/Entity.java +++ b/src/mightypork/rogue/world/entity/Entity.java @@ -6,19 +6,19 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import mightypork.gamecore.eventbus.clients.DelegatingClient; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.error.IllegalValueException; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; import mightypork.rogue.world.World; import mightypork.rogue.world.entity.modules.EntityModuleHealth; import mightypork.rogue.world.entity.modules.EntityModulePosition; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.level.render.MapRenderContext; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.eventbus.clients.DelegatingClient; +import mightypork.utils.exceptions.IllegalValueException; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.pathfinding.PathFinder; /** @@ -26,7 +26,7 @@ import mightypork.rogue.world.level.render.MapRenderContext; * * @author Ondřej Hruška (MightyPork) */ -public abstract class Entity implements IonObjBundled, Updateable, DelegatingClient { +public abstract class Entity implements IonBundled, Updateable, DelegatingClient { private Level level; private final EntityModel model; @@ -56,47 +56,47 @@ public abstract class Entity implements IonObjBundled, Updateable, DelegatingCli @Override - public final void save(IonBundle bundle) + public final void save(IonDataBundle bundle) { bundle.put("eid", entityId); - final IonBundle modulesBundle = new IonBundle(); + final IonDataBundle modulesBundle = new IonDataBundle(); for (final Entry entry : modules.entrySet()) { modulesBundle.putBundled(entry.getKey(), entry.getValue()); } bundle.put("modules", modulesBundle); - final IonBundle extra = new IonBundle(); + final IonDataBundle extra = new IonDataBundle(); saveExtra(extra); bundle.put("extra", extra); } @DefaultImpl - protected void saveExtra(IonBundle bundle) + protected void saveExtra(IonDataBundle bundle) { } @Override - public final void load(IonBundle bundle) + public final void load(IonDataBundle bundle) { entityId = bundle.get("eid", -1); if (entityId < 0) throw new IllegalValueException("Bad entity id: " + entityId); - final IonBundle modulesBundle = bundle.get("modules", new IonBundle()); + final IonDataBundle modulesBundle = bundle.get("modules", new IonDataBundle()); for (final Entry entry : modules.entrySet()) { modulesBundle.loadBundled(entry.getKey(), entry.getValue()); } - final IonBundle extra = bundle.get("extra", new IonBundle()); + final IonDataBundle extra = bundle.get("extra", new IonDataBundle()); loadExtra(extra); } @DefaultImpl - protected void loadExtra(IonBundle bundle) + protected void loadExtra(IonDataBundle bundle) { } diff --git a/src/mightypork/rogue/world/entity/EntityModel.java b/src/mightypork/rogue/world/entity/EntityModel.java index c996375..db533f3 100644 --- a/src/mightypork/rogue/world/entity/EntityModel.java +++ b/src/mightypork/rogue/world/entity/EntityModel.java @@ -3,10 +3,10 @@ package mightypork.rogue.world.entity; import java.io.IOException; -import mightypork.ion.IonBundle; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.World; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; /** @@ -59,7 +59,7 @@ public final class EntityModel { public Entity loadEntity(IonInput in) throws IOException { - final IonBundle bundle = in.readBundle(); + final IonDataBundle bundle = in.readBundle(); final Entity ent = createEntity(-1); ent.load(bundle); return ent; @@ -68,7 +68,7 @@ public final class EntityModel { public void saveEntity(IonOutput out, Entity entity) throws IOException { - final IonBundle bundle = new IonBundle(); + final IonDataBundle bundle = new IonDataBundle(); entity.save(bundle); out.writeBundle(bundle); } diff --git a/src/mightypork/rogue/world/entity/EntityModule.java b/src/mightypork/rogue/world/entity/EntityModule.java index 9ec6349..6b217b0 100644 --- a/src/mightypork/rogue/world/entity/EntityModule.java +++ b/src/mightypork/rogue/world/entity/EntityModule.java @@ -1,10 +1,10 @@ package mightypork.rogue.world.entity; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; /** @@ -13,7 +13,7 @@ import mightypork.ion.IonObjBundled; * * @author Ondřej Hruška (MightyPork) */ -public abstract class EntityModule implements IonObjBundled, Updateable { +public abstract class EntityModule implements IonBundled, Updateable { protected final Entity entity; @@ -32,14 +32,14 @@ public abstract class EntityModule implements IonObjBundled, Updateable { @Override @DefaultImpl - public void load(IonBundle bundle) + public void load(IonDataBundle bundle) { } @Override @DefaultImpl - public void save(IonBundle bundle) + public void save(IonDataBundle bundle) { } diff --git a/src/mightypork/rogue/world/entity/EntityPathFinder.java b/src/mightypork/rogue/world/entity/EntityPathFinder.java index 7f5f446..95a0d0f 100644 --- a/src/mightypork/rogue/world/entity/EntityPathFinder.java +++ b/src/mightypork/rogue/world/entity/EntityPathFinder.java @@ -3,11 +3,11 @@ package mightypork.rogue.world.entity; import java.util.List; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.algo.pathfinding.Heuristic; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.algo.pathfinding.Heuristic; +import mightypork.utils.math.algo.pathfinding.PathFinder; /** diff --git a/src/mightypork/rogue/world/entity/impl/BossRatAi.java b/src/mightypork/rogue/world/entity/impl/BossRatAi.java index c078146..3ec6525 100644 --- a/src/mightypork/rogue/world/entity/impl/BossRatAi.java +++ b/src/mightypork/rogue/world/entity/impl/BossRatAi.java @@ -1,9 +1,9 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.Calc; import mightypork.rogue.world.entity.AiTimer; import mightypork.rogue.world.entity.Entity; +import mightypork.utils.math.Calc; public class BossRatAi extends GrayRatAi { diff --git a/src/mightypork/rogue/world/entity/impl/BrownRatAi.java b/src/mightypork/rogue/world/entity/impl/BrownRatAi.java index 81b94f1..70e7a91 100644 --- a/src/mightypork/rogue/world/entity/impl/BrownRatAi.java +++ b/src/mightypork/rogue/world/entity/impl/BrownRatAi.java @@ -1,8 +1,8 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.Calc; import mightypork.rogue.world.entity.Entity; +import mightypork.utils.math.Calc; public class BrownRatAi extends GrayRatAi { diff --git a/src/mightypork/rogue/world/entity/impl/EntityBossRat.java b/src/mightypork/rogue/world/entity/impl/EntityBossRat.java index b77fef8..67a09c4 100644 --- a/src/mightypork/rogue/world/entity/impl/EntityBossRat.java +++ b/src/mightypork/rogue/world/entity/impl/EntityBossRat.java @@ -1,7 +1,6 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityModel; import mightypork.rogue.world.entity.EntityPathFinder; @@ -9,6 +8,7 @@ import mightypork.rogue.world.entity.EntityRenderer; import mightypork.rogue.world.entity.EntityType; import mightypork.rogue.world.entity.render.EntityRendererMobLR; import mightypork.rogue.world.events.GameWinEvent; +import mightypork.utils.math.algo.pathfinding.PathFinder; public class EntityBossRat extends Entity { diff --git a/src/mightypork/rogue/world/entity/impl/EntityBrownRat.java b/src/mightypork/rogue/world/entity/impl/EntityBrownRat.java index 8ff9040..5dcc581 100644 --- a/src/mightypork/rogue/world/entity/impl/EntityBrownRat.java +++ b/src/mightypork/rogue/world/entity/impl/EntityBrownRat.java @@ -1,8 +1,6 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityModel; import mightypork.rogue.world.entity.EntityPathFinder; @@ -10,6 +8,8 @@ import mightypork.rogue.world.entity.EntityRenderer; import mightypork.rogue.world.entity.EntityType; import mightypork.rogue.world.entity.render.EntityRendererMobLR; import mightypork.rogue.world.item.Items; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.pathfinding.PathFinder; public class EntityBrownRat extends Entity { diff --git a/src/mightypork/rogue/world/entity/impl/EntityGrayRat.java b/src/mightypork/rogue/world/entity/impl/EntityGrayRat.java index 966bdd3..28a96ff 100644 --- a/src/mightypork/rogue/world/entity/impl/EntityGrayRat.java +++ b/src/mightypork/rogue/world/entity/impl/EntityGrayRat.java @@ -1,8 +1,6 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityModel; import mightypork.rogue.world.entity.EntityPathFinder; @@ -10,6 +8,8 @@ import mightypork.rogue.world.entity.EntityRenderer; import mightypork.rogue.world.entity.EntityType; import mightypork.rogue.world.entity.render.EntityRendererMobLR; import mightypork.rogue.world.item.Items; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.pathfinding.PathFinder; public class EntityGrayRat extends Entity { diff --git a/src/mightypork/rogue/world/entity/impl/EntityPlayer.java b/src/mightypork/rogue/world/entity/impl/EntityPlayer.java index 390f6b2..9bdb395 100644 --- a/src/mightypork/rogue/world/entity/impl/EntityPlayer.java +++ b/src/mightypork/rogue/world/entity/impl/EntityPlayer.java @@ -1,15 +1,20 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; -import mightypork.rogue.world.entity.*; +import mightypork.rogue.world.entity.Entity; +import mightypork.rogue.world.entity.EntityModel; +import mightypork.rogue.world.entity.EntityModule; +import mightypork.rogue.world.entity.EntityPathFinder; +import mightypork.rogue.world.entity.EntityRenderer; +import mightypork.rogue.world.entity.EntityType; import mightypork.rogue.world.entity.modules.EntityMoveListener; import mightypork.rogue.world.entity.render.EntityRendererMobLR; import mightypork.rogue.world.events.PlayerKilledEvent; import mightypork.rogue.world.events.PlayerStepEndEvent; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.pathfinding.PathFinder; public class EntityPlayer extends Entity { diff --git a/src/mightypork/rogue/world/entity/impl/GrayRatAi.java b/src/mightypork/rogue/world/entity/impl/GrayRatAi.java index 3a88e80..0f8bf61 100644 --- a/src/mightypork/rogue/world/entity/impl/GrayRatAi.java +++ b/src/mightypork/rogue/world/entity/impl/GrayRatAi.java @@ -1,8 +1,8 @@ package mightypork.rogue.world.entity.impl; -import mightypork.gamecore.util.math.Calc; import mightypork.rogue.world.entity.Entity; +import mightypork.utils.math.Calc; public class GrayRatAi extends MonsterAi { diff --git a/src/mightypork/rogue/world/entity/impl/MonsterAi.java b/src/mightypork/rogue/world/entity/impl/MonsterAi.java index 3ddf5b8..50cef70 100644 --- a/src/mightypork/rogue/world/entity/impl/MonsterAi.java +++ b/src/mightypork/rogue/world/entity/impl/MonsterAi.java @@ -3,20 +3,20 @@ package mightypork.rogue.world.entity.impl; import java.util.List; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinderProxy; -import mightypork.ion.IonBundle; import mightypork.rogue.world.entity.AiTimer; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityModule; import mightypork.rogue.world.entity.EntityType; import mightypork.rogue.world.entity.modules.EntityMoveListener; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.algo.pathfinding.PathFinder; +import mightypork.utils.math.algo.pathfinding.PathFinderProxy; public class MonsterAi extends EntityModule implements EntityMoveListener { @@ -131,7 +131,7 @@ public class MonsterAi extends EntityModule implements EntityMoveListener { @Override - public void save(IonBundle bundle) + public void save(IonDataBundle bundle) { bundle.putBundled("tscan", timerFindPrey); bundle.putBundled("tattack", timerAttack); @@ -143,7 +143,7 @@ public class MonsterAi extends EntityModule implements EntityMoveListener { @Override - public void load(IonBundle bundle) + public void load(IonDataBundle bundle) { bundle.loadBundled("tscan", timerFindPrey); bundle.loadBundled("tattack", timerAttack); diff --git a/src/mightypork/rogue/world/entity/modules/EntityModuleHealth.java b/src/mightypork/rogue/world/entity/modules/EntityModuleHealth.java index d3b1e05..0ba29f8 100644 --- a/src/mightypork/rogue/world/entity/modules/EntityModuleHealth.java +++ b/src/mightypork/rogue/world/entity/modules/EntityModuleHealth.java @@ -1,11 +1,11 @@ package mightypork.rogue.world.entity.modules; -import mightypork.gamecore.util.error.IllegalValueException; -import mightypork.gamecore.util.math.Calc; -import mightypork.ion.IonBundle; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityModule; +import mightypork.utils.exceptions.IllegalValueException; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.Calc; public class EntityModuleHealth extends EntityModule { @@ -24,7 +24,7 @@ public class EntityModuleHealth extends EntityModule { @Override - public void load(IonBundle bundle) + public void load(IonDataBundle bundle) { health = bundle.get("health", health); maxHealth = bundle.get("max_health", maxHealth); @@ -33,7 +33,7 @@ public class EntityModuleHealth extends EntityModule { @Override - public void save(IonBundle bundle) + public void save(IonDataBundle bundle) { bundle.put("health", health); bundle.put("max_health", maxHealth); diff --git a/src/mightypork/rogue/world/entity/modules/EntityModulePosition.java b/src/mightypork/rogue/world/entity/modules/EntityModulePosition.java index 6831a5c..80c5b1d 100644 --- a/src/mightypork/rogue/world/entity/modules/EntityModulePosition.java +++ b/src/mightypork/rogue/world/entity/modules/EntityModulePosition.java @@ -7,18 +7,18 @@ import java.util.List; import java.util.Queue; import java.util.Set; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.ion.IonBundle; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityModule; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.constraints.vect.VectConst; public class EntityModulePosition extends EntityModule { /** Last pos, will be freed upon finishing move */ - private final Coord lastPos = new Coord(0, 0); + private Coord lastPos = new Coord(0, 0); private boolean walking = false; private final Queue path = new LinkedList<>(); @@ -39,20 +39,20 @@ public class EntityModulePosition extends EntityModule { @Override - public void save(IonBundle bundle) + public void save(IonDataBundle bundle) { bundle.putSequence("path", path); - bundle.putBundled("lpos", lastPos); + bundle.put("lpos", lastPos); bundle.putBundled("pos", entityPos); bundle.put("step_time", stepTime); } @Override - public void load(IonBundle bundle) + public void load(IonDataBundle bundle) { bundle.loadSequence("path", path); - bundle.loadBundled("lpos", lastPos); + lastPos = bundle.get("lpos", lastPos); bundle.loadBundled("pos", entityPos); stepTime = bundle.get("step_time", stepTime); diff --git a/src/mightypork/rogue/world/entity/modules/EntityPos.java b/src/mightypork/rogue/world/entity/modules/EntityPos.java index 8a297c8..9af9005 100644 --- a/src/mightypork/rogue/world/entity/modules/EntityPos.java +++ b/src/mightypork/rogue/world/entity/modules/EntityPos.java @@ -1,15 +1,15 @@ package mightypork.rogue.world.entity.modules; -import mightypork.dynmath.vect.Vect; -import mightypork.dynmath.vect.VectConst; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.gamecore.util.math.timing.animation.VectAnimated; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.VectAnimated; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.constraints.vect.VectConst; /** @@ -17,9 +17,9 @@ import mightypork.ion.IonObjBundled; * * @author Ondřej Hruška (MightyPork) */ -class EntityPos implements IonObjBundled, Updateable { +class EntityPos implements IonBundled, Updateable { - private final Coord coord = new Coord(0, 0); + private Coord coord = new Coord(0, 0); private final VectAnimated walkOffset = new VectAnimated(Vect.ZERO, Easing.LINEAR); @@ -47,17 +47,17 @@ class EntityPos implements IonObjBundled, Updateable { @Override - public void load(IonBundle in) + public void load(IonDataBundle in) { - in.loadBundled("pos", coord); + coord = in.get("pos", coord); walkOffset.reset(); } @Override - public void save(IonBundle out) + public void save(IonDataBundle out) { - out.putBundled("pos", coord); + out.put("pos", coord); } diff --git a/src/mightypork/rogue/world/entity/render/EntityRendererMobLR.java b/src/mightypork/rogue/world/entity/render/EntityRendererMobLR.java index c36e375..a70dcdb 100644 --- a/src/mightypork/rogue/world/entity/render/EntityRendererMobLR.java +++ b/src/mightypork/rogue/world/entity/render/EntityRendererMobLR.java @@ -1,20 +1,20 @@ package mightypork.rogue.world.entity.render; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.num.mutable.NumVar; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.textures.TxQuad; import mightypork.gamecore.resources.textures.TxSheet; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.color.Color; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.entity.EntityRenderer; import mightypork.rogue.world.level.render.MapRenderContext; +import mightypork.utils.math.Calc; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.num.var.NumVar; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.vect.Vect; /** diff --git a/src/mightypork/rogue/world/events/GameWinEvent.java b/src/mightypork/rogue/world/events/GameWinEvent.java index 35bbb53..4d544fc 100644 --- a/src/mightypork/rogue/world/events/GameWinEvent.java +++ b/src/mightypork/rogue/world/events/GameWinEvent.java @@ -1,7 +1,7 @@ package mightypork.rogue.world.events; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; public class GameWinEvent extends BusEvent { diff --git a/src/mightypork/rogue/world/events/PlayerKilledEvent.java b/src/mightypork/rogue/world/events/PlayerKilledEvent.java index 322cfde..50c00e2 100644 --- a/src/mightypork/rogue/world/events/PlayerKilledEvent.java +++ b/src/mightypork/rogue/world/events/PlayerKilledEvent.java @@ -1,8 +1,8 @@ package mightypork.rogue.world.events; -import mightypork.gamecore.eventbus.BusEvent; import mightypork.rogue.world.WorldProvider; +import mightypork.utils.eventbus.BusEvent; public class PlayerKilledEvent extends BusEvent { diff --git a/src/mightypork/rogue/world/events/PlayerStepEndEvent.java b/src/mightypork/rogue/world/events/PlayerStepEndEvent.java index 3dffd9e..a6dc4d1 100644 --- a/src/mightypork/rogue/world/events/PlayerStepEndEvent.java +++ b/src/mightypork/rogue/world/events/PlayerStepEndEvent.java @@ -1,9 +1,9 @@ package mightypork.rogue.world.events; -import mightypork.gamecore.eventbus.BusEvent; -import mightypork.gamecore.eventbus.event_flags.NotLoggedEvent; import mightypork.rogue.world.entity.impl.EntityPlayer; +import mightypork.utils.eventbus.BusEvent; +import mightypork.utils.eventbus.events.flags.NotLoggedEvent; @NotLoggedEvent diff --git a/src/mightypork/rogue/world/events/WorldAscendRequest.java b/src/mightypork/rogue/world/events/WorldAscendRequest.java index e7ddcfe..3a35b87 100644 --- a/src/mightypork/rogue/world/events/WorldAscendRequest.java +++ b/src/mightypork/rogue/world/events/WorldAscendRequest.java @@ -1,7 +1,7 @@ package mightypork.rogue.world.events; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; /** diff --git a/src/mightypork/rogue/world/events/WorldDescendRequest.java b/src/mightypork/rogue/world/events/WorldDescendRequest.java index 1d00852..0a18dc8 100644 --- a/src/mightypork/rogue/world/events/WorldDescendRequest.java +++ b/src/mightypork/rogue/world/events/WorldDescendRequest.java @@ -1,7 +1,7 @@ package mightypork.rogue.world.events; -import mightypork.gamecore.eventbus.BusEvent; +import mightypork.utils.eventbus.BusEvent; public class WorldDescendRequest extends BusEvent { diff --git a/src/mightypork/rogue/world/events/WorldPauseRequest.java b/src/mightypork/rogue/world/events/WorldPauseRequest.java index 7280e0d..33a951b 100644 --- a/src/mightypork/rogue/world/events/WorldPauseRequest.java +++ b/src/mightypork/rogue/world/events/WorldPauseRequest.java @@ -1,8 +1,8 @@ package mightypork.rogue.world.events; -import mightypork.gamecore.eventbus.BusEvent; import mightypork.rogue.world.World; +import mightypork.utils.eventbus.BusEvent; /** diff --git a/src/mightypork/rogue/world/gen/LevelBuilder.java b/src/mightypork/rogue/world/gen/LevelBuilder.java index 00c51e7..04da72c 100644 --- a/src/mightypork/rogue/world/gen/LevelBuilder.java +++ b/src/mightypork/rogue/world/gen/LevelBuilder.java @@ -7,12 +7,12 @@ import java.util.LinkedList; import java.util.List; import java.util.Random; -import mightypork.gamecore.util.math.Range; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.World; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.level.Level; +import mightypork.utils.math.Range; +import mightypork.utils.math.algo.Coord; public class LevelBuilder { diff --git a/src/mightypork/rogue/world/gen/RoomBuilder.java b/src/mightypork/rogue/world/gen/RoomBuilder.java index 1f52c4e..5fec41b 100644 --- a/src/mightypork/rogue/world/gen/RoomBuilder.java +++ b/src/mightypork/rogue/world/gen/RoomBuilder.java @@ -3,7 +3,7 @@ package mightypork.rogue.world.gen; import java.util.Random; -import mightypork.gamecore.util.math.algo.Coord; +import mightypork.utils.math.algo.Coord; /** diff --git a/src/mightypork/rogue/world/gen/RoomEntry.java b/src/mightypork/rogue/world/gen/RoomEntry.java index fc5735e..5418a97 100644 --- a/src/mightypork/rogue/world/gen/RoomEntry.java +++ b/src/mightypork/rogue/world/gen/RoomEntry.java @@ -1,7 +1,7 @@ package mightypork.rogue.world.gen; -import mightypork.gamecore.util.math.algo.Coord; +import mightypork.utils.math.algo.Coord; /** diff --git a/src/mightypork/rogue/world/gen/Rooms.java b/src/mightypork/rogue/world/gen/Rooms.java index 86a399a..f363849 100644 --- a/src/mightypork/rogue/world/gen/Rooms.java +++ b/src/mightypork/rogue/world/gen/Rooms.java @@ -1,7 +1,14 @@ package mightypork.rogue.world.gen; -import mightypork.rogue.world.gen.rooms.*; +import mightypork.rogue.world.gen.rooms.BasicRoom; +import mightypork.rogue.world.gen.rooms.BossRoom; +import mightypork.rogue.world.gen.rooms.DeadEndRoom; +import mightypork.rogue.world.gen.rooms.EntranceRoom; +import mightypork.rogue.world.gen.rooms.ExitRoom; +import mightypork.rogue.world.gen.rooms.ItemShrineRoom; +import mightypork.rogue.world.gen.rooms.StorageRoom; +import mightypork.rogue.world.gen.rooms.TreasureChestRoom; import mightypork.rogue.world.item.Item; diff --git a/src/mightypork/rogue/world/gen/ScratchMap.java b/src/mightypork/rogue/world/gen/ScratchMap.java index 1da8bed..98dc3af 100644 --- a/src/mightypork/rogue/world/gen/ScratchMap.java +++ b/src/mightypork/rogue/world/gen/ScratchMap.java @@ -7,19 +7,20 @@ import java.util.List; import java.util.Random; import java.util.Set; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.algo.pathfinding.Heuristic; -import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.tile.Tile; import mightypork.rogue.world.tile.TileModel; import mightypork.rogue.world.tile.Tiles; +import mightypork.utils.Support; +import mightypork.utils.logging.Log; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.algo.pathfinding.Heuristic; +import mightypork.utils.math.algo.pathfinding.PathFinder; /** @@ -620,7 +621,7 @@ public class ScratchMap { //@formatter:off throw new WorldGenError( "Could not put entity into a level map: e_pos=" + pos - + ", tile: " + Log.str(t) + + ", tile: " + Support.str(t) + ", t.wa " + t.isWalkable() + ", t.oc " + t.isOccupied() + ", ent.. " + e.getVisualName()); diff --git a/src/mightypork/rogue/world/gen/WorldCreator.java b/src/mightypork/rogue/world/gen/WorldCreator.java index f03d442..bb5e763 100644 --- a/src/mightypork/rogue/world/gen/WorldCreator.java +++ b/src/mightypork/rogue/world/gen/WorldCreator.java @@ -5,9 +5,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Range; import mightypork.rogue.world.World; import mightypork.rogue.world.entity.Entities; import mightypork.rogue.world.entity.Entity; @@ -16,6 +13,9 @@ import mightypork.rogue.world.gen.themes.ThemeBrick; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.ItemModel; import mightypork.rogue.world.item.Items; +import mightypork.utils.logging.Log; +import mightypork.utils.math.Calc; +import mightypork.utils.math.Range; public class WorldCreator { diff --git a/src/mightypork/rogue/world/gen/rooms/AbstractRectRoom.java b/src/mightypork/rogue/world/gen/rooms/AbstractRectRoom.java index 04caaa2..a14fbcb 100644 --- a/src/mightypork/rogue/world/gen/rooms/AbstractRectRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/AbstractRectRoom.java @@ -3,15 +3,15 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Moves; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.RoomBuilder; import mightypork.rogue.world.gen.RoomEntry; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Moves; public abstract class AbstractRectRoom implements RoomBuilder { diff --git a/src/mightypork/rogue/world/gen/rooms/BasicRoom.java b/src/mightypork/rogue/world/gen/rooms/BasicRoom.java index 2a4a9e0..d5c26c8 100644 --- a/src/mightypork/rogue/world/gen/rooms/BasicRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/BasicRoom.java @@ -3,10 +3,10 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.algo.Coord; public class BasicRoom extends AbstractRectRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/BossRoom.java b/src/mightypork/rogue/world/gen/rooms/BossRoom.java index 97108a6..5fcbd7e 100644 --- a/src/mightypork/rogue/world/gen/rooms/BossRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/BossRoom.java @@ -3,12 +3,12 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.entity.Entities; import mightypork.rogue.world.entity.Entity; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.WorldGenError; +import mightypork.utils.math.algo.Coord; public class BossRoom extends SecretRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java b/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java index b345c26..e1644a5 100644 --- a/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java @@ -3,10 +3,10 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.algo.Coord; public class DeadEndRoom extends AbstractRectRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/EntranceRoom.java b/src/mightypork/rogue/world/gen/rooms/EntranceRoom.java index b40a232..854cf0f 100644 --- a/src/mightypork/rogue/world/gen/rooms/EntranceRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/EntranceRoom.java @@ -3,12 +3,12 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; public class EntranceRoom extends AbstractRectRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/ExitRoom.java b/src/mightypork/rogue/world/gen/rooms/ExitRoom.java index ec908e2..8b7b967 100644 --- a/src/mightypork/rogue/world/gen/rooms/ExitRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/ExitRoom.java @@ -3,11 +3,11 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.algo.Coord; public class ExitRoom extends AbstractRectRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/ItemShrineRoom.java b/src/mightypork/rogue/world/gen/rooms/ItemShrineRoom.java index 51fa884..9683122 100644 --- a/src/mightypork/rogue/world/gen/rooms/ItemShrineRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/ItemShrineRoom.java @@ -3,12 +3,12 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.WorldGenError; import mightypork.rogue.world.item.Item; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; public class ItemShrineRoom extends SecretRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/SecretRoom.java b/src/mightypork/rogue/world/gen/rooms/SecretRoom.java index cc1dacc..90eba68 100644 --- a/src/mightypork/rogue/world/gen/rooms/SecretRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/SecretRoom.java @@ -3,11 +3,11 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; public abstract class SecretRoom extends AbstractRectRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/StorageRoom.java b/src/mightypork/rogue/world/gen/rooms/StorageRoom.java index 9515808..5e58e79 100644 --- a/src/mightypork/rogue/world/gen/rooms/StorageRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/StorageRoom.java @@ -3,11 +3,11 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.item.Items; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; public class StorageRoom extends SecretRoom { diff --git a/src/mightypork/rogue/world/gen/rooms/TreasureChestRoom.java b/src/mightypork/rogue/world/gen/rooms/TreasureChestRoom.java index 0e46f57..cf551e8 100644 --- a/src/mightypork/rogue/world/gen/rooms/TreasureChestRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/TreasureChestRoom.java @@ -3,11 +3,11 @@ package mightypork.rogue.world.gen.rooms; import java.util.Random; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.item.Item; +import mightypork.utils.math.algo.Coord; public class TreasureChestRoom extends ItemShrineRoom { diff --git a/src/mightypork/rogue/world/gui/MapView.java b/src/mightypork/rogue/world/gui/MapView.java index 2e962ca..0b160a7 100644 --- a/src/mightypork/rogue/world/gui/MapView.java +++ b/src/mightypork/rogue/world/gui/MapView.java @@ -5,19 +5,10 @@ import java.util.Collection; import java.util.LinkedHashSet; import java.util.Set; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.eventbus.clients.DelegatingClient; import mightypork.gamecore.gui.components.InputComponent; import mightypork.gamecore.input.events.MouseButtonEvent; import mightypork.gamecore.input.events.MouseButtonHandler; import mightypork.gamecore.render.Render; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; -import mightypork.gamecore.util.math.timing.TimedTask; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.gamecore.util.math.timing.animation.NumAnimated; import mightypork.rogue.world.PlayerControl; import mightypork.rogue.world.World; import mightypork.rogue.world.WorldProvider; @@ -25,6 +16,15 @@ import mightypork.rogue.world.WorldRenderer; import mightypork.rogue.world.events.WorldAscendRequestListener; import mightypork.rogue.world.events.WorldDescendRequestListener; import mightypork.rogue.world.gui.interaction.MapInteractionPlugin; +import mightypork.utils.eventbus.clients.DelegatingClient; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.animation.NumAnimated; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.timing.TimedTask; /** diff --git a/src/mightypork/rogue/world/gui/Minimap.java b/src/mightypork/rogue/world/gui/Minimap.java index 5a81134..2e137a7 100644 --- a/src/mightypork/rogue/world/gui/Minimap.java +++ b/src/mightypork/rogue/world/gui/Minimap.java @@ -1,29 +1,29 @@ package mightypork.rogue.world.gui; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.mutable.RectMutable; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.gui.components.InputComponent; import mightypork.gamecore.input.events.MouseButtonEvent; import mightypork.gamecore.input.events.MouseButtonHandler; import mightypork.gamecore.render.Render; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.Const; import mightypork.rogue.world.PlayerFacade; import mightypork.rogue.world.WorldProvider; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.var.RectVar; +import mightypork.utils.math.constraints.vect.Vect; import org.lwjgl.opengl.GL11; public class Minimap extends InputComponent implements MouseButtonHandler { - private final RectMutable bounds = Rect.makeVar(); + private final RectVar bounds = Rect.makeVar(); private int unit = 0; private final Num translucency = Num.make(0.8); private final Color playerColor = RGB.RED; diff --git a/src/mightypork/rogue/world/gui/WorldConsoleRenderer.java b/src/mightypork/rogue/world/gui/WorldConsoleRenderer.java index 3419f9f..575521c 100644 --- a/src/mightypork/rogue/world/gui/WorldConsoleRenderer.java +++ b/src/mightypork/rogue/world/gui/WorldConsoleRenderer.java @@ -4,20 +4,20 @@ package mightypork.rogue.world.gui; import java.util.Collection; import java.util.ConcurrentModificationException; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.num.mutable.NumVar; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.BaseComponent; -import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.fonts.FontRenderer; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; import mightypork.rogue.world.WorldConsole; import mightypork.rogue.world.WorldProvider; +import mightypork.utils.logging.Log; +import mightypork.utils.math.Calc; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.num.var.NumVar; +import mightypork.utils.math.constraints.rect.Rect; public class WorldConsoleRenderer extends BaseComponent { diff --git a/src/mightypork/rogue/world/gui/interaction/MIPKeyboard.java b/src/mightypork/rogue/world/gui/interaction/MIPKeyboard.java index 582d9b0..916f112 100644 --- a/src/mightypork/rogue/world/gui/interaction/MIPKeyboard.java +++ b/src/mightypork/rogue/world/gui/interaction/MIPKeyboard.java @@ -5,20 +5,20 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.core.Config; -import mightypork.gamecore.eventbus.clients.DelegatingClient; import mightypork.gamecore.input.InputSystem; import mightypork.gamecore.input.KeyBindingPool; import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.input.Keys; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.timing.Updateable; import mightypork.rogue.world.entity.impl.EntityPlayer; import mightypork.rogue.world.events.PlayerStepEndListener; import mightypork.rogue.world.gui.MapView; +import mightypork.utils.eventbus.clients.DelegatingClient; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.constraints.vect.Vect; public class MIPKeyboard extends MapInteractionPlugin implements DelegatingClient, PlayerStepEndListener, Updateable { diff --git a/src/mightypork/rogue/world/gui/interaction/MIPMouse.java b/src/mightypork/rogue/world/gui/interaction/MIPMouse.java index a4f14c1..8bac7c6 100644 --- a/src/mightypork/rogue/world/gui/interaction/MIPMouse.java +++ b/src/mightypork/rogue/world/gui/interaction/MIPMouse.java @@ -1,17 +1,17 @@ package mightypork.rogue.world.gui.interaction; -import mightypork.dynmath.vect.Vect; import mightypork.gamecore.input.InputSystem; -import mightypork.gamecore.util.math.Calc.Deg; -import mightypork.gamecore.util.math.Polar; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.timing.Updateable; import mightypork.rogue.world.entity.impl.EntityPlayer; import mightypork.rogue.world.events.PlayerStepEndListener; import mightypork.rogue.world.gui.MapView; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.Polar; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.angles.Deg; +import mightypork.utils.math.constraints.vect.Vect; public class MIPMouse extends MapInteractionPlugin implements PlayerStepEndListener, Updateable { @@ -93,7 +93,7 @@ public class MIPMouse extends MapInteractionPlugin implements PlayerStepEndListe final Polar p = Polar.fromCoord(clicked.x - plpos.x, clicked.y - plpos.y); - final int dir = Deg.round90(p.getAngleDeg()) / 90; + final int dir = Deg.roundTo90(p.getAngleDeg()) / 90; switch (dir) { case 0: diff --git a/src/mightypork/rogue/world/gui/interaction/MapInteractionPlugin.java b/src/mightypork/rogue/world/gui/interaction/MapInteractionPlugin.java index 42eb2a8..5d24107 100644 --- a/src/mightypork/rogue/world/gui/interaction/MapInteractionPlugin.java +++ b/src/mightypork/rogue/world/gui/interaction/MapInteractionPlugin.java @@ -1,11 +1,11 @@ package mightypork.rogue.world.gui.interaction; -import mightypork.dynmath.vect.Vect; import mightypork.rogue.world.PlayerFacade; import mightypork.rogue.world.World; import mightypork.rogue.world.WorldProvider; import mightypork.rogue.world.gui.MapView; +import mightypork.utils.math.constraints.vect.Vect; public abstract class MapInteractionPlugin { diff --git a/src/mightypork/rogue/world/item/Item.java b/src/mightypork/rogue/world/item/Item.java index 8767e8b..6527142 100644 --- a/src/mightypork/rogue/world/item/Item.java +++ b/src/mightypork/rogue/world/item/Item.java @@ -1,16 +1,16 @@ package mightypork.rogue.world.item; -import mightypork.dynmath.rect.Rect; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.Calc; -import mightypork.ion.IonBundle; -import mightypork.ion.IonObjBundled; import mightypork.rogue.world.PlayerFacade; +import mightypork.utils.Support; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.ion.IonBundled; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.Calc; +import mightypork.utils.math.constraints.rect.Rect; -public abstract class Item implements IonObjBundled { +public abstract class Item implements IonBundled { private final ItemModel model; private ItemRenderer renderer; @@ -39,7 +39,7 @@ public abstract class Item implements IonObjBundled { @Override @DefaultImpl - public void save(IonBundle out) + public void save(IonDataBundle out) { out.put("c", amount); out.put("u", uses); @@ -48,7 +48,7 @@ public abstract class Item implements IonObjBundled { @Override @DefaultImpl - public void load(IonBundle in) + public void load(IonDataBundle in) { amount = in.get("c", amount); uses = in.get("u", uses); @@ -156,7 +156,7 @@ public abstract class Item implements IonObjBundled { @Override public String toString() { - return Log.str(getClass()) + " x " + getAmount(); + return Support.str(getClass()) + " x " + getAmount(); } diff --git a/src/mightypork/rogue/world/item/ItemModel.java b/src/mightypork/rogue/world/item/ItemModel.java index fe434ff..972954e 100644 --- a/src/mightypork/rogue/world/item/ItemModel.java +++ b/src/mightypork/rogue/world/item/ItemModel.java @@ -3,8 +3,8 @@ package mightypork.rogue.world.item; import java.io.IOException; -import mightypork.gamecore.util.math.Calc; -import mightypork.ion.IonBundle; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.math.Calc; /** @@ -45,7 +45,7 @@ public final class ItemModel { } - public Item loadItem(IonBundle in) throws IOException + public Item loadItem(IonDataBundle in) throws IOException { final Item t = createItem(); t.load(in); @@ -53,7 +53,7 @@ public final class ItemModel { } - public void saveItem(IonBundle out, Item item) throws IOException + public void saveItem(IonDataBundle out, Item item) throws IOException { if (itemClass != item.getClass()) throw new RuntimeException("Item class mismatch."); item.save(out); diff --git a/src/mightypork/rogue/world/item/ItemRenderer.java b/src/mightypork/rogue/world/item/ItemRenderer.java index 511abda..4c85492 100644 --- a/src/mightypork/rogue/world/item/ItemRenderer.java +++ b/src/mightypork/rogue/world/item/ItemRenderer.java @@ -1,7 +1,7 @@ package mightypork.rogue.world.item; -import mightypork.dynmath.rect.Rect; +import mightypork.utils.math.constraints.rect.Rect; public abstract class ItemRenderer { diff --git a/src/mightypork/rogue/world/item/Items.java b/src/mightypork/rogue/world/item/Items.java index 9591032..acb2255 100644 --- a/src/mightypork/rogue/world/item/Items.java +++ b/src/mightypork/rogue/world/item/Items.java @@ -4,14 +4,20 @@ package mightypork.rogue.world.item; import java.io.IOException; import java.util.Collection; -import mightypork.ion.IonBundle; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.item.impl.active.ItemHeartPiece; import mightypork.rogue.world.item.impl.food.ItemCheese; import mightypork.rogue.world.item.impl.food.ItemMeat; import mightypork.rogue.world.item.impl.food.ItemSandwich; -import mightypork.rogue.world.item.impl.weapons.*; +import mightypork.rogue.world.item.impl.weapons.ItemAxe; +import mightypork.rogue.world.item.impl.weapons.ItemBone; +import mightypork.rogue.world.item.impl.weapons.ItemClub; +import mightypork.rogue.world.item.impl.weapons.ItemKnife; +import mightypork.rogue.world.item.impl.weapons.ItemRock; +import mightypork.rogue.world.item.impl.weapons.ItemSword; +import mightypork.rogue.world.item.impl.weapons.ItemTwig; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; /** @@ -76,7 +82,7 @@ public final class Items { out.writeIntByte(model.id); - final IonBundle ib = new IonBundle(); + final IonDataBundle ib = new IonDataBundle(); model.saveItem(ib, item); out.writeBundle(ib); } diff --git a/src/mightypork/rogue/world/item/render/QuadItemRenderer.java b/src/mightypork/rogue/world/item/render/QuadItemRenderer.java index 66dd319..12239d5 100644 --- a/src/mightypork/rogue/world/item/render/QuadItemRenderer.java +++ b/src/mightypork/rogue/world/item/render/QuadItemRenderer.java @@ -1,11 +1,11 @@ package mightypork.rogue.world.item.render; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.textures.TxQuad; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.ItemRenderer; +import mightypork.utils.math.constraints.rect.Rect; public class QuadItemRenderer extends ItemRenderer { diff --git a/src/mightypork/rogue/world/level/Level.java b/src/mightypork/rogue/world/level/Level.java index c0cea5a..a1eca23 100644 --- a/src/mightypork/rogue/world/level/Level.java +++ b/src/mightypork/rogue/world/level/Level.java @@ -2,25 +2,17 @@ package mightypork.rogue.world.level; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; -import mightypork.dynmath.vect.Vect; -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.EventBus; -import mightypork.gamecore.eventbus.clients.DelegatingClient; -import mightypork.gamecore.eventbus.clients.ToggleableClient; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.math.Calc; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.algo.floodfill.FloodFill; -import mightypork.gamecore.util.math.noise.NoiseGen; -import mightypork.gamecore.util.math.timing.Updateable; -import mightypork.ion.IonBundle; -import mightypork.ion.IonInput; -import mightypork.ion.IonObjBinary; -import mightypork.ion.IonOutput; import mightypork.rogue.world.World; import mightypork.rogue.world.entity.Entities; import mightypork.rogue.world.entity.Entity; @@ -30,6 +22,23 @@ import mightypork.rogue.world.item.Item; import mightypork.rogue.world.tile.Tile; import mightypork.rogue.world.tile.TileModel; import mightypork.rogue.world.tile.Tiles; +import mightypork.utils.eventbus.BusAccess; +import mightypork.utils.eventbus.EventBus; +import mightypork.utils.eventbus.clients.DelegatingClient; +import mightypork.utils.eventbus.clients.ToggleableClient; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.ion.IonBinary; +import mightypork.utils.ion.IonDataBundle; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; +import mightypork.utils.logging.Log; +import mightypork.utils.math.Calc; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.algo.floodfill.FloodFill; +import mightypork.utils.math.constraints.vect.Vect; +import mightypork.utils.math.noise.NoiseGen; /** @@ -37,28 +46,8 @@ import mightypork.rogue.world.tile.Tiles; * * @author Ondřej Hruška (MightyPork) */ -public class Level implements BusAccess, Updateable, DelegatingClient, ToggleableClient, IonObjBinary { +public class Level implements BusAccess, Updateable, DelegatingClient, ToggleableClient, IonBinary { - private static class EntityRenderComparator implements Comparator { - - @Override - public int compare(Entity o1, Entity o2) - { - if (o1.isDead() && !o2.isDead()) { - return -1; - } - - if (!o1.isDead() && o2.isDead()) { - return 1; - } - - int c = Double.compare(o1.pos.getVisualPos().y(), o1.pos.getVisualPos().y()); - if (c == 0) c = Double.compare(o1.pos.getVisualPos().x(), o1.pos.getVisualPos().x()); - - return c; - } - - } private final FloodFill exploreFiller = new FloodFill() { @@ -102,11 +91,11 @@ public class Level implements BusAccess, Updateable, DelegatingClient, Toggleabl public static final int ION_MARK = 53; private static final Comparator ENTITY_RENDER_CMP = new EntityRenderComparator(); - private final Coord size = Coord.zero(); + private Coord size = Coord.zero(); private World world; - private final Coord enterPoint = Coord.zero(); - private final Coord exitPoint = Coord.zero(); + private Coord enterPoint = Coord.zero(); + private Coord exitPoint = Coord.zero(); /** Array of tiles [y][x] */ private Tile[][] tiles; @@ -232,11 +221,11 @@ public class Level implements BusAccess, Updateable, DelegatingClient, Toggleabl public void load(IonInput in) throws IOException { // -- metadata -- - final IonBundle ib = in.readBundle(); + final IonDataBundle ib = in.readBundle(); seed = ib.get("seed", 0L); - ib.loadBundled("size", size); - ib.loadBundled("enter_point", enterPoint); - ib.loadBundled("exit_point", exitPoint); + size = ib.get("size"); + enterPoint = ib.get("enter_point", enterPoint); + exitPoint = ib.get("exit_point", exitPoint); // -- binary data -- @@ -268,11 +257,11 @@ public class Level implements BusAccess, Updateable, DelegatingClient, Toggleabl public void save(IonOutput out) throws IOException { // -- metadata -- - final IonBundle ib = new IonBundle(); + final IonDataBundle ib = new IonDataBundle(); ib.put("seed", seed); - ib.putBundled("size", size); - ib.putBundled("enter_point", enterPoint); - ib.putBundled("exit_point", exitPoint); + ib.put("size", size); + ib.put("enter_point", enterPoint); + ib.put("exit_point", exitPoint); out.writeBundle(ib); // -- binary data -- @@ -700,4 +689,25 @@ public class Level implements BusAccess, Updateable, DelegatingClient, Toggleabl return false; } + + private static class EntityRenderComparator implements Comparator { + + @Override + public int compare(Entity o1, Entity o2) + { + if (o1.isDead() && !o2.isDead()) { + return -1; + } + + if (!o1.isDead() && o2.isDead()) { + return 1; + } + + int c = Double.compare(o1.pos.getVisualPos().y(), o1.pos.getVisualPos().y()); + if (c == 0) c = Double.compare(o1.pos.getVisualPos().x(), o1.pos.getVisualPos().x()); + + return c; + } + + } } diff --git a/src/mightypork/rogue/world/level/render/EntityRenderContext.java b/src/mightypork/rogue/world/level/render/EntityRenderContext.java index f2e8636..edb3b33 100644 --- a/src/mightypork/rogue/world/level/render/EntityRenderContext.java +++ b/src/mightypork/rogue/world/level/render/EntityRenderContext.java @@ -1,8 +1,8 @@ package mightypork.rogue.world.level.render; -import mightypork.dynmath.rect.Rect; import mightypork.rogue.world.level.Level; +import mightypork.utils.math.constraints.rect.Rect; public class EntityRenderContext extends MapRenderContext { diff --git a/src/mightypork/rogue/world/level/render/MapRenderContext.java b/src/mightypork/rogue/world/level/render/MapRenderContext.java index 3b092f0..82e2a0e 100644 --- a/src/mightypork/rogue/world/level/render/MapRenderContext.java +++ b/src/mightypork/rogue/world/level/render/MapRenderContext.java @@ -1,11 +1,11 @@ package mightypork.rogue.world.level.render; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.builders.TiledRect; -import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.builders.TiledRect; public abstract class MapRenderContext { diff --git a/src/mightypork/rogue/world/level/render/TileRenderContext.java b/src/mightypork/rogue/world/level/render/TileRenderContext.java index 98e699d..1f637f8 100644 --- a/src/mightypork/rogue/world/level/render/TileRenderContext.java +++ b/src/mightypork/rogue/world/level/render/TileRenderContext.java @@ -1,13 +1,13 @@ package mightypork.rogue.world.level.render; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.RectBound; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.algo.Move; -import mightypork.gamecore.util.math.noise.NoiseGen; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.tile.Tile; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.algo.Move; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.RectBound; +import mightypork.utils.math.noise.NoiseGen; /** diff --git a/src/mightypork/rogue/world/tile/DroppedItemRenderer.java b/src/mightypork/rogue/world/tile/DroppedItemRenderer.java index e96833d..d8a3bda 100644 --- a/src/mightypork/rogue/world/tile/DroppedItemRenderer.java +++ b/src/mightypork/rogue/world/tile/DroppedItemRenderer.java @@ -3,15 +3,15 @@ package mightypork.rogue.world.tile; import java.util.Collection; -import mightypork.dynmath.num.Num; -import mightypork.dynmath.num.proxy.NumProxy; -import mightypork.dynmath.rect.Rect; -import mightypork.dynmath.rect.proxy.RectProxy; -import mightypork.gamecore.util.math.Easing; -import mightypork.gamecore.util.math.timing.animation.Animator; -import mightypork.gamecore.util.math.timing.animation.AnimatorBounce; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.level.render.TileRenderContext; +import mightypork.utils.math.animation.Animator; +import mightypork.utils.math.animation.AnimatorBounce; +import mightypork.utils.math.animation.Easing; +import mightypork.utils.math.constraints.num.Num; +import mightypork.utils.math.constraints.num.proxy.NumProxy; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.constraints.rect.proxy.RectProxy; public class DroppedItemRenderer { @@ -30,7 +30,7 @@ public class DroppedItemRenderer { int cnt = 0; for (final Item i : items) { - offsAdapter.setNum(Num.make((itemAnim.value() + (cnt % 3) * 0.1))); + offsAdapter.setNum(Num.make((itemAnim.getValue() + (cnt % 3) * 0.1))); i.render(itemRect); diff --git a/src/mightypork/rogue/world/tile/Tile.java b/src/mightypork/rogue/world/tile/Tile.java index 027f790..ca6bd1b 100644 --- a/src/mightypork/rogue/world/tile/Tile.java +++ b/src/mightypork/rogue/world/tile/Tile.java @@ -3,19 +3,20 @@ package mightypork.rogue.world.tile; import java.io.IOException; -import mightypork.gamecore.eventbus.BusAccess; -import mightypork.gamecore.eventbus.EventBus; -import mightypork.gamecore.logging.Log; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.color.Color; -import mightypork.ion.IonInput; -import mightypork.ion.IonObjBinary; -import mightypork.ion.IonOutput; import mightypork.rogue.Const; import mightypork.rogue.world.World; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.level.Level; import mightypork.rogue.world.level.render.TileRenderContext; +import mightypork.utils.Support; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.eventbus.BusAccess; +import mightypork.utils.eventbus.EventBus; +import mightypork.utils.ion.IonBinary; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; +import mightypork.utils.logging.Log; +import mightypork.utils.math.color.Color; /** @@ -23,7 +24,7 @@ import mightypork.rogue.world.level.render.TileRenderContext; * * @author Ondřej Hruška (MightyPork) */ -public abstract class Tile implements BusAccess, IonObjBinary { +public abstract class Tile implements BusAccess, IonBinary { // tmp extras public final TileGenData genData = new TileGenData(); @@ -78,7 +79,7 @@ public abstract class Tile implements BusAccess, IonObjBinary { renderer = makeRenderer(); if (renderer == /*still*/null) { - Log.w("No renderer for tile " + Log.str(this)); + Log.w("No renderer for tile " + Support.str(this)); renderer = TileRenderer.NONE; return; } diff --git a/src/mightypork/rogue/world/tile/TileColors.java b/src/mightypork/rogue/world/tile/TileColors.java index 0ba6a27..973ac19 100644 --- a/src/mightypork/rogue/world/tile/TileColors.java +++ b/src/mightypork/rogue/world/tile/TileColors.java @@ -1,8 +1,8 @@ package mightypork.rogue.world.tile; -import mightypork.gamecore.util.math.color.Color; -import mightypork.gamecore.util.math.color.pal.RGB; +import mightypork.utils.math.color.Color; +import mightypork.utils.math.color.pal.RGB; public class TileColors { diff --git a/src/mightypork/rogue/world/tile/TileModel.java b/src/mightypork/rogue/world/tile/TileModel.java index 1cef97b..f02922b 100644 --- a/src/mightypork/rogue/world/tile/TileModel.java +++ b/src/mightypork/rogue/world/tile/TileModel.java @@ -3,8 +3,8 @@ package mightypork.rogue.world.tile; import java.io.IOException; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; /** diff --git a/src/mightypork/rogue/world/tile/TileRenderer.java b/src/mightypork/rogue/world/tile/TileRenderer.java index 5daac34..81c1572 100644 --- a/src/mightypork/rogue/world/tile/TileRenderer.java +++ b/src/mightypork/rogue/world/tile/TileRenderer.java @@ -1,15 +1,15 @@ package mightypork.rogue.world.tile; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.Res; import mightypork.gamecore.resources.textures.TxQuad; -import mightypork.gamecore.util.annot.DefaultImpl; -import mightypork.gamecore.util.math.algo.Moves; -import mightypork.gamecore.util.math.timing.Updateable; import mightypork.rogue.world.level.render.TileRenderContext; import mightypork.rogue.world.tile.render.NullTileRenderer; +import mightypork.utils.annotations.DefaultImpl; +import mightypork.utils.interfaces.Updateable; +import mightypork.utils.math.algo.Moves; +import mightypork.utils.math.constraints.rect.Rect; /** diff --git a/src/mightypork/rogue/world/tile/TileType.java b/src/mightypork/rogue/world/tile/TileType.java index e8e4b9b..eba8593 100644 --- a/src/mightypork/rogue/world/tile/TileType.java +++ b/src/mightypork/rogue/world/tile/TileType.java @@ -1,7 +1,7 @@ package mightypork.rogue.world.tile; -import mightypork.gamecore.util.math.color.Color; +import mightypork.utils.math.color.Color; /** diff --git a/src/mightypork/rogue/world/tile/Tiles.java b/src/mightypork/rogue/world/tile/Tiles.java index 37b7cbe..a2b85b6 100644 --- a/src/mightypork/rogue/world/tile/Tiles.java +++ b/src/mightypork/rogue/world/tile/Tiles.java @@ -3,10 +3,17 @@ package mightypork.rogue.world.tile; import java.io.IOException; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.tile.impl.NullTile; -import mightypork.rogue.world.tile.impl.brick.*; +import mightypork.rogue.world.tile.impl.brick.TileBrickChest; +import mightypork.rogue.world.tile.impl.brick.TileBrickDoor; +import mightypork.rogue.world.tile.impl.brick.TileBrickEntrance; +import mightypork.rogue.world.tile.impl.brick.TileBrickExit; +import mightypork.rogue.world.tile.impl.brick.TileBrickFloor; +import mightypork.rogue.world.tile.impl.brick.TileBrickPassage; +import mightypork.rogue.world.tile.impl.brick.TileBrickSecretDoor; +import mightypork.rogue.world.tile.impl.brick.TileBrickWall; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; /** diff --git a/src/mightypork/rogue/world/tile/impl/TileBaseChest.java b/src/mightypork/rogue/world/tile/impl/TileBaseChest.java index eafbf6e..9ce45c0 100644 --- a/src/mightypork/rogue/world/tile/impl/TileBaseChest.java +++ b/src/mightypork/rogue/world/tile/impl/TileBaseChest.java @@ -3,10 +3,10 @@ package mightypork.rogue.world.tile.impl; import java.io.IOException; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.tile.TileModel; import mightypork.rogue.world.tile.TileType; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; public abstract class TileBaseChest extends TileWithItems { diff --git a/src/mightypork/rogue/world/tile/impl/TileBaseDoor.java b/src/mightypork/rogue/world/tile/impl/TileBaseDoor.java index b887c7a..34b9bfc 100644 --- a/src/mightypork/rogue/world/tile/impl/TileBaseDoor.java +++ b/src/mightypork/rogue/world/tile/impl/TileBaseDoor.java @@ -4,12 +4,12 @@ package mightypork.rogue.world.tile.impl; import java.io.IOException; import mightypork.gamecore.resources.textures.TxSheet; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.tile.TileModel; import mightypork.rogue.world.tile.TileRenderer; import mightypork.rogue.world.tile.TileType; import mightypork.rogue.world.tile.render.DoorTileRenderer; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; public abstract class TileBaseDoor extends TileSolid { diff --git a/src/mightypork/rogue/world/tile/impl/TileBaseEntrance.java b/src/mightypork/rogue/world/tile/impl/TileBaseEntrance.java index ed089dd..0242620 100644 --- a/src/mightypork/rogue/world/tile/impl/TileBaseEntrance.java +++ b/src/mightypork/rogue/world/tile/impl/TileBaseEntrance.java @@ -1,11 +1,11 @@ package mightypork.rogue.world.tile.impl; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.color.Color; import mightypork.rogue.world.events.WorldAscendRequest; import mightypork.rogue.world.tile.TileColors; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.color.Color; public abstract class TileBaseEntrance extends TileBaseStairs { diff --git a/src/mightypork/rogue/world/tile/impl/TileBaseExit.java b/src/mightypork/rogue/world/tile/impl/TileBaseExit.java index 47e8388..69e5768 100644 --- a/src/mightypork/rogue/world/tile/impl/TileBaseExit.java +++ b/src/mightypork/rogue/world/tile/impl/TileBaseExit.java @@ -1,11 +1,11 @@ package mightypork.rogue.world.tile.impl; -import mightypork.gamecore.util.math.algo.Coord; -import mightypork.gamecore.util.math.color.Color; import mightypork.rogue.world.events.WorldDescendRequest; import mightypork.rogue.world.tile.TileColors; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.math.algo.Coord; +import mightypork.utils.math.color.Color; public abstract class TileBaseExit extends TileBaseStairs { diff --git a/src/mightypork/rogue/world/tile/impl/TileBaseSecretDoor.java b/src/mightypork/rogue/world/tile/impl/TileBaseSecretDoor.java index ae5b9ef..941367b 100644 --- a/src/mightypork/rogue/world/tile/impl/TileBaseSecretDoor.java +++ b/src/mightypork/rogue/world/tile/impl/TileBaseSecretDoor.java @@ -4,11 +4,11 @@ package mightypork.rogue.world.tile.impl; import java.io.IOException; import mightypork.gamecore.resources.textures.TxSheet; -import mightypork.gamecore.util.math.color.Color; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.world.tile.TileColors; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; +import mightypork.utils.math.color.Color; public abstract class TileBaseSecretDoor extends TileBaseDoor { diff --git a/src/mightypork/rogue/world/tile/impl/TileWithItems.java b/src/mightypork/rogue/world/tile/impl/TileWithItems.java index 54a4051..44c3d9d 100644 --- a/src/mightypork/rogue/world/tile/impl/TileWithItems.java +++ b/src/mightypork/rogue/world/tile/impl/TileWithItems.java @@ -4,8 +4,6 @@ package mightypork.rogue.world.tile.impl; import java.io.IOException; import java.util.Stack; -import mightypork.ion.IonInput; -import mightypork.ion.IonOutput; import mightypork.rogue.Const; import mightypork.rogue.world.item.Item; import mightypork.rogue.world.item.Items; @@ -13,6 +11,8 @@ import mightypork.rogue.world.level.render.TileRenderContext; import mightypork.rogue.world.tile.DroppedItemRenderer; import mightypork.rogue.world.tile.Tile; import mightypork.rogue.world.tile.TileModel; +import mightypork.utils.ion.IonInput; +import mightypork.utils.ion.IonOutput; public abstract class TileWithItems extends Tile { diff --git a/src/mightypork/rogue/world/tile/render/BasicTileRenderer.java b/src/mightypork/rogue/world/tile/render/BasicTileRenderer.java index c280f70..2edc79f 100644 --- a/src/mightypork/rogue/world/tile/render/BasicTileRenderer.java +++ b/src/mightypork/rogue/world/tile/render/BasicTileRenderer.java @@ -1,12 +1,12 @@ package mightypork.rogue.world.tile.render; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.textures.TxSheet; import mightypork.rogue.world.level.render.TileRenderContext; import mightypork.rogue.world.tile.Tile; import mightypork.rogue.world.tile.TileRenderer; +import mightypork.utils.math.constraints.rect.Rect; public class BasicTileRenderer extends TileRenderer { diff --git a/src/mightypork/rogue/world/tile/render/DoorTileRenderer.java b/src/mightypork/rogue/world/tile/render/DoorTileRenderer.java index b3398e6..9020ea9 100644 --- a/src/mightypork/rogue/world/tile/render/DoorTileRenderer.java +++ b/src/mightypork/rogue/world/tile/render/DoorTileRenderer.java @@ -1,13 +1,13 @@ package mightypork.rogue.world.tile.render; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.textures.TxSheet; -import mightypork.gamecore.util.math.timing.TimedTask; import mightypork.rogue.world.level.render.TileRenderContext; import mightypork.rogue.world.tile.TileRenderer; import mightypork.rogue.world.tile.impl.TileBaseDoor; +import mightypork.utils.math.constraints.rect.Rect; +import mightypork.utils.math.timing.TimedTask; public class DoorTileRenderer extends TileRenderer { diff --git a/src/mightypork/rogue/world/tile/render/TwoHighTileRenderer.java b/src/mightypork/rogue/world/tile/render/TwoHighTileRenderer.java index 096edb5..f01d703 100644 --- a/src/mightypork/rogue/world/tile/render/TwoHighTileRenderer.java +++ b/src/mightypork/rogue/world/tile/render/TwoHighTileRenderer.java @@ -1,12 +1,12 @@ package mightypork.rogue.world.tile.render; -import mightypork.dynmath.rect.Rect; import mightypork.gamecore.render.Render; import mightypork.gamecore.resources.textures.TxQuad; import mightypork.rogue.world.level.render.TileRenderContext; import mightypork.rogue.world.tile.Tile; import mightypork.rogue.world.tile.TileRenderer; +import mightypork.utils.math.constraints.rect.Rect; /**