MapView: add class for layer rendering

This commit is contained in:
Matthias Schiffer 2018-11-17 13:38:09 +01:00
parent 0db19bd119
commit 49699eeb45
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C

View file

@ -58,14 +58,23 @@ function addSprite(builder: SpriteViewBuilder, tileset: Tileset, x: number, y: n
builder.addSprite([x, y, x + 1, y + 1], tilePos);
}
function buildMapLayer(r: Renderer, tileset: Tileset, layer: number[][]): SpriteView {
function buildMapLayer(r: Renderer, tileset: Tileset, layer: number[][]): MapLayerView {
const builder = new SpriteViewBuilder(r, tileset.texture);
for (let x = 0; x < layer[0].length; x++)
for (let y = 0; y < layer.length; y++)
addSprite(builder, tileset, x, y, layer[y][x]);
return builder.build();
return new MapLayerView(builder.build());
}
class MapLayerView {
public constructor(private sprites: SpriteView) {
}
public render(time: number): void {
this.sprites.render();
}
}
export class MapView {
@ -77,11 +86,11 @@ export class MapView {
return new MapView(layers);
}
private constructor(private layers: SpriteView[]) {
private constructor(private layers: MapLayerView[]) {
}
public render(time: number) {
public render(time: number): void {
for (const layer of this.layers)
layer.render();
layer.render(time);
}
}