Skip to content

Commit 8cf4944

Browse files
committed
add coins
1 parent 9419f20 commit 8cf4944

4 files changed

Lines changed: 82 additions & 4 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
2+
3+
<path android:fillColor="#FFFFFF" android:pathData="M4,8h4L8,4L4,4v4zM10,20h4v-4h-4v4zM4,20h4v-4L4,16v4zM4,14h4v-4L4,10v4zM10,14h4v-4h-4v4zM16,4v4h4L20,4h-4zM10,8h4L14,4h-4v4zM16,14h4v-4h-4v4zM16,20h4v-4h-4v4z"/>
4+
5+
</vector>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24.0"
5+
android:viewportHeight="24.0">
6+
7+
<path
8+
android:fillColor="#FFD700"
9+
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2z"/>
10+
11+
<path
12+
android:fillColor="#FFA000"
13+
android:pathData="M12,4c-4.41,0 -8,3.59 -8,8s3.59,8 8,8 8,-3.59 8,-8 -3.59,-8 -8,-8zM12,18c-3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6 6,2.69 6,6 -2.69,6 -6,6z"/>
14+
15+
<path
16+
android:fillColor="#E65100"
17+
android:pathData="M12.5,15.58v1.42h-1v-1.42c-1.31,-0.23 -2.2,-1.2 -2.2,-2.28 0,-1.4 1.1,-2.3 2.85,-2.63l0.35,-0.06c0.66,-0.13 1,-0.37 1,-0.71 0,-0.38 -0.4,-0.6 -1,-0.6 -0.63,0 -1.02,0.27 -1.14,0.71L10.36,9.8c0.23,-0.92 1.05,-1.62 2.14,-1.8V6.5h1v1.5c1.31,0.23 2.13,1.2 2.13,2.2 0,1.3 -1.04,2.2 -2.75,2.53l-0.38,0.07C11.9,12.93 11.5,13.23 11.5,13.6c0,0.37 0.38,0.6 1,0.6 0.73,0 1.13,-0.29 1.22,-0.78l1.04,0.18C14.54,14.63 13.68,15.36 12.5,15.58z"/>
18+
</vector>

composeApp/src/commonMain/kotlin/neth/iecal/trease/ui/screens/HomeScreen.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ import androidx.compose.runtime.remember
1414
import androidx.compose.runtime.setValue
1515
import androidx.compose.ui.Alignment
1616
import androidx.compose.ui.Modifier
17+
import androidx.compose.ui.input.key.Key.Companion.R
1718
import androidx.compose.ui.text.font.FontWeight
1819
import androidx.compose.ui.text.style.TextAlign
1920
import androidx.compose.ui.unit.dp
2021
import androidx.compose.ui.unit.sp
22+
import androidx.compose.ui.zIndex
2123
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2224
import androidx.lifecycle.viewmodel.compose.viewModel
2325
import androidx.navigation.NavHostController
@@ -28,17 +30,23 @@ import neth.iecal.trease.ui.components.TreeGrowthPlayer
2830
import neth.iecal.trease.ui.dialogs.WarningBeforeQuit
2931
import neth.iecal.trease.ui.dialogs.YouLost
3032
import neth.iecal.trease.ui.dialogs.YouWon
33+
import neth.iecal.trease.utils.CoinManager
3134
import neth.iecal.trease.viewmodels.HomeScreenViewModel
35+
import org.jetbrains.compose.resources.painterResource
36+
import trease.composeapp.generated.resources.Res
37+
import trease.composeapp.generated.resources.baseline_apps_24
38+
import trease.composeapp.generated.resources.coin
3239

3340
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
3441
@Composable
3542
fun HomeScreen(navController: NavHostController) {
3643
val viewModel = viewModel { HomeScreenViewModel() }
44+
val coinsViewModel = viewModel { CoinManager() }
3745
val remainingSeconds by viewModel.remainingSeconds.collectAsStateWithLifecycle()
3846
val progress by viewModel.progress.collectAsStateWithLifecycle()
3947
val status by viewModel.timerStatus.collectAsStateWithLifecycle()
4048
val isTreeSelectionVisible by viewModel.isTreeSelectionVisible.collectAsStateWithLifecycle()
41-
49+
val coins by coinsViewModel.coins.collectAsStateWithLifecycle()
4250
var isShowQuitWarningDialog by remember { mutableStateOf(false) }
4351
Scaffold(
4452
modifier = Modifier.fillMaxSize(),
@@ -56,12 +64,21 @@ fun HomeScreen(navController: NavHostController) {
5664

5765
Box(Modifier.fillMaxSize()) {
5866
TopAppBar(
59-
modifier = Modifier.align(Alignment.TopCenter),
67+
modifier = Modifier.align(Alignment.TopCenter).zIndex(999f).padding(16.dp),
6068
title = {},
6169
actions = {
62-
TextButton(onClick = { navController.navigate(Garden) }) {
63-
Text("Tree")
70+
Row(horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.CenterVertically) {
71+
IconButton(onClick = { navController.navigate(Garden) }, Modifier.size(40.dp)) {
72+
Icon(
73+
painter = painterResource(Res.drawable.baseline_apps_24),
74+
contentDescription = "Garden",
75+
tint = MaterialTheme.colorScheme.primary
76+
)
77+
}
78+
Text("$coins Coins")
79+
6480
}
81+
6582
}
6683
)
6784
Column(
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package neth.iecal.trease.utils
2+
3+
import androidx.compose.runtime.State
4+
import androidx.compose.runtime.collectAsState
5+
import androidx.compose.runtime.rememberCoroutineScope
6+
import androidx.lifecycle.ViewModel
7+
import kotlinx.coroutines.CoroutineScope
8+
import kotlinx.coroutines.Dispatchers
9+
import kotlinx.coroutines.SupervisorJob
10+
import kotlinx.coroutines.flow.MutableStateFlow
11+
import kotlinx.coroutines.flow.StateFlow
12+
import kotlinx.coroutines.flow.asStateFlow
13+
import kotlinx.coroutines.launch
14+
15+
class CoinManager(): ViewModel(){
16+
val _coins = MutableStateFlow(0)
17+
val coins : StateFlow<Int> = _coins.asStateFlow()
18+
val cacheManager = CacheManager()
19+
val vmScope = CoroutineScope(Dispatchers.Default)
20+
21+
init {
22+
reloadCoins()
23+
}
24+
25+
fun addCoins(value: Int) {
26+
_coins.value = value
27+
vmScope.launch {
28+
cacheManager.saveFile("coins",coins.value.toString())
29+
}
30+
}
31+
32+
fun reloadCoins(){
33+
vmScope.launch {
34+
_coins.value = cacheManager.readFile("coins")?.toInt() ?: 0
35+
}
36+
}
37+
38+
}

0 commit comments

Comments
 (0)