MapView: scale view

This commit is contained in:
Matthias Schiffer 2016-01-07 19:21:52 +01:00
parent e2721d4ef6
commit 342af3b087

View file

@ -64,6 +64,7 @@ export default class MapView {
private canvas: HTMLCanvasElement;
private ctx: CanvasRenderingContext2D;
private scale: number;
private tiles: {[key: string]: HTMLImageElement};
private entitySprites: {[key: string]: HTMLImageElement};
@ -106,6 +107,9 @@ export default class MapView {
this.canvas.width = w;
this.canvas.height = h;
var pixels = Math.max(w/20, h/15.0);
this.scale = Math.ceil(pixels / tileSize);
this.redraw()
}
@ -113,7 +117,7 @@ export default class MapView {
if (!tile)
return;
this.ctx.drawImage(tile, x, y);
this.ctx.drawImage(tile, x*this.scale, y*this.scale, tileSize*this.scale, tileSize*this.scale);
}
private drawEntity(e: EntityPosition, time: number): boolean {
@ -127,8 +131,8 @@ export default class MapView {
sprite,
tiles(e.direction), 0,
tileSize, tileSize,
tiles(p.x), tiles(p.y),
tileSize, tileSize
tiles(p.x)*this.scale, tiles(p.y)*this.scale,
tileSize*this.scale, tileSize*this.scale
);
return !!e.transition;
@ -141,7 +145,7 @@ export default class MapView {
var h = this.canvas.height;
this.ctx.translate(Math.round(w/2), Math.round(h/2));
this.ctx.translate(-tiles(origin.x + 0.5), -tiles(origin.y + 0.5));
this.ctx.translate(-tiles(origin.x + 0.5)*this.scale, -tiles(origin.y + 0.5)*this.scale);
}
private draw(time: number) {
@ -158,6 +162,11 @@ export default class MapView {
this.setOrigin(time);
(<any>this.ctx).mozImageSmoothingEnabled = false;
(<any>this.ctx).webkitImageSmoothingEnabled = false;
(<any>this.ctx).msImageSmoothingEnabled = false;
(<any>this.ctx).imageSmoothingEnabled = false;
this.map.layers.forEach((layer) => {
let y = 0;