com.torvald → net.torvald

Former-commit-id: 375604da8a20a6ba7cd0a8d05a44add02b2d04f4
Former-commit-id: 287287c5920b07618174d7a7573f049d350ded66
This commit is contained in:
Song Minjae
2016-04-12 12:29:02 +09:00
parent 2a34efb489
commit ac9f5b5138
148 changed files with 473 additions and 524 deletions

View File

@@ -0,0 +1,46 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.ui.ConsoleWindow
import org.apache.commons.codec.digest.DigestUtils
/**
* Created by minjaesong on 16-02-19.
*/
class Authenticator : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
val pwd = args[1]
val hashedPwd = DigestUtils.sha256Hex(pwd)
if ("54c5b3dd459d5ef778bb2fa1e23a5fb0e1b62ae66970bcb436e8f81a1a1a8e41".equals(hashedPwd, ignoreCase = true)) {
// alpine
val msg = if (a) "Locked" else "Authenticated"
Echo().execute(msg)
println("[Authenticator] " + msg)
a = !a
(Terrarum.game.consoleHandler.UI as ConsoleWindow).reset()
}
else {
printUsage() // thou shalt not pass!
}
}
else {
printUsage()
}
}
fun b(): Boolean {
return a
}
override fun printUsage() {
CommandInterpreter.echoUnknownCmd("auth")
}
companion object {
private var a = false
}
}

View File

@@ -0,0 +1,24 @@
package net.torvald.terrarum.console
import java.nio.file.FileSystems
import java.nio.file.Files
/**
* Created by minjaesong on 16-03-07.
*/
class Batch : ConsoleCommand {
@Throws(Exception::class)
override fun execute(args: Array<String>) {
if (args.size == 2) {
Files.lines(FileSystems.getDefault().getPath(args[1])).forEach(
{ CommandInterpreter.execute(it) })
}
else {
printUsage()
}
}
override fun printUsage() {
Echo().execute("batch path/to/batch.txt")
}
}

View File

@@ -0,0 +1,32 @@
package net.torvald.terrarum.console
import java.io.IOException
import java.nio.file.FileSystems
import java.nio.file.Files
/**
* Created by minjaesong on 16-02-10.
*/
class CatStdout : ConsoleCommand {
override fun execute(args: Array<String>) {
val echo = Echo()
if (args.size == 1) {
printUsage()
return
}
try {
Files.lines(FileSystems.getDefault().getPath(args[1])).forEach({ echo.execute(it) })
}
catch (e: IOException) {
echo.execute("CatStdout: could not read file -- IOException")
}
}
override fun printUsage() {
Echo().execute("usage: cat 'path/to/text/file")
}
}

View File

@@ -0,0 +1,45 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Game
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.ui.ConsoleWindow
import java.util.Formatter
/**
* Created by minjaesong on 16-01-16.
*/
class CodexEdictis : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 1) {
printList()
}
else {
try {
val commandObj = CommandDict.getCommand(args[1].toLowerCase())
commandObj.printUsage()
}
catch (e: NullPointerException) {
val sb = StringBuilder()
val formatter = Formatter(sb)
Echo().execute("Codex: " + formatter.format(Lang.get("DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN"), args[1]).toString())
}
}
}
override fun printUsage() {
val echo = Echo()
echo.execute("Usage: codex (command)")
echo.execute("shows how to use 'command'")
echo.execute("leave blank to get list of available commands")
}
private fun printList() {
val echo = Echo()
echo.execute(Lang.get("DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS"))
CommandDict.dict.keys.forEach { s -> echo.execute("] " + s) }
}
}

View File

