mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 05:46:43 -04:00
Added searches for uniques and parameters
This commit is contained in:
parent
7a57a6d28c
commit
867d078dd8
@ -69,6 +69,7 @@ class UniqueTable(isMainUnique: Boolean, val ruleset: Ruleset, stage: Stage,
|
|||||||
val onUniqueChange : () -> Unit) :Table() {
|
val onUniqueChange : () -> Unit) :Table() {
|
||||||
private val parameterSelectBoxTable = Table().apply { defaults().pad(5f) }
|
private val parameterSelectBoxTable = Table().apply { defaults().pad(5f) }
|
||||||
private val uniqueSelectBoxTable = Table()
|
private val uniqueSelectBoxTable = Table()
|
||||||
|
private val uniqueSearchTextField = TextField("", BaseScreen.skin).apply { messageText = "Search" }
|
||||||
private val uniqueErrorTable = Table().apply { defaults().pad(5f) }
|
private val uniqueErrorTable = Table().apply { defaults().pad(5f) }
|
||||||
|
|
||||||
val uniqueTextField = TextField("Unique", BaseScreen.skin)
|
val uniqueTextField = TextField("Unique", BaseScreen.skin)
|
||||||
@ -92,6 +93,9 @@ class UniqueTable(isMainUnique: Boolean, val ruleset: Ruleset, stage: Stage,
|
|||||||
uniqueTargetSelectBoxTable.add(uniqueTargetsSelectBox)
|
uniqueTargetSelectBoxTable.add(uniqueTargetsSelectBox)
|
||||||
|
|
||||||
uniqueTargetSelectBoxTable.add(uniqueSelectBoxTable).row()
|
uniqueTargetSelectBoxTable.add(uniqueSelectBoxTable).row()
|
||||||
|
// Row 2
|
||||||
|
uniqueTargetSelectBoxTable.add()
|
||||||
|
uniqueTargetSelectBoxTable.add(uniqueSearchTextField).row()
|
||||||
add(uniqueTargetSelectBoxTable).row()
|
add(uniqueTargetSelectBoxTable).row()
|
||||||
|
|
||||||
uniqueTargetsSelectBox.onChange {
|
uniqueTargetsSelectBox.onChange {
|
||||||
@ -118,15 +122,29 @@ class UniqueTable(isMainUnique: Boolean, val ruleset: Ruleset, stage: Stage,
|
|||||||
ruleset: Ruleset,
|
ruleset: Ruleset,
|
||||||
) {
|
) {
|
||||||
val selected = uniqueTargetsSelectBox.selected
|
val selected = uniqueTargetsSelectBox.selected
|
||||||
val uniquesForTarget = UniqueType.entries.filter { it.canAcceptUniqueTarget(selected) }
|
|
||||||
val uniqueSelectBox = SelectBox<UniqueType>(BaseScreen.skin)
|
val uniqueSelectBox = SelectBox<UniqueType>(BaseScreen.skin)
|
||||||
uniqueSelectBox.setItems(uniquesForTarget.filter { it.getDeprecationAnnotation() == null })
|
|
||||||
|
fun setUniqueSelectBoxItems(){
|
||||||
|
val uniquesForTarget = UniqueType.entries.filter { it.canAcceptUniqueTarget(selected) }
|
||||||
|
val uniquesFiltered = uniquesForTarget.filter { it.getDeprecationAnnotation() == null }
|
||||||
|
.filter { it.text.contains(uniqueSearchTextField.text, ignoreCase = true) }
|
||||||
|
uniqueSelectBox.setItems(uniquesFiltered)
|
||||||
|
}
|
||||||
|
|
||||||
|
setUniqueSelectBoxItems()
|
||||||
|
|
||||||
uniqueSelectBox.onChange {
|
uniqueSelectBox.onChange {
|
||||||
onUniqueSelected(uniqueSelectBox, uniqueTextField, ruleset, parameterSelectBoxTable)
|
onUniqueSelected(uniqueSelectBox, uniqueTextField, ruleset, parameterSelectBoxTable)
|
||||||
}
|
}
|
||||||
onUniqueSelected(uniqueSelectBox, uniqueTextField, ruleset, parameterSelectBoxTable)
|
onUniqueSelected(uniqueSelectBox, uniqueTextField, ruleset, parameterSelectBoxTable)
|
||||||
|
|
||||||
|
// Unique search
|
||||||
|
uniqueSearchTextField.onChange {
|
||||||
|
setUniqueSelectBoxItems()
|
||||||
|
}
|
||||||
|
|
||||||
uniqueSelectBoxTable.clear()
|
uniqueSelectBoxTable.clear()
|
||||||
uniqueSelectBoxTable.add(uniqueSelectBox).width(stage.width * 0.5f)
|
uniqueSelectBoxTable.add(uniqueSelectBox).width(stage.width * 0.5f).row()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onUniqueSelected(
|
private fun onUniqueSelected(
|
||||||
@ -135,7 +153,8 @@ class UniqueTable(isMainUnique: Boolean, val ruleset: Ruleset, stage: Stage,
|
|||||||
ruleset: Ruleset,
|
ruleset: Ruleset,
|
||||||
parameterSelectBoxTable: Table
|
parameterSelectBoxTable: Table
|
||||||
) {
|
) {
|
||||||
val uniqueType = uniqueSelectBox.selected
|
val uniqueType = uniqueSelectBox.selected ?: return
|
||||||
|
|
||||||
uniqueTextField.text = uniqueType.text
|
uniqueTextField.text = uniqueType.text
|
||||||
updateUnique(ruleset, uniqueTextField)
|
updateUnique(ruleset, uniqueTextField)
|
||||||
|
|
||||||
@ -152,12 +171,19 @@ class UniqueTable(isMainUnique: Boolean, val ruleset: Ruleset, stage: Stage,
|
|||||||
paramSelectBox.setItems(knownParamValues)
|
paramSelectBox.setItems(knownParamValues)
|
||||||
paramSelectBox.onChange {
|
paramSelectBox.onChange {
|
||||||
val currentParams = uniqueTextField.text.getPlaceholderParameters().toMutableList()
|
val currentParams = uniqueTextField.text.getPlaceholderParameters().toMutableList()
|
||||||
currentParams[index] = paramSelectBox.selected
|
currentParams[index] = paramSelectBox.selected ?: return@onChange
|
||||||
val newText = uniqueType.text.fillPlaceholders(*currentParams.toTypedArray())
|
val newText = uniqueType.text.fillPlaceholders(*currentParams.toTypedArray())
|
||||||
uniqueTextField.text = newText
|
uniqueTextField.text = newText
|
||||||
updateUnique(ruleset, uniqueTextField)
|
updateUnique(ruleset, uniqueTextField)
|
||||||
}
|
}
|
||||||
paramTable.add(paramSelectBox)
|
paramTable.add(paramSelectBox).row()
|
||||||
|
|
||||||
|
val paramSearchTable = TextField("", BaseScreen.skin).apply { messageText = "Search" }
|
||||||
|
paramSearchTable.onChange {
|
||||||
|
val filteredValues = knownParamValues.filter { it.contains(paramSearchTable.text, ignoreCase = true) }
|
||||||
|
paramSelectBox.setItems(filteredValues)
|
||||||
|
}
|
||||||
|
paramTable.add(paramSearchTable).row()
|
||||||
} else paramTable.add("No known values".toLabel())
|
} else paramTable.add("No known values".toLabel())
|
||||||
|
|
||||||
parameterSelectBoxTable.add(paramTable).fillY()
|
parameterSelectBoxTable.add(paramTable).fillY()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user