summaryrefslogtreecommitdiffstats
path: root/src/view/MapLoader.ts
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2018-10-31 15:10:40 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-10-31 15:10:40 +0100
commit68ff0cb4b1f5e8d354282ef988fcb42240e34d1b (patch)
tree6032ede2a673fa7d58f9fd58817cf282a727237f /src/view/MapLoader.ts
parent60f03e3c5e5d19a27eff0bb02b5995352767492b (diff)
downloadrpgedit-68ff0cb4b1f5e8d354282ef988fcb42240e34d1b.tar
rpgedit-68ff0cb4b1f5e8d354282ef988fcb42240e34d1b.zip
Get rid of MapView and MapState
Diffstat (limited to 'src/view/MapLoader.ts')
-rw-r--r--src/view/MapLoader.ts57
1 files changed, 0 insertions, 57 deletions
diff --git a/src/view/MapLoader.ts b/src/view/MapLoader.ts
deleted file mode 100644
index c3504e3..0000000
--- a/src/view/MapLoader.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { loadImages, mkTexture } from 'util/image';
-import { mapValues, nextPowerOf2 } from '../util';
-
-import { TileCoords } from './tile';
-
-import MapState from '../model/state/MapState';
-import MapView from './MapView';
-import Renderer from './renderer/Renderer';
-
-export interface TileMap {
- texture: WebGLTexture;
- tiles: Map<string, TileCoords>;
-}
-
-function loadTiles(tiles: Map<string, string>): Promise<Map<string, HTMLImageElement>> {
- return loadImages(mapValues((t) => `resources/sprite/tile/${t}.png`, tiles));
-}
-
-function mkTileMap(
- gl: WebGLRenderingContext,
- tiles: Map<string, HTMLImageElement>,
-): TileMap {
- const tileSize = 32;
-
- const canvasDim = nextPowerOf2(Math.sqrt(tiles.size));
- const canvasSize = canvasDim * tileSize;
-
- const canvas = document.createElement('canvas');
- canvas.width = canvas.height = canvasSize;
-
- let x = 0, y = 0;
- const map: Map<string, TileCoords> = new Map();
- const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;
-
- for (const [k, tile] of tiles) {
- ctx.drawImage(tile, x * tileSize, y * tileSize);
- map.set(k, [x / canvasDim, y / canvasDim, (x + 1) / canvasDim, (y + 1) / canvasDim]);
-
- x++;
- if (x === canvasDim) {
- x = 0;
- y++;
- }
- }
-
- return {
- texture: mkTexture(gl, canvas),
- tiles: map,
- };
-}
-
-export async function loadMap(r: Renderer, map: MapState): Promise<MapView> {
- const tiles = await loadTiles(map.data.tiles);
- const tileMap = mkTileMap(r.getContext(), tiles);
-
- return new MapView(r, map, tileMap);
-}