Added dirty flags to Device class

This commit is contained in:
jack 2025-06-18 20:15:40 -05:00
parent f1f5bbc5e0
commit 67426165b7
4 changed files with 58 additions and 27 deletions

View file

@ -2,23 +2,65 @@ package club.clubk.ktag.konfigurator
import java.util.UUID
sealed class DeviceState {
data object Configurable : DeviceState()
data object Ready : DeviceState()
data object Playing : DeviceState()
data object WrapUp : DeviceState()
}
sealed class DeviceConfigureState {
data object Discovered: DeviceConfigureState()
data object Configuring: DeviceConfigureState()
data object Success: DeviceConfigureState()
data object Failure: DeviceConfigureState()
}
data class Device(val uuid: UUID = UUID.randomUUID(),
var name: String = "Unknown Device",
var address: String = "FF:FF:FF:FF:FF:FF",
var deviceType : Int? = null,
var team : Int? = null,
var playerID : Int? = null,
var deviceState: DeviceState? = null
var address: String = "00:00:00:00:00:00",
var deviceType: UInt? = null,
var deviceState: DeviceState? = null,
var deviceConfigureState: DeviceConfigureState = DeviceConfigureState.Discovered,
// All configurable variables have their own dirty flag
var playerID: UInt? = null,
var dirtyPlayerID: Boolean = false,
var team: UInt? = null,
var dirtyTeam: Boolean = false,
var secondaryColor: UInt? = null,
var dirtySecondaryColor: Boolean = false,
var maxHealth: UInt? = null,
var dirtyMaxHealth: Boolean = false,
var specialWeapons: UInt? = null,
var dirtySpecialWeapons: Boolean = false
) {
fun deviceTypeName(): String {
return when(deviceType) {
0 -> "Little Boy BLuE"
1 -> "2020TPC"
2 -> "Mobile App"
3 -> "32ESPecial"
0u -> "Little Boy BLuE"
1u -> "2020TPC"
2u -> "Mobile App"
3u -> "32ESPecial"
else -> "Unknown Device Type"
}
}
}
fun deviceTypeDrawable() {
return
}
fun isDirty(): Boolean {
return dirtyPlayerID || dirtyTeam || dirtySecondaryColor
|| dirtyMaxHealth || dirtySpecialWeapons
}
fun isPastEditTime(): Boolean {
return false
}
fun checkForDirt() {
if (isDirty() && isPastEditTime()) {
return
}
}
}

View file

@ -1,8 +0,0 @@
package club.clubk.ktag.konfigurator
sealed class DeviceState {
object Configurable : DeviceState()
object Ready : DeviceState()
object Playing : DeviceState()
object WrapUp : DeviceState()
}

View file

@ -5,5 +5,5 @@ data class GameConfig(var name: String = "Default",
var pregameLength: Int = 60000,
var numRounds: Int = 2,
var maxHealth: Int = 10,
var numBombs: Int = 1 // Special Weapons Received on Game Reentry
var specialWeapons: Int = 1 // Special Weapons Received on Game Reentry
)

View file

@ -1,8 +1,6 @@
package club.clubk.ktag.konfigurator
import android.Manifest
import android.bluetooth.BluetoothManager
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
@ -23,7 +21,6 @@ import androidx.core.content.ContextCompat
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.KeyboardType
@ -253,7 +250,7 @@ fun GameConfigEditor(oldGameConfig: GameConfig,
var pregameLength by rememberSaveable(oldGameConfig.pregameLength) { mutableStateOf(oldGameConfig.pregameLength.toString()) }
var numRounds by rememberSaveable(oldGameConfig.numRounds) { mutableStateOf(oldGameConfig.numRounds.toString()) }
var maxHealth by rememberSaveable(oldGameConfig.maxHealth) { mutableStateOf(oldGameConfig.maxHealth.toString()) }
var numBombs by rememberSaveable(oldGameConfig.numBombs) { mutableStateOf(oldGameConfig.numBombs.toString()) }
var numBombs by rememberSaveable(oldGameConfig.specialWeapons) { mutableStateOf(oldGameConfig.specialWeapons.toString()) }
// For tracking validation errors
var gameLengthError by rememberSaveable { mutableStateOf(false) }
@ -283,7 +280,7 @@ fun GameConfigEditor(oldGameConfig: GameConfig,
pregameLength = pregameLength.toIntOrNull() ?: oldGameConfig.pregameLength,
numRounds = numRounds.toIntOrNull() ?: oldGameConfig.numRounds,
maxHealth = maxHealth.toIntOrNull() ?: oldGameConfig.maxHealth,
numBombs = numBombs.toIntOrNull() ?: oldGameConfig.numBombs
specialWeapons = numBombs.toIntOrNull() ?: oldGameConfig.specialWeapons
)
onSave(newGameConfig)
}
@ -479,9 +476,9 @@ fun SideBySideButtons(
@Composable
fun DeviceCard(stateMachine: StateMachineViewModel, device: Device) {
val backgroundColor = when (device.team) {
0 -> Color.Magenta
1 -> Color.Red
2 -> Color.Blue
0u -> Color.Magenta
1u -> Color.Red
2u -> Color.Blue
else -> MaterialTheme.colorScheme.surface // Default color
}
Card(modifier = Modifier