diff --git a/bin/mightypork/gamecore/backends/lwjgl/BufferHelper.class b/bin/mightypork/gamecore/backends/lwjgl/BufferHelper.class
deleted file mode 100644
index 18a29e2..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/BufferHelper.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.class b/bin/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.class
deleted file mode 100644
index a831b8c..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/LwjglBackend.class b/bin/mightypork/gamecore/backends/lwjgl/LwjglBackend.class
deleted file mode 100644
index f020ed7..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/LwjglBackend.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/LwjglInputModule$1.class b/bin/mightypork/gamecore/backends/lwjgl/LwjglInputModule$1.class
deleted file mode 100644
index f24e14a..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/LwjglInputModule$1.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/LwjglInputModule.class b/bin/mightypork/gamecore/backends/lwjgl/LwjglInputModule.class
deleted file mode 100644
index 66698c9..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/LwjglInputModule.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.class b/bin/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.class
deleted file mode 100644
index ad14f4d..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/audio/SlickAudio.class b/bin/mightypork/gamecore/backends/lwjgl/audio/SlickAudio.class
deleted file mode 100644
index fd27244..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/audio/SlickAudio.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.class b/bin/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.class
deleted file mode 100644
index 7d1a397..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.class
deleted file mode 100644
index cacf9cf..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule$1.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule$1.class
deleted file mode 100644
index 7a2effe..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule$1.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.class
deleted file mode 100644
index aa6b4a4..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.class
deleted file mode 100644
index 855a97e..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFont.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFont.class
deleted file mode 100644
index 18f3720..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFont.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFontFromSystem.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFontFromSystem.class
deleted file mode 100644
index fbca3d7..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFontFromSystem.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont$1LoadedGlyph.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont$1LoadedGlyph.class
deleted file mode 100644
index 01f0fa5..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont$1LoadedGlyph.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont$CharTile.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont$CharTile.class
deleted file mode 100644
index 84ecbd9..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont$CharTile.class and /dev/null differ
diff --git a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont.class b/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont.class
deleted file mode 100644
index a91e3ea..0000000
Binary files a/bin/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont.class and /dev/null differ
diff --git a/src/mightypork/gamecore/backends/lwjgl/BufferHelper.java b/src/mightypork/gamecore/backends/lwjgl/BufferHelper.java
index 3e38b3b..af75f80 100644
--- a/src/mightypork/gamecore/backends/lwjgl/BufferHelper.java
+++ b/src/mightypork/gamecore/backends/lwjgl/BufferHelper.java
@@ -8,14 +8,14 @@ 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
*/
@@ -27,9 +27,9 @@ public class BufferHelper {
/**
* Fill java.nio.FloatBuffer with floats or float array
- *
- * @param buff
- * @param obj
+ *
+ * @param buff target buffer
+ * @param obj floats to write
*/
public static void fill(FloatBuffer buff, float... obj)
{
@@ -40,7 +40,7 @@ public class BufferHelper {
/**
* Create new java.nio.FloatBuffer of given length
- *
+ *
* @param count elements
* @return the new java.nio.FloatBuffer
*/
diff --git a/src/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.java b/src/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.java
index a951141..c79a222 100644
--- a/src/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.java
+++ b/src/mightypork/gamecore/backends/lwjgl/InitTaskRedirectSlickLog.java
@@ -8,28 +8,28 @@ import mightypork.utils.logging.writers.LogWriter;
/**
* Initializer that redirects slick logging to main logger.
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
@OptionalInitTask
public class InitTaskRedirectSlickLog extends InitTask {
-
+
@Override
public void run()
{
- LogWriter ml = mightypork.utils.logging.Log.getMainLogger();
- SlickLogRedirector slr = new SlickLogRedirector(ml);
+ final LogWriter ml = mightypork.utils.logging.Log.getMainLogger();
+ final SlickLogRedirector slr = new SlickLogRedirector(ml);
org.newdawn.slick.util.Log.setLogSystem(slr);
}
-
-
+
+
@Override
public String getName()
{
return "slick_log";
}
-
-
+
+
@Override
public String[] getDependencies()
{
diff --git a/src/mightypork/gamecore/backends/lwjgl/LwjglBackend.java b/src/mightypork/gamecore/backends/lwjgl/LwjglBackend.java
index d11b58b..4a6bd5e 100644
--- a/src/mightypork/gamecore/backends/lwjgl/LwjglBackend.java
+++ b/src/mightypork/gamecore/backends/lwjgl/LwjglBackend.java
@@ -11,45 +11,45 @@ import mightypork.gamecore.input.InputModule;
/**
* Game backend using LWJGL and SlickUtil
- *
+ *
* @author MightyPork
*/
public class LwjglBackend extends AppBackend {
-
+
private LwjglGraphicsModule graphics;
private SlickAudioModule audio;
private LwjglInputModule input;
-
-
+
+
@Override
public void initialize()
{
addChildClient(graphics = new LwjglGraphicsModule());
addChildClient(audio = new SlickAudioModule());
addChildClient(input = new LwjglInputModule());
-
+
graphics.init();
audio.init();
input.init();
-
+
app.addInitTask(new InitTaskRedirectSlickLog());
}
-
-
+
+
@Override
public GraphicsModule getGraphics()
{
return graphics;
}
-
-
+
+
@Override
public AudioModule getAudio()
{
return audio;
}
-
-
+
+
@Override
public InputModule getInput()
{
diff --git a/src/mightypork/gamecore/backends/lwjgl/LwjglInputModule.java b/src/mightypork/gamecore/backends/lwjgl/LwjglInputModule.java
index 698a676..11eb6e2 100644
--- a/src/mightypork/gamecore/backends/lwjgl/LwjglInputModule.java
+++ b/src/mightypork/gamecore/backends/lwjgl/LwjglInputModule.java
@@ -20,23 +20,23 @@ import org.lwjgl.opengl.Display;
/**
* Lwjgl Input Module.
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
public class LwjglInputModule extends InputModule implements Updateable {
-
+
/** Current mouse position */
private static final Vect mousePos = new Vect() {
-
+
@Override
public double x()
{
if (!Mouse.isInsideWindow()) return Integer.MIN_VALUE;
-
+
return Mouse.getX();
}
-
-
+
+
@Override
public double y()
{
@@ -45,8 +45,8 @@ public class LwjglInputModule extends InputModule implements Updateable {
return Display.getHeight() - Mouse.getY();
}
};
-
-
+
+
@Override
protected void initDevices()
{
@@ -58,13 +58,13 @@ public class LwjglInputModule extends InputModule implements Updateable {
throw new RuntimeException("Failed to initialize input devices.", e);
}
}
-
-
+
+
@Override
protected void initKeyCodes()
{
Keys.NONE.setCode(Keyboard.KEY_NONE);
-
+
Keys.NUM_1.setCode(Keyboard.KEY_1);
Keys.NUM_2.setCode(Keyboard.KEY_2);
Keys.NUM_3.setCode(Keyboard.KEY_3);
@@ -75,7 +75,7 @@ public class LwjglInputModule extends InputModule implements Updateable {
Keys.NUM_8.setCode(Keyboard.KEY_8);
Keys.NUM_9.setCode(Keyboard.KEY_9);
Keys.NUM_0.setCode(Keyboard.KEY_0);
-
+
Keys.Q.setCode(Keyboard.KEY_Q);
Keys.W.setCode(Keyboard.KEY_W);
Keys.E.setCode(Keyboard.KEY_E);
@@ -102,7 +102,7 @@ public class LwjglInputModule extends InputModule implements Updateable {
Keys.B.setCode(Keyboard.KEY_B);
Keys.N.setCode(Keyboard.KEY_N);
Keys.M.setCode(Keyboard.KEY_M);
-
+
Keys.MINUS.setCode(Keyboard.KEY_MINUS);
Keys.EQUALS.setCode(Keyboard.KEY_EQUALS);
Keys.SLASH.setCode(Keyboard.KEY_SLASH);
@@ -114,17 +114,17 @@ public class LwjglInputModule extends InputModule implements Updateable {
Keys.GRAVE.setCode(Keyboard.KEY_GRAVE);
Keys.COMMA.setCode(Keyboard.KEY_COMMA);
Keys.PERIOD.setCode(Keyboard.KEY_PERIOD);
-
+
Keys.SPACE.setCode(Keyboard.KEY_SPACE);
Keys.BACKSPACE.setCode(Keyboard.KEY_BACK);
Keys.TAB.setCode(Keyboard.KEY_TAB);
Keys.ESCAPE.setCode(Keyboard.KEY_ESCAPE);
-
+
Keys.APPS.setCode(Keyboard.KEY_APPS);
Keys.POWER.setCode(Keyboard.KEY_POWER);
Keys.SLEEP.setCode(Keyboard.KEY_SLEEP);
//Keys.MENU.setCode(Keyboard.KEY_MENU); // not defined
-
+
Keys.F1.setCode(Keyboard.KEY_F1);
Keys.F2.setCode(Keyboard.KEY_F2);
Keys.F3.setCode(Keyboard.KEY_F3);
@@ -140,11 +140,11 @@ public class LwjglInputModule extends InputModule implements Updateable {
Keys.F13.setCode(Keyboard.KEY_F13);
Keys.F14.setCode(Keyboard.KEY_F14);
Keys.F15.setCode(Keyboard.KEY_F15);
-
+
Keys.CAPS_LOCK.setCode(Keyboard.KEY_CAPITAL);
Keys.SCROLL_LOCK.setCode(Keyboard.KEY_SCROLL);
Keys.NUM_LOCK.setCode(Keyboard.KEY_NUMLOCK);
-
+
Keys.NUMPAD_MINUS.setCode(Keyboard.KEY_SUBTRACT);
Keys.NUMPAD_PLUSS.setCode(Keyboard.KEY_ADD);
Keys.NUMPAD_0.setCode(Keyboard.KEY_NUMPAD0);
@@ -161,7 +161,7 @@ public class LwjglInputModule extends InputModule implements Updateable {
Keys.NUMPAD_ENTER.setCode(Keyboard.KEY_NUMPADENTER);
Keys.NUMPAD_DIVIDE.setCode(Keyboard.KEY_DIVIDE);
Keys.NUMPAD_MULTIPLY.setCode(Keyboard.KEY_MULTIPLY);
-
+
Keys.CONTROL_LEFT.setCode(Keyboard.KEY_LCONTROL);
Keys.CONTROL_RIGHT.setCode(Keyboard.KEY_RCONTROL);
Keys.ALT_LEFT.setCode(Keyboard.KEY_LMENU);
@@ -170,37 +170,37 @@ public class LwjglInputModule extends InputModule implements Updateable {
Keys.SHIFT_RIGHT.setCode(Keyboard.KEY_RSHIFT);
Keys.META_LEFT.setCode(Keyboard.KEY_LMETA);
Keys.META_RIGHT.setCode(Keyboard.KEY_RMETA);
-
+
Keys.UP.setCode(Keyboard.KEY_UP);
Keys.DOWN.setCode(Keyboard.KEY_DOWN);
Keys.LEFT.setCode(Keyboard.KEY_LEFT);
Keys.RIGHT.setCode(Keyboard.KEY_RIGHT);
-
+
Keys.HOME.setCode(Keyboard.KEY_HOME);
Keys.END.setCode(Keyboard.KEY_END);
-
+
Keys.PAGE_UP.setCode(Keyboard.KEY_PRIOR);
Keys.PAGE_DOWN.setCode(Keyboard.KEY_NEXT);
-
+
Keys.RETURN.setCode(Keyboard.KEY_RETURN);
Keys.PAUSE.setCode(Keyboard.KEY_PAUSE);
Keys.INSERT.setCode(Keyboard.KEY_INSERT);
Keys.DELETE.setCode(Keyboard.KEY_DELETE);
Keys.SYSRQ.setCode(Keyboard.KEY_SYSRQ);
}
-
-
+
+
@Override
public void destroy()
{
Mouse.destroy();
Keyboard.destroy();
}
-
+
private final VectVar mouseMove = Vect.makeVar();
private final VectVar mouseLastPos = Vect.makeVar();
-
-
+
+
@Override
public synchronized void update(double delta)
{
@@ -208,9 +208,9 @@ public class LwjglInputModule extends InputModule implements Updateable {
if (!Display.isCreated()) return;
if (!Mouse.isCreated()) return;
if (!Keyboard.isCreated()) return;
-
+
Display.processMessages();
-
+
// sum the moves
mouseMove.reset();
mouseLastPos.reset();
@@ -219,81 +219,81 @@ public class LwjglInputModule extends InputModule implements Updateable {
onMouseEvent(mouseMove, mouseLastPos);
wasMouse = true;
}
-
+
if (wasMouse && !mouseMove.isZero()) {
App.bus().send(new MouseMotionEvent(mouseLastPos, mouseMove));
}
-
+
while (Keyboard.next()) {
onKeyEvent();
}
-
+
if (Display.isCloseRequested()) {
App.shutdown();
}
}
-
-
+
+
private void onMouseEvent(VectVar moveSum, VectVar lastPos)
{
final int button = Mouse.getEventButton();
final boolean down = Mouse.getEventButtonState();
-
+
final VectVar pos = Vect.makeVar(Mouse.getEventX(), Mouse.getEventY());
final VectVar move = Vect.makeVar(Mouse.getEventDX(), Mouse.getEventDY());
-
+
final int wheeld = Mouse.getEventDWheel();
-
+
// flip Y axis
pos.setY(Display.getHeight() - pos.y());
-
+
if (button != -1 || wheeld != 0) {
App.bus().send(new MouseButtonEvent(pos.freeze(), button, down, wheeld));
}
-
+
moveSum.setTo(moveSum.add(move));
lastPos.setTo(pos);
}
-
-
+
+
private void onKeyEvent()
{
final int key = Keyboard.getEventKey();
final boolean down = Keyboard.getEventKeyState();
final char c = Keyboard.getEventCharacter();
-
+
App.bus().send(new KeyEvent(key, c, down));
}
-
-
+
+
@Override
public Vect getMousePos()
{
return mousePos;
}
-
-
+
+
@Override
public boolean isMouseInside()
{
return Mouse.isInsideWindow();
}
-
-
+
+
@Override
public void grabMouse(boolean grab)
{
Mouse.setGrabbed(grab);
}
-
-
+
+
@Override
public boolean isKeyDown(Key key)
{
return key.isDefined() && Keyboard.isKeyDown(key.getCode());
}
-
-
+
+
@Override
public boolean isMouseButtonDown(int button)
{
diff --git a/src/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.java b/src/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.java
index 3aec98f..b2165e2 100644
--- a/src/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.java
+++ b/src/mightypork/gamecore/backends/lwjgl/SlickLogRedirector.java
@@ -8,68 +8,69 @@ import mightypork.utils.logging.writers.LogWriter;
/**
* Used to redirect slick log into main logger.
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
class SlickLogRedirector implements org.newdawn.slick.util.LogSystem {
-
+
LogWriter writer;
-
-
+
+
/**
* @param log log to redirect into
*/
- public SlickLogRedirector(LogWriter log) {
+ public SlickLogRedirector(LogWriter log)
+ {
this.writer = log;
}
-
-
+
+
@Override
public void error(String msg, Throwable e)
{
writer.log(Level.SEVERE, msg, e);
}
-
-
+
+
@Override
public void error(Throwable e)
{
writer.log(Level.SEVERE, null, e);
}
-
-
+
+
@Override
public void error(String msg)
{
writer.log(Level.SEVERE, msg);
}
-
-
+
+
@Override
public void warn(String msg)
{
writer.log(Level.WARNING, msg);
}
-
-
+
+
@Override
public void warn(String msg, Throwable e)
{
writer.log(Level.WARNING, msg, e);
}
-
-
+
+
@Override
public void info(String msg)
{
writer.log(Level.INFO, msg);
}
-
-
+
+
@Override
public void debug(String msg)
{
writer.log(Level.FINEST, msg);
}
-
+
}
diff --git a/src/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.java b/src/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.java
index 87384ca..9628c2d 100644
--- a/src/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.java
+++ b/src/mightypork/gamecore/backends/lwjgl/audio/SlickAudioModule.java
@@ -16,14 +16,14 @@ import org.newdawn.slick.openal.SoundStore;
/**
* SlickUtil-based audio module
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
public class SlickAudioModule extends AudioModule {
-
+
private final VectVar listenerPos = Vect.makeVar();
-
-
+
+
@Override
public void init()
{
@@ -31,8 +31,8 @@ public class SlickAudioModule extends AudioModule {
SoundStore.get().init();
setListenerPos(Vect.ZERO);
}
-
-
+
+
@Override
public void setListenerPos(Vect pos)
{
@@ -49,27 +49,27 @@ public class SlickAudioModule extends AudioModule {
BufferHelper.fill(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f);
AL10.alListener(AL10.AL_ORIENTATION, buf6);
}
-
-
+
+
@Override
public Vect getListenerPos()
{
return listenerPos;
}
-
-
+
+
@Override
protected void deinitSoundSystem()
{
SoundStore.get().clear();
AL.destroy();
}
-
-
+
+
@Override
protected DeferredAudio doCreateResource(String res)
{
- return new SlickAudio(res);
+ return new SlickSound(res);
}
-
+
}
diff --git a/src/mightypork/gamecore/backends/lwjgl/audio/SlickAudio.java b/src/mightypork/gamecore/backends/lwjgl/audio/SlickSound.java
similarity index 91%
rename from src/mightypork/gamecore/backends/lwjgl/audio/SlickAudio.java
rename to src/mightypork/gamecore/backends/lwjgl/audio/SlickSound.java
index 2928712..6d91091 100644
--- a/src/mightypork/gamecore/backends/lwjgl/audio/SlickAudio.java
+++ b/src/mightypork/gamecore/backends/lwjgl/audio/SlickSound.java
@@ -14,10 +14,10 @@ import org.newdawn.slick.openal.SoundStore;
/**
* SlickUtil-based deferred audio resource.
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
-public class SlickAudio extends DeferredAudio {
+public class SlickSound extends DeferredAudio {
private double pauseLoopPosition = 0;
private boolean looping = false;
@@ -30,7 +30,13 @@ public class SlickAudio extends DeferredAudio {
private int sourceID;
- public SlickAudio(String resourceName) {
+ /**
+ * Slick-util based sound resource
+ *
+ * @param resourceName resource path
+ */
+ public SlickSound(String resourceName)
+ {
super(resourceName);
}
@@ -40,7 +46,7 @@ public class SlickAudio extends DeferredAudio {
{
final String ext = FileUtil.getExtension(resource);
- try (final InputStream stream = FileUtil.getResource(resource)) {
+ try(final InputStream stream = FileUtil.getResource(resource)) {
if (ext.equalsIgnoreCase("ogg")) {
backingAudio = SoundStore.get().getOgg(resource, stream);
diff --git a/src/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.java b/src/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.java
index fa11ce7..8cfdc29 100644
--- a/src/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.java
+++ b/src/mightypork/gamecore/backends/lwjgl/graphics/AwtScreenshot.java
@@ -15,7 +15,7 @@ import mightypork.gamecore.graphics.Screenshot;
* Screenshot object, can be used to extract image or write to file.
* Screenshot, once taken, can be safely processed in separate thread.
* Based on {@link BufferedImage} and {@link ImageIO}.
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
public class AwtScreenshot implements Screenshot {
@@ -31,9 +31,10 @@ public class AwtScreenshot implements Screenshot {
* @param width image width
* @param height image height
* @param bpp bits per pixel (typically 4)
- * @param buffer
+ * @param buffer buffer with the screenshot bytes
*/
- public AwtScreenshot(int width, int height, int bpp, ByteBuffer buffer) {
+ public AwtScreenshot(int width, int height, int bpp, ByteBuffer buffer)
+ {
this.width = width;
this.height = height;
this.bpp = bpp;
@@ -44,7 +45,7 @@ public class AwtScreenshot implements Screenshot {
/**
* Extract to an image.
* Subsequent calls will use a cached value.
- *
+ *
* @return image
*/
public BufferedImage getImage()
@@ -71,7 +72,7 @@ public class AwtScreenshot implements Screenshot {
/**
* Save to a file.
* Cached value is used if any.
- *
+ *
* @param file target file
* @throws IOException on error writing to file
*/
diff --git a/src/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.java b/src/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.java
index 59ff484..70a7c3d 100644
--- a/src/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.java
+++ b/src/mightypork/gamecore/backends/lwjgl/graphics/LwjglGraphicsModule.java
@@ -6,9 +6,11 @@ import static org.lwjgl.opengl.GL11.*;
import java.nio.ByteBuffer;
import java.util.Stack;
+import mightypork.gamecore.backends.lwjgl.graphics.font.LwjglFont;
import mightypork.gamecore.core.App;
import mightypork.gamecore.graphics.GraphicsModule;
import mightypork.gamecore.graphics.Screenshot;
+import mightypork.gamecore.graphics.fonts.DeferredFont;
import mightypork.gamecore.graphics.textures.DeferredTexture;
import mightypork.gamecore.graphics.textures.TxQuad;
import mightypork.gamecore.gui.events.ViewportChangeEvent;
@@ -30,7 +32,7 @@ import org.lwjgl.opengl.GL11;
/**
* LWJGL rendering module
- *
+ *
* @author MightyPork
*/
public class LwjglGraphicsModule extends GraphicsModule {
@@ -40,7 +42,7 @@ public class LwjglGraphicsModule extends GraphicsModule {
/** Currently binded color's alpha multiplier */
private double activeColorAlpha = 1;
/** Stack of pushed colors */
- private Stack colorPushStack = new Stack<>();
+ private final Stack colorPushStack = new Stack<>();
/** Currently binded texture */
private SlickTexture activeTexture;
@@ -49,7 +51,7 @@ public class LwjglGraphicsModule extends GraphicsModule {
/** FPS the user wants */
private int targetFps;
/** FPS meter used for measuring actual FPS */
- private FpsMeter fpsMeter = new FpsMeter();
+ private final FpsMeter fpsMeter = new FpsMeter();
/** Flag that at the end of frame, fullscreen should be toggled. */
private boolean fullscreenToggleRequested;
@@ -387,8 +389,8 @@ public class LwjglGraphicsModule extends GraphicsModule {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- int w = Display.getWidth();
- int h = Display.getHeight();
+ final int w = Display.getWidth();
+ final int h = Display.getHeight();
glViewport(0, 0, w, h);
glOrtho(0, w, h, 0, -1000, 1000);
@@ -414,10 +416,17 @@ public class LwjglGraphicsModule extends GraphicsModule {
@Override
- public DeferredTexture getLazyTexture(String path)
+ public DeferredTexture createDeferredTexture(String path)
{
return new SlickTexture(path);
}
+
+
+ @Override
+ public DeferredFont createDeferredFont(String path)
+ {
+ return new LwjglFont(path);
+ }
@Override
@@ -467,7 +476,7 @@ public class LwjglGraphicsModule extends GraphicsModule {
try {
if (Display.isFullscreen() == fs) return; // no work
-
+
if (fs) {
Log.f3("Entering fullscreen.");
// save window resize
@@ -549,7 +558,7 @@ public class LwjglGraphicsModule extends GraphicsModule {
{
try {
Display.setDisplayMode(windowDisplayMode = new DisplayMode(width, height));
- } catch (LWJGLException e) {
+ } catch (final LWJGLException e) {
throw new RuntimeException(e);
}
}
diff --git a/src/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.java b/src/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.java
index 2498c4b..d13636d 100644
--- a/src/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.java
+++ b/src/mightypork/gamecore/backends/lwjgl/graphics/SlickTexture.java
@@ -17,32 +17,33 @@ import org.newdawn.slick.opengl.TextureLoader;
/**
* Deferred texture
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
@Alias(name = "Texture")
@MustLoadInRenderingContext
public class SlickTexture extends DeferredTexture {
-
+
private org.newdawn.slick.opengl.Texture backingTexture;
private boolean alpha;
private boolean alphal;
-
-
+
+
/**
* @param resourcePath resource path
*/
- public SlickTexture(String resourcePath) {
+ public SlickTexture(String resourcePath)
+ {
super(resourcePath);
}
-
-
+
+
@Override
protected synchronized void loadResource(String path)
{
try {
final String ext = FileUtil.getExtension(path).toUpperCase();
-
+
final int filtering;
switch (filter) {
case NEAREST:
@@ -54,49 +55,49 @@ public class SlickTexture extends DeferredTexture {
default:
throw new IllegalValueException("Unsupported filtering mode.");
}
-
+
final Texture texture = TextureLoader.getTexture(ext, FileUtil.getResource(path), false, filtering);
-
+
if (texture == null) {
Log.w("Texture " + path + " could not be loaded.");
}
-
+
backingTexture = texture;
-
+
} catch (final IOException e) {
Log.e("Loading of texture " + path + " failed.", e);
throw new RuntimeException("Could not load texture " + path + ".", e);
}
}
-
-
+
+
@Override
public boolean hasAlpha()
{
if (!ensureLoaded()) return false;
-
+
if (!alphal) {
alphal = true;
alpha = backingTexture.hasAlpha();
}
-
+
return alpha;
}
-
-
+
+
/**
* Bind to GL context, applying the filters prescribed.
*/
public void bind()
{
if (!ensureLoaded()) return;
-
+
//GL11.glEnable(GL11.GL_TEXTURE_2D);
-
+
GL11.glBindTexture(GL11.GL_TEXTURE_2D, getTextureID());
-
+
GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE);
-
+
final int wrapping;
switch (wrap) {
case CLAMP:
@@ -108,10 +109,10 @@ public class SlickTexture extends DeferredTexture {
default:
throw new IllegalValueException("Unsupported wrapping mode.");
}
-
+
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, wrapping);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, wrapping);
-
+
final int filtering;
switch (filter) {
case NEAREST:
@@ -123,72 +124,72 @@ public class SlickTexture extends DeferredTexture {
default:
throw new IllegalValueException("Unsupported filtering mode.");
}
-
+
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, filtering);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, filtering);
}
-
-
+
+
@Override
public int getImageHeight()
{
if (!ensureLoaded()) return 0;
-
+
return backingTexture.getImageHeight();
}
-
-
+
+
@Override
public int getImageWidth()
{
if (!ensureLoaded()) return 0;
-
+
return backingTexture.getImageWidth();
}
-
-
+
+
@Override
public void destroy()
{
if (!isLoaded()) return;
-
+
backingTexture.release();
}
-
-
+
+
/**
* Get the height of the texture, 0..1.
- *
+ *
* @return height 0..1
*/
public float getHeight01()
{
if (!ensureLoaded()) return 0;
-
+
return backingTexture.getHeight();
}
-
-
+
+
/**
* Get the width of the texture, 0..1.
- *
+ *
* @return width 0..1
*/
public float getWidth01()
{
if (!ensureLoaded()) return 0;
-
+
return backingTexture.getWidth();
}
-
-
+
+
/**
* @return OpenGL texture ID
*/
public int getTextureID()
{
if (!ensureLoaded()) return -1;
-
+
return backingTexture.getTextureID();
}
}
diff --git a/src/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFontFromSystem.java b/src/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFontFromSystem.java
deleted file mode 100644
index 841b15b..0000000
--- a/src/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFontFromSystem.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package mightypork.gamecore.backends.lwjgl.graphics.font;
-
-
-import java.awt.Font;
-import java.io.IOException;
-
-import mightypork.utils.annotations.Alias;
-
-
-/**
- * Font obtained from the OS
- *
- * @author Ondřej Hruška (MightyPork)
- */
-@Alias(name = "FontNative")
-public class DeferredLwjglFontFromSystem extends DeferredLwjglFont {
-
- /**
- * A font from OS, found by name
- *
- * @param fontName font family name
- * @param chars chars to load; null to load basic chars only
- * @param size size (pt)
- */
- public DeferredLwjglFontFromSystem(String fontName, String chars, double size) {
- super(fontName, chars, size);
- }
-
-
- @Override
- protected Font getAwtFont(String resource, float size, int style) throws IOException
- {
- return new Font(resource, style, (int) size);
- }
-
-}
diff --git a/src/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFont.java b/src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglFont.java
similarity index 80%
rename from src/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFont.java
rename to src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglFont.java
index 127b203..43691ef 100644
--- a/src/mightypork/gamecore/backends/lwjgl/graphics/font/DeferredLwjglFont.java
+++ b/src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglFont.java
@@ -17,27 +17,24 @@ import mightypork.utils.math.constraints.vect.Vect;
/**
* Font obtained from a resource file (TTF).
- *
+ *
* @author Ondřej Hruška (MightyPork)
*/
@MustLoadInRenderingContext
@Alias(name = "Font")
-public class DeferredLwjglFont extends DeferredFont {
+public class LwjglFont extends DeferredFont {
private IFont font = null;
/**
* A font from resource
- *
+ *
* @param resourcePath resource to load
- * @param chars chars to load; null to load basic chars only
- * @param size size (px)
*/
- public DeferredLwjglFont(String resourcePath, String chars, double size) {
+ public LwjglFont(String resourcePath)
+ {
super(resourcePath);
- this.size = size;
- this.chars = chars;
}
@@ -46,28 +43,33 @@ public class DeferredLwjglFont extends DeferredFont {
{
final Font awtFont = getAwtFont(path, (float) size, style.numval);
- font = new LwjglTextureBackedFont(awtFont, antialias, filter, chars);
+ font = new LwjglTextureBackedFontImpl(awtFont, antialias, filter, chars);
font.setDiscardRatio(discardTop, discardBottom);
}
/**
* Get a font for a resource path / name
- *
+ *
* @param resource resource to load
* @param size font size (pt)
* @param style font style
* @return the {@link Font}
- * @throws IOException
+ * @throws IOException on load error
*/
protected Font getAwtFont(String resource, float size, int style) throws IOException
{
- try (InputStream in = FileUtil.getResource(resource)) {
-
- Font awtFont = Font.createFont(Font.TRUETYPE_FONT, in);
+ try(InputStream in = FileUtil.getResource(resource)) {
+
+ Font awtFont = null;
- awtFont = awtFont.deriveFont(size);
- awtFont = awtFont.deriveFont(style);
+ if (in != null) {
+ awtFont = Font.createFont(Font.TRUETYPE_FONT, in);
+ awtFont = awtFont.deriveFont(size);
+ awtFont = awtFont.deriveFont(style);
+ } else {
+ awtFont = new Font(/* font name */resource, style, (int) size);
+ }
return awtFont;
} catch (final FontFormatException e) {
@@ -78,7 +80,7 @@ public class DeferredLwjglFont extends DeferredFont {
/**
* Draw string
- *
+ *
* @param str string to draw
* @param color draw color
*/
@@ -93,7 +95,7 @@ public class DeferredLwjglFont extends DeferredFont {
/**
* Get size needed to render give string
- *
+ *
* @param text string to check
* @return coord (width, height)
*/
diff --git a/src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont.java b/src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFontImpl.java
similarity index 96%
rename from src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont.java
rename to src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFontImpl.java
index 6042349..6944f35 100644
--- a/src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFont.java
+++ b/src/mightypork/gamecore/backends/lwjgl/graphics/font/LwjglTextureBackedFontImpl.java
@@ -33,7 +33,7 @@ import org.newdawn.slick.opengl.GLUtils;
/**
* A TrueType font renderer with backing texture.
- *
+ *
* @author James Chambers (Jimmy)
* @author Jeremy Adams (elias4444)
* @author Kevin Glass (kevglass)
@@ -41,7 +41,7 @@ import org.newdawn.slick.opengl.GLUtils;
* @author David Aaron Muhar (bobjob)
* @author Ondřej Hruška (MightyPork)
*/
-public class LwjglTextureBackedFont implements IFont {
+class LwjglTextureBackedFontImpl implements IFont {
private class CharTile {
@@ -84,26 +84,28 @@ public class LwjglTextureBackedFont implements IFont {
/**
* Make a font
- *
+ *
* @param font original awt font to load
* @param antialias use antialiasing when rendering to cache texture
* @param filter used Gl filter
* @param chars chars to load
*/
- public LwjglTextureBackedFont(java.awt.Font font, boolean antialias, FilterMode filter, String chars) {
+ public LwjglTextureBackedFontImpl(java.awt.Font font, boolean antialias, FilterMode filter, String chars)
+ {
this(font, antialias, filter, (" " + chars).toCharArray());
}
/**
* Make a font
- *
+ *
* @param font original awt font to load
* @param antialias use antialiasing when rendering to cache texture
* @param filter used Gl filter
* @param chars chars to load
*/
- public LwjglTextureBackedFont(java.awt.Font font, boolean antialias, FilterMode filter, char[] chars) {
+ public LwjglTextureBackedFontImpl(java.awt.Font font, boolean antialias, FilterMode filter, char[] chars)
+ {
GLUtils.checkGLContext();
this.font = font;
@@ -117,7 +119,7 @@ public class LwjglTextureBackedFont implements IFont {
/**
* Create a BufferedImage of the given character
- *
+ *
* @param ch the character
* @return BufferedImage containing the drawn character
*/
@@ -163,7 +165,8 @@ public class LwjglTextureBackedFont implements IFont {
public int height;
- public LoadedGlyph(char c, BufferedImage image) {
+ public LoadedGlyph(char c, BufferedImage image)
+ {
this.image = image;
this.c = c;
this.width = image.getWidth();
@@ -299,7 +302,8 @@ public class LwjglTextureBackedFont implements IFont {
byteBuffer = ByteBuffer.allocateDirect(width * height * (bpp / 8)).order(ByteOrder.nativeOrder()).put(newI);
} else {
- byteBuffer = ByteBuffer.allocateDirect(width * height * (bpp / 8)).order(ByteOrder.nativeOrder()).put(((DataBufferByte) (bufferedImage.getData().getDataBuffer())).getData());
+ byteBuffer = ByteBuffer.allocateDirect(width * height * (bpp / 8)).order(ByteOrder.nativeOrder())
+ .put(((DataBufferByte) (bufferedImage.getData().getDataBuffer())).getData());
}
byteBuffer.flip();
@@ -349,7 +353,7 @@ public class LwjglTextureBackedFont implements IFont {
/**
* Get size needed to draw given string
- *
+ *
* @param text drawn text
* @return needed width
*/