From c610bd1ac686860d2d3fb4bce3f4b7159172f106 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 29 Aug 2021 20:36:11 +0900 Subject: [PATCH] console command dictionary is now automatically filled using reflection --- assets/mods/basegame/metadata.properties | 4 + assets/mods/dwarventech/metadata.properties | 1 + src/net/torvald/terrarum/AppLoader.java | 17 ++- src/net/torvald/terrarum/ModMgr.kt | 4 +- src/net/torvald/terrarum/TitleScreen.kt | 5 + .../torvald/terrarum/console/Authenticator.kt | 1 + .../torvald/terrarum/console/CommandDict.kt | 120 +++++++++--------- .../terrarum/console/CommandInterpreter.kt | 7 +- .../terrarum/console/ConsoleCommand.kt | 5 +- .../torvald/terrarum/console/EchoConsole.kt | 1 + src/net/torvald/terrarum/console/EchoError.kt | 1 + src/net/torvald/terrarum/console/QuitApp.kt | 1 + .../torvald/terrarum/console/ResizeScreen.kt | 1 + .../console/SetGlobalLightOverride.kt | 1 + .../terrarum/console/TakeScreenshot.kt | 1 + .../modulebasegame/console/CatStdout.kt | 2 + .../modulebasegame/console/CodexEdictis.kt | 2 + .../modulebasegame/console/ForceGC.kt | 2 + .../{GetFactioning.kt => GetFaction.kt} | 9 +- .../modulebasegame/console/Inventory.kt | 2 +- .../modulebasegame/console/JavaIMTest.kt | 2 + .../modulebasegame/console/KillActor.kt | 2 + .../modulebasegame/console/MoneyDisp.kt | 2 + .../modulebasegame/console/PrintRandomTips.kt | 2 + .../modulebasegame/console/SpawnTikiTorch.kt | 2 + .../modulebasegame/console/Teleport.kt | 2 + .../modulebasegame/console/ToggleNoClip.kt | 2 + .../DataFormats/just-json-it-saveformat.md | 33 +++-- 28 files changed, 143 insertions(+), 91 deletions(-) rename src/net/torvald/terrarum/modulebasegame/console/{GetFactioning.kt => GetFaction.kt} (92%) diff --git a/assets/mods/basegame/metadata.properties b/assets/mods/basegame/metadata.properties index a4bf82e02..a329703a0 100644 --- a/assets/mods/basegame/metadata.properties +++ b/assets/mods/basegame/metadata.properties @@ -7,6 +7,10 @@ description=The base game # Author of the module author=Terrarum +# Root package name for the module +# The game will look for certain classes base on this package string, so don't mess up! +package=net.torvald.terrarum.modulebasegame + # Name of the entry script # Entry script must inherit net.torvald.terrarum.ModuleEntryPoint entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint diff --git a/assets/mods/dwarventech/metadata.properties b/assets/mods/dwarventech/metadata.properties index 804c50560..9b7cf1770 100644 --- a/assets/mods/dwarventech/metadata.properties +++ b/assets/mods/dwarventech/metadata.properties @@ -1,6 +1,7 @@ propername=Dwarven Techs description=Dwarven technicians are emerged from their hiding author=Terrarum +package=net.torvald.terrarum.modulecomputers entrypoint=net.torvald.terrarum.modulecomputers.EntryPoint releasedate=2017-07-14 version=0.2.0 diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index 78b81cb46..7ef09a3a1 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -18,6 +18,7 @@ import com.github.strikerx3.jxinput.XInputDevice; import net.torvald.gdx.graphics.PixmapIO2; import net.torvald.getcpuname.GetCpuName; import net.torvald.terrarum.concurrent.ThreadExecutor; +import net.torvald.terrarum.console.ConsoleCommand; import net.torvald.terrarum.controller.GdxControllerAdapter; import net.torvald.terrarum.controller.TerrarumController; import net.torvald.terrarum.controller.XinputControllerAdapter; @@ -28,6 +29,7 @@ import net.torvald.terrarum.imagefont.TinyAlphNum; import net.torvald.terrarum.langpack.Lang; import net.torvald.terrarum.modulebasegame.IngameRenderer; import net.torvald.terrarum.modulebasegame.TerrarumIngame; +import net.torvald.terrarum.modulebasegame.console.ToggleNoClip; import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory; import net.torvald.terrarum.utils.JsonFetcher; import net.torvald.terrarum.utils.JsonWriter; @@ -1138,20 +1140,29 @@ public class AppLoader implements ApplicationListener { public static void printdbg(Object obj, Object message) { if (IS_DEVELOPMENT_BUILD) { String out = (obj instanceof String) ? (String) obj : obj.getClass().getSimpleName(); - System.out.println("[" + out + "] " + message.toString()); + if (message == null) + System.out.println("[" + out + "] null"); + else + System.out.println("[" + out + "] " + message.toString()); } } public static void printdbgerr(Object obj, Object message) { if (IS_DEVELOPMENT_BUILD) { String out = (obj instanceof String) ? (String) obj : obj.getClass().getSimpleName(); - System.err.println("[" + out + "] " + message.toString()); + if (message == null) + System.err.println("[" + out + "] null"); + else + System.err.println("[" + out + "] " + message.toString()); } } public static void printmsg(Object obj, Object message) { String out = (obj instanceof String) ? (String) obj : obj.getClass().getSimpleName(); - System.out.println("[" + out + "] " + message.toString()); + if (message == null) + System.out.println("[" + out + "] null"); + else + System.out.println("[" + out + "] " + message.toString()); } public static ShaderProgram loadShaderFromFile(String vert, String frag) { diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt index 22131642d..f2025e25e 100644 --- a/src/net/torvald/terrarum/ModMgr.kt +++ b/src/net/torvald/terrarum/ModMgr.kt @@ -43,6 +43,7 @@ object ModMgr { val properName: String, val description: String, val author: String, + val packageName: String, val entryPoint: String, val releaseDate: String, val version: String, @@ -96,13 +97,14 @@ object ModMgr { val properName = modMetadata.getProperty("propername") val description = modMetadata.getProperty("description") val author = modMetadata.getProperty("author") + val packageName = modMetadata.getProperty("package") val entryPoint = modMetadata.getProperty("entrypoint") val releaseDate = modMetadata.getProperty("releasedate") val version = modMetadata.getProperty("version") val libs = modMetadata.getProperty("libraries").split(Regex(""";[ ]*""")).toTypedArray() val dependency = modMetadata.getProperty("dependency").split(Regex(""";[ ]*""")).toTypedArray() val isDir = FileSystems.getDefault().getPath("$modDir/$moduleName").toFile().isDirectory - moduleInfo[moduleName] = ModuleMetadata(index, isDir, properName, description, author, entryPoint, releaseDate, version, libs, dependency) + moduleInfo[moduleName] = ModuleMetadata(index, isDir, properName, description, author, packageName, entryPoint, releaseDate, version, libs, dependency) printdbg(this, moduleInfo[moduleName]) diff --git a/src/net/torvald/terrarum/TitleScreen.kt b/src/net/torvald/terrarum/TitleScreen.kt index 41cb702b5..2462970c5 100644 --- a/src/net/torvald/terrarum/TitleScreen.kt +++ b/src/net/torvald/terrarum/TitleScreen.kt @@ -14,6 +14,7 @@ import net.torvald.terrarum.AppLoader.printdbgerr import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.console.CommandDict import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameworld.GameWorld @@ -155,6 +156,10 @@ class TitleScreen(batch: SpriteBatch) : IngameInstance(batch) { uiContainer.add(uiMenu) + CommandDict // invoke + // TODO add console here + + //loadDone = true } diff --git a/src/net/torvald/terrarum/console/Authenticator.kt b/src/net/torvald/terrarum/console/Authenticator.kt index b15736e66..d6180f1c0 100644 --- a/src/net/torvald/terrarum/console/Authenticator.kt +++ b/src/net/torvald/terrarum/console/Authenticator.kt @@ -24,6 +24,7 @@ import org.apache.commons.codec.digest.DigestUtils * * Created by minjaesong on 2016-02-19. */ +@ConsoleAlias("auth") internal object Authenticator : ConsoleCommand { private var a = false diff --git a/src/net/torvald/terrarum/console/CommandDict.kt b/src/net/torvald/terrarum/console/CommandDict.kt index 7dcee46a4..9b5e5799d 100644 --- a/src/net/torvald/terrarum/console/CommandDict.kt +++ b/src/net/torvald/terrarum/console/CommandDict.kt @@ -1,79 +1,73 @@ package net.torvald.terrarum.console +import net.torvald.terrarum.AppLoader.printdbg +import net.torvald.terrarum.AppLoader.printdbgerr +import net.torvald.terrarum.ModMgr +import net.torvald.terrarum.ModMgr.loadOrder import net.torvald.terrarum.modulebasegame.console.* +import java.io.BufferedReader +import java.io.InputStreamReader import java.util.* +import kotlin.streams.toList /** * Created by minjaesong on 2016-01-15. */ object CommandDict { - // todo replace with reflection? - internal val dict: HashMap = hashMapOf( - "echo" to Echo, - "error" to EchoError, - "setav" to SetAV, - "qqq" to QuitApp, - "codex" to CodexEdictis, - "export" to ExportMap, - "gc" to ForceGC, - "getav" to GetAV, - "getlocale" to GetLocale, - "togglenoclip" to ToggleNoClip, - "nc" to ToggleNoClip, - "setlocale" to SetLocale, - "teleport" to Teleport, - "tp" to Teleport, - "cat" to CatStdout, - "setgl" to SetGlobalLightOverride, - "getfaction" to GetFactioning, - "auth" to Authenticator, - "batch" to Batch, - "settime" to SetTime, - "gettime" to GetTime, - "settimedelta" to SetTimeDelta, - "help" to Help, - "version" to Version, - "seed" to Seed, - "println" to EchoConsole, - "inventory" to Inventory, - "avtracker" to AVTracker, - "actorslist" to ActorsList, - "setscale" to SetScale, - "kill" to KillActor, - "screenshot" to TakeScreenshot, - "resize" to ResizeScreen, - "possess" to Possess, + internal val dict = hashMapOf() - // Test codes - "money" to MoneyDisp, - "bulletintest" to SetBulletin, - "tips" to PrintRandomTips, - "langtest" to LangTest, - "spawnball" to SpawnPhysTestBall, - "spawntorch" to SpawnTikiTorch, - "musictest" to MusicTest, - "spawntapestry" to SpawnTapestry, - "imtest" to JavaIMTest, - "cheatmotherfuckernootnoot" to CheatWarnTest, - "spawnlunarlander" to SpawnPhysTestLunarLander, - "savetest" to SavegameWriterTest, + init { + printdbg(this, ModMgr.loadOrder.reversed()) + printdbg(this, ModMgr.loadOrder.reversed().map { ModMgr.moduleInfo[it]?.packageName }) - "exportav" to ExportAV, - /* !! */"exportmeta" to ExportMeta, - /* !! */"exportworld" to ExportWorld, - /* !! */"exportactor" to ExportActor, - /* !! */"importworld" to ImportWorld, - /* !! */"importactor" to ImportActor, - /* !! */"exportfborgb" to ExportRendererFboRGB, - /* !! */"printworld" to PrintWorld - ) + (listOf("net.torvald.terrarum") + ModMgr.loadOrder.reversed().map { ModMgr.moduleInfo[it]?.packageName }.filter { it != null }).forEach{ packageRoot -> + printdbg(this, packageRoot) + val packageConsole = "$packageRoot.console" + val stream = ClassLoader.getSystemClassLoader().getResourceAsStream(packageConsole.replace('.','/')) + val reader = BufferedReader(InputStreamReader(stream)) + + reader.lines() + .filter{ it.endsWith(".class") && !it.contains('$') } + .map { Class.forName("$packageConsole.${it.substring(0, it.lastIndexOf('.'))}") } + .forEach { + + printdbg(this, "> Trying to instantiate ${it.canonicalName}") + + try { + val instance = it.kotlin.objectInstance ?: it.kotlin.java.newInstance() + + val aliases = instance.javaClass.getAnnotation(ConsoleAlias::class.java)?.aliasesCSV?.split(',')?.map { it.trim() } + val noexport = instance.javaClass.getAnnotation(ConsoleNoExport::class.java) + + if (noexport == null) { + + dict[instance.javaClass.simpleName.lowercase()] = instance as ConsoleCommand + aliases?.forEach { + dict[it] = instance as ConsoleCommand + } + + printdbg(this, "Class instantiated: ${instance.javaClass.simpleName}") + if (aliases != null) + printdbg(this, " Annotations: $aliases") + } + } + catch (e: ClassCastException) { + printdbgerr(this, "${it.canonicalName} is not a ConsoleCommand") + } + catch (e: InstantiationException) { + printdbgerr(this, "Could not instantiate ${it.canonicalName}") + e.printStackTrace(System.err) + } + } + + } + + + + } operator fun get(commandName: String): ConsoleCommand { - return dict[commandName]!! - } - - fun add(name: String, obj: ConsoleCommand) { - dict[name] = obj + return dict[commandName.lowercase()]!! } } diff --git a/src/net/torvald/terrarum/console/CommandInterpreter.kt b/src/net/torvald/terrarum/console/CommandInterpreter.kt index f3f7a88cb..2178b3e99 100644 --- a/src/net/torvald/terrarum/console/CommandInterpreter.kt +++ b/src/net/torvald/terrarum/console/CommandInterpreter.kt @@ -16,14 +16,15 @@ internal object CommandInterpreter { private val commandsNoAuth = arrayOf( "auth", "qqq", - "zoom", "setlocale", "getlocale", "help", "version", "tips", "screenshot", - "resize" + "resize", + "echo", + "error" ) internal fun execute(command: String) { @@ -38,7 +39,7 @@ internal object CommandInterpreter { var commandObj: ConsoleCommand? = null try { if (single_command.name.toLowerCase().startsWith("qqq")) { - commandObj = CommandDict["qqq"] + commandObj = CommandDict["QuitApp"] } else if (commandsNoAuth.contains(single_command.name.toLowerCase())) { commandObj = CommandDict[single_command.name.toLowerCase()] diff --git a/src/net/torvald/terrarum/console/ConsoleCommand.kt b/src/net/torvald/terrarum/console/ConsoleCommand.kt index 31627e2ad..d0a8ef274 100644 --- a/src/net/torvald/terrarum/console/ConsoleCommand.kt +++ b/src/net/torvald/terrarum/console/ConsoleCommand.kt @@ -15,4 +15,7 @@ interface ConsoleCommand { fun printUsage() -} \ No newline at end of file +} + +annotation class ConsoleAlias(val aliasesCSV: String) +annotation class ConsoleNoExport() \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/EchoConsole.kt b/src/net/torvald/terrarum/console/EchoConsole.kt index 9a4c81a57..643be5caf 100644 --- a/src/net/torvald/terrarum/console/EchoConsole.kt +++ b/src/net/torvald/terrarum/console/EchoConsole.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.console /** * Created by minjaesong on 2016-09-07. */ +@ConsoleAlias("println") internal object EchoConsole : ConsoleCommand { /** * Args 0: command given diff --git a/src/net/torvald/terrarum/console/EchoError.kt b/src/net/torvald/terrarum/console/EchoError.kt index fd0cda12f..281ad29d2 100644 --- a/src/net/torvald/terrarum/console/EchoError.kt +++ b/src/net/torvald/terrarum/console/EchoError.kt @@ -7,6 +7,7 @@ import net.torvald.terrarum.ui.ConsoleWindow /** * Created by minjaesong on 2016-04-25. */ +@ConsoleAlias("error") internal object EchoError : ConsoleCommand { override fun execute(args: Array) { val argsWoHeader = Array(args.size - 1) { args[it + 1] } diff --git a/src/net/torvald/terrarum/console/QuitApp.kt b/src/net/torvald/terrarum/console/QuitApp.kt index aef0445ab..605a0b504 100644 --- a/src/net/torvald/terrarum/console/QuitApp.kt +++ b/src/net/torvald/terrarum/console/QuitApp.kt @@ -5,6 +5,7 @@ import com.badlogic.gdx.Gdx /** * Created by minjaesong on 2016-01-15. */ +@ConsoleAlias("qqq") internal object QuitApp : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/console/ResizeScreen.kt b/src/net/torvald/terrarum/console/ResizeScreen.kt index c141dde8a..06ebb5b9f 100644 --- a/src/net/torvald/terrarum/console/ResizeScreen.kt +++ b/src/net/torvald/terrarum/console/ResizeScreen.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.console import net.torvald.terrarum.AppLoader import net.torvald.terrarum.TerrarumScreenSize +@ConsoleAlias("resize") object ResizeScreen: ConsoleCommand { override fun execute(args: Array) { if (args.size == 3) { diff --git a/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt b/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt index 26a3a53e6..65d7af56e 100644 --- a/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt +++ b/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt @@ -7,6 +7,7 @@ import net.torvald.terrarum.weather.WeatherMixer /** * Created by minjaesong on 2016-02-17. */ +@ConsoleAlias("setgl") internal object SetGlobalLightOverride : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/console/TakeScreenshot.kt b/src/net/torvald/terrarum/console/TakeScreenshot.kt index 331f39eae..39298e56f 100644 --- a/src/net/torvald/terrarum/console/TakeScreenshot.kt +++ b/src/net/torvald/terrarum/console/TakeScreenshot.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.console import net.torvald.terrarum.AppLoader +@ConsoleNoExport object TakeScreenshot: ConsoleCommand { override fun execute(args: Array) { AppLoader.requestScreenshot() diff --git a/src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt b/src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt index 395c4962c..522e0399d 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import java.io.IOException @@ -9,6 +10,7 @@ import java.nio.file.Files /** * Created by minjaesong on 2016-02-10. */ +@ConsoleAlias("cat") internal object CatStdout : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt b/src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt index 4f98a5895..4e4a9f1c1 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.ccO import net.torvald.terrarum.console.CommandDict +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.langpack.Lang @@ -11,6 +12,7 @@ import java.util.Formatter /** * Created by minjaesong on 2016-01-16. */ +@ConsoleAlias("codex") internal object CodexEdictis : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt b/src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt index 112ed372e..1c3796de9 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt @@ -1,11 +1,13 @@ package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo /** * Created by minjaesong on 2016-01-18. */ +@ConsoleAlias("gc") internal object ForceGC : ConsoleCommand { override fun execute(args: Array) { System.gc() diff --git a/src/net/torvald/terrarum/modulebasegame/console/GetFactioning.kt b/src/net/torvald/terrarum/modulebasegame/console/GetFaction.kt similarity index 92% rename from src/net/torvald/terrarum/modulebasegame/console/GetFactioning.kt rename to src/net/torvald/terrarum/modulebasegame/console/GetFaction.kt index c5cc530e1..135b04e5a 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/GetFactioning.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GetFaction.kt @@ -1,7 +1,7 @@ package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.* import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError @@ -12,12 +12,7 @@ import net.torvald.terrarumsansbitmap.gdx.GameFontBase /** * Created by minjaesong on 2016-02-17. */ -internal object GetFactioning : ConsoleCommand { - val ccW = GameFontBase.toColorCode(0xFFFF) - val ccY = GameFontBase.toColorCode(0xFE8F) - val ccM = GameFontBase.toColorCode(0xEAFF) - val ccG = GameFontBase.toColorCode(0x8F8F) - val ccK = GameFontBase.toColorCode(0x888F) +internal object GetFaction : ConsoleCommand { private val PRINT_INDENTATION = "$ccK --> $ccW" diff --git a/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt index dd61357bd..0bc6e9044 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt @@ -14,7 +14,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.Pocketed */ internal object Inventory : ConsoleCommand { - private var target: Pocketed? = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying + private var target: Pocketed? = null override fun execute(args: Array) { if (args.size == 1) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt b/src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt index f4ca72446..b06f2a76f 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.console import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo //import net.torvald.terrarum.swingapp.IMStringReader @@ -10,6 +11,7 @@ import net.torvald.terrarum.console.Echo * Created by minjaesong on 2017-02-05. */ +@ConsoleAlias("imtest") internal object JavaIMTest : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/KillActor.kt b/src/net/torvald/terrarum/modulebasegame/console/KillActor.kt index 525dd58e5..c9ac1ed46 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/KillActor.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/KillActor.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError @@ -9,6 +10,7 @@ import net.torvald.terrarum.langpack.Lang /** * Created by minjaesong on 2017-01-31. */ +@ConsoleAlias("kill") internal object KillActor : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt b/src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt index cb39596ad..fad752078 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt @@ -2,9 +2,11 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.EMDASH import net.torvald.random.HQRNG +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo +@ConsoleAlias("money") object MoneyDisp : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt b/src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt index 234dbbf78..34385e171 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt @@ -1,11 +1,13 @@ package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo /** * Created by minjaesong on 2016-07-04. */ +@ConsoleAlias("tips") internal object PrintRandomTips : ConsoleCommand { override fun execute(args: Array) { Echo("Nope.") diff --git a/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt index ad4152b4a..0c182659b 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.ConsoleNoExport import net.torvald.terrarum.console.Echo import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch @@ -9,6 +10,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch /** * Created by minjaesong on 2016-12-17. */ +@ConsoleNoExport internal object SpawnTikiTorch : ConsoleCommand { override fun execute(args: Array) { val torch = FixtureTikiTorch { "Tiki Torch" } diff --git a/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt b/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt index 753620531..93634988f 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.TerrarumAppConfiguration import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError @@ -12,6 +13,7 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-01-24. */ +@ConsoleAlias("tp,goto") internal object Teleport : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt b/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt index 8157fc787..3fbb677f0 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleAlias import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.modulebasegame.TerrarumIngame @@ -8,6 +9,7 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-01-19. */ +@ConsoleAlias("nc,noclip") internal object ToggleNoClip : ConsoleCommand { override fun execute(args: Array) { val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying diff --git a/work_files/DataFormats/just-json-it-saveformat.md b/work_files/DataFormats/just-json-it-saveformat.md index d5fcfd3d2..14953dcf5 100644 --- a/work_files/DataFormats/just-json-it-saveformat.md +++ b/work_files/DataFormats/just-json-it-saveformat.md @@ -34,24 +34,24 @@ The fields are auto-generated by GDX's JSON serialiser. { worldName: "New World", worldIndex: 1, - width: 8192, - height: 2048, - spawnX: 4096, + width: 9000, + height: 2250, + spawnX: 4500, spawnY: 248, creationTime: 1629857065, lastPlayTime: 1629857065, totalPlayTime: 0, layerTerrain: { - h: "a441b15fe9a3cf56661190a0b93b9dec7d04127288cc87250967cf3b52894d11", + h: , b: , - x: 8192, - y: 2048 + x: 9000, + y: 2250 }, layerWall: { h: , b: , - x: 8192, - y: 2048 + x: 9000, + y: 2250 }, wallDamages:{}, terrainDamages: {}, @@ -69,7 +69,10 @@ The fields are auto-generated by GDX's JSON serialiser. averageTemperature: 288, generatorSeed: 0, worldTime: 27874, - tileNumberToNameMap: {} + tileNumberToNameMap: {}, + extraFields: {}, + genver: 4 + comp: 1 } ``` @@ -78,8 +81,14 @@ The fields are auto-generated by GDX's JSON serialiser. The fields are auto-generated by GDX's JSON serialiser. ``` -{ - : { actor serialised in JSON }, +[ + { /* actor serialised in JSON * + class: "net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer", /* depends on the actor */ + referenceID: 1342111743, + actorValue: { /* actorValue serialised in JSON */ }, + hitbox: ..., + ... + }, ... -} +] ``` \ No newline at end of file