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
|
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,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -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 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,
|
||||||
|
|
@ -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