[Editor] Enable full support icon sets in editor
This commit is contained in:
@@ -7,6 +7,7 @@ import com.bartlomiejpluta.base.editor.audio.asset.SoundAsset
|
|||||||
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAsset
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||||
@@ -75,6 +76,7 @@ class AssetTreeCell(renameAsset: (asset: Asset, name: String) -> Asset, deleteAs
|
|||||||
is ImageAsset -> FontIcon("fa-image")
|
is ImageAsset -> FontIcon("fa-image")
|
||||||
is EntitySet -> FontIcon("fa-male")
|
is EntitySet -> FontIcon("fa-male")
|
||||||
is AnimationAsset -> FontIcon("fa-film")
|
is AnimationAsset -> FontIcon("fa-film")
|
||||||
|
is IconSetAsset -> FontIcon("fa-file-image-o")
|
||||||
is FontAsset -> FontIcon("fa-font")
|
is FontAsset -> FontIcon("fa-font")
|
||||||
is WidgetAsset -> FontIcon("fa-tachometer")
|
is WidgetAsset -> FontIcon("fa-tachometer")
|
||||||
is SoundAsset -> FontIcon("fa-music")
|
is SoundAsset -> FontIcon("fa-music")
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ class AssetsListView : View() {
|
|||||||
menuitem("Import Animation...") { mainController.importAnimation() }
|
menuitem("Import Animation...") { mainController.importAnimation() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val iconSets = AssetCategory("Icon Sets").apply {
|
||||||
|
menuitem("Import Icon Set...") { mainController.importIconSet() }
|
||||||
|
}
|
||||||
|
|
||||||
private val fonts = AssetCategory("Fonts").apply {
|
private val fonts = AssetCategory("Fonts").apply {
|
||||||
menuitem("Import Font...") { mainController.importFont() }
|
menuitem("Import Font...") { mainController.importFont() }
|
||||||
}
|
}
|
||||||
@@ -56,6 +60,7 @@ class AssetsListView : View() {
|
|||||||
images,
|
images,
|
||||||
entitySet,
|
entitySet,
|
||||||
animations,
|
animations,
|
||||||
|
iconSets,
|
||||||
fonts,
|
fonts,
|
||||||
widgets,
|
widgets,
|
||||||
audio
|
audio
|
||||||
@@ -71,6 +76,7 @@ class AssetsListView : View() {
|
|||||||
bindContent(images.items, it.images)
|
bindContent(images.items, it.images)
|
||||||
bindContent(entitySet.items, it.entitySets)
|
bindContent(entitySet.items, it.entitySets)
|
||||||
bindContent(animations.items, it.animations)
|
bindContent(animations.items, it.animations)
|
||||||
|
bindContent(iconSets.items, it.iconSets)
|
||||||
bindContent(fonts.items, it.fonts)
|
bindContent(fonts.items, it.fonts)
|
||||||
bindContent(widgets.items, it.widgets)
|
bindContent(widgets.items, it.widgets)
|
||||||
bindContent(audio.items, it.sounds)
|
bindContent(audio.items, it.sounds)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class AssetMapCodeGenerator : CodeGenerator {
|
|||||||
generateAssetClass("entsets", project.entitySets),
|
generateAssetClass("entsets", project.entitySets),
|
||||||
generateAssetClass("images", project.images),
|
generateAssetClass("images", project.images),
|
||||||
generateAssetClass("animations", project.animations),
|
generateAssetClass("animations", project.animations),
|
||||||
|
generateAssetClass("iconsets", project.iconSets),
|
||||||
generateAssetClass("fonts", project.fonts),
|
generateAssetClass("fonts", project.fonts),
|
||||||
generateAssetClass("widgets", project.widgets),
|
generateAssetClass("widgets", project.widgets),
|
||||||
generateAssetClass("sounds", project.sounds)
|
generateAssetClass("sounds", project.sounds)
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.iconset.asset
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.asset.model.Asset
|
||||||
|
import com.bartlomiejpluta.base.editor.project.model.Project
|
||||||
|
|
||||||
|
class IconSetAsset(project: Project, uid: String, source: String, name: String, val rows: Int, val columns: Int) :
|
||||||
|
Asset(project.iconSetsDirectoryProperty, uid, source, name)
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.iconset.asset
|
||||||
|
|
||||||
|
import javafx.beans.property.SimpleIntegerProperty
|
||||||
|
import javafx.beans.property.SimpleObjectProperty
|
||||||
|
import javafx.beans.property.SimpleStringProperty
|
||||||
|
import tornadofx.getValue
|
||||||
|
import tornadofx.setValue
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
class IconSetAssetData {
|
||||||
|
val nameProperty = SimpleStringProperty()
|
||||||
|
var name by nameProperty
|
||||||
|
|
||||||
|
val rowsProperty = SimpleIntegerProperty(1)
|
||||||
|
var rows by rowsProperty
|
||||||
|
|
||||||
|
val columnsProperty = SimpleIntegerProperty(1)
|
||||||
|
var columns by columnsProperty
|
||||||
|
|
||||||
|
val iconWidthProperty = SimpleIntegerProperty(1)
|
||||||
|
var iconWidth by iconWidthProperty
|
||||||
|
|
||||||
|
val iconHeightProperty = SimpleIntegerProperty(1)
|
||||||
|
var iconHeight by iconHeightProperty
|
||||||
|
|
||||||
|
val fileProperty = SimpleObjectProperty<File>()
|
||||||
|
var file by fileProperty
|
||||||
|
}
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.iconset.view.importing
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAssetData
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.viewmodel.IconSetAssetDataVM
|
||||||
|
import com.bartlomiejpluta.base.editor.util.fx.TextFieldUtil
|
||||||
|
import javafx.beans.property.SimpleObjectProperty
|
||||||
|
import javafx.scene.Cursor
|
||||||
|
import javafx.scene.image.Image
|
||||||
|
import javafx.stage.FileChooser
|
||||||
|
import tornadofx.*
|
||||||
|
|
||||||
|
class ImportIconSetFragment : Fragment("Import Icon Set") {
|
||||||
|
private val dataVM = find<IconSetAssetDataVM>()
|
||||||
|
private val imagePreview = SimpleObjectProperty<Image?>()
|
||||||
|
|
||||||
|
private var onCompleteConsumer: ((IconSetAssetData) -> Unit)? = null
|
||||||
|
|
||||||
|
init {
|
||||||
|
dataVM.fileProperty.addListener { _, _, file ->
|
||||||
|
when (file) {
|
||||||
|
null -> imagePreview.value = null
|
||||||
|
else -> file.inputStream().use { imagePreview.value = Image(it) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dataVM.iconWidthProperty.addListener { _, _, width ->
|
||||||
|
dataVM.columns = (imagePreview.value?.width?.toInt() ?: 1) / width.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
dataVM.iconHeightProperty.addListener { _, _, height ->
|
||||||
|
dataVM.rows = (imagePreview.value?.height?.toInt() ?: 1) / height.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
dataVM.columnsProperty.addListener { _, _, columns ->
|
||||||
|
dataVM.iconWidth = (imagePreview.value?.width?.toInt() ?: 1) / columns.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
dataVM.rowsProperty.addListener { _, _, rows ->
|
||||||
|
dataVM.iconHeight = (imagePreview.value?.height?.toInt() ?: 1) / rows.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
imagePreview.addListener { _, _, _ ->
|
||||||
|
dataVM.columns = 1
|
||||||
|
dataVM.rows = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onComplete(consumer: (IconSetAssetData) -> Unit) {
|
||||||
|
this.onCompleteConsumer = consumer
|
||||||
|
}
|
||||||
|
|
||||||
|
override val root = form {
|
||||||
|
prefHeight = 480.0
|
||||||
|
|
||||||
|
fieldset("Import Icon Set") {
|
||||||
|
hbox {
|
||||||
|
vbox {
|
||||||
|
scrollpane {
|
||||||
|
prefWidth = 300.0
|
||||||
|
prefHeightProperty().bind(this@form.heightProperty())
|
||||||
|
imageview(imagePreview)
|
||||||
|
tooltip = tooltip("Click to choose Icon Set file")
|
||||||
|
cursor = Cursor.HAND
|
||||||
|
|
||||||
|
setOnMouseClicked {
|
||||||
|
dataVM.file = chooseFile(
|
||||||
|
title = "Select Icon Set",
|
||||||
|
filters = arrayOf(FileChooser.ExtensionFilter("PNG Images (*.png)", "*.png"))
|
||||||
|
).getOrNull(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
dataVM.validationContext.addValidator(this@vbox, dataVM.fileProperty) {
|
||||||
|
when {
|
||||||
|
it == null -> error("This field is required")
|
||||||
|
!it.exists() -> error("The file must exist")
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vbox {
|
||||||
|
paddingLeft = 20.0
|
||||||
|
|
||||||
|
field("Icon Set Name") {
|
||||||
|
textfield(dataVM.nameProperty) {
|
||||||
|
required()
|
||||||
|
trimWhitespace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field("Icon Set Rows") {
|
||||||
|
enableWhen(imagePreview.isNotNull)
|
||||||
|
spinner(min = 1, max = Integer.MAX_VALUE, property = dataVM.rowsProperty, editable = true) {
|
||||||
|
required()
|
||||||
|
editor.textFormatter = TextFieldUtil.integerFormatter(dataVM.rows)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field("Icon Set Columns") {
|
||||||
|
enableWhen(imagePreview.isNotNull)
|
||||||
|
spinner(min = 1, max = Integer.MAX_VALUE, property = dataVM.columnsProperty, editable = true) {
|
||||||
|
required()
|
||||||
|
editor.textFormatter = TextFieldUtil.integerFormatter(dataVM.columns)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field("Icon width") {
|
||||||
|
enableWhen(imagePreview.isNotNull)
|
||||||
|
spinner(min = 1, max = Integer.MAX_VALUE, property = dataVM.iconWidthProperty, editable = true) {
|
||||||
|
required()
|
||||||
|
editor.textFormatter = TextFieldUtil.integerFormatter(dataVM.rows)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field("Icon height") {
|
||||||
|
enableWhen(imagePreview.isNotNull)
|
||||||
|
spinner(min = 1, max = Integer.MAX_VALUE, property = dataVM.iconHeightProperty, editable = true) {
|
||||||
|
required()
|
||||||
|
editor.textFormatter = TextFieldUtil.integerFormatter(dataVM.columns)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonbar {
|
||||||
|
button("Import") {
|
||||||
|
action {
|
||||||
|
if (dataVM.commit()) {
|
||||||
|
onCompleteConsumer?.let { it(dataVM.item) }
|
||||||
|
close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button("Reset") {
|
||||||
|
action { dataVM.rollback() }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
button("Cancel") {
|
||||||
|
action { close() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.iconset.viewmodel
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAssetData
|
||||||
|
import tornadofx.ItemViewModel
|
||||||
|
import tornadofx.getValue
|
||||||
|
import tornadofx.setValue
|
||||||
|
|
||||||
|
class IconSetAssetDataVM : ItemViewModel<IconSetAssetData>(IconSetAssetData()) {
|
||||||
|
val nameProperty = bind(IconSetAssetData::nameProperty)
|
||||||
|
var name by nameProperty
|
||||||
|
|
||||||
|
val rowsProperty = bind(IconSetAssetData::rowsProperty)
|
||||||
|
var rows by rowsProperty
|
||||||
|
|
||||||
|
val columnsProperty = bind(IconSetAssetData::columnsProperty)
|
||||||
|
var columns by columnsProperty
|
||||||
|
|
||||||
|
val iconWidthProperty = bind(IconSetAssetData::iconWidthProperty)
|
||||||
|
var iconWidth by iconWidthProperty
|
||||||
|
|
||||||
|
val iconHeightProperty = bind(IconSetAssetData::iconHeightProperty)
|
||||||
|
var iconHeight by iconHeightProperty
|
||||||
|
|
||||||
|
val fileProperty = bind(IconSetAssetData::fileProperty)
|
||||||
|
var file by fileProperty
|
||||||
|
}
|
||||||
@@ -18,6 +18,8 @@ import com.bartlomiejpluta.base.editor.file.model.ScriptAssetFileNode
|
|||||||
import com.bartlomiejpluta.base.editor.gui.font.view.importing.ImportFontFragment
|
import com.bartlomiejpluta.base.editor.gui.font.view.importing.ImportFontFragment
|
||||||
import com.bartlomiejpluta.base.editor.gui.font.viewmodel.FontAssetDataVM
|
import com.bartlomiejpluta.base.editor.gui.font.viewmodel.FontAssetDataVM
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.view.importing.ImportIconSetFragment
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.viewmodel.IconSetAssetDataVM
|
||||||
import com.bartlomiejpluta.base.editor.image.view.importing.ImportImageFragment
|
import com.bartlomiejpluta.base.editor.image.view.importing.ImportImageFragment
|
||||||
import com.bartlomiejpluta.base.editor.image.viewmodel.ImageAssetDataVM
|
import com.bartlomiejpluta.base.editor.image.viewmodel.ImageAssetDataVM
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
@@ -229,6 +231,20 @@ class MainController : Controller() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun importIconSet() {
|
||||||
|
val vm = IconSetAssetDataVM()
|
||||||
|
val scope = Scope()
|
||||||
|
setInScope(vm, scope)
|
||||||
|
|
||||||
|
find<ImportIconSetFragment>(scope).apply {
|
||||||
|
onComplete {
|
||||||
|
projectContext.importIconSet(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
openModal(block = true, resizable = false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun importFont() {
|
fun importFont() {
|
||||||
val vm = FontAssetDataVM()
|
val vm = FontAssetDataVM()
|
||||||
val scope = Scope()
|
val scope = Scope()
|
||||||
@@ -269,6 +285,7 @@ class MainController : Controller() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun closeAsset(asset: Asset) {
|
fun closeAsset(asset: Asset) {
|
||||||
when (asset) {
|
when (asset) {
|
||||||
is GameMapAsset -> openItems.entries.firstOrNull { (_, item) -> item is GameMapVM && item.uid == asset.uid }?.key?.let {
|
is GameMapAsset -> openItems.entries.firstOrNull { (_, item) -> item is GameMapVM && item.uid == asset.uid }?.key?.let {
|
||||||
@@ -279,7 +296,6 @@ class MainController : Controller() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun closeScript(fsNode: FileNode) {
|
fun closeScript(fsNode: FileNode) {
|
||||||
openItems.entries.firstOrNull { (_, item) -> item is CodeVM && item.fileNode.absolutePath == fsNode.absolutePath }?.key?.let {
|
openItems.entries.firstOrNull { (_, item) -> item is CodeVM && item.fileNode.absolutePath == fsNode.absolutePath }?.key?.let {
|
||||||
openItems.remove(it)
|
openItems.remove(it)
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
|||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAssetData
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAssetData
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAssetData
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAssetData
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAssetData
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
@@ -224,6 +226,19 @@ class DefaultProjectContext : ProjectContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun importIconSet(data: IconSetAssetData) {
|
||||||
|
project?.let {
|
||||||
|
UID.next(it.iconSets.map(Asset::uid)).let { uid ->
|
||||||
|
val source = "$uid.${data.file.extension}"
|
||||||
|
val targetFile = File(it.iconSetsDirectory, source)
|
||||||
|
data.file.copyTo(targetFile)
|
||||||
|
it.iconSets += IconSetAsset(it, uid, source, data.name, data.rows, data.columns)
|
||||||
|
|
||||||
|
save()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun importFont(data: FontAssetData) {
|
override fun importFont(data: FontAssetData) {
|
||||||
project?.let {
|
project?.let {
|
||||||
UID.next(it.fonts.map(Asset::uid)).let { uid ->
|
UID.next(it.fonts.map(Asset::uid)).let { uid ->
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.bartlomiejpluta.base.editor.file.model.FileNode
|
|||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAssetData
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAssetData
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAssetData
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAssetData
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAssetData
|
||||||
import com.bartlomiejpluta.base.editor.map.model.map.GameMap
|
import com.bartlomiejpluta.base.editor.map.model.map.GameMap
|
||||||
@@ -43,12 +44,13 @@ interface ProjectContext {
|
|||||||
|
|
||||||
fun importAnimation(data: AnimationAssetData)
|
fun importAnimation(data: AnimationAssetData)
|
||||||
|
|
||||||
|
fun importIconSet(data: IconSetAssetData)
|
||||||
|
|
||||||
fun importFont(data: FontAssetData)
|
fun importFont(data: FontAssetData)
|
||||||
|
|
||||||
fun createWidget(data: WidgetAssetData): WidgetAsset
|
fun createWidget(data: WidgetAssetData): WidgetAsset
|
||||||
|
|
||||||
fun importSound(data: SoundAssetData)
|
fun importSound(data: SoundAssetData)
|
||||||
|
|
||||||
fun deleteAsset(asset: Asset)
|
fun deleteAsset(asset: Asset)
|
||||||
fun loadScript(fileNode: FileNode, execute: ((String) -> Unit)?, saveable: Boolean): Code
|
fun loadScript(fileNode: FileNode, execute: ((String) -> Unit)?, saveable: Boolean): Code
|
||||||
fun saveScript(code: Code)
|
fun saveScript(code: Code)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
|||||||
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
|
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
|
||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAsset
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||||
@@ -39,11 +40,12 @@ class Project {
|
|||||||
val images = observableListOf<ImageAsset>()
|
val images = observableListOf<ImageAsset>()
|
||||||
val entitySets = observableListOf<EntitySet>()
|
val entitySets = observableListOf<EntitySet>()
|
||||||
val animations = observableListOf<AnimationAsset>()
|
val animations = observableListOf<AnimationAsset>()
|
||||||
|
val iconSets = observableListOf<IconSetAsset>()
|
||||||
val fonts = observableListOf<FontAsset>()
|
val fonts = observableListOf<FontAsset>()
|
||||||
val widgets = observableListOf<WidgetAsset>()
|
val widgets = observableListOf<WidgetAsset>()
|
||||||
val sounds = observableListOf<SoundAsset>()
|
val sounds = observableListOf<SoundAsset>()
|
||||||
|
|
||||||
val assetLists = listOf(maps, tileSets, images, entitySets, animations, fonts, widgets, sounds)
|
val assetLists = listOf(maps, tileSets, images, entitySets, animations, iconSets, fonts, widgets, sounds)
|
||||||
|
|
||||||
val mapsDirectoryProperty = SimpleObjectProperty<File>()
|
val mapsDirectoryProperty = SimpleObjectProperty<File>()
|
||||||
var mapsDirectory by mapsDirectoryProperty
|
var mapsDirectory by mapsDirectoryProperty
|
||||||
@@ -65,6 +67,10 @@ class Project {
|
|||||||
var animationsDirectory by animationsDirectoryProperty
|
var animationsDirectory by animationsDirectoryProperty
|
||||||
private set
|
private set
|
||||||
|
|
||||||
|
val iconSetsDirectoryProperty = SimpleObjectProperty<File>()
|
||||||
|
var iconSetsDirectory by iconSetsDirectoryProperty
|
||||||
|
private set
|
||||||
|
|
||||||
val fontsDirectoryProperty = SimpleObjectProperty<File>()
|
val fontsDirectoryProperty = SimpleObjectProperty<File>()
|
||||||
var fontsDirectory by fontsDirectoryProperty
|
var fontsDirectory by fontsDirectoryProperty
|
||||||
private set
|
private set
|
||||||
@@ -126,6 +132,7 @@ class Project {
|
|||||||
imagesDirectory = File(it, IMAGES_DIR)
|
imagesDirectory = File(it, IMAGES_DIR)
|
||||||
entitySetsDirectory = File(it, ENTITY_SETS_DIR)
|
entitySetsDirectory = File(it, ENTITY_SETS_DIR)
|
||||||
animationsDirectory = File(it, ANIMATIONS_DIR)
|
animationsDirectory = File(it, ANIMATIONS_DIR)
|
||||||
|
iconSetsDirectory = File(it, ICONSETS_DIR)
|
||||||
fontsDirectory = File(it, FONTS_DIR)
|
fontsDirectory = File(it, FONTS_DIR)
|
||||||
widgetsDirectory = File(it, WIDGETS_DIR)
|
widgetsDirectory = File(it, WIDGETS_DIR)
|
||||||
audioDirectory = File(it, AUDIO_DIR)
|
audioDirectory = File(it, AUDIO_DIR)
|
||||||
@@ -156,6 +163,7 @@ class Project {
|
|||||||
imagesDirectory?.mkdirs()
|
imagesDirectory?.mkdirs()
|
||||||
entitySetsDirectory?.mkdirs()
|
entitySetsDirectory?.mkdirs()
|
||||||
animationsDirectory?.mkdirs()
|
animationsDirectory?.mkdirs()
|
||||||
|
iconSetsDirectory?.mkdirs()
|
||||||
fontsDirectory?.mkdirs()
|
fontsDirectory?.mkdirs()
|
||||||
widgetsDirectory?.mkdirs()
|
widgetsDirectory?.mkdirs()
|
||||||
audioDirectory?.mkdirs()
|
audioDirectory?.mkdirs()
|
||||||
@@ -173,6 +181,7 @@ class Project {
|
|||||||
const val IMAGES_DIR = "images"
|
const val IMAGES_DIR = "images"
|
||||||
const val ENTITY_SETS_DIR = "entsets"
|
const val ENTITY_SETS_DIR = "entsets"
|
||||||
const val ANIMATIONS_DIR = "animations"
|
const val ANIMATIONS_DIR = "animations"
|
||||||
|
const val ICONSETS_DIR = "iconsets"
|
||||||
const val FONTS_DIR = "fonts"
|
const val FONTS_DIR = "fonts"
|
||||||
const val WIDGETS_DIR = "widgets"
|
const val WIDGETS_DIR = "widgets"
|
||||||
const val AUDIO_DIR = "audio"
|
const val AUDIO_DIR = "audio"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.bartlomiejpluta.base.editor.audio.asset.SoundAsset
|
|||||||
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAsset
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
import com.bartlomiejpluta.base.editor.project.model.Project
|
import com.bartlomiejpluta.base.editor.project.model.Project
|
||||||
@@ -27,6 +28,7 @@ class ProtobufProjectDeserializer : ProjectDeserializer {
|
|||||||
images.addAll(proto.imagesList.map { deserializeImage(this, it) })
|
images.addAll(proto.imagesList.map { deserializeImage(this, it) })
|
||||||
entitySets.addAll(proto.entitySetsList.map { deserializeEntitySet(this, it) })
|
entitySets.addAll(proto.entitySetsList.map { deserializeEntitySet(this, it) })
|
||||||
animations.addAll(proto.animationsList.map { deserializeAnimation(this, it) })
|
animations.addAll(proto.animationsList.map { deserializeAnimation(this, it) })
|
||||||
|
iconSets.addAll(proto.iconSetsList.map { deserializeIconSet(this, it) })
|
||||||
fonts.addAll(proto.fontsList.map { deserializeFont(this, it) })
|
fonts.addAll(proto.fontsList.map { deserializeFont(this, it) })
|
||||||
widgets.addAll(proto.widgetsList.map { deserializeWidget(this, it) })
|
widgets.addAll(proto.widgetsList.map { deserializeWidget(this, it) })
|
||||||
sounds.addAll(proto.soundsList.map { deserializeSound(this, it) })
|
sounds.addAll(proto.soundsList.map { deserializeSound(this, it) })
|
||||||
@@ -73,6 +75,15 @@ class ProtobufProjectDeserializer : ProjectDeserializer {
|
|||||||
columns = animationAsset.columns
|
columns = animationAsset.columns
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private fun deserializeIconSet(project: Project, iconSetAsset: ProjectProto.IconSetAsset) = IconSetAsset(
|
||||||
|
project = project,
|
||||||
|
uid = iconSetAsset.uid,
|
||||||
|
source = iconSetAsset.source,
|
||||||
|
name = iconSetAsset.name,
|
||||||
|
rows = iconSetAsset.rows,
|
||||||
|
columns = iconSetAsset.columns
|
||||||
|
)
|
||||||
|
|
||||||
private fun deserializeFont(project: Project, fontAsset: ProjectProto.FontAsset) = FontAsset(
|
private fun deserializeFont(project: Project, fontAsset: ProjectProto.FontAsset) = FontAsset(
|
||||||
project = project,
|
project = project,
|
||||||
uid = fontAsset.uid,
|
uid = fontAsset.uid,
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.bartlomiejpluta.base.editor.audio.asset.SoundAsset
|
|||||||
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
||||||
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.iconset.asset.IconSetAsset
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
import com.bartlomiejpluta.base.editor.project.model.Project
|
import com.bartlomiejpluta.base.editor.project.model.Project
|
||||||
@@ -25,6 +26,7 @@ class ProtobufProjectSerializer : ProjectSerializer {
|
|||||||
proto.addAllImages(item.images.map(this::serializeImage))
|
proto.addAllImages(item.images.map(this::serializeImage))
|
||||||
proto.addAllEntitySets(item.entitySets.map(this::serializeEntitySet))
|
proto.addAllEntitySets(item.entitySets.map(this::serializeEntitySet))
|
||||||
proto.addAllAnimations(item.animations.map(this::serializeAnimation))
|
proto.addAllAnimations(item.animations.map(this::serializeAnimation))
|
||||||
|
proto.addAllIconSets(item.iconSets.map(this::serializeIconSet))
|
||||||
proto.addAllFonts(item.fonts.map(this::serializeFont))
|
proto.addAllFonts(item.fonts.map(this::serializeFont))
|
||||||
proto.addAllWidgets(item.widgets.map(this::serializeWidget))
|
proto.addAllWidgets(item.widgets.map(this::serializeWidget))
|
||||||
proto.addAllSounds(item.sounds.map(this::serializeSound))
|
proto.addAllSounds(item.sounds.map(this::serializeSound))
|
||||||
@@ -67,6 +69,14 @@ class ProtobufProjectSerializer : ProjectSerializer {
|
|||||||
.setColumns(animation.columns)
|
.setColumns(animation.columns)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
private fun serializeIconSet(iconSet: IconSetAsset) = ProjectProto.IconSetAsset.newBuilder()
|
||||||
|
.setUid(iconSet.uid)
|
||||||
|
.setSource(iconSet.source)
|
||||||
|
.setName(iconSet.name)
|
||||||
|
.setRows(iconSet.rows)
|
||||||
|
.setColumns(iconSet.columns)
|
||||||
|
.build()
|
||||||
|
|
||||||
private fun serializeFont(font: FontAsset) = ProjectProto.FontAsset.newBuilder()
|
private fun serializeFont(font: FontAsset) = ProjectProto.FontAsset.newBuilder()
|
||||||
.setUid(font.uid)
|
.setUid(font.uid)
|
||||||
.setSource(font.source)
|
.setSource(font.source)
|
||||||
|
|||||||
Reference in New Issue
Block a user