@@ -0,0 +1,47 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
import java.util.HashMap
/**
* Created by minjaesong on 16-01-15.
*/
object CommandDict {
internal var dict: HashMap<String, ConsoleCommand> = hashMapOf(
Pair("echo", Echo()),
Pair("setav", SetAV()),
Pair("qqq", QuitApp()),
Pair("codex", CodexEdictis()),
Pair("export", ExportMap()),
Pair("gc", ForceGC()),
Pair("getav", GetAV()),
Pair("getlocale", GetLocale()),
Pair("togglenoclip", ToggleNoClip()),
Pair("nc", ToggleNoClip()),
Pair("setlocale", SetLocale()),
Pair("zoom", Zoom()),
Pair("teleport", TeleportPlayer()),
Pair("tp", TeleportPlayer()),
Pair("cat", CatStdout()),
Pair("exportav", ExportAV()),
Pair("setgl", SetGlobalLightLevel()),
Pair("getfaction", GetFactioning()),
Pair("auth", Terrarum.game.auth),
Pair("spawnball", SpawnPhysTestBall()),
Pair("batch", Batch()),
Pair("settime", SetTime()),
Pair("gettime", GetTime()),
Pair("settimedelta", SetTimeDelta()),
Pair("help", Help()),
// Test codes
Pair("bulletintest", SetBulletin()),
Pair("gsontest", GsonTest())
)
fun getCommand(commandName: String): ConsoleCommand {
return dict[commandName]!!
}
}

View File

@@ -0,0 +1,116 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.Terrarum
import java.util.ArrayList
import java.util.Formatter
import java.util.regex.Pattern
/**
* Created by minjaesong on 16-01-15.
*/
object CommandInterpreter {
private val commandsNoAuth = arrayOf("auth", "qqq", "zoom", "setlocale", "getlocale", "help")
fun execute(command: String) {
val cmd = parse(command)
for (single_command in cmd) {
var commandObj: ConsoleCommand? = null
try {
if (commandsNoAuth.contains(single_command!!.name.toLowerCase())) {
commandObj = CommandDict.getCommand(single_command.name.toLowerCase())
}
else {
if (Terrarum.game.auth.b()) {
commandObj = CommandDict.getCommand(
single_command.name.toLowerCase())
}
else {
// System.out.println("ee1");
throw NullPointerException() // if not authorised, say "Unknown command"
}
}
}
catch (e: NullPointerException) {
}
finally {
try {
if (commandObj != null) {
commandObj.execute(single_command!!.toStringArray())
}
else {
echoUnknownCmd(single_command!!.name)
// System.out.println("ee3");
}
}
catch (e: Exception) {
println("[CommandInterpreter] :")
e.printStackTrace()
Echo().execute(Lang.get("ERROR_GENERIC_TEXT"))
}
}
}
}
private fun parse(input: String): Array<CommandInput?> {
val patternCommands = Pattern.compile("[^;]+")
val patternTokensInCommand = Pattern.compile("[\"'][^;]+[\"']|[^ ]+")
val commands = ArrayList<String>()
// split multiple commands
var m = patternCommands.matcher(input)
while (m.find()) commands.add(m.group())
// split command tokens from a command
val parsedCommands = arrayOfNulls<CommandInput>(commands.size)
for (i in parsedCommands.indices) {
val tokens = ArrayList<String>()
m = patternTokensInCommand.matcher(commands[i])
while (m.find()) {
val regexGroup = m.group().replace("[\"\']".toRegex(), "")
tokens.add(regexGroup)
}
// create new command
parsedCommands[i] = CommandInput(tokens.toArray())
}
return parsedCommands
}
internal fun echoUnknownCmd(cmdname: String) {
val sb = StringBuilder()
val formatter = Formatter(sb)
Echo().execute(
formatter.format(Lang.get("DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN"), cmdname).toString())
}
private class CommandInput(o: Array<Any>) {
private val tokens: Array<String>
init {
tokens = Array<String>(o.size, { i -> o[i] as String })
}
fun toStringArray(): Array<String> {
return tokens
}
val name: String
get() = tokens[0]
val argsCount: Int
get() = tokens.size
}
}

View File

@@ -0,0 +1,13 @@
package net.torvald.terrarum.console
/**
* Created by minjaesong on 16-01-15.
*/
interface ConsoleCommand {
@Throws(Exception::class)
fun execute(args: Array<String>)
fun printUsage()
}

View File

