From 4c3203a8633671e09266740c73e6e477b5e2fe76 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Thu, 29 Dec 2016 21:09:44 +0900 Subject: [PATCH] new debugging tool ActorsList Former-commit-id: 51109b6766a1ebd92613055064e3fa8bd69c37fc Former-commit-id: d5fc3d52b208d3cbbdcec47758cd73aef3240dc8 --- src/net/torvald/terrarum/console/AVTracker.kt | 4 +- .../torvald/terrarum/console/ActorsList.kt | 27 ++++++ .../torvald/terrarum/console/CommandDict.kt | 2 + .../terrarum/debuggerapp/ActorValueTracker.kt | 4 +- .../terrarum/debuggerapp/ActorsLister.kt | 94 +++++++++++++++++++ 5 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 src/net/torvald/terrarum/console/ActorsList.kt create mode 100644 src/net/torvald/terrarum/debuggerapp/ActorsLister.kt diff --git a/src/net/torvald/terrarum/console/AVTracker.kt b/src/net/torvald/terrarum/console/AVTracker.kt index 413d97fb0..af4ec79a9 100644 --- a/src/net/torvald/terrarum/console/AVTracker.kt +++ b/src/net/torvald/terrarum/console/AVTracker.kt @@ -41,8 +41,6 @@ object AVTracker : ConsoleCommand { } fun update() { - jPanelInstances.forEach { - it.setInfoLabel() - } + jPanelInstances.forEach { it.setInfoLabel() } } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/ActorsList.kt b/src/net/torvald/terrarum/console/ActorsList.kt new file mode 100644 index 000000000..6a865fed1 --- /dev/null +++ b/src/net/torvald/terrarum/console/ActorsList.kt @@ -0,0 +1,27 @@ +package net.torvald.terrarum.console + +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.debuggerapp.ActorsLister +import java.util.* + +/** + * Created by SKYHi14 on 2016-12-29. + */ +object ActorsList : ConsoleCommand { + private val jPanelInstances = ArrayList() + + override fun execute(args: Array) { + jPanelInstances.add(ActorsLister( + Terrarum.ingame.actorContainer, + Terrarum.ingame.actorContainerInactive) + ) + } + + override fun printUsage() { + Echo("Pops up new window that displays the list of actors currently in the game") + } + + fun update() { + jPanelInstances.forEach { it.setInfoLabel() } + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/CommandDict.kt b/src/net/torvald/terrarum/console/CommandDict.kt index 7ff92c7a8..4fb115278 100644 --- a/src/net/torvald/terrarum/console/CommandDict.kt +++ b/src/net/torvald/terrarum/console/CommandDict.kt @@ -39,6 +39,8 @@ object CommandDict { Pair("seed", Seed), Pair("println", EchoConsole), Pair("inventory", Inventory), + Pair("avtracker", AVTracker), + Pair("actorslist", ActorsList), // Test codes Pair("bulletintest", SetBulletin), diff --git a/src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt b/src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt index 232c6367b..ded51a99b 100644 --- a/src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt +++ b/src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt @@ -77,8 +77,8 @@ class ActorValueTracker constructor() : JFrame() { override fun mousePressed(e: MouseEvent?) { if (actorValue != null && modavInputKey.text.isNotBlank()) { actorValue!!.remove(modavInputKey.text) - Echo("${SetAV.ccW}Removed key ${SetAV.ccG}${modavInputKey.text} ${SetAV.ccW}of ${SetAV.ccY}${actor!!.referenceID}") - println("[ActorValueTracker] Removed key '${modavInputKey.text}' of $actor") + Echo("${SetAV.ccW}Removed ${SetAV.ccM}${modavInputKey.text} ${SetAV.ccW}of ${SetAV.ccY}${actor!!.referenceID}") + println("[ActorValueTracker] Removed ActorValue '${modavInputKey.text}' of $actor") } } }) diff --git a/src/net/torvald/terrarum/debuggerapp/ActorsLister.kt b/src/net/torvald/terrarum/debuggerapp/ActorsLister.kt new file mode 100644 index 000000000..051677368 --- /dev/null +++ b/src/net/torvald/terrarum/debuggerapp/ActorsLister.kt @@ -0,0 +1,94 @@ +package net.torvald.terrarum.debuggerapp + +import net.torvald.terrarum.gameactors.Actor +import java.awt.BorderLayout +import java.awt.Dimension +import java.awt.GridLayout +import java.util.* +import javax.swing.* + +/** + * Created by SKYHi14 on 2016-12-29. + */ +class ActorsLister( + val actorContainer: ArrayList, + val actorContainerInactive: ArrayList) : JFrame() { + + private val activeActorArea = JTextArea() + private val activeActorScroller = JScrollPane(activeActorArea) + private val inactiveActorArea = JTextArea() + private val inactiveActorScroller = JScrollPane(inactiveActorArea) + + private val countsLabel = JLabel() + + init { + title = "Actors list" + defaultCloseOperation = JFrame.DISPOSE_ON_CLOSE + + activeActorArea.highlighter = null // prevent text-drag-crash + inactiveActorArea.highlighter = null // prevent text-drag-crash + + + val divPanel = JPanel() + divPanel.layout = BorderLayout(0, 2) + + val activeCard = JPanel() + activeCard.layout = BorderLayout(0, 2) + activeCard.add(JLabel("Active actors"), BorderLayout.PAGE_START) + activeCard.add(activeActorScroller, BorderLayout.CENTER) + + val inactiveCard = JPanel() + inactiveCard.layout = BorderLayout(0, 2) + inactiveCard.add(JLabel("Dormant actors"), BorderLayout.PAGE_START) + inactiveCard.add(inactiveActorScroller, BorderLayout.CENTER) + + val splitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, activeCard, inactiveCard) + splitPane.topComponent.minimumSize = Dimension(0, 24) + splitPane.bottomComponent.minimumSize = Dimension(0, 24) + splitPane.resizeWeight = 0.5 + + divPanel.add(countsLabel, BorderLayout.PAGE_START) + divPanel.add(splitPane, BorderLayout.CENTER) + + + this.add(divPanel) + this.setSize(300, 600) + this.isVisible = true + } + + fun setInfoLabel() { + countsLabel.text = "Total: ${actorContainer.size + actorContainerInactive.size}, " + + "Active: ${actorContainer.size}, Dormant: ${actorContainerInactive.size}" + + val sb = StringBuilder() + + actorContainer.forEach { sb.append("$it\n") } + sb.deleteCharAt(sb.length - 1) // delete trailing \n + activeActorArea.text = "$sb" + + sb.setLength(0) // clear stringbuffer + + actorContainerInactive.forEach { sb.append("$it\n") } + if (sb.length > 1) { + sb.deleteCharAt(sb.length - 1) // delete trailing \n + } + inactiveActorArea.text = "$sb" + } +} +/* + ++-------------------------------------+ +| Total: 3, Active: 2, Dormant: 1 LBL | ++-------------------------------------+ +| Active actors LBL | +++-----------------------------------++ +||43232949 || +||5333533 (Sigrid) || +++-----------------------------------++ +| Dormant actors LBL | +++-----------------------------------++ +||12345678 (Cynthia) || +++===================================++ + + +*/ \ No newline at end of file