diff --git a/src/net/torvald/terrarum/App.java b/src/net/torvald/terrarum/App.java index 803db3022..31902db10 100644 --- a/src/net/torvald/terrarum/App.java +++ b/src/net/torvald/terrarum/App.java @@ -1,14 +1,14 @@ package net.torvald.terrarum; -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.Files; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Screen; +import com.badlogic.gdx.*; +import com.badlogic.gdx.Graphics; import com.badlogic.gdx.audio.AudioDevice; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; +import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Graphics; import com.badlogic.gdx.controllers.Controllers; import com.badlogic.gdx.graphics.*; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.glutils.*; import com.badlogic.gdx.utils.Disposable; @@ -43,6 +43,7 @@ import net.torvald.unsafe.DanglingPointerException; import net.torvald.unsafe.UnsafeHelper; import net.torvald.util.DebugTimers; +import java.awt.*; import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -404,13 +405,27 @@ public class App implements ApplicationListener { scr = new TerrarumScreenSize(getConfigInt("screenwidth"), getConfigInt("screenheight")); int width = scr.getWindowW(); int height = scr.getWindowH(); + boolean useFullscreen = getConfigBoolean("fullscreen"); Lwjgl3ApplicationConfiguration appConfig = new Lwjgl3ApplicationConfiguration(); //appConfig.useGL30 = false; // https://stackoverflow.com/questions/46753218/libgdx-should-i-use-gl30 appConfig.setOpenGLEmulation(Lwjgl3ApplicationConfiguration.GLEmulation.GL30, 3, 2); appConfig.useVsync(getConfigBoolean("usevsync")); appConfig.setResizable(false); - appConfig.setWindowedMode(width, height); + + if (useFullscreen) { + // auto resize for fullscreen + var disp = Lwjgl3ApplicationConfiguration.getDisplayMode(); + float magn = (float) getConfigDouble("screenmagnifying"); + var newWidth = ((int)(disp.width / magn)) & 0x7FFFFFFE; + var newHeight = ((int)(disp.height / magn)) & 0x7FFFFFFE; + scr.setDimension(newWidth, newHeight, magn); + + appConfig.setFullscreenMode(Lwjgl3ApplicationConfiguration.getDisplayMode()); + } + else + appConfig.setWindowedMode(width, height); + appConfig.setTransparentFramebuffer(false); int fpsActive = Math.min(GLOBAL_FRAMERATE_LIMIT, getConfigInt("displayfps")); if (fpsActive <= 0) fpsActive = GLOBAL_FRAMERATE_LIMIT; diff --git a/src/net/torvald/terrarum/DefaultConfig.kt b/src/net/torvald/terrarum/DefaultConfig.kt index 1f257fc09..68e781843 100644 --- a/src/net/torvald/terrarum/DefaultConfig.kt +++ b/src/net/torvald/terrarum/DefaultConfig.kt @@ -19,6 +19,7 @@ object DefaultConfig { "usevsync" to false, "screenwidth" to TerrarumScreenSize.defaultW, "screenheight" to TerrarumScreenSize.defaultH, + "fullscreen" to false, "atlastexsize" to 2048, "language" to App.getSysLang(), diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt index 09f303d14..1ded930fc 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt @@ -30,6 +30,7 @@ class UIGraphicsControlPanel(remoCon: UIRemoCon?) : UICanvas() { arrayOf("maxparticles", { Lang["MENU_OPTIONS_PARTICLES"] }, "spinner,256,1024,256"), arrayOf("", { Lang["MENU_OPTIONS_DISPLAY"] }, "h1"), arrayOf("screenwidth,screenheight", { Lang["MENU_OPTIONS_RESOLUTION"] }, "typeinres"), + arrayOf("fullscreen", { Lang["MENU_OPTIONS_FULLSCREEN"] }, "toggle"), arrayOf("screenmagnifying", { Lang["GAME_ACTION_ZOOM"] }, "spinnerd,1.0,2.0,0.05"), arrayOf("screenmagnifyingfilter", { Lang["MENU_OPTIONS_FILTERING_MODE"] }, "textsel,none=MENU_OPTIONS_NONE,bilinear=MENU_OPTIONS_FILTERING_BILINEAR,hq2x=MENU_OPTIONS_FILTERING_HQ2X_DNT"), arrayOf("displayfps", { Lang["MENU_LABEL_FRAMESPERSEC"] }, "spinner,0,300,2"),