@@ -0,0 +1,26 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.ui.ConsoleWindow
import java.util.Arrays
/**
* Created by minjaesong on 16-01-16.
*/
internal class Echo : ConsoleCommand {
override fun execute(args: Array<String>) {
val argsWoHeader = Array<String>(args.size - 1, {it -> args[it + 1]})
argsWoHeader.forEach(
{ (Terrarum.game.consoleHandler.UI as ConsoleWindow).sendMessage(it) })
}
fun execute(single_line: String) {
(Terrarum.game.consoleHandler.UI as ConsoleWindow).sendMessage(single_line)
}
override fun printUsage() {
}
}

View File

@@ -0,0 +1,38 @@
package net.torvald.terrarum.console
import net.torvald.JsonWriter
import net.torvald.terrarum.Terrarum
import java.io.IOException
/**
* Created by minjaesong on 16-02-10.
*/
class ExportAV : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
try {
JsonWriter.writeToFile(
Terrarum.game.player.actorValue,
Terrarum.defaultDir + "/Exports/" + args[1] + ".json")
Echo().execute("ExportAV: exported to " + args[1] + ".json")
}
catch (e: IOException) {
Echo().execute("ExportAV: IOException raised.")
e.printStackTrace()
}
}
else {
printUsage()
}
}
override fun printUsage() {
val echo = Echo()
echo.execute("Export ActorValue as JSON format.")
echo.execute("Usage: exportav (id) filename-without-extension")
echo.execute("blank ID for player")
}
}

View File

@@ -0,0 +1,116 @@
package net.torvald.terrarum.console
import net.torvald.colourutil.Col4096
import net.torvald.RasterWriter
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.tileproperties.TileNameCode
import java.io.*
import java.util.HashMap
/**
* Created by minjaesong on 16-01-17.
*/
class ExportMap : ConsoleCommand {
//private var mapData: ByteArray? = null
// private var mapDataPointer = 0
private val colorTable = HashMap<Int, Col4096>()
override fun execute(args: Array<String>) {
if (args.size == 2) {
buildColorTable()
var mapData = ByteArray(Terrarum.game.map.width * Terrarum.game.map.height * 3)
var mapDataPointer = 0
for (tile in Terrarum.game.map.terrainIterator()) {
val colArray = (colorTable as Map<Int, Col4096>)
.getOrElse(tile, { Col4096(0xFFF) }).toByteArray()
for (i in 0..2) {
mapData[mapDataPointer + i] = colArray[i]
}
mapDataPointer += 3
}
val dir = Terrarum.defaultDir + "/Exports/"
val dirAsFile = File(dir)
if (!dirAsFile.exists()) {
dirAsFile.mkdir()
}
try {
RasterWriter.writePNG_RGB(
Terrarum.game.map.width, Terrarum.game.map.height, mapData, dir + args[1] + ".png")
Echo().execute("ExportMap: exported to " + args[1] + ".png")
}
catch (e: IOException) {
Echo().execute("ExportMap: IOException raised.")
e.printStackTrace()
}
// mapData = null
// mapDataPointer = 0
// Free up some memory
System.gc()
}
else {
printUsage()
}
}
override fun printUsage() {
val echo = Echo()
echo.execute("Usage: export <name>")
echo.execute("Exports current map into visible image.")
echo.execute("The image can be found at %adddata%/terrarum/Exports")
}
private fun buildColorTable() {
colorTable.put(TileNameCode.AIR, Col4096(0xCEF))
colorTable.put(TileNameCode.STONE, Col4096(0x888))
colorTable.put(TileNameCode.DIRT, Col4096(0x753))
colorTable.put(TileNameCode.GRASS, Col4096(0x472))
colorTable.put(TileNameCode.ORE_COPPER, Col4096(0x6A8))
colorTable.put(TileNameCode.ORE_IRON, Col4096(0xC75))
colorTable.put(TileNameCode.ORE_GOLD, Col4096(0xA87))
colorTable.put(TileNameCode.ORE_ILMENITE, Col4096(0x8AB))
colorTable.put(TileNameCode.ORE_AURICHALCUM, Col4096(0xD92))
colorTable.put(TileNameCode.ORE_SILVER, Col4096(0xDDD))
colorTable.put(TileNameCode.RAW_DIAMOND, Col4096(0x2BF))
colorTable.put(TileNameCode.RAW_RUBY, Col4096(0xB10))
colorTable.put(TileNameCode.RAW_EMERALD, Col4096(0x0B1))
colorTable.put(TileNameCode.RAW_SAPPHIRE, Col4096(0x01B))
colorTable.put(TileNameCode.RAW_TOPAZ, Col4096(0xC70))
colorTable.put(TileNameCode.RAW_AMETHYST, Col4096(0x70C))
colorTable.put(TileNameCode.WATER, Col4096(0x038))
colorTable.put(TileNameCode.LAVA, Col4096(0xF50))
colorTable.put(TileNameCode.SAND, Col4096(0xDDB))
colorTable.put(TileNameCode.SAND_WHITE, Col4096(0xFFD))
colorTable.put(TileNameCode.SAND_RED, Col4096(0xA32))
colorTable.put(TileNameCode.SAND_DESERT, Col4096(0xEDB))
colorTable.put(TileNameCode.SAND_BLACK, Col4096(0x444))
colorTable.put(TileNameCode.SAND_GREEN, Col4096(0x9A6))
colorTable.put(TileNameCode.GRAVEL, Col4096(0x664))
colorTable.put(TileNameCode.GRAVEL_GREY, Col4096(0x999))
colorTable.put(TileNameCode.ICE_NATURAL, Col4096(0x9AB))
colorTable.put(TileNameCode.ICE_MAGICAL, Col4096(0x7AC))
colorTable.put(TileNameCode.ICE_FRAGILE, Col4096(0x6AF))
colorTable.put(TileNameCode.SNOW, Col4096(0xCDE))
}
}

