Added setParameter function that handles dirt flags
This commit is contained in:
parent
67426165b7
commit
74fc19c64d
1 changed files with 79 additions and 13 deletions
|
@ -2,6 +2,8 @@ package club.clubk.ktag.konfigurator
|
||||||
|
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
|
const val EDIT_DELAY_TIME: Long = 3L
|
||||||
|
|
||||||
sealed class DeviceState {
|
sealed class DeviceState {
|
||||||
data object Configurable : DeviceState()
|
data object Configurable : DeviceState()
|
||||||
data object Ready : DeviceState()
|
data object Ready : DeviceState()
|
||||||
|
@ -16,24 +18,44 @@ sealed class DeviceConfigureState {
|
||||||
data object Failure: DeviceConfigureState()
|
data object Failure: DeviceConfigureState()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum class DeviceParameter {
|
||||||
|
PLAYER_ID, TEAM, SECONDARY_COLOR, MAX_HEALTH, SPECIAL_WEAPONS
|
||||||
|
}
|
||||||
|
|
||||||
data class Device(val uuid: UUID = UUID.randomUUID(),
|
data class Device(val uuid: UUID = UUID.randomUUID(),
|
||||||
var name: String = "Unknown Device",
|
var name: String = "Unknown Device",
|
||||||
var address: String = "00:00:00:00:00:00",
|
var address: String = "00:00:00:00:00:00",
|
||||||
var deviceType: UInt? = null,
|
var deviceType: UInt? = null,
|
||||||
var deviceState: DeviceState? = null,
|
var deviceState: DeviceState? = null,
|
||||||
var deviceConfigureState: DeviceConfigureState = DeviceConfigureState.Discovered,
|
// All configurable variables
|
||||||
// All configurable variables have their own dirty flag
|
private var _playerID: UInt? = null,
|
||||||
var playerID: UInt? = null,
|
private var _team: UInt? = null,
|
||||||
var dirtyPlayerID: Boolean = false,
|
private var _secondaryColor: UInt? = null,
|
||||||
var team: UInt? = null,
|
private var _maxHealth: UInt? = null,
|
||||||
var dirtyTeam: Boolean = false,
|
private var _specialWeapons: UInt? = null
|
||||||
var secondaryColor: UInt? = null,
|
|
||||||
var dirtySecondaryColor: Boolean = false,
|
|
||||||
var maxHealth: UInt? = null,
|
|
||||||
var dirtyMaxHealth: Boolean = false,
|
|
||||||
var specialWeapons: UInt? = null,
|
|
||||||
var dirtySpecialWeapons: Boolean = false
|
|
||||||
) {
|
) {
|
||||||
|
var deviceConfigureState: DeviceConfigureState = DeviceConfigureState.Discovered
|
||||||
|
private set
|
||||||
|
|
||||||
|
var dirtyPlayerID: Boolean = false
|
||||||
|
private set
|
||||||
|
var dirtyTeam: Boolean = false
|
||||||
|
private set
|
||||||
|
var dirtySecondaryColor: Boolean = false
|
||||||
|
private set
|
||||||
|
var dirtyMaxHealth: Boolean = false
|
||||||
|
private set
|
||||||
|
var dirtySpecialWeapons: Boolean = false
|
||||||
|
private set
|
||||||
|
|
||||||
|
var lastEditTime: Long = 0L
|
||||||
|
private set
|
||||||
|
|
||||||
|
val playerID: UInt? get() = _playerID
|
||||||
|
val team: UInt? get() = _team
|
||||||
|
val secondaryColor: UInt? get() = _secondaryColor
|
||||||
|
val maxHealth: UInt? get() = _maxHealth
|
||||||
|
val specialWeapons: UInt? get() = _specialWeapons
|
||||||
|
|
||||||
fun deviceTypeName(): String {
|
fun deviceTypeName(): String {
|
||||||
return when(deviceType) {
|
return when(deviceType) {
|
||||||
|
@ -55,7 +77,33 @@ data class Device(val uuid: UUID = UUID.randomUUID(),
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isPastEditTime(): Boolean {
|
fun isPastEditTime(): Boolean {
|
||||||
return false
|
return System.nanoTime() - lastEditTime!! >= EDIT_DELAY_TIME
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setParameter(parameter: DeviceParameter, value: Any) {
|
||||||
|
lastEditTime = System.nanoTime()
|
||||||
|
when (parameter) {
|
||||||
|
DeviceParameter.PLAYER_ID -> {
|
||||||
|
_playerID = value as UInt
|
||||||
|
dirtyPlayerID = true
|
||||||
|
}
|
||||||
|
DeviceParameter.TEAM -> {
|
||||||
|
_team = value as UInt
|
||||||
|
dirtyTeam = true
|
||||||
|
}
|
||||||
|
DeviceParameter.SECONDARY_COLOR -> {
|
||||||
|
_secondaryColor = value as UInt
|
||||||
|
dirtySecondaryColor = true
|
||||||
|
}
|
||||||
|
DeviceParameter.MAX_HEALTH -> {
|
||||||
|
_maxHealth = value as UInt
|
||||||
|
dirtyMaxHealth = true
|
||||||
|
}
|
||||||
|
DeviceParameter.SPECIAL_WEAPONS -> {
|
||||||
|
_specialWeapons = value as UInt
|
||||||
|
dirtySpecialWeapons = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun checkForDirt() {
|
fun checkForDirt() {
|
||||||
|
@ -63,4 +111,22 @@ data class Device(val uuid: UUID = UUID.randomUUID(),
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getDirtyParameters(): List<DeviceParameter> {
|
||||||
|
val changed = mutableListOf<DeviceParameter>()
|
||||||
|
if (dirtyPlayerID) changed.add(DeviceParameter.PLAYER_ID)
|
||||||
|
if (dirtyTeam) changed.add(DeviceParameter.TEAM)
|
||||||
|
if (dirtySecondaryColor) changed.add(DeviceParameter.SECONDARY_COLOR)
|
||||||
|
if (dirtyMaxHealth) changed.add(DeviceParameter.MAX_HEALTH)
|
||||||
|
if (dirtySpecialWeapons) changed.add(DeviceParameter.SPECIAL_WEAPONS)
|
||||||
|
return changed
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clearDirt() {
|
||||||
|
dirtyPlayerID = false
|
||||||
|
dirtyTeam = false
|
||||||
|
dirtySecondaryColor = false
|
||||||
|
dirtyMaxHealth = false
|
||||||
|
dirtySpecialWeapons = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue