Skip to content

Commit

Permalink
Implemented sub switch replace limit configuration for #18
Browse files Browse the repository at this point in the history
  • Loading branch information
waicool20 committed Feb 25, 2017
1 parent a10dead commit 6d95e6b
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -267,12 +267,14 @@ class KancolleAutoProfile(
@get:JsonProperty var lastNodePush by lastNodePushProperty
}

class SubmarineSwitch(enabled: Boolean, enabledSubs: List<Submarines>) {
class SubmarineSwitch(enabled: Boolean, enabledSubs: List<Submarines>, replaceLimit: Int) {
@JsonIgnore @IniConfig(key = "Enabled") val enabledProperty = SimpleBooleanProperty(enabled)
@JsonIgnore @IniConfig(key = "EnabledSubs") val enabledSubsProperty = SimpleListProperty(FXCollections.observableArrayList(enabledSubs))
@JsonIgnore @IniConfig(key = "ReplaceLimit") val replaceLimitProperty = SimpleIntegerProperty(replaceLimit)

@get:JsonProperty var enabled by enabledProperty
@get:JsonProperty var enabledSubs by enabledSubsProperty
@get:JsonProperty var replaceLimit by replaceLimitProperty
}

class Lbas(
Expand Down
22 changes: 18 additions & 4 deletions src/main/kotlin/com/waicool20/kaga/views/tabs/misc/MiscTabView.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
package com.waicool20.kaga.views.tabs.misc

import com.waicool20.kaga.Kaga
import com.waicool20.kaga.util.bind
import javafx.beans.binding.Bindings
import javafx.collections.SetChangeListener
import javafx.fxml.FXML
import javafx.fxml.FXMLLoader
import javafx.scene.Scene
import javafx.scene.control.Button
import javafx.scene.control.CheckBox
import javafx.scene.control.ComboBox
import javafx.scene.layout.GridPane
import javafx.stage.Modality
import javafx.stage.Stage
import tornadofx.bind
import tornadofx.find
import javafx.util.StringConverter
import tornadofx.*

class MiscTabView {
@FXML private lateinit var enableSubSwitchButton: CheckBox
@FXML private lateinit var configSubSwitchBtn: Button
@FXML private lateinit var replaceLimitComboBox: ComboBox<Int>
@FXML private lateinit var enableLbasButton: CheckBox
@FXML private lateinit var group1CheckBox: CheckBox
@FXML private lateinit var group2CheckBox: CheckBox
Expand All @@ -25,7 +28,8 @@ class MiscTabView {
@FXML private lateinit var configGrp2NodesBtn: Button
@FXML private lateinit var configGrp3NodesBtn: Button

@FXML private lateinit var content: GridPane
@FXML private lateinit var lbasContent: GridPane
@FXML private lateinit var subSwitchContent: GridPane

@FXML fun initialize() {
setValues()
Expand All @@ -34,20 +38,30 @@ class MiscTabView {

private fun setValues() {
updateGroupCheckBoxes(Kaga.PROFILE!!.lbas.enabledGroups)
val damageLevels = listOf("Light damage", "Moderate damage", "Critical damage", "Null")
val damageConverter = object : StringConverter<Int>() {
override fun toString(int: Int?): String = damageLevels[int ?: 3]

override fun fromString(string: String?): Int = damageLevels.indexOf(string)
}
replaceLimitComboBox.items.setAll((0..2).toList())
replaceLimitComboBox.converter = damageConverter
}

private fun createBindings() {
with(Kaga.PROFILE!!) {
enableSubSwitchButton.bind(submarineSwitch.enabledProperty)
replaceLimitComboBox.bind(submarineSwitch.replaceLimitProperty)
with(lbas) {
enableLbasButton.bind(enabledProperty)
enabledGroups.addListener(SetChangeListener { change -> updateGroupCheckBoxes(change.set) })
}
}
subSwitchContent.disableProperty().bind(Bindings.not(enableSubSwitchButton.selectedProperty()))
group1CheckBox.selectedProperty().addListener({ obs, oldVal, newVal -> setGroups(newVal, 1) })
group2CheckBox.selectedProperty().addListener({ obs, oldVal, newVal -> setGroups(newVal, 2) })
group3CheckBox.selectedProperty().addListener({ obs, oldVal, newVal -> setGroups(newVal, 3) })
content.disableProperty().bind(Bindings.not(enableLbasButton.selectedProperty()))
lbasContent.disableProperty().bind(Bindings.not(enableLbasButton.selectedProperty()))
configGrp1NodesBtn.disableProperty().bind(Bindings.not(group1CheckBox.selectedProperty()))
configGrp2NodesBtn.disableProperty().bind(Bindings.not(group2CheckBox.selectedProperty()))
configGrp3NodesBtn.disableProperty().bind(Bindings.not(group3CheckBox.selectedProperty()))
Expand Down
104 changes: 56 additions & 48 deletions src/main/resources/views/tabs/tab-misc.fxml
Original file line number Diff line number Diff line change
@@ -1,101 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" minHeight="0.0" minWidth="0.0"
xmlns="http://javafx.com/javafx/8.0.121"
fx:controller="com.waicool20.kaga.views.tabs.misc.MiscTabView">
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>

<AnchorPane minHeight="0.0" minWidth="0.0" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.waicool20.kaga.views.tabs.misc.MiscTabView">
<children>
<GridPane layoutY="-6.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<GridPane fx:id="content" GridPane.rowIndex="2">
<GridPane fx:id="lbasContent" GridPane.rowIndex="3">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity"
minWidth="-Infinity" prefWidth="138.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity"
minWidth="-Infinity"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="138.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="45.0"
prefHeight="45.0" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="45.0"
prefHeight="45.0" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="45.0"
prefHeight="45.0" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="45.0" prefHeight="45.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="45.0" prefHeight="45.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="45.0" prefHeight="45.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<HBox alignment="CENTER">
<children>
<Label text="Group 1:"/>
<Label text="Group 1:" />
</children>
</HBox>
<HBox alignment="CENTER" GridPane.rowIndex="1">
<children>
<Label text="Group 2:"/>
<Label text="Group 2:" />
</children>
</HBox>
<HBox alignment="CENTER" GridPane.rowIndex="2">
<children>
<Label text="Group 3:"/>
<Label text="Group 3:" />
</children>
</HBox>
<HBox alignment="CENTER_LEFT" spacing="10.0" GridPane.columnIndex="1">
<children>
<CheckBox fx:id="group1CheckBox" mnemonicParsing="false"
text="Enable"/>
<Button fx:id="configGrp1NodesBtn" mnemonicParsing="false"
onAction="#onConfigureGroup1NodesButton" text="Configure"/>
<CheckBox fx:id="group1CheckBox" mnemonicParsing="false" text="Enable" />
<Button fx:id="configGrp1NodesBtn" mnemonicParsing="false" onAction="#onConfigureGroup1NodesButton" text="Configure" />
</children>
</HBox>
<HBox alignment="CENTER_LEFT" spacing="10.0" GridPane.columnIndex="1"
GridPane.rowIndex="1">
<HBox alignment="CENTER_LEFT" spacing="10.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
<children>
<CheckBox fx:id="group2CheckBox" mnemonicParsing="false"
text="Enable"/>
<Button fx:id="configGrp2NodesBtn" mnemonicParsing="false"
onAction="#onConfigureGroup2NodesButton" text="Configure"/>
<CheckBox fx:id="group2CheckBox" mnemonicParsing="false" text="Enable" />
<Button fx:id="configGrp2NodesBtn" mnemonicParsing="false" onAction="#onConfigureGroup2NodesButton" text="Configure" />
</children>
</HBox>
<HBox alignment="CENTER_LEFT" spacing="10.0" GridPane.columnIndex="1"
GridPane.rowIndex="2">
<HBox alignment="CENTER_LEFT" spacing="10.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
<children>
<CheckBox fx:id="group3CheckBox" mnemonicParsing="false"
text="Enable"/>
<Button fx:id="configGrp3NodesBtn" mnemonicParsing="false"
onAction="#onConfigureGroup3NodesButton" text="Configure"/>
<CheckBox fx:id="group3CheckBox" mnemonicParsing="false" text="Enable" />
<Button fx:id="configGrp3NodesBtn" mnemonicParsing="false" onAction="#onConfigureGroup3NodesButton" text="Configure" />
</children>
</HBox>
</children>
</GridPane>
<HBox GridPane.rowIndex="1">
<HBox GridPane.rowIndex="2">
<children>
<CheckBox fx:id="enableLbasButton" mnemonicParsing="false"
text="Enable LBAS"/>
<CheckBox fx:id="enableLbasButton" mnemonicParsing="false" text="Enable LBAS" />
</children>
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
</padding>
</HBox>
<HBox alignment="CENTER_LEFT" spacing="10.0">
<children>
<CheckBox fx:id="enableSubSwitchButton" mnemonicParsing="false"
text="Enable submarine switching"/>
<Button fx:id="configSubSwitchBtn" mnemonicParsing="false"
onAction="#onConfigureSubSwitchButton" text="Configure"/>
<CheckBox fx:id="enableSubSwitchButton" mnemonicParsing="false" text="Enable submarine switching" />
<Button fx:id="configSubSwitchBtn" mnemonicParsing="false" onAction="#onConfigureSubSwitchButton" text="Configure" />
</children>
<padding>
<Insets bottom="10.0" left="20.0" right="20.0" top="20.0"/>
<Insets bottom="10.0" left="20.0" right="20.0" top="20.0" />
</padding>
</HBox>
<GridPane fx:id="subSwitchContent" GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="138.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<HBox alignment="CENTER">
<children>
<Label fx:id="replaceLimitLabel" text="Replace Limit:" />
</children>
</HBox>
<ComboBox fx:id="replaceLimitComboBox" prefWidth="150.0" GridPane.columnIndex="1" />
</children>
</GridPane>
</children>
</GridPane>
</children>
Expand Down

0 comments on commit 6d95e6b

Please sign in to comment.