View File

@@ -0,0 +1,15 @@
package net.torvald.terrarum.console
/**
* Created by minjaesong on 16-01-18.
*/
class ForceGC : ConsoleCommand {
override fun execute(args: Array<String>) {
System.gc()
Echo().execute("Invoked System.gc")
}
override fun printUsage() {
Echo().execute("Invoke garbage collection of JVM.")
}
}

View File

@@ -0,0 +1,57 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.gameactors.ActorValue
import net.torvald.terrarum.Game
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-01-19.
*/
class GetAV : ConsoleCommand {
override fun execute(args: Array<String>) {
val echo = Echo()
try {
if (args.size == 1) {
// print all actorvalue of player
val av = Terrarum.game.player.actorValue
val keyset = av.keySet
keyset.forEach { elem -> echo.execute("$elem = ${av[elem as String]}") }
}
else if (args.size != 3 && args.size != 2) {
printUsage()
}
else if (args.size == 2) {
echo.execute("player." + args[1] + " = "
+ Terrarum.game.player.actorValue[args[1]]
+ " ("
+ Terrarum.game.player.actorValue[args[1]]!!.javaClass.simpleName
+ ")")
}
else if (args.size == 3) {
}
}
catch (e: NullPointerException) {
if (args.size == 2) {
echo.execute(args[1] + ": actor value does not exist.")
}
else if (args.size == 3) {
echo.execute(args[2] + ": actor value does not exist.")
}
else {
throw NullPointerException()
}
}
}
override fun printUsage() {
val echo = Echo()
echo.execute("Get desired actor value of specific target.")
echo.execute("Usage: getav (id) <av>")
echo.execute("blank ID for player")
}
}

View File

@@ -0,0 +1,51 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.gameactors.faction.Faction
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.Terrarum
import java.util.HashSet
/**
* Created by minjaesong on 16-02-17.
*/
class GetFactioning : ConsoleCommand {
private val PRINT_INDENTATION = " --> "
override fun execute(args: Array<String>) {
val echo = Echo()
if (args.size == 1) {
// get all factioning data of player
val factionSet = Terrarum.game.player.faction
if (factionSet.isEmpty()) {
echo.execute("The actor has empty faction set.")
return
}
val count = factionSet.size
echo.execute(count.toString() + Lang.pluralise(" faction", count) + " assigned.")
for (faction in factionSet) {
echo.execute("faction “${faction.factionName}")
echo.execute(" Amicable")
faction.factionAmicable.forEach { s -> echo.execute(PRINT_INDENTATION + s) }
echo.execute(" Explicit neutral")
faction.factionNeutral.forEach { s -> echo.execute(PRINT_INDENTATION + s) }
echo.execute(" Hostile")
faction.factionHostile.forEach { s -> echo.execute(PRINT_INDENTATION + s) }
echo.execute(" Fearful")
faction.factionFearful.forEach { s -> echo.execute(PRINT_INDENTATION + s) }
}
}
}
override fun printUsage() {
}
}

