try making map tiles better, listen to events for changed tiles
This commit is contained in:
parent
4e8a0c4f69
commit
4d2926ebe2
6 changed files with 97 additions and 22 deletions
|
|
@ -38,6 +38,7 @@ sealed class FactorioObjectData {
|
|||
LuaSurface,
|
||||
MapChunk,
|
||||
LuaTile,
|
||||
LuaTiles,
|
||||
ConsoleChatMessage,
|
||||
}
|
||||
}
|
||||
|
|
@ -63,6 +64,7 @@ object FactorioObjectDataSerializer : JsonContentPolymorphicSerializer<FactorioO
|
|||
FactorioObjectData.ObjectName.LuaSurface -> SurfaceData.serializer()
|
||||
FactorioObjectData.ObjectName.MapChunk -> MapChunk.serializer()
|
||||
FactorioObjectData.ObjectName.LuaTile -> MapTile.serializer()
|
||||
FactorioObjectData.ObjectName.LuaTiles -> MapTiles.serializer()
|
||||
FactorioObjectData.ObjectName.ConsoleChatMessage -> ConsoleChatMessage.serializer()
|
||||
null ->
|
||||
throw Exception("Unknown FactorioObjectData $key: '$type' ")
|
||||
|
|
@ -112,21 +114,30 @@ data class SurfaceData(
|
|||
override val objectName = ObjectName.LuaSurface
|
||||
}
|
||||
|
||||
/** Quasi-object. This isn't a Factorio Lua type, but a helpful collection of [MapTile]s */
|
||||
/** This isn't a Factorio Lua type, but a helpful collection of Chunk info */
|
||||
@Serializable
|
||||
data class MapChunk(
|
||||
val tiles: List<MapTile>,
|
||||
val tiles: MapTiles,
|
||||
val position: MapChunkPosition,
|
||||
) : FactorioObjectData() {
|
||||
@EncodeDefault
|
||||
override val objectName = ObjectName.MapChunk
|
||||
}
|
||||
|
||||
/** This isn't a Factorio Lua type, but a helpful collection of [MapTile]s */
|
||||
@Serializable
|
||||
data class MapTiles(
|
||||
val surfaceIndex: Int,
|
||||
val tiles: List<MapTile>,
|
||||
) : FactorioObjectData() {
|
||||
@EncodeDefault
|
||||
override val objectName = ObjectName.LuaTiles
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class MapTile(
|
||||
val prototypeName: String,
|
||||
val position: MapTilePosition,
|
||||
val surfaceIndex: Int,
|
||||
) : FactorioObjectData() {
|
||||
@EncodeDefault
|
||||
override val objectName = ObjectName.LuaTile
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ class FactorioEventTest : FunSpec({
|
|||
"characterUnitNumber": 1,
|
||||
"associatedCharactersUnitNumbers": {},
|
||||
"position": {
|
||||
"type": "MAP",
|
||||
"x": 30.6,
|
||||
"y": 84.1
|
||||
},
|
||||
|
|
@ -53,8 +52,7 @@ class FactorioEventTest : FunSpec({
|
|||
name = "fredthedeadhead",
|
||||
characterUnitNumber = 1u,
|
||||
associatedCharactersUnitNumbers = emptyList(),
|
||||
position = PositionData(
|
||||
type = PositionType.MAP,
|
||||
position = MapEntityPosition(
|
||||
x = 30.6,
|
||||
y = 84.1,
|
||||
),
|
||||
|
|
@ -148,7 +146,6 @@ class FactorioEventTest : FunSpec({
|
|||
"surfaceIndex": 1,
|
||||
"unitNumber": 1,
|
||||
"position": {
|
||||
"type": "MAP",
|
||||
"x": 37.5,
|
||||
"y": 81.1
|
||||
}
|
||||
|
|
@ -174,10 +171,9 @@ class FactorioEventTest : FunSpec({
|
|||
surfaceIndex = 1,
|
||||
unitNumber = 1u,
|
||||
playerIndex = null,
|
||||
position = PositionData(
|
||||
position = MapEntityPosition(
|
||||
x = 37.5,
|
||||
y = 81.1,
|
||||
type = PositionType.MAP,
|
||||
)
|
||||
),
|
||||
eventType = "on_player_changed_position",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue