summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2018-10-26 21:59:46 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-10-26 21:59:46 +0200
commitbc6d79b088154e2fca56b9c18ee5ea0bf17875f8 (patch)
tree680f5b4ea26a874fa4f52f178681ef234688480f /src
parentebc56db63c054702ad910987aa666d7cfb52d5cc (diff)
downloadrpgedit-bc6d79b088154e2fca56b9c18ee5ea0bf17875f8.tar
rpgedit-bc6d79b088154e2fca56b9c18ee5ea0bf17875f8.zip
model: add mutable MapState (empty for now)
Diffstat (limited to 'src')
-rw-r--r--src/index.ts8
-rw-r--r--src/model/data/MapData.ts (renamed from src/model/MapData.ts)2
-rw-r--r--src/model/state/MapState.ts6
-rw-r--r--src/view/MapLoader.ts8
-rw-r--r--src/view/MapView.ts18
5 files changed, 25 insertions, 17 deletions
diff --git a/src/index.ts b/src/index.ts
index 5d70727..033e4ea 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,4 +1,5 @@
-import MapData from './model/MapData';
+import MapData from './model/data/MapData';
+import MapState from './model/state/MapState';
import {loadMap} from './view/MapLoader';
import Renderer from './view/renderer/Renderer';
@@ -13,9 +14,10 @@ window.onload = () => {
const xhr = new XMLHttpRequest();
xhr.addEventListener('load', async function() {
- const mapDef = new MapData(JSON.parse(this.responseText));
+ const mapData = new MapData(JSON.parse(this.responseText));
+ const map = new MapState(mapData);
- const mapView = await loadMap(renderer, mapDef);
+ const mapView = await loadMap(renderer, map);
mapView.draw();
});
diff --git a/src/model/MapData.ts b/src/model/data/MapData.ts
index c8db35c..0f14f50 100644
--- a/src/model/MapData.ts
+++ b/src/model/data/MapData.ts
@@ -1,4 +1,4 @@
-import {mapFromObject} from '../util';
+import {mapFromObject} from '../../util';
interface Input {
readonly tiles: {[key: string]: string};
diff --git a/src/model/state/MapState.ts b/src/model/state/MapState.ts
new file mode 100644
index 0000000..2931dfb
--- /dev/null
+++ b/src/model/state/MapState.ts
@@ -0,0 +1,6 @@
+import MapData from '../data/MapData';
+
+export default class MapState {
+ public constructor(public readonly data: MapData) {
+ }
+}
diff --git a/src/view/MapLoader.ts b/src/view/MapLoader.ts
index 31e6484..290f095 100644
--- a/src/view/MapLoader.ts
+++ b/src/view/MapLoader.ts
@@ -1,6 +1,6 @@
import {mapValues, mapValuesAsync, nextPowerOf2} from '../util';
-import MapData from '../model/MapData';
+import MapState from '../model/state/MapState';
import MapView from './MapView';
import Renderer from './renderer/Renderer';
@@ -54,9 +54,9 @@ function mkTileTexture(gl: WebGLRenderingContext, tiles: Map<string, HTMLImageEl
return [mkTexture(gl, canvas), ret];
}
-export async function loadMap(r: Renderer, mapData: MapData): Promise<MapView> {
- const tiles = await loadTiles(mapData.tiles);
+export async function loadMap(r: Renderer, map: MapState): Promise<MapView> {
+ const tiles = await loadTiles(map.data.tiles);
const [tileTexture, tileMap] = mkTileTexture(r.getContext(), tiles);
- return new MapView(r, mapData, tileTexture, tileMap);
+ return new MapView(r, map, tileTexture, tileMap);
}
diff --git a/src/view/MapView.ts b/src/view/MapView.ts
index edcbfbb..92784b7 100644
--- a/src/view/MapView.ts
+++ b/src/view/MapView.ts
@@ -1,6 +1,6 @@
import {nextPowerOf2} from '../util';
-import MapData from '../model/MapData';
+import MapState from '../model/state/MapState';
import Renderer from './renderer/Renderer';
export default class MapView {
@@ -13,7 +13,7 @@ export default class MapView {
constructor(
private readonly r: Renderer,
- private readonly map: MapData,
+ private readonly map: MapState,
private readonly tileTexture: WebGLTexture,
private readonly tileMap: Map<string, number>,
) {
@@ -22,9 +22,9 @@ export default class MapView {
const tileCount = nextPowerOf2(tileMap.size);
- for (let x = 0; x < map.width; x++)
- for (let y = 0; y < map.height; y++)
- this.addTile(vertexData, textureData, x, y, map.layers[0][y][x], tileCount);
+ for (let x = 0; x < map.data.width; x++)
+ for (let y = 0; y < map.data.height; y++)
+ this.addTile(vertexData, textureData, x, y, map.data.layers[0][y][x], tileCount);
const gl = r.getContext();
@@ -52,7 +52,7 @@ export default class MapView {
gl.bindBuffer(gl.ARRAY_BUFFER, this.textureBuffer);
gl.vertexAttribPointer(this.r.getTextureCoordLoc(), 2, gl.FLOAT, false, 0, 0);
- gl.drawArrays(gl.TRIANGLES, 0, 6 * this.map.width * this.map.height);
+ gl.drawArrays(gl.TRIANGLES, 0, 6 * this.map.data.width * this.map.data.height);
}
private addTile(vertexData: number[], textureData: number[], x: number, y: number, tile: string, tileCount: number) {
@@ -68,11 +68,11 @@ export default class MapView {
vertexData.push(x + 1); vertexData.push(y);
vertexData.push(x + 1); vertexData.push(y + 1);
- textureData.push((tileID) / tileCount); textureData.push(0);
+ textureData.push(tileID / tileCount); textureData.push(0);
textureData.push((tileID + 1) / tileCount); textureData.push(0);
- textureData.push((tileID) / tileCount); textureData.push(1);
+ textureData.push(tileID / tileCount); textureData.push(1);
- textureData.push((tileID) / tileCount); textureData.push(1);
+ textureData.push(tileID / tileCount); textureData.push(1);
textureData.push((tileID + 1) / tileCount); textureData.push(0);
textureData.push((tileID + 1) / tileCount); textureData.push(1);
}