View File

@@ -0,0 +1,24 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-01-22.
*/
class GetLocale : ConsoleCommand {
override fun execute(args: Array<String>) {
Echo().execute(
"Locale: "
+ Lang.get("LANGUAGE_THIS")
+ " ("
+ Lang.get("LANGUAGE_EN")
+ ")")
}
override fun printUsage() {
val echo = Echo()
echo.execute("Usage: getlocale")
echo.execute("Get name of locale currently using.")
}
}

View File

@@ -0,0 +1,21 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-03-20.
*/
class GetTime : ConsoleCommand {
override fun execute(args: Array<String>) {
val echo = Echo()
val worldTime = Terrarum.game.map.worldTime
echo.execute("Year ${worldTime.years}, Month ${worldTime.months}, " +
"Day ${worldTime.days} (${worldTime.getDayNameShort()}), " +
"${worldTime.getFormattedTime()}"
)
}
override fun printUsage() {
Echo().execute("Print current world time in convenient form")
}
}

View File

@@ -0,0 +1,47 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
import com.google.gson.Gson
import com.google.gson.JsonElement
import java.io.BufferedWriter
import java.io.FileWriter
import java.io.IOException
/**
* Created by minjaesong on 16-02-10.
*/
class GsonTest : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
val avelem = Gson().toJsonTree(Terrarum.game.player)
val jsonString = avelem.toString()
val bufferedWriter: BufferedWriter
val writer: FileWriter
try {
writer = FileWriter(Terrarum.defaultDir + "/Exports/" + args[1] + ".json")
bufferedWriter = BufferedWriter(writer)
bufferedWriter.write(jsonString)
bufferedWriter.close()
Echo().execute("GsonTest: exported to " + args[1] + ".json")
}
catch (e: IOException) {
Echo().execute("GsonTest: IOException raised.")
e.printStackTrace()
}
}
else {
printUsage()
}
}
override fun printUsage() {
val echo = Echo()
echo.execute("Usage: gsontest filename-without-extension")
}
}

View File

@@ -0,0 +1,26 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.langpack.Lang
/**
* Created by minjaesong on 16-03-22.
*/
class Help : ConsoleCommand {
override fun execute(args: Array<String>) {
val echo = Echo()
if (args.size == 1) {
for (i in 1..6) echo.execute(Lang["HELP_OTF_MAIN_$i"])
}
else if (args[1].toLowerCase() == "slow") {
for (i in 1..4) echo.execute(Lang["HELP_OTF_SLOW_$i"])
}
else {
for (i in 1..6) echo.execute(Lang["HELP_OTF_MAIN_$i"])
}
}
override fun printUsage() {
Echo().execute("Prints some utility functions assigned to function row of the keyboard.")
}
}

View File

@@ -0,0 +1,15 @@
package net.torvald.terrarum.console
/**
* Created by minjaesong on 16-01-15.
*/
class QuitApp : ConsoleCommand {
override fun execute(args: Array<String>) {
System.exit(1)
}
override fun printUsage() {
}
}

View File

