31 lines
822 B
JavaScript
31 lines
822 B
JavaScript
|
import {Container, Renderable, Sprite} from '@avocado/graphics';
|
||
|
import {Layer, Tileset, TilesRenderer} from '@avocado/topdown';
|
||
|
|
||
|
export class LayerView extends Renderable {
|
||
|
|
||
|
constructor(layer, renderer) {
|
||
|
super();
|
||
|
this.container = new Container();
|
||
|
this.layer = layer;
|
||
|
this._renderer = renderer;
|
||
|
this._tileset = undefined;
|
||
|
Tileset.load(layer.tilesetUri).then((tileset) => {
|
||
|
this.tileset = tileset;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
get internal() {
|
||
|
return this.container.internal;
|
||
|
}
|
||
|
|
||
|
set tileset(tileset) {
|
||
|
this._tileset = tileset;
|
||
|
const tilesRenderer = new TilesRenderer(this.layer.tiles, tileset);
|
||
|
const chunk = tilesRenderer.renderChunk(this._renderer);
|
||
|
const tilesSprite = new Sprite(chunk);
|
||
|
this.container.removeAllChildren();
|
||
|
this.container.addChild(tilesSprite);
|
||
|
}
|
||
|
|
||
|
}
|