improved ActorValueTracker: can now change actor currently tracking

Former-commit-id: 71daf44209f700b8702f2b73294583edefda49c9
Former-commit-id: 3ab76c6509086490ba6ea9501b1ba08e444a7e53
This commit is contained in:
Song Minjae
2016-12-30 02:22:58 +09:00
parent 061c15d241
commit ef59134a3e
5 changed files with 60 additions and 40 deletions

View File

@@ -41,6 +41,6 @@ object AVTracker : ConsoleCommand {
} }
fun update() { fun update() {
jPanelInstances.forEach { it.setInfoLabel() } jPanelInstances.forEach { it.update() }
} }
} }

View File

@@ -22,6 +22,6 @@ object ActorsList : ConsoleCommand {
} }
fun update() { fun update() {
jPanelInstances.forEach { it.setInfoLabel() } jPanelInstances.forEach { it.update() }
} }
} }

View File

@@ -75,7 +75,7 @@ internal object GetAV : ConsoleCommand {
" $ccO" + " $ccO" +
Terrarum.ingame.getActorByID(id).actorValue[av]!!.javaClass.simpleName Terrarum.ingame.getActorByID(id).actorValue[av]!!.javaClass.simpleName
) )
println("id.av = " + println("$id.$av = " +
Terrarum.ingame.getActorByID(id).actorValue[av] + Terrarum.ingame.getActorByID(id).actorValue[av] +
" " + " " +
Terrarum.ingame.getActorByID(id).actorValue[av]!!.javaClass.simpleName Terrarum.ingame.getActorByID(id).actorValue[av]!!.javaClass.simpleName

View File

@@ -1,5 +1,6 @@
package net.torvald.terrarum.debuggerapp package net.torvald.terrarum.debuggerapp
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.console.SetAV import net.torvald.terrarum.console.SetAV
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
@@ -24,11 +25,11 @@ class ActorValueTracker constructor() : JFrame() {
setTrackingActor(actor) setTrackingActor(actor)
} }
private val selectedActorLabel = JLabel("Actor not selected")
private val avInfoArea = JTextArea() private val avInfoArea = JTextArea()
private val avInfoScroller = JScrollPane(avInfoArea) private val avInfoScroller = JScrollPane(avInfoArea)
private val avPosArea = JTextArea() private val avPosArea = JTextArea()
private val avPosScroller = JScrollPane(avPosArea) private val avPosScroller = JScrollPane(avPosArea)
private var actor: ActorWithBody? = null private var actor: ActorWithBody? = null
private var actorValue: ActorValue? = null private var actorValue: ActorValue? = null
@@ -38,6 +39,10 @@ class ActorValueTracker constructor() : JFrame() {
private val buttonAddAV = JButton("Add/Mod") private val buttonAddAV = JButton("Add/Mod")
private val buttonDelAV = JButton("Delete") private val buttonDelAV = JButton("Delete")
//private val selectedActorLabel = JLabel("Selected actor: ")
private val actorIDField = JTextField()
private val buttonChangeActor = JButton("Change")
init { init {
title = "Actor value tracker" title = "Actor value tracker"
defaultCloseOperation = JFrame.DISPOSE_ON_CLOSE defaultCloseOperation = JFrame.DISPOSE_ON_CLOSE
@@ -51,6 +56,9 @@ class ActorValueTracker constructor() : JFrame() {
avInfoScroller.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_NEVER avInfoScroller.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
avPosScroller.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_NEVER avPosScroller.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
if (actor != null) {
actorIDField.text = "${actor!!.referenceID}"
}
// button listener for buttons // button listener for buttons
buttonAddAV.addMouseListener(object : MouseListener { buttonAddAV.addMouseListener(object : MouseListener {
@@ -82,17 +90,36 @@ class ActorValueTracker constructor() : JFrame() {
} }
} }
}) })
buttonChangeActor.addMouseListener(object : MouseListener {
override fun mouseEntered(e: MouseEvent?) { }
override fun mouseClicked(e: MouseEvent?) { }
override fun mouseReleased(e: MouseEvent?) { }
override fun mouseExited(e: MouseEvent?) { }
override fun mousePressed(e: MouseEvent?) {
if (actorIDField.text.toLowerCase() == "player") {
actor = Terrarum.ingame.player
actorValue = actor!!.actorValue
}
else if (actorIDField.text.isNotBlank()) {
actor = Terrarum.ingame.getActorByID(actorIDField.text.toInt()) as ActorWithBody
actorValue = actor!!.actorValue
}
}
})
// panel elements // panel elements
divPanel.add(selectedActorLabel, BorderLayout.PAGE_START) val actorNameBar = JPanel()
actorNameBar.layout = BorderLayout(2, 0)
actorNameBar.add(JLabel("RefID: "), BorderLayout.LINE_START)
actorNameBar.add(actorIDField, BorderLayout.CENTER)
actorNameBar.add(buttonChangeActor, BorderLayout.LINE_END)
val posAndAV = JPanel() val posAndAV = JPanel()
posAndAV.layout = BorderLayout() posAndAV.layout = BorderLayout()
posAndAV.add(avPosScroller, BorderLayout.PAGE_START) posAndAV.add(avPosScroller, BorderLayout.PAGE_START)
posAndAV.add(avInfoScroller, BorderLayout.CENTER) posAndAV.add(avInfoScroller, BorderLayout.CENTER)
divPanel.add(posAndAV, BorderLayout.CENTER)
val toolbox = JPanel() val toolbox = JPanel()
toolbox.layout = BorderLayout() toolbox.layout = BorderLayout()
@@ -115,13 +142,16 @@ class ActorValueTracker constructor() : JFrame() {
modpanel.layout = BorderLayout(4, 2) modpanel.layout = BorderLayout(4, 2)
modpanel.add(modpanelLabels, BorderLayout.LINE_START) modpanel.add(modpanelLabels, BorderLayout.LINE_START)
modpanel.add(modpanelFields, BorderLayout.CENTER) modpanel.add(modpanelFields, BorderLayout.CENTER)
modpanel.add(JLabel(
"<html>Messed-up type or careless delete will crash the game.<br>" +
"Prepend two underscores for boolean literals.</html>"
), BorderLayout.PAGE_END)
toolbox.add(toolpanel, BorderLayout.PAGE_START) toolbox.add(toolpanel, BorderLayout.PAGE_START)
toolbox.add(modpanel, BorderLayout.CENTER) toolbox.add(modpanel, BorderLayout.CENTER)
modpanel.add(JLabel(
"<html>Messed-up type or careless delete will crash the game.</html>"
), BorderLayout.PAGE_END)
divPanel.add(actorNameBar, BorderLayout.PAGE_START)
divPanel.add(posAndAV, BorderLayout.CENTER)
divPanel.add(toolbox, BorderLayout.PAGE_END) divPanel.add(toolbox, BorderLayout.PAGE_END)
@@ -133,20 +163,20 @@ class ActorValueTracker constructor() : JFrame() {
fun setTrackingActor(actor: Actor) { fun setTrackingActor(actor: Actor) {
this.actorValue = actor.actorValue this.actorValue = actor.actorValue
selectedActorLabel.text = "Actor: $actor"
this.title = "AVTracker — $actor" this.title = "AVTracker — $actor"
if (actor is ActorWithBody) { if (actor is ActorWithBody) {
this.actor = actor this.actor = actor
} }
setInfoLabel() update()
} }
fun setInfoLabel() { fun update() {
val sb = StringBuilder() val sb = StringBuilder()
if (actor != null) { if (actor != null) {
sb.append("toString: ${actor!!}\n")
sb.append("X: ${actor!!.hitbox.pointedX} (${(actor!!.hitbox.pointedX / MapDrawer.TILE_SIZE).toInt()})\n") sb.append("X: ${actor!!.hitbox.pointedX} (${(actor!!.hitbox.pointedX / MapDrawer.TILE_SIZE).toInt()})\n")
sb.append("Y: ${actor!!.hitbox.pointedY} (${(actor!!.hitbox.pointedY / MapDrawer.TILE_SIZE).toInt()})") sb.append("Y: ${actor!!.hitbox.pointedY} (${(actor!!.hitbox.pointedY / MapDrawer.TILE_SIZE).toInt()})")
@@ -156,16 +186,10 @@ class ActorValueTracker constructor() : JFrame() {
if (actorValue != null) { if (actorValue != null) {
for (key in actorValue!!.keySet) { for (key in actorValue!!.keySet) {
val value = actorValue!![key.toString()] val value = actorValue!![key.toString()]!!
val type = value.javaClass.simpleName
sb.append("$key = ${ sb.append("$key = $value ($type)\n")
if (value is String)
"\"$value\"" // name = "Sigrid"
else if (value is Boolean)
"_$value" // intelligent = __true
else
"$value" // scale = 1.0
}\n")
} }
sb.deleteCharAt(sb.length - 1) // delete trailing \n sb.deleteCharAt(sb.length - 1) // delete trailing \n
@@ -180,22 +204,17 @@ class ActorValueTracker constructor() : JFrame() {
/* /*
+--------------------------------+ +--------------------------------+
| Actor: 5333533 (Sigrid) LBL | | Actor: [5333533 ] [Change] | LBL TFL BTN
+--------------------------------+ +--------------------------------+
| X: 65532.655654747 (4095) LBL | | X: 65532.655654747 (4095) | TAR
| Y: 3050.4935465 (190) LBL | | Y: 3050.4935465 (190) |
| ... | | ... |
+--------------------------------+ +--------------------------------+
| < TOOLBOX > BTN | | [ Add/Mod ] [ Delete ] | BTN BTN
+--------------------------------+ +--------------------------------+
| Key [ ] | | Key [ ] | LBL TFL
| Value [ ] | | Value [ ] | LBL TFL
+--------------------------------+ +--------------------------------+
*/ */

View File

@@ -52,11 +52,11 @@ class ActorsLister(
this.add(divPanel) this.add(divPanel)
this.setSize(300, 600) this.setSize(300, 300)
this.isVisible = true this.isVisible = true
} }
fun setInfoLabel() { fun update() {
countsLabel.text = "Total: ${actorContainer.size + actorContainerInactive.size}, " + countsLabel.text = "Total: ${actorContainer.size + actorContainerInactive.size}, " +
"Active: ${actorContainer.size}, Dormant: ${actorContainerInactive.size}" "Active: ${actorContainer.size}, Dormant: ${actorContainerInactive.size}"
@@ -78,16 +78,17 @@ class ActorsLister(
/* /*
+-------------------------------------+ +-------------------------------------+
| Total: 3, Active: 2, Dormant: 1 LBL | | Total: 3, Active: 2, Dormant: 1 | LBL
+-------------------------------------+ +-------------------------------------+
| Active actors LBL | | Active actors | LBL
++-----------------------------------++ ++-----------------------------------++
||43232949 || ||43232949 || TAR
||5333533 (Sigrid) || ||5333533 (Sigrid) ||
++-----------------------------------++ ++-----------------------------------++
| Dormant actors LBL | |=====================================| SPN
| Dormant actors | LBL
++-----------------------------------++ ++-----------------------------------++
||12345678 (Cynthia) || ||12345678 (Cynthia) || TAR
++===================================++ ++===================================++