[Editor] Move map settings (size) from Settings dialog to map parameters

This commit is contained in:
2021-02-21 22:44:43 +01:00
parent 2b15d888ea
commit 10e49bfd9c
5 changed files with 28 additions and 82 deletions

View File

@@ -1,6 +1,7 @@
package com.bartlomiejpluta.base.editor.common.parameter.model
import com.bartlomiejpluta.base.editor.util.fx.TextFieldUtil
import javafx.beans.property.IntegerProperty
import javafx.beans.property.Property
import javafx.scene.control.Spinner
@@ -32,4 +33,8 @@ class IntegerParameter(
init {
super.init()
}
fun bindBidirectional(other: IntegerProperty) {
super.bindBidirectional(other.asObject())
}
}

View File

@@ -19,6 +19,7 @@ class MapFragment : Fragment() {
private val toolbarView = find<MapToolbarView>()
private val statusBarView = find<MapStatusBarView>()
private val layerParameters = find<MapLayerParameters>()
private val mapParameters = find<MapParameters>()
private val isTileLayerSelected = Bindings.createBooleanBinding(
{ editorStateVM.selectedLayer is TileLayer },
@@ -48,6 +49,10 @@ class MapFragment : Fragment() {
item("Layer Parameters", expanded = false) {
this += layerParameters
}
item("Map Parameters", expanded = false) {
this += mapParameters
}
}
bottom = statusBarView.root

View File

@@ -0,0 +1,18 @@
package com.bartlomiejpluta.base.editor.map.view.editor
import com.bartlomiejpluta.base.editor.common.parameter.model.IntegerParameter
import com.bartlomiejpluta.base.editor.common.parameter.view.ParametersTableFragment
import com.bartlomiejpluta.base.editor.map.viewmodel.GameMapVM
import tornadofx.View
import tornadofx.observableListOf
class MapParameters : View() {
private val mapVM = find<GameMapVM>()
private val parameters = observableListOf(
IntegerParameter("rows", mapVM.rows, 1, 100).apply { bindBidirectional(mapVM.item.rowsProperty) },
IntegerParameter("columns", mapVM.columns, 1, 100).apply { bindBidirectional(mapVM.item.columnsProperty) },
)
override val root = find<ParametersTableFragment>(ParametersTableFragment::parameters to parameters).root
}

View File

@@ -1,76 +0,0 @@
package com.bartlomiejpluta.base.editor.map.view.editor
import com.bartlomiejpluta.base.editor.command.context.UndoableScope
import com.bartlomiejpluta.base.editor.command.service.UndoRedoService
import com.bartlomiejpluta.base.editor.map.viewmodel.GameMapVM
import com.bartlomiejpluta.base.editor.util.fx.TextFieldUtil
import tornadofx.*
class MapSettingsFragment : Fragment("Map Settings") {
override val scope = super.scope as UndoableScope
private val undoRedoService: UndoRedoService by di()
private val mapVM = find<GameMapVM>()
var result = false
private set
override val root = form {
fieldset("Map Settings") {
field("Rows") {
spinner(min = 1, max = 100, property = mapVM.rowsProperty, editable = true) {
required()
editor.textFormatter = TextFieldUtil.integerFormatter(mapVM.rows)
validator {
when (it?.toInt()) {
in 1..50 -> null
in 50..100 -> warning("The map sizes over 50 can impact game performance")
else -> error("The map size must be between 1 and 100")
}
}
}
}
field("Columns") {
spinner(min = 1, max = 100, property = mapVM.columnsProperty, editable = true) {
required()
editor.textFormatter = TextFieldUtil.integerFormatter(mapVM.columns)
validator {
when (it?.toInt()) {
in 1..50 -> null
in 50..100 -> warning("The map sizes over 50 can impact game performance")
else -> error("The map size must be between 1 and 100")
}
}
}
}
label("Warning: Submitting the form will clear related undo/redo stacks!")
}
buttonbar {
button("Ok") {
shortcut("Enter")
action {
mapVM.commit {
result = true
undoRedoService.clear(scope)
close()
}
}
}
button("Reset") {
action { mapVM.rollback() }
}
button("Cancel") {
action { close() }
}
}
}
}

View File

@@ -123,11 +123,5 @@ class MapToolbarView : View() {
}
this += FontIcon("fa-paint-brush").apply { iconSize = 15 }
button(graphic = FontIcon("fa-sliders")) {
action {
find<MapSettingsFragment>().openModal(block = true, resizable = false)
}
}
}
}