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); 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); const builder = new SpriteViewBuilder(r, tileset.texture);
for (let x = 0; x < layer[0].length; x++) for (let x = 0; x < layer[0].length; x++)
for (let y = 0; y < layer.length; y++) for (let y = 0; y < layer.length; y++)
addSprite(builder, tileset, x, y, layer[y][x]); 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 { export class MapView {
@ -77,11 +86,11 @@ export class MapView {
return new MapView(layers); 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) for (const layer of this.layers)
layer.render(); layer.render(time);
} }
} }