From 859886be794157c84202eaa80f5cc62c180d8ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 26 Aug 2022 17:26:49 +0200 Subject: [PATCH] Add support for different Tile Sets on each Tile Layer #2 --- .../world/map/model/DefaultGameMap.java | 10 ++---- .../map/serial/ProtobufMapDeserializer.java | 31 +++++++++---------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java index 6236a53a..02995d01 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/model/DefaultGameMap.java @@ -35,9 +35,6 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap { @Getter private final List layers = new ArrayList<>(); - @NonNull - private final TileSet tileSet; - @Getter private final int rows; @@ -59,11 +56,10 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap { @Getter private final String handler; - public DefaultGameMap(TileSet tileSet, int rows, int columns, String handler) { - this.tileSet = tileSet; + public DefaultGameMap(int tileWidth, int tileHeight, int rows, int columns, String handler) { this.rows = rows; this.columns = columns; - this.stepSize = new Vector2f(tileSet.getTileSet().getSpriteSize()); + this.stepSize = new Vector2f(tileWidth, tileHeight); this.width = columns * stepSize.x(); this.height = rows * stepSize.y(); this.size = new Vector2f(columns * stepSize.x(), rows * stepSize.y()); @@ -115,7 +111,7 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap { } } - public TileLayer createTileLayer() { + public TileLayer createTileLayer(@NonNull TileSet tileSet) { var layer = new DefaultTileLayer(this, tileSet, rows, columns); layers.add(layer); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java index 6d41487e..d15c12c3 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/serial/ProtobufMapDeserializer.java @@ -26,8 +26,7 @@ public class ProtobufMapDeserializer extends MapDeserializer { @Override protected DefaultGameMap parse(InputStream input) throws Exception { var proto = GameMapProto.GameMap.parseFrom(input); - var tileSet = tileSetManager.loadObject(proto.getTileSetUID()); - var map = new DefaultGameMap(tileSet, proto.getRows(), proto.getColumns(), proto.getHandler()); + var map = new DefaultGameMap(proto.getTileWidth(), proto.getTileHeight(), proto.getRows(), proto.getColumns(), proto.getHandler()); proto.getLayersList().forEach(layer -> deserializeLayer(map, layer)); @@ -49,7 +48,7 @@ public class ProtobufMapDeserializer extends MapDeserializer { } private void deserializeTileLayer(DefaultGameMap map, GameMapProto.Layer proto) { - var layer = map.createTileLayer(); + var layer = map.createTileLayer(tileSetManager.loadObject(proto.getTileLayer().getTilesetUID())); var columns = map.getColumns(); var tiles = proto.getTileLayer().getTilesList(); @@ -80,11 +79,11 @@ public class ProtobufMapDeserializer extends MapDeserializer { private void deserializeColorLayer(DefaultGameMap map, GameMapProto.Layer proto) { var protoColorLayer = proto.getColorLayer(); map.createColorLayer( - meshManager, - protoColorLayer.getRed() / 100.0f, - protoColorLayer.getGreen() / 100.0f, - protoColorLayer.getBlue() / 100.0f, - protoColorLayer.getAlpha() / 100.0f + meshManager, + protoColorLayer.getRed() / 100.0f, + protoColorLayer.getGreen() / 100.0f, + protoColorLayer.getBlue() / 100.0f, + protoColorLayer.getAlpha() / 100.0f ); } @@ -99,14 +98,14 @@ public class ProtobufMapDeserializer extends MapDeserializer { }; map.createImageLayer( - image, - protoImageLayer.getOpacity() / 100.0f, - protoImageLayer.getX(), - protoImageLayer.getY(), - (float) protoImageLayer.getScaleX(), - (float) protoImageLayer.getScaleY(), - mode, - protoImageLayer.getParallax() + image, + protoImageLayer.getOpacity() / 100.0f, + protoImageLayer.getX(), + protoImageLayer.getY(), + (float) protoImageLayer.getScaleX(), + (float) protoImageLayer.getScaleY(), + mode, + protoImageLayer.getParallax() ); } }