diff --git a/core/src/main/java/it/cavallium/warppi/extra/mario/MarioScreen.java b/core/src/main/java/it/cavallium/warppi/extra/mario/MarioScreen.java
index 7cec321f..1b1441b9 100644
--- a/core/src/main/java/it/cavallium/warppi/extra/mario/MarioScreen.java
+++ b/core/src/main/java/it/cavallium/warppi/extra/mario/MarioScreen.java
@@ -210,8 +210,8 @@ public class MarioScreen extends Screen {
for (int ix = 0; ix < width; ix++) {
for (int iy = 0; iy < height; iy++) {
final double distX = Math.abs(playerX - ix);
- final double distY = Math.abs(playerY - iy - 1.5d);
- if (distX * distX + distY * distY / 2d < 25d) {
+ final double distY = Math.abs(playerY - iy - 1.2d);
+ if (distX * distX + distY * distY / 2d < 270d) {
final byte b = w.getBlockIdAt(ix, iy);
if (b == 0) {
if (blue != 1) {
diff --git a/core/src/main/java/it/cavallium/warppi/gui/expression/blocks/BlockContainer.java b/core/src/main/java/it/cavallium/warppi/gui/expression/blocks/BlockContainer.java
index 5d4b71a7..d41b37b0 100644
--- a/core/src/main/java/it/cavallium/warppi/gui/expression/blocks/BlockContainer.java
+++ b/core/src/main/java/it/cavallium/warppi/gui/expression/blocks/BlockContainer.java
@@ -377,6 +377,10 @@ public class BlockContainer implements TreeContainer, GraphicalElement {
BlockContainer.initialized = true;
}
+ public static boolean isInitialized() {
+ return BlockContainer.initialized;
+ }
+
public static BinaryFont getDefaultFont(final boolean small) {
BlockContainer.checkInitialized();
return BlockContainer.defFonts[small ? 1 : 0];
diff --git a/core/src/main/java/it/cavallium/warppi/gui/screens/LoadingScreen.java b/core/src/main/java/it/cavallium/warppi/gui/screens/LoadingScreen.java
index 781c17a9..75d0faf9 100644
--- a/core/src/main/java/it/cavallium/warppi/gui/screens/LoadingScreen.java
+++ b/core/src/main/java/it/cavallium/warppi/gui/screens/LoadingScreen.java
@@ -50,7 +50,7 @@ public class LoadingScreen extends Screen {
ended = true;
StaticVars.windowZoom.submit(previousZoomValue);
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getHUD().show();
- WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().setScreen(new MarioScreen());
+ WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().setScreen(new MathInputScreen());
}
mustRefresh = true;
}
@@ -58,7 +58,7 @@ public class LoadingScreen extends Screen {
@Override
public void render(RenderContext ctx) {
DisplayOutputDevice display = d.display;
- WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().guiSkin.use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
+ WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().guiSkin.use(display);
ctx.getRenderer().glColor3i(255, 255, 255);
ctx.getRenderer().glFillRect(ctx.getWidth() / 2f - 80, ctx.getHeight() / 2f - 64, 160, 48, 0, 32, 160, 48);
ctx.getRenderer().glFillRect(ctx.getWidth() / 2f - 24, ctx.getHeight() / 2f - loadingTextTranslation, 48, 48, 160, 32, 48, 48);
diff --git a/core/src/main/java/it/cavallium/warppi/gui/screens/MathInputScreen.java b/core/src/main/java/it/cavallium/warppi/gui/screens/MathInputScreen.java
index c656a232..4d970ff3 100644
--- a/core/src/main/java/it/cavallium/warppi/gui/screens/MathInputScreen.java
+++ b/core/src/main/java/it/cavallium/warppi/gui/screens/MathInputScreen.java
@@ -45,6 +45,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList;
public class MathInputScreen extends Screen {
private static final BinaryFont fontBig = Utils.getFont(false);
+ private final boolean isCloned;
public MathContext calc;
public InputContext ic;
@@ -64,6 +65,7 @@ public class MathInputScreen extends Screen {
public MathInputScreen() {
super();
historyBehavior = HistoryBehavior.NORMAL;
+ isCloned = false;
}
/**
@@ -81,6 +83,7 @@ public class MathInputScreen extends Screen {
this.mustRefresh = old.mustRefresh;
this.result = new NormalOutputContainer(old.result);
this.userInput = new NormalInputContainer(old.userInput, this.ic);
+ this.isCloned = true;
}
@Override
@@ -100,14 +103,18 @@ public class MathInputScreen extends Screen {
public void graphicInitialized(ScreenContext ctx) throws InterruptedException {
/* Fine caricamento */
try {
- BlockContainer.initializeFonts(ctx.getGraphicEngine().loadFont("norm"), ctx.getGraphicEngine().loadFont("smal"));
+ if (!BlockContainer.isInitialized()) {
+ BlockContainer.initializeFonts(ctx.getGraphicEngine().loadFont("norm"), ctx.getGraphicEngine().loadFont("smal"));
+ }
} catch (final IOException e) {
e.printStackTrace();
WarpPI.getPlatform().exit(1);
}
- userInput = new NormalInputContainer(ic);
- result = new NormalOutputContainer();
+ if (!isCloned) {
+ userInput = new NormalInputContainer(ic);
+ result = new NormalOutputContainer();
+ }
}
@Override
diff --git a/core/src/main/java/it/cavallium/warppi/util/Timer.java b/core/src/main/java/it/cavallium/warppi/util/Timer.java
index 955ac876..948e03d1 100644
--- a/core/src/main/java/it/cavallium/warppi/util/Timer.java
+++ b/core/src/main/java/it/cavallium/warppi/util/Timer.java
@@ -27,7 +27,7 @@ public class Timer {
}
});
WarpPI.getPlatform().setThreadName(thread, "Timer");
- thread.setDaemon(true);
+ WarpPI.getPlatform().setThreadDaemon(thread, true);
thread.start();
}
}
diff --git a/desktop/pom.xml b/desktop/pom.xml
index 21a811b2..92599d20 100644
--- a/desktop/pom.xml
+++ b/desktop/pom.xml
@@ -51,36 +51,7 @@
org.apache.maven.plugins
maven-source-plugin
-
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
- 2.4.1
-
-
-
- jar-with-dependencies
-
-
-
-
- it.cavallium.warppi.desktop.DesktopBoot
-
-
-
-
-
- make-assembly
-
- package
-
- single
-
-
-
-
org.apache.maven.plugins
maven-resources-plugin
@@ -91,4 +62,46 @@
+
+
+
+ build-desktop-jar
+
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 2.4.1
+
+
+
+ jar-with-dependencies
+
+
+
+
+ it.cavallium.warppi.desktop.DesktopBoot
+
+
+
+
+
+
+ make-assembly
+
+ package
+
+ single
+
+
+
+
+
+
+
+
diff --git a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java
index c0e20e51..42140ecf 100644
--- a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java
+++ b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java
@@ -5,6 +5,7 @@ import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.Semaphore;
+import java.util.concurrent.atomic.AtomicInteger;
import it.cavallium.warppi.WarpPI;
import it.cavallium.warppi.StaticVars;
@@ -118,8 +119,9 @@ public class SwingEngine implements GraphicEngine {
@Deprecated()
public void refresh() {
- if (WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen() == null || WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().error != null && WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().error.length() > 0 || WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen() == null || WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen().mustBeRefreshed())
+ if (WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen() == null || WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().error != null && WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().error.length() > 0 || WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen() == null || WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen().mustBeRefreshed()) {
INSTANCE.c.paintImmediately(0, 0, getWidth(), getHeight());
+ }
}
@Override
diff --git a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingWindow.java b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingWindow.java
index 6904acd9..44b76cb8 100644
--- a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingWindow.java
+++ b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingWindow.java
@@ -1,34 +1,20 @@
package it.cavallium.warppi.gui.graphicengine.impl.swing;
-import java.awt.*;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
+import it.cavallium.warppi.StaticVars;
+import it.cavallium.warppi.WarpPI;
+import it.cavallium.warppi.device.input.Keyboard;
+import it.cavallium.warppi.gui.graphicengine.RenderingLoop;
+import it.cavallium.warppi.util.EventSubmitter;
-import java.awt.event.MouseMotionListener;
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import java.io.IOException;
import java.net.URISyntaxException;
-import javax.imageio.ImageIO;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-
-import it.cavallium.warppi.WarpPI;
-import it.cavallium.warppi.device.input.Keyboard;
-import it.cavallium.warppi.StaticVars;
-import it.cavallium.warppi.event.TouchEndEvent;
-import it.cavallium.warppi.event.TouchMoveEvent;
-import it.cavallium.warppi.event.TouchPoint;
-import it.cavallium.warppi.event.TouchStartEvent;
-import it.cavallium.warppi.gui.graphicengine.RenderingLoop;
-import it.cavallium.warppi.util.EventSubmitter;
-import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-
public class SwingWindow extends JFrame {
private static final long serialVersionUID = 2945898937634075491L;
private final int defaultWidth;
@@ -90,7 +76,7 @@ public class SwingWindow extends JFrame {
newSize[1] = 1;
var oldSize = disp.r.size;
- disp.r.size = new int[] { newSize[0], newSize[1] };
+ disp.r.size = new int[]{newSize[0], newSize[1]};
SwingRenderer.canvas2d = new int[disp.r.size[0] * disp.r.size[1]];
var oldG = disp.g;
@@ -124,12 +110,13 @@ public class SwingWindow extends JFrame {
}
@Override
- public void componentMoved(final ComponentEvent e) {}
+ public void componentMoved(final ComponentEvent e) {
+ }
@Override
public void componentResized(final ComponentEvent e) {
if (windowShown) {
- onResize.submit(new Integer[] { c.getWidth() / mult, c.getHeight() / mult });
+ onResize.submit(new Integer[]{c.getWidth() / mult, c.getHeight() / mult});
}
}
@@ -162,7 +149,7 @@ public class SwingWindow extends JFrame {
StaticVars.windowZoom$.subscribe((newZoomValue) -> {
if (newZoomValue != mult) {
mult = (int) newZoomValue.floatValue();
- onResize.submit(new Integer[] { getWWidth(), getWHeight() });
+ onResize.submit(new Integer[]{getWWidth(), getWHeight()});
WarpPI.getPlatform().getConsoleUtils().out().println(3, "Engine", "CPU", "Zoom changed");
}
});
@@ -232,11 +219,13 @@ public class SwingWindow extends JFrame {
Keyboard.keyRaw(row, col, true);
c.grabFocus();
}
+
@Override
public void mousePressed(MouseEvent e) {
Keyboard.keyRaw(row, col, false);
c.grabFocus();
}
+
@Override
public void mouseExited(MouseEvent e) {
if (b.state == 2) {
@@ -247,6 +236,7 @@ public class SwingWindow extends JFrame {
b.hover = false;
b.repaint();
}
+
@Override
public void mouseEntered(MouseEvent e) {
if (b.state == 2) {
@@ -257,10 +247,11 @@ public class SwingWindow extends JFrame {
b.hover = true;
b.repaint();
}
+
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
-
+
}
});
buttons[row][col] = b;
diff --git a/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/NEWTWindow.java b/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/NEWTWindow.java
index 0466dce7..cefe87dd 100644
--- a/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/NEWTWindow.java
+++ b/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/NEWTWindow.java
@@ -173,7 +173,102 @@ class NEWTWindow implements GLEventListener {
glWindow.addKeyListener(new KeyListener() {
@Override
public void keyPressed(final KeyEvent arg0) {
- Keyboard.debugKeyCode = arg0.getKeyCode();
+ switch (arg0.getKeyCode()) {
+ case KeyEvent.VK_ESCAPE:
+ Keyboard.keyPressed(Key.POWEROFF);
+ break;
+ case KeyEvent.VK_D:
+ Keyboard.keyPressed(Key.debug_DEG);
+ break;
+ case KeyEvent.VK_R:
+ Keyboard.keyPressed(Key.debug_RAD);
+ break;
+ case KeyEvent.VK_G:
+ Keyboard.keyPressed(Key.debug_GRA);
+ break;
+ case KeyEvent.VK_X:
+ if (Keyboard.alpha)
+ Keyboard.keyPressed(Key.LETTER_X);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case KeyEvent.VK_P:
+ if (Keyboard.alpha)
+ Keyboard.keyPressed(Key.PI);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case KeyEvent.VK_B:
+ if (Keyboard.shift)
+ Keyboard.keyPressed(Key.BRIGHTNESS_CYCLE_REVERSE);
+ else if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.BRIGHTNESS_CYCLE);
+ else
+ Keyboard.keyPressed(Key.ZOOM_MODE);
+ break;
+ case KeyEvent.VK_ENTER:
+ if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.SIMPLIFY);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ int row = 2;
+ int col = 1;
+ Keyboard.debugKeysDown[row - 1][col - 1] = true;
+ break;
+ case KeyEvent.VK_1:
+ if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.debug1);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case KeyEvent.VK_2:
+ if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.debug2);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case KeyEvent.VK_3:
+ if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.debug3);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case KeyEvent.VK_4:
+ if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.debug4);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case KeyEvent.VK_5:
+ if (!Keyboard.shift && !Keyboard.alpha)
+ Keyboard.keyPressed(Key.debug5);
+ else
+ Keyboard.keyPressed(Key.NONE);
+ break;
+ case 0x15:
+ case KeyEvent.VK_SHIFT:
+ Keyboard.keyPressed(Key.SHIFT);
+ break;
+ case KeyEvent.VK_CONTROL:
+ Keyboard.keyPressed(Key.ALPHA);
+ break;
+ case KeyEvent.VK_M:
+ Keyboard.keyPressed(Key.SURD_MODE);
+ break;
+ case KeyEvent.VK_LEFT:
+ Keyboard.keyPressed(Key.LEFT);
+ break;
+ case KeyEvent.VK_RIGHT:
+ Keyboard.keyPressed(Key.RIGHT);
+ break;
+ case KeyEvent.VK_UP:
+ Keyboard.keyPressed(Key.UP);
+ break;
+ case KeyEvent.VK_DOWN:
+ case (short) 12:
+ Keyboard.keyPressed(Key.DOWN);
+ break;
+ }
}
@Override
@@ -269,34 +364,17 @@ class NEWTWindow implements GLEventListener {
Keyboard.keyPressed(Key.SURD_MODE);
break;
case KeyEvent.VK_LEFT:
- //LEFT
- row = 2;
- col = 3;
- Keyboard.debugKeysDown[row - 1][col - 1] = false;
+ Keyboard.keyReleased(Key.LEFT);
break;
case KeyEvent.VK_RIGHT:
- //RIGHT
- row = 2;
- col = 5;
- Keyboard.debugKeysDown[row - 1][col - 1] = false;
+ Keyboard.keyReleased(Key.RIGHT);
break;
case KeyEvent.VK_UP:
- //UP
- row = 1;
- col = 4;
- Keyboard.debugKeysDown[row - 1][col - 1] = false;
+ Keyboard.keyReleased(Key.UP);
break;
case KeyEvent.VK_DOWN:
- //Down
- row = 3;
- col = 4;
- Keyboard.debugKeysDown[row - 1][col - 1] = false;
- break;
case (short) 12:
- //Down
- row = 2;
- col = 4;
- Keyboard.debugKeysDown[row - 1][col - 1] = false;
+ Keyboard.keyReleased(Key.DOWN);
break;
}
}
diff --git a/pom.xml b/pom.xml
index 64097df9..31bec1da 100755
--- a/pom.xml
+++ b/pom.xml
@@ -45,9 +45,20 @@
desktop
engine-jogl
- teavm
+
+
+ generate-js
+
+ true
+
+
+ teavm
+
+
+
+
teavm-dev
diff --git a/rules/rules.list b/rules/rules.list
new file mode 100644
index 00000000..c2198df0
--- /dev/null
+++ b/rules/rules.list
@@ -0,0 +1,6 @@
+expand.rules
+exponent.rules
+fractions.rules
+number.rules
+undefined.rules
+variable.rules
\ No newline at end of file
diff --git a/teavm/pom.xml b/teavm/pom.xml
index 026b66db..d80a0318 100644
--- a/teavm/pom.xml
+++ b/teavm/pom.xml
@@ -22,7 +22,7 @@
org.teavm
teavm-classlib
- 0.7.0-dev-916
+ 0.7.0-dev-859
provided
@@ -81,7 +81,7 @@
org.teavm
teavm-maven-plugin
- 0.7.0-dev-916
+ 0.7.0-dev-859
@@ -91,10 +91,12 @@
it.cavallium.warppi.teavm.TeaVMBoot
true
- true
+ false
true
true
FULL
+ true
+ SEPARATE
diff --git a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlEngine.java b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlEngine.java
index b91a2c83..2f2abbbf 100644
--- a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlEngine.java
+++ b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlEngine.java
@@ -1,6 +1,7 @@
package it.cavallium.warppi.gui.graphicengine.html;
import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
import it.cavallium.warppi.util.EventSubmitter;
import org.teavm.jso.JSBody;
@@ -28,7 +29,6 @@ import it.unimi.dsi.fastutil.objects.Object2IntArrayMap;
public class HtmlEngine implements GraphicEngine {
private boolean initialized;
- public Semaphore exitSemaphore;
private static final HTMLDocument document = Window.current().getDocument();
private HTMLCanvasElement canvas;
private CanvasRenderingContext2D g;
@@ -39,6 +39,7 @@ public class HtmlEngine implements GraphicEngine {
private final int frameTime = (int) (1000d / 10d);
private final EventSubmitter onResize = EventSubmitter.create();
private final EventSubmitter onZoom = EventSubmitter.create();
+ private AtomicBoolean exitRequested = new AtomicBoolean();
@Override
public int[] getSize() {
@@ -85,7 +86,6 @@ public class HtmlEngine implements GraphicEngine {
@Override
public void create(final Runnable onInitialized) {
- exitSemaphore = WarpPI.getPlatform().newSemaphore(0);
width = -1;
height = -1;
canvas = (HTMLCanvasElement) HtmlEngine.document.createElement("canvas");
@@ -253,7 +253,7 @@ public class HtmlEngine implements GraphicEngine {
private void destroyEngine() {
HtmlEngine.document.getBody().removeChild(canvas);
initialized = false;
- exitSemaphore.release();
+ exitRequested.set(true);
}
@Override
@@ -313,11 +313,13 @@ public class HtmlEngine implements GraphicEngine {
public void subscribeExit(Runnable subscriber) {
var thr = new Thread(() -> {
try {
- exitSemaphore.acquire();
+ while(!exitRequested.get()) {
+ Thread.sleep(1000);
+ }
} catch (final InterruptedException e) {}
subscriber.run();
});
- thr.setDaemon(true);
+ WarpPI.getPlatform().setThreadDaemon(thr, true);
thr.start();
}
diff --git a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlFont.java b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlFont.java
index 4d272edd..c9732e88 100644
--- a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlFont.java
+++ b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlFont.java
@@ -46,10 +46,14 @@ public class HtmlFont extends RFTFont {
}
}
+ @Override
+ public boolean isInitialized() {
+ return super.isInitialized();
+ }
+
@Override
public void use(final DisplayOutputDevice d) {
- if (d.getGraphicEngine().getRenderer() instanceof HtmlRenderer)
- ((HtmlRenderer) d.getGraphicEngine().getRenderer()).f = this;
+ ((HtmlEngine) d.getGraphicEngine()).getRenderer().f = this;
}
}
\ No newline at end of file
diff --git a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlRenderer.java b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlRenderer.java
index 5af104d3..7247c62b 100644
--- a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlRenderer.java
+++ b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlRenderer.java
@@ -230,54 +230,4 @@ public class HtmlRenderer implements Renderer {
public HtmlFont getCurrentFont() {
return f;
}
-
- @Override
- public HtmlRenderer getBoundedInstance(int dx, int dy, int width, int height) {
- return new HtmlRenderer(e, g) {
- @Override
- public void glDrawLine(float x0, float y0, float x1, float y1) {
- super.glDrawLine(x0 + dx, y0 + dy, x1, y1);
- }
-
- @Override
- public void glDrawCharCenter(int x, int y, char ch) {
- super.glDrawCharCenter(x + dx, y + dy, ch);
- }
-
- @Override
- public void glDrawCharLeft(int x, int y, char ch) {
- super.glDrawCharLeft(x + dx, y + dy, ch);
- }
-
- @Override
- public void glDrawCharRight(int x, int y, char ch) {
- super.glDrawCharRight(x + dx, y + dy, ch);
- }
-
- @Override
- public void glFillColor(float x0, float y0, float w1, float h1) {
- super.glFillColor(x0 + dx, y0 + dy, w1, h1);
- }
-
- @Override
- public void glFillRect(float x, float y, float width, float height, float uvX, float uvY, float uvWidth, float uvHeight) {
- super.glFillRect(x + dx, y + dy, width, height, uvX, uvY, uvWidth, uvHeight);
- }
-
- @Override
- public void glDrawStringCenter(float x, float y, String text) {
- super.glDrawStringCenter(x + dx, y + dy, text);
- }
-
- @Override
- public void glDrawStringLeft(float x, float y, String text) {
- super.glDrawStringLeft(x + dx, y + dy, text);
- }
-
- @Override
- public void glDrawStringRight(float x, float y, String text) {
- super.glDrawStringRight(x + dx, y + dy, text);
- }
- };
- }
}
\ No newline at end of file
diff --git a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlSkin.java b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlSkin.java
index 5ea8e60f..7b3f4510 100644
--- a/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlSkin.java
+++ b/teavm/src/main/java/it/cavallium/warppi/gui/graphicengine/html/HtmlSkin.java
@@ -2,6 +2,7 @@ package it.cavallium.warppi.gui.graphicengine.html;
import java.io.IOException;
import java.io.InputStream;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.lang3.ArrayUtils;
import org.teavm.jso.browser.Window;
@@ -30,11 +31,9 @@ public class HtmlSkin implements Skin {
@Override
public void use(final DisplayOutputDevice d) {
- if (d instanceof HtmlEngine) {
- if (!initd)
- initialize(d);
- ((HtmlEngine) d).getRenderer().currentSkin = this;
- }
+ if (!initd)
+ initialize(d);
+ ((HtmlEngine) d.getGraphicEngine()).getRenderer().currentSkin = this;
}
@Override
@@ -45,13 +44,13 @@ public class HtmlSkin implements Skin {
@Override
public void initialize(final DisplayOutputDevice d) {
final HTMLDocument doc = Window.current().getDocument();
- Boolean[] done = new Boolean[]{false};
+ AtomicBoolean done = new AtomicBoolean(false);
imgEl = doc.createElement("img").cast();
imgEl.addEventListener("load", (Event e) -> {
- done[0] = true;
+ done.set(true);
});
imgEl.setSrc(url);
- while (!done[0]) {
+ while (!done.get()) {
try {Thread.sleep(15);} catch (Exception e) {}
}
skinSize = new int[] { imgEl.getNaturalWidth(), imgEl.getNaturalHeight() };
diff --git a/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMPlatform.java b/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMPlatform.java
index 2dc16045..ce640fe0 100644
--- a/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMPlatform.java
+++ b/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMPlatform.java
@@ -7,6 +7,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.Consumer;
import it.cavallium.warppi.boot.StartupArguments;
import it.cavallium.warppi.device.DeviceStateDevice;
@@ -15,6 +16,7 @@ import it.cavallium.warppi.device.display.NoDisplaysAvailableException;
import it.cavallium.warppi.device.display.NullBacklightOutputDevice;
import it.cavallium.warppi.device.input.KeyboardInputDevice;
import it.cavallium.warppi.device.input.TouchInputDevice;
+import it.cavallium.warppi.event.TouchEvent;
import it.cavallium.warppi.gui.graphicengine.html.HtmlDeviceState;
import it.cavallium.warppi.gui.graphicengine.html.HtmlDisplayOutputDevice;
import org.teavm.jso.browser.Window;
@@ -224,7 +226,41 @@ public class TeaVMPlatform implements Platform {
if (displayOutputDevice instanceof HtmlDisplayOutputDevice) {
//this.touchInputDevice = new HtmlTouchInputDevice((HtmlEngine) displayOutputDevice.getGraphicEngine());
- this.keyboardInputDevice = null;
+ //todo: implement
+ this.touchInputDevice = new TouchInputDevice() {
+ @Override
+ public boolean getSwappedAxes() {
+ return false;
+ }
+
+ @Override
+ public boolean getInvertedX() {
+ return false;
+ }
+
+ @Override
+ public boolean getInvertedY() {
+ return false;
+ }
+
+ @Override
+ public void listenTouchEvents(Consumer touchEventListener) {
+
+ }
+
+ @Override
+ public void initialize() {
+
+ }
+ };
+
+ //todo: implement
+ this.keyboardInputDevice = new KeyboardInputDevice() {
+ @Override
+ public void initialize() {
+
+ }
+ };
this.deviceStateDevice = new HtmlDeviceState((HtmlEngine) displayOutputDevice.getGraphicEngine());
diff --git a/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMStorageUtils.java b/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMStorageUtils.java
index 8fd70661..3d8cefd0 100644
--- a/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMStorageUtils.java
+++ b/teavm/src/main/java/it/cavallium/warppi/teavm/TeaVMStorageUtils.java
@@ -87,7 +87,7 @@ public class TeaVMStorageUtils implements StorageUtils {
return new FileInputStream(targetFile);
else
TeaVMStorageUtils.resourcesCache.remove(path);
- final URL res = new URL(getBasePath() + path);
+ final URL res = new URL(getBasePath() + (path.startsWith("/") ? path : "/" + path));
final InputStream initialStream = res.openStream();
final byte[] buffer = new byte[initialStream.available()];
initialStream.read(buffer);