Tower class hierarchy

This commit is contained in:
Ian Gulliver
2021-05-11 02:57:17 +00:00
parent 495aeb6204
commit 0ff24fe806
28 changed files with 346 additions and 279 deletions

View File

@@ -1,35 +1,16 @@
import { LayeredTile } from './layered_tile.js';
import { TileFactory } from './tile_factory.js';
export class LayeredTileFactory extends TileFactory {
constructor(tiles) {
super('', tiles[0].width, tiles[0].height);
this.tiles = tiles;
constructor(tile_factories) {
super(tile_factories[0].width, tile_factories[0].height);
this.tile_factories = tile_factories;
}
get_elem(tileset) {
const elem = document.createElement('div');
elem.style.gridColumnEnd = `span ${this.width}`;
elem.style.gridRowEnd = `span ${this.height}`;
elem.style.position = 'relative';
for (let i = 0; i < this.tiles.length; i++) {
const tile = this.tiles[i];
const sub = tile.get_elem(tileset);
elem.appendChild(sub);
sub.style.width = '100%';
sub.style.height = '100%';
sub.style.position = 'absolute';
sub.style.top = '0';
sub.style.left = '0';
sub.style.zIndex = `${i}`;
build(tileset) {
const tiles = [];
for (const tile_factory of this.tile_factories) {
tiles.push(tile_factory.build(tileset));
}
elem.addEventListener('animate', (e) => {
for (const sub of elem.children) {
sub.dispatchEvent(new CustomEvent('animate', { 'detail': e.detail }));
}
});
// XXX removeme
setInterval(() => {
elem.dispatchEvent(new CustomEvent('animate', { 'detail': { 'name': 'fire' } }));
}, 3250);
return elem;
return new LayeredTile(this.width, this.height, tiles);
}
}
//# sourceMappingURL=layered_tile_factory.js.map