MapView: add class for layer rendering
This commit is contained in:
parent
0db19bd119
commit
49699eeb45
1 changed files with 14 additions and 5 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue