From da93bd695c29cd6f3909042ded330538909362ca Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Wed, 16 Nov 2016 02:24:19 +0900 Subject: [PATCH] tiny bit of compatibility with Windows 10, (I might broke controllers support; it checks if 0th controller is valid, which in real case, zeroth "controller" may be just keyboards or USB mouse receiver) Former-commit-id: 5a55035e0181fd78e19eb961fbfbef6c3fcb583c Former-commit-id: 38e224cebb97386f737c207536289a7a28368e07 --- src/net/torvald/terrarum/StateInGame.kt | 4 +++- src/net/torvald/terrarum/Terrarum.kt | 22 ++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/net/torvald/terrarum/StateInGame.kt b/src/net/torvald/terrarum/StateInGame.kt index c8c936568..0802ee69e 100644 --- a/src/net/torvald/terrarum/StateInGame.kt +++ b/src/net/torvald/terrarum/StateInGame.kt @@ -229,7 +229,9 @@ constructor() : BasicGameState() { ///////////////////////// // app-related updates // ///////////////////////// - Terrarum.appgc.setVSync(Terrarum.appgc.fps >= Terrarum.VSYNC_TRIGGER_THRESHOLD) + if (!Terrarum.isWin81) { + Terrarum.appgc.setVSync(Terrarum.appgc.fps >= Terrarum.VSYNC_TRIGGER_THRESHOLD) // windows 10 has some trouble with this... + } // determine if lightmap blending should be done Terrarum.gameConfig["smoothlighting"] = KeyToggler.isOn(KEY_LIGHTMAP_SMOOTH) diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 1dc585744..4a963c54b 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -86,7 +86,16 @@ constructor(gamename: String) : StateBasedGame(gamename) { fontGame = GameFontWhite() fontSmallNumbers = TinyAlphNum() - hasController = gc.input.controllerCount > 0 + try { + hasController = gc.input.controllerCount > 0 + + // check if the first controller is actually available + Controllers.getController(0).getAxisValue(0) + } + catch (e: ArrayIndexOutOfBoundsException) { + hasController = false + } + if (hasController) { for (c in 0..Controllers.getController(0).axisCount - 1) { Controllers.getController(0).setDeadZone(c, CONTROLLER_DEADZONE) @@ -140,12 +149,14 @@ constructor(gamename: String) : StateBasedGame(gamename) { lateinit var ingame: StateInGame lateinit var gameConfig: GameConfig - lateinit var OSName: String + lateinit var OSName: String // System.getProperty("os.name") private set - lateinit var OSVersion: String + lateinit var OSVersion: String // System.getProperty("os.version") private set - lateinit var OperationSystem: String + lateinit var OperationSystem: String // all caps "WINDOWS, "OSX", "LINUX", "SOLARIS", "UNKNOWN" private set + val isWin81: Boolean + get() = OperationSystem == "WINDOWS" && OSVersion.toDouble() >= 8.1 lateinit var defaultDir: String private set lateinit var defaultSaveDir: String @@ -296,6 +307,9 @@ constructor(gamename: String) : StateBasedGame(gamename) { defaultSaveDir = defaultDir + "/Saves" configDir = defaultDir + "/config.json" + + println("os.name: '$OSName'") + println("os.version: '$OSVersion'") } private fun createDirs() {