From ec4f70340e0f9a3a867aef7d39df19457bec1d3e Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Sat, 19 Aug 2023 18:26:52 +1000 Subject: Allow overriding placed collision kind ("""overground""") from world.placeMaterial --- source/game/StarTileModification.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'source/game/StarTileModification.cpp') 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); -- cgit v1.2.3