@@ -0,0 +1,61 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Game
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-01-15.
*/
internal class SetAV : ConsoleCommand {
override fun printUsage() {
val echo = Echo()
echo.execute("Set actor value of specific target to desired value.")
echo.execute("Usage: setav (id) <av> <val>")
echo.execute("blank ID for player")
echo.execute("Contaminated (float -> string) actor value will crash the game,")
echo.execute(" so make it sure before you issue the command.")
echo.execute("Use '__true' and '__false' for boolean value.")
}
override fun execute(args: Array<String>) {
val echo = Echo()
// setav <id or "player"> <av> <val>
if (args.size != 4 && args.size != 3) {
printUsage()
}
else if (args.size == 3) {
val `val`: Any
try {
`val` = Integer(args[2]) // try for integer
}
catch (e: NumberFormatException) {
try {
`val` = args[2].toFloat() // try for float
}
catch (ee: NumberFormatException) {
if (args[2].equals("__true", ignoreCase = true)) {
`val` = true
}
else if (args[2].equals("__false", ignoreCase = true)) {
`val` = false
}
else {
`val` = args[2] // string if not number
}
}
}
Terrarum.game.player.actorValue[args[1]] = `val`
echo.execute("Set " + args[1] + " to " + `val`)
}
else if (args.size == 4) {
}
}
}

View File

@@ -0,0 +1,31 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.ui.Notification
/**
* Created by minjaesong on 16-01-23.
*/
class SetBulletin : ConsoleCommand {
override fun execute(args: Array<String>) {
val testMsg = arrayOf(
Lang["ERROR_SAVE_CORRUPTED"],
Lang["MENU_LABEL_CONTINUE_QUESTION"]
)
send(testMsg)
}
override fun printUsage() {
}
/**
* Actually send notifinator
* @param message real message
*/
fun send(message: Array<String>) {
Terrarum.game.sendNotification(message)
println("sent notifinator")
}
}

View File

@@ -0,0 +1,52 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.mapdrawer.LightmapRenderer
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-02-17.
*/
class SetGlobalLightLevel : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 4) {
try {
val r = args[1].toInt()
val g = args[2].toInt()
val b = args[3].toInt()
val GL = LightmapRenderer.constructRGBFromInt(r, g, b)
Terrarum.game.map.globalLight = GL
}
catch (e: NumberFormatException) {
Echo().execute("Wrong number input.")
}
catch (e1: IllegalArgumentException) {
Echo().execute("Range: 0-" + LightmapRenderer.CHANNEL_MAX + " per channel")
}
}
else if (args.size == 2) {
try {
val GL = args[1].toInt()
if (GL.toInt() < 0 || GL.toInt() >= LightmapRenderer.COLOUR_RANGE_SIZE) {
Echo().execute("Range: 0-" + (LightmapRenderer.COLOUR_RANGE_SIZE - 1))
}
else {
Terrarum.game.map.globalLight = GL
}
}
catch (e: NumberFormatException) {
Echo().execute("Wrong number input.")
}
}
else {
printUsage()
}
}
override fun printUsage() {
Echo().execute("Usage: setgl [raw_value|r g b]")
}
}

View File

@@ -0,0 +1,43 @@
package net.torvald.terrarum.console
import net.torvald.imagefont.GameFontBase
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.Terrarum
import org.apache.commons.csv.CSVRecord
import org.newdawn.slick.SlickException
import java.io.IOException
/**
* Created by minjaesong on 16-01-25.
*/
class SetLocale : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
val prevLocale = Terrarum.gameLocale
Terrarum.gameLocale = args[1]
try {
Echo().execute("Set locale to '" + Terrarum.gameLocale + "'.")
}
catch (e: IOException) {
Echo().execute("could not read lang file.")
Terrarum.gameLocale = prevLocale
}
}
else if (args.size == 1) {
val echo = Echo()
echo.execute("Locales:")
val record = Lang.getRecord("LANGUAGE_ID")
record.forEach { field -> echo.execute("] " + field) }
}
else {
printUsage()
}
}
override fun printUsage() {
Echo().execute("Usage: setlocale [locale]")
}
}

View File

