diff --git a/core/src/main/java/com/agifans/agile/AgileRunner.java b/core/src/main/java/com/agifans/agile/AgileRunner.java index f2c1fd1..42e9faf 100644 --- a/core/src/main/java/com/agifans/agile/AgileRunner.java +++ b/core/src/main/java/com/agifans/agile/AgileRunner.java @@ -182,4 +182,5 @@ private void updateGameClock() { public abstract void saveScreenshot(Agile agile, AppConfigItem appConfigItem, Pixmap pixmap); + public abstract boolean hasTouchScreen(); } diff --git a/core/src/main/java/com/agifans/agile/GameScreen.java b/core/src/main/java/com/agifans/agile/GameScreen.java index c27d4c5..20649e9 100644 --- a/core/src/main/java/com/agifans/agile/GameScreen.java +++ b/core/src/main/java/com/agifans/agile/GameScreen.java @@ -184,6 +184,10 @@ public void show() { Gdx.input.setInputProcessor(landscapeInputProcessor); } + if (agileRunner.hasTouchScreen() && !Gdx.graphics.isFullscreen()) { + gameScreenInputProcessor.switchIntoFullScreen(); + } + agileRunner.start(appConfigItem.getFilePath()); } @@ -207,7 +211,10 @@ public void render(float delta) { // This makes sure we update the Pixmap one last time before leaving, as that // will mean that the AGI game screen starts out black for the next game. copyPixels(); - agile.setScreen(agile.getHomeScreen());; + if (agileRunner.hasTouchScreen() && Gdx.graphics.isFullscreen()) { + gameScreenInputProcessor.switchOutOfFullScreen(); + } + agile.setScreen(agile.getHomeScreen()); return; } diff --git a/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java b/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java index c0074ea..4d57294 100644 --- a/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java +++ b/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java @@ -394,13 +394,9 @@ else if ((touchXY.y > 0) && (touchXY.y < 128)) { if (fullScreenClicked) { Boolean fullScreen = Gdx.graphics.isFullscreen(); if (fullScreen == true) { - if (screenWidthBeforeFullScreen > screenHeightBeforeFullScreen) { - keyboardType = KeyboardType.OFF; - } switchOutOfFullScreen(); } else { - keyboardType = KeyboardType.OFF; switchIntoFullScreen(); } } @@ -427,7 +423,8 @@ public void no() { * Switches to full screen mode, storing the width and height beforehand so * that it can be restored when switching back. */ - private void switchIntoFullScreen() { + public void switchIntoFullScreen() { + keyboardType = KeyboardType.OFF; Graphics.DisplayMode currentMode = Gdx.graphics.getDisplayMode(); screenWidthBeforeFullScreen = Gdx.graphics.getWidth(); screenHeightBeforeFullScreen = Gdx.graphics.getHeight(); @@ -438,7 +435,10 @@ private void switchIntoFullScreen() { * Switches out of full screen mode back to the windowed mode, restoring the * saved width and height. */ - private void switchOutOfFullScreen() { + public void switchOutOfFullScreen() { + if (screenWidthBeforeFullScreen > (screenHeightBeforeFullScreen * 1.32f)) { + keyboardType = KeyboardType.OFF; + } Gdx.graphics.setWindowedMode(screenWidthBeforeFullScreen, screenHeightBeforeFullScreen); } diff --git a/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java b/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java index ea838c4..0ad1f80 100644 --- a/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java +++ b/html/src/main/java/com/agifans/agile/gwt/GwtAgileRunner.java @@ -277,4 +277,19 @@ public void saveScreenshot(Agile agile, AppConfigItem appConfigItem, Pixmap pixm // TODO Auto-generated method stub } + + @Override + public boolean hasTouchScreen() { + return hasTouchScreenHtml(); + } + + private native boolean hasTouchScreenHtml() /*-{ + if ("maxTouchPoints" in navigator) { + return navigator.maxTouchPoints > 0; + } else if ("msMaxTouchPoints" in navigator) { + return navigator.msMaxTouchPoints > 0; + } else { + return false; + } + }-*/; } diff --git a/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java b/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java index 673a04a..ce31131 100644 --- a/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java +++ b/lwjgl3/src/main/java/com/agifans/agile/lwjgl3/DesktopAgileRunner.java @@ -132,4 +132,10 @@ public void saveScreenshot(Agile agile, AppConfigItem appConfigItem, Pixmap scre } } } + + @Override + public boolean hasTouchScreen() { + // We don't check this for Desktop. + return false; + } }