diff --git a/app/src/main/java/club/clubk/ktag/konfigurator/Device.kt b/app/src/main/java/club/clubk/ktag/konfigurator/Device.kt index 8b607aa..a07886d 100644 --- a/app/src/main/java/club/clubk/ktag/konfigurator/Device.kt +++ b/app/src/main/java/club/clubk/ktag/konfigurator/Device.kt @@ -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 + } + } +} diff --git a/app/src/main/java/club/clubk/ktag/konfigurator/DeviceState.kt b/app/src/main/java/club/clubk/ktag/konfigurator/DeviceState.kt deleted file mode 100644 index 22ea035..0000000 --- a/app/src/main/java/club/clubk/ktag/konfigurator/DeviceState.kt +++ /dev/null @@ -1,8 +0,0 @@ -package club.clubk.ktag.konfigurator - -sealed class DeviceState { - object Configurable : DeviceState() - object Ready : DeviceState() - object Playing : DeviceState() - object WrapUp : DeviceState() -} \ No newline at end of file diff --git a/app/src/main/java/club/clubk/ktag/konfigurator/GameConfig.kt b/app/src/main/java/club/clubk/ktag/konfigurator/GameConfig.kt index ccf6988..47e96a0 100644 --- a/app/src/main/java/club/clubk/ktag/konfigurator/GameConfig.kt +++ b/app/src/main/java/club/clubk/ktag/konfigurator/GameConfig.kt @@ -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 ) diff --git a/app/src/main/java/club/clubk/ktag/konfigurator/MainActivity.kt b/app/src/main/java/club/clubk/ktag/konfigurator/MainActivity.kt index d67932b..b0f0519 100644 --- a/app/src/main/java/club/clubk/ktag/konfigurator/MainActivity.kt +++ b/app/src/main/java/club/clubk/ktag/konfigurator/MainActivity.kt @@ -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