summaryrefslogtreecommitdiffstats
path: root/src/view
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2018-11-17 12:38:14 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-11-17 12:38:14 +0100
commit0db19bd11958cbead28cc5aad94d80a277f80290 (patch)
tree66359ab8d31b6c5ef6d606ee2904bd16560ff6dc /src/view
parente52d57b39666cac088b51a78367537f41ed3d50f (diff)
downloadrpgedit-0db19bd11958cbead28cc5aad94d80a277f80290.tar
rpgedit-0db19bd11958cbead28cc5aad94d80a277f80290.zip
Add MapView class with common render() method
Diffstat (limited to 'src/view')
-rw-r--r--src/view/map.ts21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/view/map.ts b/src/view/map.ts
index f5d6eba..4e7fb20 100644
--- a/src/view/map.ts
+++ b/src/view/map.ts
@@ -2,7 +2,7 @@ import { Renderer } from './renderer/renderer';
import { SpriteCoords, SpriteView, SpriteViewBuilder } from './sprite';
import { loadImage, mkTexture } from './util/image';
-import { MapData, MapLayer } from '../model/data/map';
+import { MapData } from '../model/data/map';
import { nextPowerOf2 } from '../util';
@@ -68,9 +68,20 @@ function buildMapLayer(r: Renderer, tileset: Tileset, layer: number[][]): Sprite
return builder.build();
}
-export async function loadMap(r: Renderer, map: MapData): Promise<SpriteView[]> {
- const tiles = await loadTiles(map.tiles);
- const tileset = mkTileset(r, tiles);
+export class MapView {
+ public static async load(r: Renderer, map: MapData): Promise<MapView> {
+ const tiles = await loadTiles(map.tiles);
+ const tileset = mkTileset(r, tiles);
- return map.layers.map((layer) => buildMapLayer(r, tileset, layer.tiles));
+ const layers = map.layers.map((layer) => buildMapLayer(r, tileset, layer.tiles));
+ return new MapView(layers);
+ }
+
+ private constructor(private layers: SpriteView[]) {
+ }
+
+ public render(time: number) {
+ for (const layer of this.layers)
+ layer.render();
+ }
}