Lua Computer: collection of minor updates, none notable (read romapidoc)

Former-commit-id: 80e3f0d13c2dc5bcff0843e509f416e9314cd52e
Former-commit-id: e7e35bfd23d70db84f568f0c5388f3a1d89222bc
This commit is contained in:
Song Minjae
2016-09-26 12:15:45 +09:00
parent 29db14d184
commit 75d73f7d18
76 changed files with 2326 additions and 781 deletions

View File

@@ -456,6 +456,7 @@ internal class Filesystem(globals: Globals, computer: BaseTerrarumComputer) {
}
}
/** returns NO line separator! */
private class FileClassReadLine(val fr: FileReader) : ZeroArgFunction() {
val scanner = Scanner(fr.readText()) // no closing; keep the scanner status persistent

View File

@@ -37,7 +37,10 @@ internal class HostAccessProvider(globals: Globals, computer: BaseTerrarumComput
class PrintLn(): OneArgFunction() {
override fun call(p0: LuaValue): LuaValue {
println(p0.checkIBM437())
if (p0.isnumber())
println(p0.checkdouble())
else
println(p0.checkIBM437())
return LuaValue.NONE
}
}
@@ -91,7 +94,7 @@ internal class HostAccessProvider(globals: Globals, computer: BaseTerrarumComput
class HaltComputer(val computer: BaseTerrarumComputer) : ZeroArgFunction() {
override fun call() : LuaValue {
computer.isHalted = true
computer.luaJ_globals.load("""print("system halted")""").call()
computer.luaJ_globals.load("""print(DC4.."system halted")""").call()
return LuaValue.NONE
}
}

View File

@@ -0,0 +1,12 @@
package net.torvald.terrarum.virtualcomputer.luaapi
import li.cil.repack.org.luaj.vm2.Globals
import net.torvald.terrarum.virtualcomputer.computer.BaseTerrarumComputer
/**
* Provides internet access, if @param computer has internet card(s).
*
* Created by minjaesong on 16-09-24.
*/
internal class Http(globals: Globals, computer: BaseTerrarumComputer) {
}

View File

@@ -0,0 +1,48 @@
package net.torvald.terrarum.virtualcomputer.luaapi
import li.cil.repack.org.luaj.vm2.Globals
import li.cil.repack.org.luaj.vm2.LuaTable
import li.cil.repack.org.luaj.vm2.LuaValue
import li.cil.repack.org.luaj.vm2.lib.OneArgFunction
import net.torvald.terrarum.gamecontroller.Key
import net.torvald.terrarum.virtualcomputer.computer.BaseTerrarumComputer
/**
* Created by minjaesong on 16-09-25.
*/
class Input(globals: Globals, computer: BaseTerrarumComputer) {
init {
globals["input"] = LuaTable()
globals["input"]["isKeyDown"] = IsKeyDown(computer)
}
companion object {
val keys_alt = intArrayOf(Key.L_ALT, Key.L_COMMAND)
val keys_caps = intArrayOf(Key.CAPS_LOCK, Key.BACKSPACE, Key.L_CONTROL)
}
class IsKeyDown(val computer: BaseTerrarumComputer) : OneArgFunction() {
override fun call(keyCode: LuaValue): LuaValue {
val key = keyCode.checkint()
// L_Alt and L_COMMAND are homogeneous
if (keys_alt.contains(key)) {
for (k in keys_alt) {
val down = computer.input.isKeyDown(k)
if (down) return LuaValue.valueOf(true)
}
}
// Caps, Backspace, L_Control, for Colemak and HHKB
if (keys_caps.contains(key)) {
for (k in keys_caps) {
val down = computer.input.isKeyDown(k)
if (down) return LuaValue.valueOf(true)
}
}
return LuaValue.valueOf(computer.input.isKeyDown(keyCode.checkint()))
}
}
}

View File

@@ -9,6 +9,8 @@ import org.apache.commons.codec.digest.DigestUtils
import java.security.SecureRandom
/**
* Hashes, CSPRNG, Base64
*
* Created by minjaesong on 16-09-15.
*/
internal class Security(globals: Globals) {

View File

@@ -7,7 +7,8 @@ import net.torvald.terrarum.virtualcomputer.terminal.Terminal
import java.nio.charset.Charset
/**
* APIs must have some extent of compatibility with ComputerCraft by dan200
* Controls terminal as if it was a monitor
* (not sending control sequences but just drives it, as if it was not a terminal @ 9600 baud)
*
* Created by minjaesong on 16-09-12.
*/