[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.project.context.DefaultProjectContext
|
||||
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||
import javafx.beans.property.SimpleObjectProperty
|
||||
import javafx.beans.property.SimpleStringProperty
|
||||
import tornadofx.getValue
|
||||
@@ -17,23 +18,32 @@ class Project {
|
||||
val sourceDirectory by sourceDirectoryProperty
|
||||
|
||||
val maps = observableListOf<GameMapAsset>()
|
||||
val tileSets = observableListOf<TileSetAsset>()
|
||||
|
||||
val mapsDirectoryProperty = SimpleObjectProperty<File>()
|
||||
var mapsDirectory by mapsDirectoryProperty
|
||||
private set
|
||||
|
||||
val tileSetsDirectoryProperty = SimpleObjectProperty<File>()
|
||||
var tileSetsDirectory by tileSetsDirectoryProperty
|
||||
|
||||
init {
|
||||
sourceDirectoryProperty.addListener { _, _, dir ->
|
||||
dir?.let { mapsDirectory = File(it, MAPS_DIR) }
|
||||
dir?.let {
|
||||
mapsDirectory = File(it, MAPS_DIR)
|
||||
tileSetsDirectory = File(it, TILESETS_DIR)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun mkdirs() {
|
||||
sourceDirectory?.mkdirs()
|
||||
mapsDirectory?.mkdirs()
|
||||
tileSetsDirectory?.mkdirs()
|
||||
}
|
||||
|
||||
companion object {
|
||||
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.project.model.Project
|
||||
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||
import com.bartlomiejpluta.base.proto.ProjectProto
|
||||
import org.springframework.stereotype.Component
|
||||
import java.io.InputStream
|
||||
@@ -14,9 +15,18 @@ class ProtobufProjectDeserializer : ProjectDeserializer {
|
||||
val project = Project()
|
||||
project.name = proto.name
|
||||
project.maps.addAll(proto.mapsList.map(this::deserializeMap))
|
||||
project.tileSets.addAll(proto.tileSetsList.map(this::deserializeTileSet))
|
||||
|
||||
return project
|
||||
}
|
||||
|
||||
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.project.model.Project
|
||||
import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset
|
||||
import com.bartlomiejpluta.base.proto.ProjectProto
|
||||
import org.springframework.stereotype.Component
|
||||
import java.io.OutputStream
|
||||
@@ -13,6 +14,7 @@ class ProtobufProjectSerializer : ProjectSerializer {
|
||||
val proto = ProjectProto.Project.newBuilder()
|
||||
proto.name = item.name
|
||||
proto.addAllMaps(item.maps.map(this::serializeMap))
|
||||
proto.addAllTileSets(item.tileSets.map(this::serializeTileSet))
|
||||
proto.build().writeTo(output)
|
||||
}
|
||||
|
||||
@@ -22,4 +24,9 @@ class ProtobufProjectSerializer : ProjectSerializer {
|
||||
.setName(map.name)
|
||||
.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,10 +6,19 @@ option java_outer_classname = "ProjectProto";
|
||||
message Project {
|
||||
required string name = 1;
|
||||
repeated GameMapAsset maps = 2;
|
||||
repeated TileSetAsset tileSets = 3;
|
||||
}
|
||||
|
||||
message GameMapAsset {
|
||||
required string uid = 1;
|
||||
required string source = 2;
|
||||
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