diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index fd25f25bd..ddd5e7eeb 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -509,7 +509,7 @@ public class AppLoader implements ApplicationListener { return true; } - catch (IOException e) { + catch (java.nio.file.NoSuchFileException e) { // write default config to game dir. Call this method again to read config from it. try { createConfigJson(); diff --git a/src/net/torvald/terrarum/DefaultConfig.kt b/src/net/torvald/terrarum/DefaultConfig.kt index 602df4482..48329a7a9 100644 --- a/src/net/torvald/terrarum/DefaultConfig.kt +++ b/src/net/torvald/terrarum/DefaultConfig.kt @@ -67,8 +67,8 @@ object DefaultConfig { jsonObject.addProperty("keyjump", Input.Keys.SPACE) - val keyquickbars = JsonArray(); for (i in Input.Keys.NUMPAD_1..Input.Keys.NUMPAD_9) keyquickbars.add(i); keyquickbars.add(Input.Keys.NUMPAD_0) // NUM_1 to NUM_0 - jsonObject.add("keyquickbars", keyquickbars) + val keyquickslots = JsonArray(); for (i in Input.Keys.NUM_1..Input.Keys.NUM_9) keyquickslots.add(i); keyquickslots.add(Input.Keys.NUM_0) // NUM_1 to NUM_0 + jsonObject.add("keyquickslots", keyquickslots) jsonObject.addProperty("mouseprimary", Input.Buttons.LEFT) // left mouse jsonObject.addProperty("mousesecondary", Input.Buttons.RIGHT) // right mouse diff --git a/src/net/torvald/terrarum/gameactors/ActorValue.kt b/src/net/torvald/terrarum/gameactors/ActorValue.kt index 7f1589ddf..d3dd55da8 100644 --- a/src/net/torvald/terrarum/gameactors/ActorValue.kt +++ b/src/net/torvald/terrarum/gameactors/ActorValue.kt @@ -12,6 +12,10 @@ class ActorValue(val actor: Actor) : KVHashMap() { } override fun set(key: String, value: Any) { + /*if (key == AVKey.__PLAYER_QUICKSLOTSEL) { + Thread.currentThread().stackTrace.forEach { println(it) } + }*/ + super.set(key, value) actor.onActorValueChange(key, value) // fire the event handler } diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index 82941bd0d..fbaf2c9c3 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -4,11 +4,12 @@ import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input import com.badlogic.gdx.InputAdapter import net.torvald.terrarum.AppLoader +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.floorInt +import net.torvald.terrarum.gameactors.AVKey +import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.worlddrawer.FeaturesDrawer -import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.itemproperties.GameItem -import net.torvald.terrarum.floorInt import net.torvald.terrarum.worlddrawer.WorldCamera /** @@ -70,12 +71,19 @@ class IngameController(val ingame: Ingame) : InputAdapter() { if (ingame.canPlayerControl) { ingame.actorNowPlaying?.keyDown(keycode) - } - if (AppLoader.getConfigIntArray("keyquickselalt").contains(keycode) - || keycode == AppLoader.getConfigInt("keyquicksel")) { - ingame.uiPieMenu.setAsOpen() - ingame.uiQuickBar.setAsClose() + // quickslot (quickbar) + val quickslotKeys = AppLoader.getConfigIntArray("keyquickslots") + if (keycode in quickslotKeys) { + ingame.actorNowPlaying?.actorValue?.set(AVKey.__PLAYER_QUICKSLOTSEL, quickslotKeys.indexOf(keycode)) + } + + // pie menu + if (AppLoader.getConfigIntArray("keyquickselalt").contains(keycode) + || keycode == AppLoader.getConfigInt("keyquicksel")) { + ingame.uiPieMenu.setAsOpen() + ingame.uiQuickBar.setAsClose() + } } ingame.uiContainer.forEach { it.keyDown(keycode) } // for KeyboardControlled UIcanvases diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index 8977fe268..0f4412378 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -116,11 +116,11 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { // UI aliases lateinit var uiAliases: ArrayList private set - lateinit var uiAlasesPausing: ArrayList + lateinit var uiAliasesPausing: ArrayList private set inline val paused: Boolean - get() = uiAlasesPausing.map { if (it.isOpened) return true else 0 }.isEmpty() // isEmply is always false, which we want + get() = uiAliasesPausing.map { if (it.isOpened) return true else 0 }.isEmpty() // isEmpty is always false, which we want /** * Set to false if UI is opened; set to true if UI is closed. */ @@ -355,13 +355,13 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { uiTooltip // drawn last ) - uiAlasesPausing = arrayListOf( + uiAliasesPausing = arrayListOf( uiInventoryPlayer, //uiInventoryContainer, consoleHandler, uiCheatMotherfuckerNootNoot ) - uiAlasesPausing.forEach { addUI(it) } // put them all to the UIContainer + uiAliasesPausing.forEach { addUI(it) } // put them all to the UIContainer uiAliases.forEach { addUI(it) } // put them all to the UIContainer @@ -958,7 +958,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { actorsRenderOverlay.forEach { it.dispose() } uiAliases.forEach { it.dispose() } - uiAlasesPausing.forEach { it.dispose() } + uiAliasesPausing.forEach { it.dispose() } WatchDotAlph.dispose() diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 1f0eb14cf..e2d0aacca 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -358,14 +358,7 @@ open class ActorHumanoid( } override fun keyDown(keycode: Int): Boolean { - // quickslot (quickbar) - val quickbarKeys = AppLoader.getConfigIntArray("keyquickbars") - if (keycode in quickbarKeys) { - actorValue[AVKey.__PLAYER_QUICKSLOTSEL] = quickbarKeys.indexOf(keycode) - } - - - return true + return false } diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt index 4237b5c06..f2788648c 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt @@ -11,8 +11,8 @@ import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_WALLS import net.torvald.terrarum.itemproperties.ItemID import net.torvald.terrarum.lock import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar import java.util.* -import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock /** @@ -30,13 +30,13 @@ class ActorInventory(val actor: Pocketed, var maxCapacity: Int, var capacityMode /** * List of all equipped items (tools, armours, rings, necklaces, etc.) */ - val itemEquipped = Array(GameItem.EquipPosition.INDEX_MAX, { null }) + val itemEquipped = Array(GameItem.EquipPosition.INDEX_MAX) { null } /** * Sorted by referenceID. */ val itemList = ArrayList() - val quickBar = Array(10, { null }) // 0: Slot 1, 9: Slot 10 + val quickSlot = Array(UIQuickslotBar.SLOT_COUNT) { null } // 0: Slot 1, 9: Slot 10 var currency = 0 // unified currency for whole civs; Dwarf Fortress approach seems too complicated @@ -127,10 +127,10 @@ class ActorInventory(val actor: Pocketed, var maxCapacity: Int, var capacityMode } fun setQuickBar(slot: Int, dynamicID: ItemID?) { - quickBar[slot] = dynamicID + quickSlot[slot] = dynamicID } - fun getQuickslot(slot: Int): InventoryPair? = getByDynamicID(quickBar[slot]) + fun getQuickslot(slot: Int): InventoryPair? = getByDynamicID(quickSlot[slot]) /** * HashMap diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt index aec6b20e8..311805ea5 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt @@ -1,6 +1,5 @@ package net.torvald.terrarum.modulebasegame.ui -import com.badlogic.gdx.Input import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch @@ -87,24 +86,6 @@ class UIQuickslotBar : UICanvas() { return true } - override fun keyDown(keycode: Int): Boolean { - selection = when (keycode) { - Input.Keys.NUM_1 -> 0 - Input.Keys.NUM_2 -> 1 - Input.Keys.NUM_3 -> 2 - Input.Keys.NUM_4 -> 3 - Input.Keys.NUM_5 -> 4 - Input.Keys.NUM_6 -> 5 - Input.Keys.NUM_7 -> 6 - Input.Keys.NUM_8 -> 7 - Input.Keys.NUM_9 -> 8 - Input.Keys.NUM_0 -> 9 - else -> return false - } - - return true - } - override fun dispose() { } diff --git a/src/net/torvald/terrarum/utils/JsonFetcher.kt b/src/net/torvald/terrarum/utils/JsonFetcher.kt index bbd61e21b..395b38c73 100644 --- a/src/net/torvald/terrarum/utils/JsonFetcher.kt +++ b/src/net/torvald/terrarum/utils/JsonFetcher.kt @@ -1,15 +1,6 @@ package net.torvald.terrarum.utils -import com.google.gson.JsonObject -import com.google.gson.JsonParser import net.torvald.terrarum.AppLoader.printdbg -import java.io.File - -import java.io.IOException -import java.nio.file.FileSystems -import java.nio.file.Files -import java.util.ArrayList -import java.util.function.Consumer /** * Created by minjaesong on 2016-02-15. @@ -18,7 +9,7 @@ object JsonFetcher { private var jsonString: StringBuffer? = null - @Throws(java.io.IOException::class) + @Throws(java.nio.file.NoSuchFileException::class) operator fun invoke(jsonFilePath: String): com.google.gson.JsonObject { jsonString = StringBuffer() // reset buffer every time it called readJsonFileAsString(jsonFilePath) @@ -35,7 +26,7 @@ object JsonFetcher { return jsonObj } - @Throws(java.io.IOException::class) + @Throws(java.nio.file.NoSuchFileException::class) operator fun invoke(jsonFile: java.io.File): com.google.gson.JsonObject { jsonString = StringBuffer() // reset buffer every time it called readJsonFileAsString(jsonFile.canonicalPath) @@ -52,15 +43,11 @@ object JsonFetcher { return jsonObj } + @Throws(java.nio.file.NoSuchFileException::class) private fun readJsonFileAsString(path: String) { - try { - java.nio.file.Files.lines(java.nio.file.FileSystems.getDefault().getPath(path)).forEach( - { jsonString!!.append(it) } - ) // JSON does not require line break - } - catch (e: IOException) { - System.err.println("[JsonFetcher] An error occurred while reading $path") - e.printStackTrace() - } + java.nio.file.Files.lines(java.nio.file.FileSystems.getDefault().getPath(path)).forEach( + { jsonString!!.append(it) } + ) // JSON does not require line break + } } diff --git a/src/net/torvald/terrarum/utils/JsonWriter.kt b/src/net/torvald/terrarum/utils/JsonWriter.kt index d60c817e1..df940a26f 100644 --- a/src/net/torvald/terrarum/utils/JsonWriter.kt +++ b/src/net/torvald/terrarum/utils/JsonWriter.kt @@ -1,17 +1,12 @@ package net.torvald.terrarum.utils -import com.google.gson.Gson -import com.google.gson.JsonElement -import com.google.gson.JsonObject - -import java.io.FileWriter -import java.io.IOException - /** * Created by minjaesong on 2016-03-04. */ object JsonWriter { + private val formattingRegex = Regex("""(?<=[\{,\[])|(?=[\]}])""") + /** * serialise a class to the file as JSON, using Google GSON. * @@ -23,7 +18,7 @@ object JsonWriter { val classElem = com.google.gson.Gson().toJsonTree(c) val jsonString = classElem.toString() val writer = java.io.FileWriter(path) - writer.write(jsonString) + writer.write(jsonString.replace(formattingRegex, "\n")) writer.close() } @@ -36,7 +31,7 @@ object JsonWriter { @Throws(java.io.IOException::class) fun writeToFile(jsonObject: com.google.gson.JsonObject, path: String) { val writer = java.io.FileWriter(path) - writer.write(jsonObject.toString()) + writer.write(jsonObject.toString().replace(formattingRegex, "\n")) writer.close() }