Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarTileModification.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarTileModification.cpp')
-rw-r--r--source/game/StarTileModification.cpp21
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);