[Editor] Add support for ImageLayer mode
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.editor.map.canvas
|
package com.bartlomiejpluta.base.editor.map.canvas
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.map.model.enumeration.ImageLayerMode
|
||||||
import com.bartlomiejpluta.base.editor.map.model.layer.*
|
import com.bartlomiejpluta.base.editor.map.model.layer.*
|
||||||
import com.bartlomiejpluta.base.editor.map.viewmodel.EditorStateVM
|
import com.bartlomiejpluta.base.editor.map.viewmodel.EditorStateVM
|
||||||
import com.bartlomiejpluta.base.editor.map.viewmodel.GameMapVM
|
import com.bartlomiejpluta.base.editor.map.viewmodel.GameMapVM
|
||||||
@@ -131,14 +132,18 @@ class MapCanvas(val map: GameMapVM, private val editorStateVM: EditorStateVM, pr
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renderImageLayer(gc: GraphicsContext, imageLayer: ImageLayer) {
|
private fun renderImageLayer(gc: GraphicsContext, imageLayer: ImageLayer) {
|
||||||
imageLayer.image?.let {
|
val alpha = gc.globalAlpha
|
||||||
val alpha = gc.globalAlpha
|
gc.globalAlpha = imageLayer.opacity / 100.0
|
||||||
gc.globalAlpha = imageLayer.opacity / 100.0
|
|
||||||
|
|
||||||
gc.drawImage(it, 0.0, 0.0)
|
when (imageLayer.mode) {
|
||||||
|
ImageLayerMode.NORMAL -> gc.drawImage(imageLayer.image, 0.0, 0.0)
|
||||||
gc.globalAlpha = alpha
|
ImageLayerMode.FIT_SCREEN -> gc.drawImage(imageLayer.image, 0.0, 0.0)
|
||||||
|
ImageLayerMode.FIT_MAP -> gc.drawImage(imageLayer.image, 0.0, 0.0, map.width, map.height)
|
||||||
|
else -> {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gc.globalAlpha = alpha
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderGrid(gc: GraphicsContext) {
|
private fun renderGrid(gc: GraphicsContext) {
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.map.model.enumeration
|
||||||
|
|
||||||
|
enum class ImageLayerMode {
|
||||||
|
NORMAL,
|
||||||
|
FIT_SCREEN,
|
||||||
|
FIT_MAP
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.bartlomiejpluta.base.editor.map.model.layer
|
package com.bartlomiejpluta.base.editor.map.model.layer
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.map.model.enumeration.ImageLayerMode
|
||||||
import javafx.beans.binding.Bindings.createObjectBinding
|
import javafx.beans.binding.Bindings.createObjectBinding
|
||||||
import javafx.beans.property.SimpleObjectProperty
|
import javafx.beans.property.SimpleObjectProperty
|
||||||
import javafx.beans.property.SimpleStringProperty
|
import javafx.beans.property.SimpleStringProperty
|
||||||
@@ -8,7 +9,7 @@ import javafx.scene.image.Image
|
|||||||
import tornadofx.getValue
|
import tornadofx.getValue
|
||||||
import tornadofx.setValue
|
import tornadofx.setValue
|
||||||
|
|
||||||
class ImageLayer(name: String, imageAsset: ImageAsset, opacity: Int) : Layer {
|
class ImageLayer(name: String, imageAsset: ImageAsset, mode: ImageLayerMode, opacity: Int) : Layer {
|
||||||
override val nameProperty = SimpleStringProperty(name)
|
override val nameProperty = SimpleStringProperty(name)
|
||||||
|
|
||||||
override var name by nameProperty
|
override var name by nameProperty
|
||||||
@@ -25,6 +26,9 @@ class ImageLayer(name: String, imageAsset: ImageAsset, opacity: Int) : Layer {
|
|||||||
val opacityProperty = SimpleObjectProperty(opacity)
|
val opacityProperty = SimpleObjectProperty(opacity)
|
||||||
var opacity by opacityProperty
|
var opacity by opacityProperty
|
||||||
|
|
||||||
|
val modeProperty = SimpleObjectProperty(mode)
|
||||||
|
var mode by modeProperty
|
||||||
|
|
||||||
override fun resize(rows: Int, columns: Int) {
|
override fun resize(rows: Int, columns: Int) {
|
||||||
// We essentially need to do nothing
|
// We essentially need to do nothing
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.bartlomiejpluta.base.editor.map.parameter.layer
|
package com.bartlomiejpluta.base.editor.map.parameter.layer
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.common.parameter.model.EnumParameter
|
||||||
import com.bartlomiejpluta.base.editor.common.parameter.model.GraphicAssetParameter
|
import com.bartlomiejpluta.base.editor.common.parameter.model.GraphicAssetParameter
|
||||||
import com.bartlomiejpluta.base.editor.common.parameter.model.IntegerParameter
|
import com.bartlomiejpluta.base.editor.common.parameter.model.IntegerParameter
|
||||||
import com.bartlomiejpluta.base.editor.common.parameter.model.Parameter
|
import com.bartlomiejpluta.base.editor.common.parameter.model.Parameter
|
||||||
|
import com.bartlomiejpluta.base.editor.map.model.enumeration.ImageLayerMode
|
||||||
import com.bartlomiejpluta.base.editor.map.model.layer.ImageLayer
|
import com.bartlomiejpluta.base.editor.map.model.layer.ImageLayer
|
||||||
import com.bartlomiejpluta.base.editor.project.model.Project
|
import com.bartlomiejpluta.base.editor.project.model.Project
|
||||||
import javafx.collections.ObservableList
|
import javafx.collections.ObservableList
|
||||||
@@ -26,9 +28,14 @@ class ImageLayerParametersBinder : LayerParametersBinder<ImageLayer> {
|
|||||||
onCommit()
|
onCommit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val mode = EnumParameter("mode", ImageLayerMode.NORMAL, autocommit = true) { _, _, _ ->
|
||||||
|
onCommit()
|
||||||
|
}
|
||||||
|
|
||||||
image.bindBidirectional(layer.imageAssetProperty)
|
image.bindBidirectional(layer.imageAssetProperty)
|
||||||
opacity.bindBidirectional(layer.opacityProperty)
|
opacity.bindBidirectional(layer.opacityProperty)
|
||||||
|
mode.bindBidirectional(layer.modeProperty)
|
||||||
|
|
||||||
parameters.addAll(image, opacity)
|
parameters.addAll(image, opacity, mode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.bartlomiejpluta.base.editor.command.model.map.RenameLayerCommand
|
|||||||
import com.bartlomiejpluta.base.editor.command.service.UndoRedoService
|
import com.bartlomiejpluta.base.editor.command.service.UndoRedoService
|
||||||
import com.bartlomiejpluta.base.editor.event.RedrawMapRequestEvent
|
import com.bartlomiejpluta.base.editor.event.RedrawMapRequestEvent
|
||||||
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
import com.bartlomiejpluta.base.editor.image.asset.ImageAsset
|
||||||
|
import com.bartlomiejpluta.base.editor.map.model.enumeration.ImageLayerMode
|
||||||
import com.bartlomiejpluta.base.editor.map.model.layer.*
|
import com.bartlomiejpluta.base.editor.map.model.layer.*
|
||||||
import com.bartlomiejpluta.base.editor.map.viewmodel.EditorStateVM
|
import com.bartlomiejpluta.base.editor.map.viewmodel.EditorStateVM
|
||||||
import com.bartlomiejpluta.base.editor.map.viewmodel.GameMapVM
|
import com.bartlomiejpluta.base.editor.map.viewmodel.GameMapVM
|
||||||
@@ -87,7 +88,8 @@ class MapLayersView : View() {
|
|||||||
val scope = UndoableScope()
|
val scope = UndoableScope()
|
||||||
find<SelectGraphicAssetFragment>(scope, SelectGraphicAssetFragment::assets to projectContext.project?.images!!).apply {
|
find<SelectGraphicAssetFragment>(scope, SelectGraphicAssetFragment::assets to projectContext.project?.images!!).apply {
|
||||||
onComplete {
|
onComplete {
|
||||||
val layer = ImageLayer("Layer ${mapVM.layers.size + 1}", it as ImageAsset,100)
|
val layer =
|
||||||
|
ImageLayer("Layer ${mapVM.layers.size + 1}", it as ImageAsset, ImageLayerMode.NORMAL, 100)
|
||||||
val command = CreateLayerCommand(mapVM.item, layer)
|
val command = CreateLayerCommand(mapVM.item, layer)
|
||||||
command.execute()
|
command.execute()
|
||||||
layersPane.selectionModel.select(mapVM.layers.size - 1)
|
layersPane.selectionModel.select(mapVM.layers.size - 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user