adproperties now hold filename-related info

This commit is contained in:
minjaesong
2019-01-06 02:57:49 +09:00
parent 36160a6579
commit 4072b9fb09
2 changed files with 25 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ class ADProperties {
/** list of bodyparts used by all the skeletons */
lateinit var bodyparts: List<String>; private set
lateinit var bodypartFiles: List<String>; private set
/** properties that are being used as skeletons */
lateinit var skeletons: List<String>; 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<String>()
val skeletons = HashSet<String>()
val animations = ArrayList<String>()
@@ -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<ADPropertyObject>) -> Unit) = propTable.forEach(predicate)
fun getFullFilename(partName: String) =
"${this.baseFilename}${partName.toLowerCase()}${this.extension}"
}
/**

View File

@@ -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<String>()
private val panelBodypartsList = JList<String>()
private val panelImageFilesList = JList<String>()
private val panelSkeletonsList = JList<String>()
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 {