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
|
@Getter
|
||||||
private final List<Layer> layers = new ArrayList<>();
|
private final List<Layer> layers = new ArrayList<>();
|
||||||
|
|
||||||
@NonNull
|
|
||||||
private final TileSet tileSet;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final int rows;
|
private final int rows;
|
||||||
|
|
||||||
@@ -59,11 +56,10 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap {
|
|||||||
@Getter
|
@Getter
|
||||||
private final String handler;
|
private final String handler;
|
||||||
|
|
||||||
public DefaultGameMap(TileSet tileSet, int rows, int columns, String handler) {
|
public DefaultGameMap(int tileWidth, int tileHeight, int rows, int columns, String handler) {
|
||||||
this.tileSet = tileSet;
|
|
||||||
this.rows = rows;
|
this.rows = rows;
|
||||||
this.columns = columns;
|
this.columns = columns;
|
||||||
this.stepSize = new Vector2f(tileSet.getTileSet().getSpriteSize());
|
this.stepSize = new Vector2f(tileWidth, tileHeight);
|
||||||
this.width = columns * stepSize.x();
|
this.width = columns * stepSize.x();
|
||||||
this.height = rows * stepSize.y();
|
this.height = rows * stepSize.y();
|
||||||
this.size = new Vector2f(columns * stepSize.x(), 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);
|
var layer = new DefaultTileLayer(this, tileSet, rows, columns);
|
||||||
layers.add(layer);
|
layers.add(layer);
|
||||||
|
|
||||||
|
|||||||
@@ -26,8 +26,7 @@ public class ProtobufMapDeserializer extends MapDeserializer {
|
|||||||
@Override
|
@Override
|
||||||
protected DefaultGameMap parse(InputStream input) throws Exception {
|
protected DefaultGameMap parse(InputStream input) throws Exception {
|
||||||
var proto = GameMapProto.GameMap.parseFrom(input);
|
var proto = GameMapProto.GameMap.parseFrom(input);
|
||||||
var tileSet = tileSetManager.loadObject(proto.getTileSetUID());
|
var map = new DefaultGameMap(proto.getTileWidth(), proto.getTileHeight(), proto.getRows(), proto.getColumns(), proto.getHandler());
|
||||||
var map = new DefaultGameMap(tileSet, proto.getRows(), proto.getColumns(), proto.getHandler());
|
|
||||||
|
|
||||||
proto.getLayersList().forEach(layer -> deserializeLayer(map, layer));
|
proto.getLayersList().forEach(layer -> deserializeLayer(map, layer));
|
||||||
|
|
||||||
@@ -49,7 +48,7 @@ public class ProtobufMapDeserializer extends MapDeserializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void deserializeTileLayer(DefaultGameMap map, GameMapProto.Layer proto) {
|
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 columns = map.getColumns();
|
||||||
var tiles = proto.getTileLayer().getTilesList();
|
var tiles = proto.getTileLayer().getTilesList();
|
||||||
|
|
||||||
@@ -80,11 +79,11 @@ public class ProtobufMapDeserializer extends MapDeserializer {
|
|||||||
private void deserializeColorLayer(DefaultGameMap map, GameMapProto.Layer proto) {
|
private void deserializeColorLayer(DefaultGameMap map, GameMapProto.Layer proto) {
|
||||||
var protoColorLayer = proto.getColorLayer();
|
var protoColorLayer = proto.getColorLayer();
|
||||||
map.createColorLayer(
|
map.createColorLayer(
|
||||||
meshManager,
|
meshManager,
|
||||||
protoColorLayer.getRed() / 100.0f,
|
protoColorLayer.getRed() / 100.0f,
|
||||||
protoColorLayer.getGreen() / 100.0f,
|
protoColorLayer.getGreen() / 100.0f,
|
||||||
protoColorLayer.getBlue() / 100.0f,
|
protoColorLayer.getBlue() / 100.0f,
|
||||||
protoColorLayer.getAlpha() / 100.0f
|
protoColorLayer.getAlpha() / 100.0f
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,14 +98,14 @@ public class ProtobufMapDeserializer extends MapDeserializer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
map.createImageLayer(
|
map.createImageLayer(
|
||||||
image,
|
image,
|
||||||
protoImageLayer.getOpacity() / 100.0f,
|
protoImageLayer.getOpacity() / 100.0f,
|
||||||
protoImageLayer.getX(),
|
protoImageLayer.getX(),
|
||||||
protoImageLayer.getY(),
|
protoImageLayer.getY(),
|
||||||
(float) protoImageLayer.getScaleX(),
|
(float) protoImageLayer.getScaleX(),
|
||||||
(float) protoImageLayer.getScaleY(),
|
(float) protoImageLayer.getScaleY(),
|
||||||
mode,
|
mode,
|
||||||
protoImageLayer.getParallax()
|
protoImageLayer.getParallax()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user