@@ -0,0 +1,42 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.gamemap.WorldTime
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-03-20.
*/
class SetTime : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
val lowercaseTime = args[1].toLowerCase()
val timeToSet =
if (args[1].length >= 4) {
lowercaseTime.substringBefore('h').toInt() * WorldTime.HOUR_SEC +
lowercaseTime.substringAfter('h').toInt() * WorldTime.MINUTE_SEC
}
else if (args[1].endsWith("h", true)) {
lowercaseTime.substring(0, args[1].length - 1).toInt() * WorldTime.HOUR_SEC
}
else {
lowercaseTime.toInt()
}
Terrarum.game.map.worldTime.setTime(timeToSet)
Echo().execute("Set time to ${Terrarum.game.map.worldTime.elapsedSeconds()} " +
"(${Terrarum.game.map.worldTime.hours}h${formatMin(Terrarum.game.map.worldTime.minutes)})")
}
else {
printUsage()
}
}
private fun formatMin(min: Int): String {
return if (min < 10) "0${min.toString()}" else min.toString()
}
override fun printUsage() {
Echo().execute("usage: settime <39201-in sec or 13h32-in hour>")
}
}

View File

@@ -0,0 +1,25 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-03-20.
*/
class SetTimeDelta : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
Terrarum.game.map.worldTime.setTimeDelta(args[1].toInt())
if (Terrarum.game.map.worldTime.timeDelta == 0)
Echo().execute("時間よ止まれ!ザ・ワルド!!")
else
Echo().execute("Set time delta to ${Terrarum.game.map.worldTime.timeDelta}")
}
else {
printUsage()
}
}
override fun printUsage() {
Echo().execute("usage: settimedelta <int>")
}
}

View File

@@ -0,0 +1,38 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameactors.PhysTestBall
import net.torvald.terrarum.mapdrawer.MapCamera
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-03-05.
*/
class SpawnPhysTestBall : ConsoleCommand {
@Throws(Exception::class)
override fun execute(args: Array<String>) {
if (args.size == 2) {
val mouseX = Terrarum.appgc.input.mouseX
val mouseY = Terrarum.appgc.input.mouseY
val elasticity = args[1].toFloat()
val ball = PhysTestBall()
ball.setPosition(
(mouseX + MapCamera.cameraX).toFloat(),
(mouseY + MapCamera.cameraY).toFloat()
)
ball.elasticity = elasticity
Terrarum.game.addActor(ball)
}
else {
printUsage()
}
}
override fun printUsage() {
Echo().execute("usage: spawnball [elasticity]")
}
}

View File

@@ -0,0 +1,36 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Game
import net.torvald.terrarum.mapdrawer.MapDrawer
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-01-24.
*/
class TeleportPlayer : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size != 3) {
printUsage()
}
else {
val x: Int
val y: Int
try {
x = args[1].toInt() * MapDrawer.TILE_SIZE + MapDrawer.TILE_SIZE / 2
y = args[2].toInt() * MapDrawer.TILE_SIZE + MapDrawer.TILE_SIZE / 2
}
catch (e: NumberFormatException) {
Echo().execute("Wrong number input.")
return
}
Terrarum.game.player.setPosition(x.toFloat(), y.toFloat())
}
}
override fun printUsage() {
Echo().execute("Usage: teleport [x-tile] [y-tile]")
}
}

View File

@@ -0,0 +1,20 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Game
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-01-19.
*/
class ToggleNoClip : ConsoleCommand {
override fun execute(args: Array<String>) {
val status = Terrarum.game.player.isNoClip()
Terrarum.game.player.setNoClip(!status)
Echo().execute("Set no-clip status to " + (!status).toString())
}
override fun printUsage() {
Echo().execute("toggle no-clip status of player")
}
}

View File

@@ -0,0 +1,42 @@
package net.torvald.terrarum.console
import net.torvald.terrarum.Terrarum
/**
* Created by minjaesong on 16-01-25.
*/
class Zoom : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
var zoom: Float
try {
zoom = args[1].toFloat()
}
catch (e: NumberFormatException) {
Echo().execute("Wrong number input.")
return
}
if (zoom < Terrarum.game.ZOOM_MIN) {
zoom = Terrarum.game.ZOOM_MIN
}
else if (zoom > Terrarum.game.ZOOM_MAX) {
zoom = Terrarum.game.ZOOM_MAX
}
Terrarum.game.screenZoom = zoom
System.gc()
Echo().execute("Set screen zoom to " + zoom.toString())
}
else {
printUsage()
}
}
override fun printUsage() {
Echo().execute("Usage: zoom [zoom]")
}
}