Add support for different Tile Sets on each Tile Layer #2
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user