Skip to content

Commit be52189

Browse files
Mikhail FedotovMikhail Fedotov
authored andcommitted
Add kstatemachine-coroutines usage
1 parent 8e7d023 commit be52189

File tree

4 files changed

+7
-7
lines changed

4 files changed

+7
-7
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Sample 2D shooter game
44

5-
This is a sample Android application showing [kstatemachine](https://github.com/nsk90/kstatemachine) library features.
5+
This is a sample Android application showing [KStateMachine](https://github.com/nsk90/kstatemachine) library features.
66
This application fallows MVI architecture pattern.
77

88
State machine is used to define and control Hero states like in 2D shooter games.

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,5 @@ dependencies {
4848
implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}")
4949
implementation("io.insert-koin:koin-androidx-viewmodel:${Versions.koin}")
5050
implementation("io.github.nsk90:kstatemachine:${Versions.kStateMachine}")
51+
implementation("io.github.nsk90:kstatemachine-coroutines:${Versions.kStateMachine}")
5152
}

app/src/main/java/ru/nsk/kstatemachinesample/ui/main/MainViewModel.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.util.Log
44
import androidx.lifecycle.ViewModel
55
import androidx.lifecycle.viewModelScope
66
import kotlinx.coroutines.Job
7-
import kotlinx.coroutines.flow.collect
87
import kotlinx.coroutines.launch
98
import ru.nsk.kstatemachine.*
109
import ru.nsk.kstatemachinesample.ui.main.ControlEvent.*
@@ -28,8 +27,8 @@ sealed interface ModelEffect {
2827
class MainViewModel : MviModelHost<ModelData, ModelEffect>, ViewModel() {
2928
override val model = model(viewModelScope, ModelData(INITIAL_AMMO, listOf(Standing)))
3029

31-
private val machine = createStateMachine("Hero", ChildMode.PARALLEL) {
32-
logger = StateMachine.Logger { Log.d(this@MainViewModel::class.simpleName, it) }
30+
private val machine = createStateMachineBlocking(viewModelScope, "Hero", ChildMode.PARALLEL) {
31+
logger = StateMachine.Logger { Log.d(this@MainViewModel::class.simpleName, it()) }
3332

3433
state("Movement") {
3534
val airAttacking = addState(AirAttacking())
@@ -108,8 +107,8 @@ class MainViewModel : MviModelHost<ModelData, ModelEffect>, ViewModel() {
108107
}
109108
}
110109

111-
fun sendEvent(event: ControlEvent) {
112-
intent { emitEffect(ModelEffect.ControlEventSent(event)) }
110+
fun sendEvent(event: ControlEvent): Unit = intent {
111+
emitEffect(ModelEffect.ControlEventSent(event))
113112
machine.processEvent(event)
114113
}
115114

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ object Versions {
1010
const val lifecycle = "2.4.1"
1111
const val startup = "1.1.0"
1212
const val material = "1.5.0"
13-
const val kStateMachine = "0.16.0"
13+
const val kStateMachine = "0.20.0"
1414
}

0 commit comments

Comments
 (0)