[Editor] Map resizability - attempt II
This commit is contained in:
@@ -3,6 +3,8 @@ package com.bartlomiejpluta.base.editor.model.map.map
|
|||||||
import com.bartlomiejpluta.base.editor.model.map.layer.Layer
|
import com.bartlomiejpluta.base.editor.model.map.layer.Layer
|
||||||
import com.bartlomiejpluta.base.editor.model.tileset.TileSet
|
import com.bartlomiejpluta.base.editor.model.tileset.TileSet
|
||||||
import javafx.beans.property.ReadOnlyDoubleWrapper
|
import javafx.beans.property.ReadOnlyDoubleWrapper
|
||||||
|
import javafx.beans.property.ReadOnlyFloatProperty
|
||||||
|
import javafx.beans.property.SimpleDoubleProperty
|
||||||
import javafx.beans.property.SimpleIntegerProperty
|
import javafx.beans.property.SimpleIntegerProperty
|
||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
|
|
||||||
@@ -11,9 +13,31 @@ class GameMap(val tileSet: TileSet, initialColumns: Int, initialRows: Int) {
|
|||||||
val layers = observableListOf<Layer>()
|
val layers = observableListOf<Layer>()
|
||||||
val mapProperties = observableListOf<MapProperty>()
|
val mapProperties = observableListOf<MapProperty>()
|
||||||
|
|
||||||
|
|
||||||
|
val tileWidth = tileSet.tileWidth.toDouble()
|
||||||
|
val tileHeight = tileSet.tileHeight.toDouble()
|
||||||
|
|
||||||
val rowsProperty = SimpleIntegerProperty(initialRows)
|
val rowsProperty = SimpleIntegerProperty(initialRows)
|
||||||
val rows by rowsProperty
|
val rows by rowsProperty
|
||||||
|
|
||||||
val columnsProperty = SimpleIntegerProperty(initialColumns)
|
val columnsProperty = SimpleIntegerProperty(initialColumns)
|
||||||
val columns by columnsProperty
|
val columns by columnsProperty
|
||||||
|
|
||||||
|
val widthProperty = SimpleDoubleProperty(initialColumns * tileWidth)
|
||||||
|
var width by widthProperty
|
||||||
|
private set
|
||||||
|
|
||||||
|
val heightProperty = SimpleDoubleProperty(initialRows * tileHeight)
|
||||||
|
var height by heightProperty
|
||||||
|
private set
|
||||||
|
|
||||||
|
init {
|
||||||
|
rowsProperty.addListener { _, _, newValue ->
|
||||||
|
height = newValue.toInt() * tileWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
columnsProperty.addListener { _, _, newValue ->
|
||||||
|
width = newValue.toInt() * tileWidth
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ import org.slf4j.LoggerFactory
|
|||||||
|
|
||||||
class MapCanvas(val map: GameMapVM, private val painter: MapPainter) : Renderable {
|
class MapCanvas(val map: GameMapVM, private val painter: MapPainter) : Renderable {
|
||||||
var tileSet = map.tileSet
|
var tileSet = map.tileSet
|
||||||
private var tileWidth = tileSet.tileWidth.toDouble()
|
private var tileWidth = map.tileWidth
|
||||||
private var tileHeight = tileSet.tileHeight.toDouble()
|
private var tileHeight = map.tileHeight
|
||||||
|
|
||||||
|
|
||||||
override fun render(gc: GraphicsContext) {
|
override fun render(gc: GraphicsContext) {
|
||||||
log.debug("vm.dim = ${map.rows}x${map.columns} | map.dim = ${map.item.rows}x${map.item.columns}")
|
log.debug("vm.dim = ${map.rows}x${map.columns} | map.dim = ${map.item.rows}x${map.item.columns}")
|
||||||
// log.debug("vm.size = ${map.width}x${map.height} | map.size = ${map.item.width}x${map.item.height}")
|
log.debug("vm.size = ${map.width}x${map.height} | map.size = ${map.item.width}x${map.item.height}")
|
||||||
gc.clearRect(0.0, 0.0, gc.canvas.width, gc.canvas.height)
|
gc.clearRect(0.0, 0.0, gc.canvas.width, gc.canvas.height)
|
||||||
|
|
||||||
renderBackground(gc)
|
renderBackground(gc)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.bartlomiejpluta.base.editor.viewmodel.map
|
|||||||
import com.bartlomiejpluta.base.editor.model.map.layer.Layer
|
import com.bartlomiejpluta.base.editor.model.map.layer.Layer
|
||||||
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
|
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
|
||||||
import com.bartlomiejpluta.base.editor.model.map.map.MapProperty
|
import com.bartlomiejpluta.base.editor.model.map.map.MapProperty
|
||||||
|
import com.bartlomiejpluta.base.editor.model.tileset.TileSet
|
||||||
import javafx.beans.property.ReadOnlyDoubleWrapper
|
import javafx.beans.property.ReadOnlyDoubleWrapper
|
||||||
import javafx.beans.property.SimpleIntegerProperty
|
import javafx.beans.property.SimpleIntegerProperty
|
||||||
import javafx.beans.property.SimpleListProperty
|
import javafx.beans.property.SimpleListProperty
|
||||||
@@ -21,11 +22,22 @@ class GameMapVM : ItemViewModel<GameMap>() {
|
|||||||
val columnsProperty = bind(GameMap::columnsProperty)
|
val columnsProperty = bind(GameMap::columnsProperty)
|
||||||
var columns by columnsProperty
|
var columns by columnsProperty
|
||||||
|
|
||||||
val widthProperty = ReadOnlyDoubleWrapper().apply { bind(columnsProperty.multiply(32.0)) }
|
val tileWidthProperty = bind(GameMap::tileWidth)
|
||||||
|
val tileWidth by tileWidthProperty
|
||||||
|
|
||||||
|
val tileHeightProperty = bind(GameMap::tileHeight)
|
||||||
|
val tileHeight by tileHeightProperty
|
||||||
|
|
||||||
|
val widthProperty = bind(GameMap::widthProperty)
|
||||||
val width by widthProperty
|
val width by widthProperty
|
||||||
|
|
||||||
val heightProperty = ReadOnlyDoubleWrapper().apply { bind(rowsProperty.multiply(32.0)) }
|
val heightProperty = bind(GameMap::heightProperty)
|
||||||
val height by heightProperty
|
val height by heightProperty
|
||||||
|
// val widthProperty = ReadOnlyDoubleWrapper().apply { bind(tileSetProperty.getProperty(TileSet::tileWidthProperty)) }
|
||||||
|
// val width by widthProperty
|
||||||
|
//
|
||||||
|
// val heightProperty = ReadOnlyDoubleWrapper().apply { bind(rowsProperty.multiply(32.0)) }
|
||||||
|
// val height by heightProperty
|
||||||
|
|
||||||
val selectedLayerProperty = SimpleIntegerProperty(0)
|
val selectedLayerProperty = SimpleIntegerProperty(0)
|
||||||
val selectedLayer by selectedLayerProperty
|
val selectedLayer by selectedLayerProperty
|
||||||
|
|||||||
Reference in New Issue
Block a user