refactor so files match contents
This commit is contained in:
parent
a84c4a2f76
commit
47c47690a7
6 changed files with 78 additions and 78 deletions
|
|
@ -38,8 +38,6 @@ import kotlinx.coroutines.flow.launchIn
|
|||
import kotlinx.coroutines.flow.onEach
|
||||
|
||||
|
||||
val rootJob = Job()
|
||||
|
||||
|
||||
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,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -7,33 +7,6 @@ import io.kvision.maps.Maps
|
|||
import io.kvision.maps.externals.leaflet.layer.vector.CircleMarker
|
||||
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(
|
||||
val index: PlayerIndex,
|
||||
val lastTick: Tick,
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue