[Editor] Create TileSetAsset object
This commit is contained in:
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.editor.project.model
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
|
||||||
import com.bartlomiejpluta.base.editor.project.context.DefaultProjectContext
|
import com.bartlomiejpluta.base.editor.project.context.DefaultProjectContext
|
||||||
|
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||||
import javafx.beans.property.SimpleObjectProperty
|
import javafx.beans.property.SimpleObjectProperty
|
||||||
import javafx.beans.property.SimpleStringProperty
|
import javafx.beans.property.SimpleStringProperty
|
||||||
import tornadofx.getValue
|
import tornadofx.getValue
|
||||||
@@ -17,23 +18,32 @@ class Project {
|
|||||||
val sourceDirectory by sourceDirectoryProperty
|
val sourceDirectory by sourceDirectoryProperty
|
||||||
|
|
||||||
val maps = observableListOf<GameMapAsset>()
|
val maps = observableListOf<GameMapAsset>()
|
||||||
|
val tileSets = observableListOf<TileSetAsset>()
|
||||||
|
|
||||||
val mapsDirectoryProperty = SimpleObjectProperty<File>()
|
val mapsDirectoryProperty = SimpleObjectProperty<File>()
|
||||||
var mapsDirectory by mapsDirectoryProperty
|
var mapsDirectory by mapsDirectoryProperty
|
||||||
private set
|
private set
|
||||||
|
|
||||||
|
val tileSetsDirectoryProperty = SimpleObjectProperty<File>()
|
||||||
|
var tileSetsDirectory by tileSetsDirectoryProperty
|
||||||
|
|
||||||
init {
|
init {
|
||||||
sourceDirectoryProperty.addListener { _, _, dir ->
|
sourceDirectoryProperty.addListener { _, _, dir ->
|
||||||
dir?.let { mapsDirectory = File(it, MAPS_DIR) }
|
dir?.let {
|
||||||
|
mapsDirectory = File(it, MAPS_DIR)
|
||||||
|
tileSetsDirectory = File(it, TILESETS_DIR)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun mkdirs() {
|
fun mkdirs() {
|
||||||
sourceDirectory?.mkdirs()
|
sourceDirectory?.mkdirs()
|
||||||
mapsDirectory?.mkdirs()
|
mapsDirectory?.mkdirs()
|
||||||
|
tileSetsDirectory?.mkdirs()
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val MAPS_DIR = "maps"
|
const val MAPS_DIR = "maps"
|
||||||
|
const val TILESETS_DIR = "tilesets"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.editor.project.serial
|
|||||||
|
|
||||||
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
|
||||||
|
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||||
import com.bartlomiejpluta.base.proto.ProjectProto
|
import com.bartlomiejpluta.base.proto.ProjectProto
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
@@ -14,9 +15,18 @@ class ProtobufProjectDeserializer : ProjectDeserializer {
|
|||||||
val project = Project()
|
val project = Project()
|
||||||
project.name = proto.name
|
project.name = proto.name
|
||||||
project.maps.addAll(proto.mapsList.map(this::deserializeMap))
|
project.maps.addAll(proto.mapsList.map(this::deserializeMap))
|
||||||
|
project.tileSets.addAll(proto.tileSetsList.map(this::deserializeTileSet))
|
||||||
|
|
||||||
return project
|
return project
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deserializeMap(map: ProjectProto.GameMapAsset) = GameMapAsset(uid = map.uid, name = map.name)
|
private fun deserializeMap(map: ProjectProto.GameMapAsset) = GameMapAsset(uid = map.uid, name = map.name)
|
||||||
|
|
||||||
|
private fun deserializeTileSet(tileSet: ProjectProto.TileSetAsset) = TileSetAsset(
|
||||||
|
uid = tileSet.uid,
|
||||||
|
source = tileSet.source,
|
||||||
|
name = tileSet.name,
|
||||||
|
rows = tileSet.rows,
|
||||||
|
columns = tileSet.columns
|
||||||
|
)
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.editor.project.serial
|
|||||||
|
|
||||||
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
|
||||||
|
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||||
import com.bartlomiejpluta.base.proto.ProjectProto
|
import com.bartlomiejpluta.base.proto.ProjectProto
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
@@ -13,6 +14,7 @@ class ProtobufProjectSerializer : ProjectSerializer {
|
|||||||
val proto = ProjectProto.Project.newBuilder()
|
val proto = ProjectProto.Project.newBuilder()
|
||||||
proto.name = item.name
|
proto.name = item.name
|
||||||
proto.addAllMaps(item.maps.map(this::serializeMap))
|
proto.addAllMaps(item.maps.map(this::serializeMap))
|
||||||
|
proto.addAllTileSets(item.tileSets.map(this::serializeTileSet))
|
||||||
proto.build().writeTo(output)
|
proto.build().writeTo(output)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,4 +24,9 @@ class ProtobufProjectSerializer : ProjectSerializer {
|
|||||||
.setName(map.name)
|
.setName(map.name)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
private fun serializeTileSet(tileSet: TileSetAsset) = ProjectProto.TileSetAsset.newBuilder()
|
||||||
|
.setUid(tileSet.uid)
|
||||||
|
.setSource(tileSet.source)
|
||||||
|
.setName(tileSet.name)
|
||||||
|
.build()
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.tileset.asset
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.asset.model.Asset
|
||||||
|
import javafx.beans.property.SimpleStringProperty
|
||||||
|
import tornadofx.*
|
||||||
|
|
||||||
|
class TileSetAsset(
|
||||||
|
override val uid: String,
|
||||||
|
override val source: String,
|
||||||
|
name: String,
|
||||||
|
val rows: Int,
|
||||||
|
val columns: Int
|
||||||
|
) : Asset {
|
||||||
|
val nameProperty = SimpleStringProperty(name)
|
||||||
|
override var name by nameProperty
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ option java_outer_classname = "ProjectProto";
|
|||||||
message Project {
|
message Project {
|
||||||
required string name = 1;
|
required string name = 1;
|
||||||
repeated GameMapAsset maps = 2;
|
repeated GameMapAsset maps = 2;
|
||||||
|
repeated TileSetAsset tileSets = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GameMapAsset {
|
message GameMapAsset {
|
||||||
@@ -13,3 +14,11 @@ message GameMapAsset {
|
|||||||
required string source = 2;
|
required string source = 2;
|
||||||
required string name = 3;
|
required string name = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message TileSetAsset {
|
||||||
|
required string uid = 1;
|
||||||
|
required string source = 2;
|
||||||
|
required string name = 3;
|
||||||
|
required uint32 rows = 4;
|
||||||
|
required uint32 columns = 5;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user