Make app run on Android (WIP)
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
package ch.dissem.yaep.ui.common
|
||||||
|
|
||||||
|
import ch.dissem.yaep.domain.Game
|
||||||
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|
||||||
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
actual fun CoroutineScope.logGame(game: Game) {
|
||||||
|
log.debug { "Game: $game" }
|
||||||
|
}
|
||||||
@@ -35,24 +35,13 @@ import ch.dissem.yaep.domain.NeighbourClue
|
|||||||
import ch.dissem.yaep.domain.OrderClue
|
import ch.dissem.yaep.domain.OrderClue
|
||||||
import ch.dissem.yaep.domain.SameColumnClue
|
import ch.dissem.yaep.domain.SameColumnClue
|
||||||
import ch.dissem.yaep.domain.TripletClue
|
import ch.dissem.yaep.domain.TripletClue
|
||||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import org.jetbrains.compose.resources.painterResource
|
import org.jetbrains.compose.resources.painterResource
|
||||||
import yaep.commonui.generated.resources.Res
|
import yaep.commonui.generated.resources.Res
|
||||||
import yaep.commonui.generated.resources.neighbour
|
import yaep.commonui.generated.resources.neighbour
|
||||||
import yaep.commonui.generated.resources.order
|
import yaep.commonui.generated.resources.order
|
||||||
import kotlin.io.path.Path
|
|
||||||
import kotlin.io.path.createDirectories
|
|
||||||
import kotlin.io.path.createFile
|
|
||||||
import kotlin.io.path.isDirectory
|
|
||||||
import kotlin.io.path.notExists
|
|
||||||
import kotlin.io.path.writeText
|
|
||||||
import kotlin.time.Clock
|
|
||||||
import kotlin.time.ExperimentalTime
|
import kotlin.time.ExperimentalTime
|
||||||
|
|
||||||
private val log = KotlinLogging.logger {}
|
|
||||||
|
|
||||||
class DisplayClue<C : Clue>(val clue: C) {
|
class DisplayClue<C : Clue>(val clue: C) {
|
||||||
var isActive: Boolean by mutableStateOf(true)
|
var isActive: Boolean by mutableStateOf(true)
|
||||||
|
|
||||||
@@ -82,22 +71,8 @@ fun App(
|
|||||||
val time by timer.elapsedTime.collectAsState("00:00")
|
val time by timer.elapsedTime.collectAsState("00:00")
|
||||||
var isSolved by remember(game) { mutableStateOf(false) }
|
var isSolved by remember(game) { mutableStateOf(false) }
|
||||||
LaunchedEffect(game) {
|
LaunchedEffect(game) {
|
||||||
launch(Dispatchers.IO) {
|
logGame(game)
|
||||||
val dirName = """${System.getProperty("user.home")}/.yaep"""
|
|
||||||
val dir = Path(dirName)
|
|
||||||
if (dir.notExists()) {
|
|
||||||
dir.createDirectories()
|
|
||||||
} else if (!dir.isDirectory()) {
|
|
||||||
log.error { "Yaep data directory already exists and is not a directory: $dir" }
|
|
||||||
log.debug { "Game: $game" }
|
|
||||||
} else {
|
|
||||||
val fileName = "$dirName/${Clock.System.now()}.yaep"
|
|
||||||
Path(fileName)
|
|
||||||
.createFile()
|
|
||||||
.writeText(game.toString())
|
|
||||||
log.info { "Saved game to $fileName" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
game.onStart {
|
game.onStart {
|
||||||
timer.start()
|
timer.start()
|
||||||
}
|
}
|
||||||
@@ -273,6 +248,8 @@ fun VerticalClue(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
expect fun CoroutineScope.logGame(game: Game)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ClueCard(
|
fun ClueCard(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package ch.dissem.yaep.ui.common
|
||||||
|
|
||||||
|
import ch.dissem.yaep.domain.Game
|
||||||
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlin.io.path.Path
|
||||||
|
import kotlin.io.path.createDirectories
|
||||||
|
import kotlin.io.path.createFile
|
||||||
|
import kotlin.io.path.isDirectory
|
||||||
|
import kotlin.io.path.notExists
|
||||||
|
import kotlin.io.path.writeText
|
||||||
|
import kotlin.time.Clock
|
||||||
|
import kotlin.time.ExperimentalTime
|
||||||
|
|
||||||
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalTime::class)
|
||||||
|
actual fun CoroutineScope.logGame(game: Game) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
val dirName = """${System.getProperty("user.home")}/.yaep"""
|
||||||
|
val dir = Path(dirName)
|
||||||
|
if (dir.notExists()) {
|
||||||
|
dir.createDirectories()
|
||||||
|
} else if (!dir.isDirectory()) {
|
||||||
|
log.error { "Yaep data directory already exists and is not a directory: $dir" }
|
||||||
|
log.debug { "Game: $game" }
|
||||||
|
} else {
|
||||||
|
val fileName = "$dirName/${Clock.System.now()}.yaep"
|
||||||
|
Path(fileName)
|
||||||
|
.createFile()
|
||||||
|
.writeText(game.toString())
|
||||||
|
log.info { "Saved game to $fileName" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user