diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-19 18:26:52 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-19 18:26:52 +1000 |
commit | ec4f70340e0f9a3a867aef7d39df19457bec1d3e (patch) | |
tree | 32ee125d2ff837b0e6b5b5db20881f60f56b79ec /source/game/StarTileModification.cpp | |
parent | f22eed8304c90418314e254f2569bb87ee5d72fc (diff) |
Allow overriding placed collision kind ("""overground""") from world.placeMaterial
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); |