From e17f6c23e43f4f27bfb2ea1c49e2218695e5da7b Mon Sep 17 00:00:00 2001 From: Nacho Date: Sun, 26 Jan 2025 01:40:32 +0100 Subject: [PATCH] Renaming terms and other bits and bobs - Changed adventure database so that the original intended time is also stored with the final time. This will come useful once the algorithm for determining which object to give is made. --- .../nacabaro/vbhelper/daos/AdventureDao.kt | 9 +-- .../vbhelper/domain/characters/Adventure.kt | 1 + .../nacabaro/vbhelper/dtos/CharacterDtos.kt | 3 +- .../adventureScreen/AdventureScreen.kt | 61 ++++++++++++------- .../AdventureScreenControllerImpl.kt | 4 +- .../homeScreens/HomeScreenControllerImpl.kt | 2 +- .../StorageScreenControllerImpl.kt | 5 +- 7 files changed, 54 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/daos/AdventureDao.kt b/app/src/main/java/com/github/nacabaro/vbhelper/daos/AdventureDao.kt index f211e9f..ba2f907 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/daos/AdventureDao.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/daos/AdventureDao.kt @@ -8,10 +8,10 @@ import com.github.nacabaro.vbhelper.dtos.CharacterDtos @Dao interface AdventureDao { @Query(""" - INSERT INTO Adventure (characterId, finishesAdventure) - VALUES (:characterId, strftime('%s', 'now') + :timeInSeconds) + INSERT INTO Adventure (characterId, originalDuration, finishesAdventure) + VALUES (:characterId, :originalDuration, strftime('%s', 'now') + :timeInSeconds) """) - fun insertNewAdventure(characterId: Long, timeInSeconds: Long) + fun insertNewAdventure(characterId: Long, originalDuration: Long, timeInSeconds: Long) @Query(""" SELECT COUNT(*) FROM Adventure @@ -25,7 +25,8 @@ interface AdventureDao { c.spritesWidth AS spriteWidth, c.spritesHeight AS spriteHeight, d.isBEm as isBemCard, - a.finishesAdventure AS timeLeft + a.finishesAdventure AS finishesAdventure, + a.originalDuration AS originalTimeInMinutes FROM UserCharacter uc JOIN Character c ON uc.charId = c.id JOIN Card d ON c.dimId = d.id diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/domain/characters/Adventure.kt b/app/src/main/java/com/github/nacabaro/vbhelper/domain/characters/Adventure.kt index 66dcfe1..a4f5491 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/domain/characters/Adventure.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/domain/characters/Adventure.kt @@ -17,5 +17,6 @@ import com.github.nacabaro.vbhelper.domain.device_data.UserCharacter ) data class Adventure( @PrimaryKey val characterId: Long, + val originalDuration: Long, val finishesAdventure: Long ) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/dtos/CharacterDtos.kt b/app/src/main/java/com/github/nacabaro/vbhelper/dtos/CharacterDtos.kt index f54b299..2e5865a 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/dtos/CharacterDtos.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/dtos/CharacterDtos.kt @@ -79,6 +79,7 @@ object CharacterDtos { val spriteWidth: Int, val spriteHeight: Int, val isBemCard: Boolean, - val timeLeft: Long + val finishesAdventure: Long, + val originalTimeInMinutes: Long ) } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt index 1113511..98f67cf 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt @@ -1,9 +1,13 @@ package com.github.nacabaro.vbhelper.screens.adventureScreen +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -12,6 +16,7 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.navigation.NavController @@ -71,29 +76,41 @@ fun AdventureScreen( ) } ) { contentPadding -> - LazyColumn( - modifier = Modifier - .padding(top = contentPadding.calculateTopPadding()) - ) { - items(characterList.value) { - AdventureEntry( - icon = BitmapData( - bitmap = it.spriteIdle, - width = it.spriteWidth, - height = it.spriteHeight - ), - timeLeft = it.timeLeft - currentTime, - onClick = { - if (it.timeLeft < currentTime) { - storageScreenController - .getItemFromAdventure(it.id) { adventureResult -> - obtainedItem = adventureResult - } - } else { - cancelAdventureDialog = it + if (characterList.value.isEmpty()) { + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .padding(top = contentPadding.calculateTopPadding()) + .fillMaxSize() + ) { + Text(text = "Nothing to see here") + } + } else { + LazyColumn( + modifier = Modifier + .padding(top = contentPadding.calculateTopPadding()) + ) { + items(characterList.value) { + AdventureEntry( + icon = BitmapData( + bitmap = it.spriteIdle, + width = it.spriteWidth, + height = it.spriteHeight + ), + timeLeft = it.finishesAdventure - currentTime, + onClick = { + if (it.finishesAdventure < currentTime) { + storageScreenController + .getItemFromAdventure(it.id) { adventureResult -> + obtainedItem = adventureResult + } + } else { + cancelAdventureDialog = it + } } - } - ) + ) + } } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreenControllerImpl.kt index 1f77db6..7f01c9f 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreenControllerImpl.kt @@ -17,7 +17,7 @@ class AdventureScreenControllerImpl( private val database = application.container.db override fun sendCharacterToAdventure(characterId: Long, timeInMinutes: Long) { - val timeInSeconds = timeInMinutes * 60 + val finishesAdventureAt = timeInMinutes * 60 componentActivity.lifecycleScope.launch(Dispatchers.IO) { val characterData = database .userCharacterDao() @@ -31,7 +31,7 @@ class AdventureScreenControllerImpl( database .adventureDao() - .insertNewAdventure(characterId, timeInSeconds) + .insertNewAdventure(characterId, timeInMinutes, finishesAdventureAt) } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt index fe29f8e..a38bf0b 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt @@ -20,7 +20,7 @@ class HomeScreenControllerImpl( .getAdventureCharacters() val finishedAdventureCharacters = adventureCharacters.filter { character -> - character.timeLeft <= currentTime + character.finishesAdventure <= currentTime } onCompletion(finishedAdventureCharacters.isNotEmpty()) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreenControllerImpl.kt index 1f27b23..4473d4d 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreenControllerImpl.kt @@ -4,6 +4,7 @@ import android.widget.Toast import androidx.activity.ComponentActivity import androidx.lifecycle.lifecycleScope import com.github.nacabaro.vbhelper.di.VBHelper +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class StorageScreenControllerImpl( @@ -13,8 +14,10 @@ class StorageScreenControllerImpl( private val database = application.container.db override fun setActive(characterId: Long, onCompletion: () -> Unit) { - componentActivity.lifecycleScope.launch { + componentActivity.lifecycleScope.launch(Dispatchers.IO) { + database.userCharacterDao().clearActiveCharacter() database.userCharacterDao().setActiveCharacter(characterId) + componentActivity.runOnUiThread { Toast.makeText( componentActivity,