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 e715e5f..8b607aa 100644 --- a/app/src/main/java/club/clubk/ktag/konfigurator/Device.kt +++ b/app/src/main/java/club/clubk/ktag/konfigurator/Device.kt @@ -2,131 +2,23 @@ package club.clubk.ktag.konfigurator import java.util.UUID -const val EDIT_DELAY_TIME: Long = 3L - -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() -} - -enum class DeviceParameter { - PLAYER_ID, TEAM, SECONDARY_COLOR, MAX_HEALTH, SPECIAL_WEAPONS -} - data class Device(val uuid: UUID = UUID.randomUUID(), var name: String = "Unknown Device", - var address: String = "00:00:00:00:00:00", - var deviceType: UInt? = null, - var deviceState: DeviceState? = null, - // All configurable variables - private var _playerID: UInt? = null, - private var _team: UInt? = null, - private var _secondaryColor: UInt? = null, - private var _maxHealth: UInt? = null, - private var _specialWeapons: UInt? = null + 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 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 { return when(deviceType) { - 0u -> "Little Boy BLuE" - 1u -> "2020TPC" - 2u -> "Mobile App" - 3u -> "32ESPecial" + 0 -> "Little Boy BLuE" + 1 -> "2020TPC" + 2 -> "Mobile App" + 3 -> "32ESPecial" else -> "Unknown Device Type" } } - - fun deviceTypeDrawable() { - return - } - - fun isDirty(): Boolean { - return dirtyPlayerID || dirtyTeam || dirtySecondaryColor - || dirtyMaxHealth || dirtySpecialWeapons - } - - fun isPastEditTime(): Boolean { - 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() { - if (isDirty() && isPastEditTime()) { - return - } - } - - fun getDirtyParameters(): List { - val changed = mutableListOf() - 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 - } } + diff --git a/app/src/main/java/club/clubk/ktag/konfigurator/DeviceState.kt b/app/src/main/java/club/clubk/ktag/konfigurator/DeviceState.kt new file mode 100644 index 0000000..22ea035 --- /dev/null +++ b/app/src/main/java/club/clubk/ktag/konfigurator/DeviceState.kt @@ -0,0 +1,8 @@ +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 47e96a0..ccf6988 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 specialWeapons: Int = 1 // Special Weapons Received on Game Reentry + var numBombs: 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 b0f0519..d67932b 100644 --- a/app/src/main/java/club/clubk/ktag/konfigurator/MainActivity.kt +++ b/app/src/main/java/club/clubk/ktag/konfigurator/MainActivity.kt @@ -1,6 +1,8 @@ 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 @@ -21,6 +23,7 @@ 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 @@ -250,7 +253,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.specialWeapons) { mutableStateOf(oldGameConfig.specialWeapons.toString()) } + var numBombs by rememberSaveable(oldGameConfig.numBombs) { mutableStateOf(oldGameConfig.numBombs.toString()) } // For tracking validation errors var gameLengthError by rememberSaveable { mutableStateOf(false) } @@ -280,7 +283,7 @@ fun GameConfigEditor(oldGameConfig: GameConfig, pregameLength = pregameLength.toIntOrNull() ?: oldGameConfig.pregameLength, numRounds = numRounds.toIntOrNull() ?: oldGameConfig.numRounds, maxHealth = maxHealth.toIntOrNull() ?: oldGameConfig.maxHealth, - specialWeapons = numBombs.toIntOrNull() ?: oldGameConfig.specialWeapons + numBombs = numBombs.toIntOrNull() ?: oldGameConfig.numBombs ) onSave(newGameConfig) } @@ -476,9 +479,9 @@ fun SideBySideButtons( @Composable fun DeviceCard(stateMachine: StateMachineViewModel, device: Device) { val backgroundColor = when (device.team) { - 0u -> Color.Magenta - 1u -> Color.Red - 2u -> Color.Blue + 0 -> Color.Magenta + 1 -> Color.Red + 2 -> Color.Blue else -> MaterialTheme.colorScheme.surface // Default color } Card(modifier = Modifier