Add support for different Tile Sets on each Tile Layer #2

This commit is contained in:
2022-08-26 17:26:49 +02:00
parent 1a9c4fe9de
commit 859886be79
2 changed files with 18 additions and 23 deletions

View File

@@ -35,9 +35,6 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap {
@Getter
private final List<Layer> 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);

View File

@@ -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()
);
}
}