blob: 6dc8256a67382f08bc6d01597689ac67c52b3a3e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package coffee.liz.ecs.input
import coffee.liz.ecs.System
import coffee.liz.ecs.TickedSystem
import coffee.liz.ecs.World
import kotlin.time.Duration
class InputSystem<Outside : InputProvider>(
pollRate: Duration
) : TickedSystem<Outside>(pollRate) {
private val activeInputs = mutableMapOf<String, Int>()
override fun update(world: World<Outside>, state: Outside, ticks: Int) {
state.inputState.activeInputs.forEach {
activeInputs[it] = (activeInputs[it] ?: 0) + ticks
}
activeInputs.keys.retainAll(state.inputState.activeInputs)
world.query(Controlled::class).forEach {
it.get(Controlled::class).handleInput(activeInputs.toMap())
}
}
}
|