From 4072b9fb095857d6473c6f7275b8a9f14017d07f Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 6 Jan 2019 02:57:49 +0900 Subject: [PATCH] adproperties now hold filename-related info --- src/net/torvald/spriteassembler/ADProperties.kt | 13 +++++++++++-- .../spriteassembler/SpriteAssemblerApp.kt | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/net/torvald/spriteassembler/ADProperties.kt b/src/net/torvald/spriteassembler/ADProperties.kt index 86774d0c3..4ff5b93e8 100644 --- a/src/net/torvald/spriteassembler/ADProperties.kt +++ b/src/net/torvald/spriteassembler/ADProperties.kt @@ -15,6 +15,7 @@ class ADProperties { /** list of bodyparts used by all the skeletons */ lateinit var bodyparts: List; private set + lateinit var bodypartFiles: List; private set /** properties that are being used as skeletons */ lateinit var skeletons: List; private set /** properties that are recognised as animations */ @@ -23,6 +24,9 @@ class ADProperties { private val reservedProps = listOf("SPRITESHEET", "EXTENSION") private val animMustContain = listOf("DELAY", "ROW", "SKELETON") + lateinit var baseFilename: String; private set + lateinit var extension: String; private set + constructor(reader: Reader) { javaProp.load(reader) continueLoad() @@ -41,6 +45,10 @@ class ADProperties { propTable[propName.capitalize()] = propsList } + // set reserved values for the animation: filename, extension + baseFilename = get("SPRITESHEET")!![0].variable + extension = get("EXTENSION")!![0].variable + val bodyparts = HashSet() val skeletons = HashSet() val animations = ArrayList() @@ -67,11 +75,10 @@ class ADProperties { } } - - this.bodyparts = bodyparts.toList().sorted() this.skeletons = skeletons.toList().sorted() this.animations = animations.sorted() + this.bodypartFiles = this.bodyparts.map { getFullFilename(it) } } operator fun get(identifier: String) = propTable[identifier.capitalize()] @@ -80,6 +87,8 @@ class ADProperties { fun containsKey(key: String) = propTable.containsKey(key) fun forEach(predicate: (String, List) -> Unit) = propTable.forEach(predicate) + fun getFullFilename(partName: String) = + "${this.baseFilename}${partName.toLowerCase()}${this.extension}" } /** diff --git a/src/net/torvald/spriteassembler/SpriteAssemblerApp.kt b/src/net/torvald/spriteassembler/SpriteAssemblerApp.kt index 9d3fabcfe..b725063a1 100644 --- a/src/net/torvald/spriteassembler/SpriteAssemblerApp.kt +++ b/src/net/torvald/spriteassembler/SpriteAssemblerApp.kt @@ -1,6 +1,7 @@ package net.torvald.spriteassembler import java.awt.BorderLayout +import java.awt.Dimension import java.awt.Graphics import java.awt.event.MouseAdapter import java.awt.event.MouseEvent @@ -23,6 +24,7 @@ class SpriteAssemblerApp : JFrame() { private val panelProperties = JTree() private val panelAnimationsList = JList() private val panelBodypartsList = JList() + private val panelImageFilesList = JList() private val panelSkeletonsList = JList() private val panelCode = JTextPane() private val statBar = JTextArea("Null.") @@ -85,20 +87,25 @@ class SpriteAssemblerApp : JFrame() { } + panelPreview.preferredSize = Dimension(512,512) panelAnimationsList.model = DefaultListModel() panelBodypartsList.model = DefaultListModel() + panelImageFilesList.model = DefaultListModel() panelSkeletonsList.model = DefaultListModel() val panelPartsList = JTabbedPane(JTabbedPane.TOP) panelPartsList.add("Animations", JScrollPane(panelAnimationsList)) panelPartsList.add("Bodyparts", JScrollPane(panelBodypartsList)) + panelPartsList.add("Images", JScrollPane(panelImageFilesList)) panelPartsList.add("Skeletons", JScrollPane(panelSkeletonsList)) - val panelDataView = JSplitPane(JSplitPane.VERTICAL_SPLIT, JScrollPane(panelProperties), panelPartsList) + panelProperties.preferredSize = Dimension(1, 300) + panelPartsList.preferredSize = Dimension(1, 200) val panelTop = JSplitPane(JSplitPane.HORIZONTAL_SPLIT, JScrollPane(panelPreview), panelDataView) + val panelMain = JSplitPane(JSplitPane.VERTICAL_SPLIT, panelTop, JScrollPane(panelCode)) val menu = JMenuBar() @@ -132,8 +139,12 @@ class SpriteAssemblerApp : JFrame() { (panelAnimationsList.model as DefaultListModel).addElement(it) } // populate bodyparts view - adProperties!!.bodyparts.forEach { - (panelBodypartsList.model as DefaultListModel).addElement(it) + adProperties!!.bodyparts.forEach { partName -> + (panelBodypartsList.model as DefaultListModel).addElement(partName) + } + // populate image file list view + adProperties!!.bodypartFiles.forEach { partName -> + (panelImageFilesList.model as DefaultListModel).addElement(partName) } // populate skeletons view adProperties!!.skeletons.forEach {