1
1
package org.example.project
2
2
3
- import androidx.compose.animation.AnimatedVisibility
4
3
import androidx.compose.foundation.Image
5
- import androidx.compose.foundation.clickable
6
4
import androidx.compose.foundation.interaction.MutableInteractionSource
7
5
import androidx.compose.foundation.interaction.collectIsPressedAsState
8
6
import androidx.compose.foundation.layout.*
9
7
import androidx.compose.material.Button
10
- import androidx.compose.material.CircularProgressIndicator
11
8
import androidx.compose.material.Text
12
9
import androidx.compose.runtime.*
13
10
import androidx.compose.ui.Alignment
14
11
import androidx.compose.ui.Modifier
15
- import androidx.compose.ui.layout.ContentScale
16
- import androidx.compose.ui.platform.LocalLifecycleOwner
17
12
import androidx.compose.ui.unit.dp
18
13
import androidx.compose.ui.unit.sp
14
+ import androidx.lifecycle.compose.LocalLifecycleOwner
19
15
import cafe.adriel.voyager.core.screen.Screen
20
16
import kotlinx.coroutines.launch
21
17
import org.example.project.ControlEvent.*
22
18
import org.example.project.HeroState.*
23
19
import cafe.adriel.voyager.koin.getScreenModel
24
20
import co.touchlab.kermit.Logger
25
- import com.skydoves.landscapist.ImageOptions
26
- import com.skydoves.landscapist.coil3.CoilImage
27
21
import kotlinx.coroutines.flow.collectLatest
28
22
import kstatemachine_compose_sample.composeapp.generated.resources.Res
29
23
import kstatemachine_compose_sample.composeapp.generated.resources.airattacking
30
24
import kstatemachine_compose_sample.composeapp.generated.resources.airattacking_shooting
31
- import kstatemachine_compose_sample.composeapp.generated.resources.compose_multiplatform
32
25
import kstatemachine_compose_sample.composeapp.generated.resources.ducking
33
26
import kstatemachine_compose_sample.composeapp.generated.resources.ducking_shooting
34
27
import kstatemachine_compose_sample.composeapp.generated.resources.jumping
@@ -38,7 +31,6 @@ import kstatemachine_compose_sample.composeapp.generated.resources.standing_shoo
38
31
import org.jetbrains.compose.resources.DrawableResource
39
32
import org.jetbrains.compose.resources.painterResource
40
33
41
-
42
34
class StickManGameScreen : Screen {
43
35
@Composable
44
36
override fun Content () {
@@ -81,12 +73,9 @@ private fun onEffect(effect: ModelEffect) {
81
73
82
74
@Composable
83
75
fun StickManGameScreenContent (viewModel : StickManGameScreenModel ) {
84
- val xkcdClient = remember { XkcdClient () }
85
76
val coroutineScope = rememberCoroutineScope()
86
- var imageUrl by remember { mutableStateOf<String ?>(null ) }
87
77
// Observe the state from the ViewModel
88
78
val uiState by viewModel.model.stateFlow.collectAsState()
89
- var showContent by remember { mutableStateOf(false ) }
90
79
91
80
// State variables for drawable and ammo count
92
81
var heroDrawableRes by remember { mutableStateOf(Res .drawable.standing) }
@@ -103,7 +92,6 @@ fun StickManGameScreenContent(viewModel: StickManGameScreenModel) {
103
92
104
93
LaunchedEffect (Unit ) {
105
94
coroutineScope.launch {
106
- imageUrl = xkcdClient.getCurrentXkcdImageUrl()
107
95
viewModel.observe(
108
96
lifecycleOwner,
109
97
{ state ->
@@ -165,29 +153,6 @@ fun StickManGameScreenContent(viewModel: StickManGameScreenModel) {
165
153
verticalArrangement = Arrangement .spacedBy(16 .dp),
166
154
horizontalAlignment = Alignment .CenterHorizontally
167
155
) {
168
- AnimatedVisibility (showContent) {
169
- Column (
170
- Modifier .fillMaxWidth().weight(1f ),
171
- horizontalAlignment = Alignment .CenterHorizontally
172
- ) {
173
- imageUrl?.let { url ->
174
- CoilImage (
175
- modifier = Modifier .fillMaxWidth()
176
- ,
177
- imageModel = { imageUrl },
178
- imageOptions = ImageOptions (
179
- contentScale = ContentScale .Crop ,
180
- alignment = Alignment .Center
181
- )
182
- )
183
- } ? : CircularProgressIndicator ()
184
- Image (
185
- painterResource(Res .drawable.compose_multiplatform),
186
- null ,
187
- modifier = Modifier .size(100 .dp)
188
- )
189
- }
190
- }
191
156
Text (
192
157
text = " Ammo: ${uiState.ammoLeft} " ,
193
158
fontSize = 20 .sp,
@@ -225,14 +190,5 @@ fun StickManGameScreenContent(viewModel: StickManGameScreenModel) {
225
190
}
226
191
}
227
192
}
228
- Image (
229
- painter = painterResource(Res .drawable.compose_multiplatform),
230
- contentDescription = null ,
231
- modifier = Modifier
232
- .size(100 .dp)
233
- .align(Alignment .TopEnd )
234
- .padding(8 .dp)
235
- .clickable { showContent = ! showContent }
236
- )
237
193
}
238
194
}
0 commit comments