diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2018-10-31 15:10:40 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2018-10-31 15:10:40 +0100 |
commit | 68ff0cb4b1f5e8d354282ef988fcb42240e34d1b (patch) | |
tree | 6032ede2a673fa7d58f9fd58817cf282a727237f /src/view/MapLoader.ts | |
parent | 60f03e3c5e5d19a27eff0bb02b5995352767492b (diff) | |
download | rpgedit-68ff0cb4b1f5e8d354282ef988fcb42240e34d1b.tar rpgedit-68ff0cb4b1f5e8d354282ef988fcb42240e34d1b.zip |
Get rid of MapView and MapState
Diffstat (limited to 'src/view/MapLoader.ts')
-rw-r--r-- | src/view/MapLoader.ts | 57 |
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); -} |