view: rename tile module to sprite

This commit is contained in:
Matthias Schiffer 2018-10-31 18:41:28 +01:00
parent 84762894c8
commit 69be8d2ef8
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C
2 changed files with 17 additions and 17 deletions

View file

@ -2,12 +2,12 @@ import MapData from '../model/data/MapData';
import { mapValues, nextPowerOf2 } from '../util';
import Renderer from './renderer/Renderer';
import { TileCoords, TileView, TileViewBuilder } from './tile';
import { SpriteCoords, SpriteView, SpriteViewBuilder } from './sprite';
import { loadImages, mkTexture } from './util/image';
interface TileMap {
texture: WebGLTexture;
tiles: Map<string, TileCoords>;
tiles: Map<string, SpriteCoords>;
}
function loadTiles(tiles: Map<string, string>): Promise<Map<string, HTMLImageElement>> {
@ -27,7 +27,7 @@ function mkTileMap(
canvas.width = canvas.height = canvasSize;
let x = 0, y = 0;
const map: Map<string, TileCoords> = new Map();
const map: Map<string, SpriteCoords> = new Map();
const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;
for (const [k, tile] of tiles) {
@ -47,7 +47,7 @@ function mkTileMap(
};
}
function addTile(builder: TileViewBuilder, tileMap: TileMap, x: number, y: number, tile: string) {
function addSprite(builder: SpriteViewBuilder, tileMap: TileMap, x: number, y: number, tile: string) {
if (tile === ' ')
return;
@ -55,19 +55,19 @@ function addTile(builder: TileViewBuilder, tileMap: TileMap, x: number, y: numbe
if (!tilePos)
throw new Error('invalid tile specifier in map data');
builder.addTile([x, y, x + 1, y + 1], tilePos);
builder.addSprite([x, y, x + 1, y + 1], tilePos);
}
export async function loadMap(r: Renderer, map: MapData): Promise<TileView> {
export async function loadMap(r: Renderer, map: MapData): Promise<SpriteView> {
const tiles = await loadTiles(map.tiles);
const tileMap = mkTileMap(r.getContext(), tiles);
const builder = new TileViewBuilder(r, tileMap.texture);
const builder = new SpriteViewBuilder(r, tileMap.texture);
for (const layer of map.layers)
for (let x = 0; x < map.width; x++)
for (let y = 0; y < map.height; y++)
addTile(builder, tileMap, x, y, layer[y][x]);
addSprite(builder, tileMap, x, y, layer[y][x]);
return builder.build();
}

View file

@ -1,9 +1,9 @@
import Renderer from './renderer/Renderer';
export type TileCoords = [number, number, number, number];
export type SpriteCoords = [number, number, number, number];
export class TileViewBuilder {
private static pushTile(buf: number[], coords: TileCoords): void {
export class SpriteViewBuilder {
private static pushSprite(buf: number[], coords: SpriteCoords): void {
const [x1, y1, x2, y2] = coords;
buf.push(x1); buf.push(y1);
@ -20,17 +20,17 @@ export class TileViewBuilder {
constructor(private readonly r: Renderer, private readonly texture: WebGLTexture) {}
public addTile(vertexCoords: TileCoords, texCoords: TileCoords): void {
TileViewBuilder.pushTile(this.vertexData, vertexCoords);
TileViewBuilder.pushTile(this.textureData, texCoords);
public addSprite(vertexCoords: SpriteCoords, texCoords: SpriteCoords): void {
SpriteViewBuilder.pushSprite(this.vertexData, vertexCoords);
SpriteViewBuilder.pushSprite(this.textureData, texCoords);
}
public build(): TileView {
return new TileView(this.r, this.texture, this.vertexData, this.textureData);
public build(): SpriteView {
return new SpriteView(this.r, this.texture, this.vertexData, this.textureData);
}
}
export class TileView {
export class SpriteView {
private readonly vertexCount: number;
private readonly vertexBuffer: WebGLBuffer;
private readonly textureBuffer: WebGLBuffer;