From 1e3ee9000c7ba843abd73c992ebe4ab6999df501 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 12 May 2023 20:27:48 +0900 Subject: [PATCH] vm config menu --- .../net/torvald/terrarum/imagefont/font.tga | 2 +- .../src/net/torvald/tsvm/ConfigMenu.kt | 93 +++++++++++++++++++ .../src/net/torvald/tsvm/VMEmuExecutable.kt | 2 +- 3 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 tsvm_executable/src/net/torvald/tsvm/ConfigMenu.kt diff --git a/tsvm_executable/src/net/torvald/terrarum/imagefont/font.tga b/tsvm_executable/src/net/torvald/terrarum/imagefont/font.tga index 2bdb5a0..2e178fb 100644 --- a/tsvm_executable/src/net/torvald/terrarum/imagefont/font.tga +++ b/tsvm_executable/src/net/torvald/terrarum/imagefont/font.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72b143d125803914d36b76ef1136bfd12da203fff4debca335fb53310ddd615c +oid sha256:9aed6d5c6c88fb8286aa55cfd4bae2b61cf9cda15ebea6484a77467bc39ef8c9 size 93202 diff --git a/tsvm_executable/src/net/torvald/tsvm/ConfigMenu.kt b/tsvm_executable/src/net/torvald/tsvm/ConfigMenu.kt new file mode 100644 index 0000000..68cb8ae --- /dev/null +++ b/tsvm_executable/src/net/torvald/tsvm/ConfigMenu.kt @@ -0,0 +1,93 @@ +package net.torvald.tsvm + +import com.badlogic.gdx.graphics.Color +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.tsvm.VMEmuExecutableWrapper.Companion.FONT + +/** + * Created by minjaesong on 2023-05-12. + */ +class ConfigMenu(parent: VMEmuExecutable, x: Int, y: Int, w: Int, h: Int) : EmuMenu(parent, x, y, w, h) { + + override fun show() { + } + + override fun hide() { + } + + override fun update() { + + + + } + + private val STR_COM = "\u00D6\u00D7\u00D8\u00D9" + private val STR_CARD = "\u00DA\u00DB\u00DC\u00DD" + + private val selectedPort = "" // com1-4, card1-7, ram16k..ram8192k + private val ramsize = listOf(16,32,64,128,256,512,1024,2048,4096,8192) + + + override fun render(batch: SpriteBatch) { + + batch.color = Color.WHITE + + parent.currentlyPersistentVM.let { vmInfo -> + + if (vmInfo == null) { + batch.inUse { + FONT.draw(batch, "Please select a VM", 12f, 11f) + } + } + else vmInfo.let { (vm, vmName) -> + batch.inUse { + // background + batch.color = EmulatorGuiToolkit.Theme.COL_WELL + batch.fillRect(8, 35, 67, 56) + batch.fillRect(8, 100, 67, 95) + batch.fillRect(8, 204, 67, 134) + + //labels + batch.color = Color.WHITE + // vm name + FONT.draw(batch, vmName, 12f, 11f) + // COM + "COM".forEachIndexed { index, c -> FONT.draw(batch, "$c", 12f, 44f + FONT.H * index) } + // CARD + "CARD".forEachIndexed { index, c -> FONT.draw(batch, "$c", 12f, 123f + FONT.H * index) } + // RAM + "RAM".forEachIndexed { index, c -> FONT.draw(batch, "$c", 12f, 251f + FONT.H * index) } + + + // COM buttons + for (i in 1..4) { + batch.setColourBy { selectedPort == "com$i" } + FONT.draw(batch, "$i", 29f, 24f + FONT.H * i) + FONT.draw(batch, STR_COM, 40f, 24f + FONT.H * i) + } + + + // CARD buttons + for (i in 1..7) { + batch.setColourBy { selectedPort == "card$i" } + FONT.draw(batch, "$i", 29f, 89f + FONT.H * i) + FONT.draw(batch, STR_CARD, 40f, 89f + FONT.H * i) + } + + + for (i in 0..9) { + val ramnum = ramsize[i] + batch.setColourBy { selectedPort == "ram${ramnum}k" } + FONT.draw(batch, "${ramnum}K", 36f + (if (ramnum < 100) 7f else if (ramnum < 1000) 4f else 0f), 206f + FONT.H * i) + } + + + } + } + + } + } + + override fun dispose() { + } +} \ No newline at end of file diff --git a/tsvm_executable/src/net/torvald/tsvm/VMEmuExecutable.kt b/tsvm_executable/src/net/torvald/tsvm/VMEmuExecutable.kt index ebf3e08..1f8fcc8 100644 --- a/tsvm_executable/src/net/torvald/tsvm/VMEmuExecutable.kt +++ b/tsvm_executable/src/net/torvald/tsvm/VMEmuExecutable.kt @@ -426,7 +426,7 @@ class VMEmuExecutable(val windowWidth: Int, val windowHeight: Int, var panelsX: private val tabPos = (menuTabs + "").mapIndexed { index, _ -> 1 + menuTabs.subList(0, index).sumBy { it.length } + 2 * index } private val tabs = arrayOf( ProfilesMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Profiles - DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Config + ConfigMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Config MMUMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // MMU DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM1 DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM2