Files
Terrarum/src/net/torvald/terrarum/StateVTTest.kt
Song Minjae 96c6cb2cc6 bunch of codes:
- Test InputStream() on VirtualComputer (blocking/unblocking using simple semaphore) -- no more dirty lua impl of io.read
- Typealias Kotlin 1.1
- Primitive box drawing on VideoCard
- Removing unnecessary fonts


Former-commit-id: cece88af3a3430678e685856eec78b4a9d598b4f
Former-commit-id: 22eed3a7beb9b4cb34636cbab2ff0e94989bdb31
2017-03-02 02:11:50 +09:00

74 lines
2.4 KiB
Kotlin

package net.torvald.terrarum
import net.torvald.terrarum.gamecontroller.Key
import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer
import net.torvald.terrarum.virtualcomputer.terminal.SimpleTextTerminal
import net.torvald.terrarum.virtualcomputer.terminal.Teletype
import net.torvald.terrarum.virtualcomputer.terminal.TeletypeTerminal
import org.newdawn.slick.Color
import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics
import org.newdawn.slick.Image
import org.newdawn.slick.state.BasicGameState
import org.newdawn.slick.state.StateBasedGame
/**
* ComputerCraft/OpenComputers like-alike, just for fun!
*
* Created by minjaesong on 16-09-07.
*/
class StateVTTest : BasicGameState() {
// HiRes: 100x64, LoRes: 80x25
val computerInside = TerrarumComputer(8)
val vt = SimpleTextTerminal(SimpleTextTerminal.AMETHYST_NOVELTY, 80, 25,
computerInside, colour = false, hires = false)
val vtUI = Image(vt.displayW, vt.displayH)
init {
computerInside.attachTerminal(vt)
}
override fun init(container: GameContainer, game: StateBasedGame) {
//vt.openInput()
}
override fun update(container: GameContainer, game: StateBasedGame, delta: Int) {
Terrarum.appgc.setTitle("VT — F: ${container.fps}" +
" — M: ${Terrarum.memInUse}M / ${Terrarum.memXmx}M")
vt.update(container, delta)
computerInside.update(container, delta)
}
override fun getID() = Terrarum.STATE_ID_TEST_TTY
private val paperColour = Color(0xfffce6)
val vtUIrenderX = Terrarum.WIDTH.minus(vtUI.width).div(2f)
val vtUIrenderY = Terrarum.HEIGHT.minus(vtUI.height).div(2f)
override fun render(container: GameContainer, game: StateBasedGame, g: Graphics) {
vt.render(container, vtUI.graphics)
blendNormal()
g.drawImage(vtUI, vtUIrenderX, vtUIrenderY)
}
override fun keyPressed(key: Int, c: Char) {
super.keyPressed(key, c)
vt.keyPressed(key, c)
if (!computerInside.isHalted) {
if (key == Key.RETURN && computerInside.luaJ_globals["__scanMode__"].checkjstring() == "line") {
vt.closeInputString() // cut input by pressing Key.RETURN
}
else if (computerInside.luaJ_globals["__scanMode__"].checkjstring() == "a_key") {
vt.closeInputKey(key) // cut input by pressing any key
}
}
}
}