refactor so files match contents

This commit is contained in:
Adam 2022-09-09 17:33:48 +02:00
parent a84c4a2f76
commit 47c47690a7
6 changed files with 78 additions and 78 deletions

View file

@ -38,8 +38,6 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
val rootJob = Job()
object App : Application() { object App : Application() {
@ -111,20 +109,3 @@ object App : Application() {
} }
} }
fun main() {
startApplication(
{
Link.useDataNavigoForLinks = true
App
},
module.hot,
BootstrapModule,
// BootstrapCssModule,
BootstrapIconsModule,
FontAwesomeModule,
ChartModule,
CoreModule,
)
}

View file

@ -0,0 +1,31 @@
package dev.adamko.kafkatorio.webmap
import io.kvision.BootstrapIconsModule
import io.kvision.BootstrapModule
import io.kvision.ChartModule
import io.kvision.CoreModule
import io.kvision.FontAwesomeModule
import io.kvision.html.Link
import io.kvision.module
import io.kvision.startApplication
import kotlinx.coroutines.Job
val rootJob = Job()
fun main() {
startApplication(
{
Link.useDataNavigoForLinks = true
App
},
module.hot,
BootstrapModule,
// BootstrapCssModule,
BootstrapIconsModule,
FontAwesomeModule,
ChartModule,
CoreModule,
)
}

View file

@ -0,0 +1,47 @@
package dev.adamko.kafkatorio.webmap.state
import dev.adamko.kafkatorio.schema.common.FactorioServerId
import dev.adamko.kafkatorio.schema.common.PlayerIndex
import dev.adamko.kafkatorio.webmap.FactorioMap
import io.kvision.maps.externals.leaflet.layer.LayerGroup
data class FactorioGameState(
val serverId: FactorioServerId,
val map: FactorioMap = FactorioMap(serverId),
val players: Map<PlayerIndex, PlayerState> = emptyMap(),
) {
val playerIconsLayer: LayerGroup
get() = map.playerIconsLayer
operator fun plus(action: SiteAction.FactorioUpdate): FactorioGameState =
when (action) {
is SiteAction.FactorioUpdate.Player -> handlePlayerUpdate(action)
}
}
private fun FactorioGameState.handlePlayerUpdate(
update: SiteAction.FactorioUpdate.Player,
): FactorioGameState {
val previous = players[update.data.key.index]
?: PlayerState(update.data.key.index, update.tick)
val updated = previous.update(update.tick, update.data)
if (previous.mapMarker != updated.mapMarker) {
if (previous.mapMarker != null) {
println("removing player icon ${previous.index}")
playerIconsLayer.removeLayer(previous.mapMarker)
}
if (updated.mapMarker != null) {
println("adding player icon ${updated.index}")
playerIconsLayer.addLayer(updated.mapMarker)
}
}
val updatedPlayersState = players + (previous.index to updated)
return copy(players = updatedPlayersState)
}

View file

@ -7,33 +7,6 @@ import io.kvision.maps.Maps
import io.kvision.maps.externals.leaflet.layer.vector.CircleMarker import io.kvision.maps.externals.leaflet.layer.vector.CircleMarker
import kotlinx.js.jso import kotlinx.js.jso
fun handlePlayerUpdate(
gameState: FactorioGameState,
update: SiteAction.FactorioUpdate.Player,
): FactorioGameState {
val previous = gameState.players[update.data.key.index]
?: PlayerState(update.data.key.index, update.tick)
val updated = previous.update(update.tick, update.data)
if (previous.mapMarker != updated.mapMarker) {
if (previous.mapMarker != null) {
println("removing player icon ${previous.index}")
gameState.playerIconsLayer.removeLayer(previous.mapMarker)
}
if (updated.mapMarker != null) {
println("adding player icon ${updated.index}")
gameState.playerIconsLayer.addLayer(updated.mapMarker)
}
}
val updatedPlayersState = gameState.players + (previous.index to updated)
return gameState.copy(players = updatedPlayersState)
}
data class PlayerState( data class PlayerState(
val index: PlayerIndex, val index: PlayerIndex,
val lastTick: Tick, val lastTick: Tick,

View file

@ -1,32 +0,0 @@
package dev.adamko.kafkatorio.webmap.state
import dev.adamko.kafkatorio.schema.common.FactorioServerId
import dev.adamko.kafkatorio.schema.common.PlayerIndex
import dev.adamko.kafkatorio.webmap.FactorioMap
import io.kvision.maps.externals.leaflet.layer.LayerGroup
//fun createFactorioReduxStore(): ReduxStore<FactorioGameState, FactorioUpdate> =
// createReduxStore(
// ::factorioGameReducer,
// FactorioGameState(
// map = FactorioMap(),
// players = emptyMap(),
// )
// )
data class FactorioGameState(
val serverId: FactorioServerId,
val map: FactorioMap = FactorioMap(serverId),
val players: Map<PlayerIndex, PlayerState> = emptyMap(),
) {
val playerIconsLayer: LayerGroup
get() = map.playerIconsLayer
operator fun plus(action: SiteAction.FactorioUpdate): FactorioGameState =
when (action) {
is SiteAction.FactorioUpdate.Player -> handlePlayerUpdate(this, action)
}
}