diff options
Diffstat (limited to 'source/game/StarTileModification.cpp')
-rw-r--r-- | source/game/StarTileModification.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/source/game/StarTileModification.cpp b/source/game/StarTileModification.cpp index a20ae1e..0bcb4dc 100644 --- a/source/game/StarTileModification.cpp +++ b/source/game/StarTileModification.cpp @@ -4,7 +4,17 @@ namespace Star { DataStream& operator>>(DataStream& ds, PlaceMaterial& tileMaterialPlacement) { - ds.read(tileMaterialPlacement.layer); + uint8_t layer; + ds.read(layer); + if (layer > 1) { + tileMaterialPlacement.layer = TileLayer::Foreground; + tileMaterialPlacement.collisionOverride = (TileCollisionOverride)(layer - 1); + } + else { + tileMaterialPlacement.layer = (TileLayer)layer; + tileMaterialPlacement.collisionOverride = TileCollisionOverride::None; + } + ds.read(tileMaterialPlacement.material); ds.read(tileMaterialPlacement.materialHueShift); @@ -12,7 +22,14 @@ DataStream& operator>>(DataStream& ds, PlaceMaterial& tileMaterialPlacement) { } DataStream& operator<<(DataStream& ds, PlaceMaterial const& tileMaterialPlacement) { - ds.write(tileMaterialPlacement.layer); + if (tileMaterialPlacement.collisionOverride != TileCollisionOverride::None + && tileMaterialPlacement.layer == TileLayer::Foreground) { + uint8_t layer = (uint8_t)tileMaterialPlacement.collisionOverride; + ds.write(++layer); + } + else + ds.write(tileMaterialPlacement.layer); + ds.write(tileMaterialPlacement.material); ds.write(tileMaterialPlacement.materialHueShift); |