From ea167e42a16b2022f16199ffcc21f8ef08656507 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Tue, 11 May 2021 03:12:32 +0000 Subject: [PATCH] Working animations --- js/grid.js | 5 +++-- js/grid.js.map | 2 +- js/layer.js | 6 +++--- js/layer.js.map | 2 +- js/layered_tile.js | 23 +++++++++++++++-------- js/layered_tile.js.map | 2 +- js/simple_tile.js | 6 ++++++ js/simple_tile.js.map | 2 +- js/tile.js.map | 2 +- js/tower.js | 3 ++- js/tower.js.map | 2 +- ts/grid.ts | 8 +++++--- ts/layer.ts | 9 +++++---- ts/layered_tile.ts | 27 ++++++++++++++++++--------- ts/simple_tile.ts | 7 +++++++ ts/tile.ts | 2 ++ ts/tower.ts | 3 ++- 17 files changed, 74 insertions(+), 37 deletions(-) diff --git a/js/grid.js b/js/grid.js index b598721..e294941 100644 --- a/js/grid.js +++ b/js/grid.js @@ -53,12 +53,13 @@ export class Grid { } } add_tile(layer, tile_factory, x, y) { - const elem = __classPrivateFieldGet(this, _layers).get(layer).add_tile(tile_factory); + const tile = __classPrivateFieldGet(this, _layers).get(layer).add_tile(tile_factory); + const elem = tile.get_elem(); // Grids are 1-indexed elem.style.gridColumnStart = `${x + 1}`; elem.style.gridRowStart = `${y + 1}`; __classPrivateFieldGet(this, _prnt).appendChild(elem); - return true; + return tile; } } _prnt = new WeakMap(), _tileset = new WeakMap(), _layers = new WeakMap(); diff --git a/js/grid.js.map b/js/grid.js.map index a2cda52..3110d60 100644 --- a/js/grid.js.map +++ b/js/grid.js.map @@ -1 +1 @@ -{"version":3,"file":"grid.js","sourceRoot":"","sources":["../ts/grid.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,MAAM,OAAO,IAAI;IAKf,YAAY,IAAiB;QAJ7B,wBAAmB;QACnB,2BAAiB;QACjB,kBAA8B,IAAI,GAAG,EAAiB,EAAC;QAGrD,uBAAA,IAAI,SAAS,IAAI,EAAC;QAClB,oCAAW,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,oCAAW,KAAK,CAAC,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC3D,oCAAW,KAAK,CAAC,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,uBAAA,IAAI,YAAY,GAAG,EAAC;QACpB,oCAAW,KAAK,CAAC,eAAe,GAAG,eAAe,sCAAa,aAAa,CAAC;QAE7E,sBAAsB;IACxB,CAAC;IAED,UAAU,CAAC,MAAgB;QACzB,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAS,MAAM,CAAC,CAAC;QAEtD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YAC3B,IAAI,CAAC,sCAAa,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;gBAC1B,KAAK,CAAC,WAAW,wCAAe,CAAC;gBACjC,sCAAa,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC/B;SACF;QAED,KAAK,MAAM,IAAI,IAAI,sCAAa,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACvB,kCAAkC;gBAClC,sCAAa,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3B;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,sCAAa,GAAG,CAAC,IAAI,CAAE,CAAC;YACtC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxB;IACH,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,YAAyB,EAAE,CAAS,EAAE,CAAS;QACrE,MAAM,IAAI,GAAG,sCAAa,GAAG,CAAC,KAAK,CAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7D,sBAAsB;QACtB,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,oCAAW,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"grid.js","sourceRoot":"","sources":["../ts/grid.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,MAAM,OAAO,IAAI;IAKf,YAAY,IAAiB;QAJ7B,wBAAmB;QACnB,2BAAiB;QACjB,kBAA8B,IAAI,GAAG,EAAiB,EAAC;QAGrD,uBAAA,IAAI,SAAS,IAAI,EAAC;QAClB,oCAAW,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,oCAAW,KAAK,CAAC,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC3D,oCAAW,KAAK,CAAC,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,uBAAA,IAAI,YAAY,GAAG,EAAC;QACpB,oCAAW,KAAK,CAAC,eAAe,GAAG,eAAe,sCAAa,aAAa,CAAC;QAE7E,sBAAsB;IACxB,CAAC;IAED,UAAU,CAAC,MAAgB;QACzB,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAS,MAAM,CAAC,CAAC;QAEtD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YAC3B,IAAI,CAAC,sCAAa,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;gBAC1B,KAAK,CAAC,WAAW,wCAAe,CAAC;gBACjC,sCAAa,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC/B;SACF;QAED,KAAK,MAAM,IAAI,IAAI,sCAAa,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACvB,kCAAkC;gBAClC,sCAAa,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3B;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,sCAAa,GAAG,CAAC,IAAI,CAAE,CAAC;YACtC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxB;IACH,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,YAAyB,EAAE,CAAS,EAAE,CAAS;QACrE,MAAM,IAAI,GAAG,sCAAa,GAAG,CAAC,KAAK,CAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,sBAAsB;QACtB,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,oCAAW,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file diff --git a/js/layer.js b/js/layer.js index a4fb052..1428ba9 100644 --- a/js/layer.js +++ b/js/layer.js @@ -24,9 +24,9 @@ export class Layer { __classPrivateFieldSet(this, _tileset, tileset); } add_tile(tile_factory) { - const elem = tile_factory.build(__classPrivateFieldGet(this, _tileset)).get_elem(); - elem.style.zIndex = `${__classPrivateFieldGet(this, _level)}`; - return elem; + const tile = tile_factory.build(__classPrivateFieldGet(this, _tileset)); + tile.get_elem().style.zIndex = `${__classPrivateFieldGet(this, _level)}`; + return tile; } } _level = new WeakMap(), _tileset = new WeakMap(); diff --git a/js/layer.js.map b/js/layer.js.map index 2541295..f377489 100644 --- a/js/layer.js.map +++ b/js/layer.js.map @@ -1 +1 @@ -{"version":3,"file":"layer.js","sourceRoot":"","sources":["../ts/layer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,MAAM,OAAO,KAAK;IAAlB;QACE,yBAAe;QACf,2BAAiB;IAenB,CAAC;IAbC,SAAS,CAAC,KAAa;QACrB,uBAAA,IAAI,UAAU,KAAK,EAAC;IACtB,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,uBAAA,IAAI,YAAY,OAAO,EAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,YAAyB;QAChC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,wCAAe,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,oCAAW,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"layer.js","sourceRoot":"","sources":["../ts/layer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,MAAM,OAAO,KAAK;IAAlB;QACE,yBAAe;QACf,2BAAiB;IAenB,CAAC;IAbC,SAAS,CAAC,KAAa;QACrB,uBAAA,IAAI,UAAU,KAAK,EAAC;IACtB,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,uBAAA,IAAI,YAAY,OAAO,EAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,YAAyB;QAChC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,wCAAe,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,oCAAW,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file diff --git a/js/layered_tile.js b/js/layered_tile.js index d84abfc..04f81cd 100644 --- a/js/layered_tile.js +++ b/js/layered_tile.js @@ -2,17 +2,24 @@ import { Tile } from './tile.js'; export class LayeredTile extends Tile { constructor(width, height, tiles) { super(width, height); + this.tiles = []; this.elem.style.position = 'relative'; for (let i = 0; i < tiles.length; i++) { const tile = tiles[i]; - const sub = tile.get_elem(); - this.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}`; + this.tiles.push(tile); + const child = tile.get_elem(); + this.elem.appendChild(child); + child.style.width = '100%'; + child.style.height = '100%'; + child.style.position = 'absolute'; + child.style.top = '0'; + child.style.left = '0'; + child.style.zIndex = `${i}`; + } + } + play(name) { + for (const tile of this.tiles) { + tile.play(name); } } } diff --git a/js/layered_tile.js.map b/js/layered_tile.js.map index 09649b1..c8baf20 100644 --- a/js/layered_tile.js.map +++ b/js/layered_tile.js.map @@ -1 +1 @@ -{"version":3,"file":"layered_tile.js","sourceRoot":"","sources":["../ts/layered_tile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,WAAY,SAAQ,IAAI;IAGnC,YAAY,KAAa,EAAE,MAAc,EAAE,KAAa;QACtD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YACzB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;SAC3B;IACH,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"layered_tile.js","sourceRoot":"","sources":["../ts/layered_tile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,WAAY,SAAQ,IAAI;IAGnC,YAAY,KAAa,EAAE,MAAc,EAAE,KAAa;QACtD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YAC3B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC5B,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAClC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YACvB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;SAC7B;IACH,CAAC;IAED,IAAI,CAAC,IAAY;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;IACH,CAAC;CACF"} \ No newline at end of file diff --git a/js/simple_tile.js b/js/simple_tile.js index 241e093..44c4a19 100644 --- a/js/simple_tile.js +++ b/js/simple_tile.js @@ -6,5 +6,11 @@ export class SimpleTile extends Tile { this.elem.style.backgroundSize = 'cover'; this.animations = animations; } + play(name) { + const animation = this.animations.get(name); + if (animation) { + this.elem.animate(...animation); + } + } } //# sourceMappingURL=simple_tile.js.map \ No newline at end of file diff --git a/js/simple_tile.js.map b/js/simple_tile.js.map index 85cbaf5..e199de6 100644 --- a/js/simple_tile.js.map +++ b/js/simple_tile.js.map @@ -1 +1 @@ -{"version":3,"file":"simple_tile.js","sourceRoot":"","sources":["../ts/simple_tile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,UAAW,SAAQ,IAAI;IAGlC,YAAY,KAAa,EAAE,MAAc,EAAE,SAAiB,EAAE,UAA6C;QACzG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAEzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"simple_tile.js","sourceRoot":"","sources":["../ts/simple_tile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,UAAW,SAAQ,IAAI;IAGlC,YAAY,KAAa,EAAE,MAAc,EAAE,SAAiB,EAAE,UAA6C;QACzG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAEzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAY;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;SACjC;IACH,CAAC;CACF"} \ No newline at end of file diff --git a/js/tile.js.map b/js/tile.js.map index 71bbd8e..e0f066d 100644 --- a/js/tile.js.map +++ b/js/tile.js.map @@ -1 +1 @@ -{"version":3,"file":"tile.js","sourceRoot":"","sources":["../ts/tile.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAGxB,YAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,MAAM,EAAE,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"tile.js","sourceRoot":"","sources":["../ts/tile.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAGxB,YAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,MAAM,EAAE,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CAGF"} \ No newline at end of file diff --git a/js/tower.js b/js/tower.js index 94e68b1..0452823 100644 --- a/js/tower.js +++ b/js/tower.js @@ -73,7 +73,8 @@ export function main() { grid.add_tile('bridge', tiles.BRIDGE_LR, 46, 26); grid.add_tile('bridge', tiles.BRIDGE_LR, 46, 18); grid.add_tile('bridge', tiles.BRIDGE_LR, 46, 10); - grid.add_tile('tower', tiles.TOWER_FIREBALL1, 30, 18); + const tower = grid.add_tile('tower', tiles.TOWER_FIREBALL1, 30, 18); + setInterval(() => tower.play('fire'), 3250); } ; main(); diff --git a/js/tower.js.map b/js/tower.js.map index d37178a..56b2e67 100644 --- a/js/tower.js.map +++ b/js/tower.js.map @@ -1 +1 @@ -{"version":3,"file":"tower.js","sourceRoot":"","sources":["../ts/tower.ts"],"names":[],"mappings":"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EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEjD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAAA,CAAC;AAEF,IAAI,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"tower.js","sourceRoot":"","sources":["../ts/tower.ts"],"names":[],"mappings":"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EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpE,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAAA,CAAC;AAEF,IAAI,EAAE,CAAC"} \ No newline at end of file diff --git a/ts/grid.ts b/ts/grid.ts index 7edf86d..def0f41 100644 --- a/ts/grid.ts +++ b/ts/grid.ts @@ -1,4 +1,5 @@ import { Layer } from './layer.js'; +import { Tile } from './tile.js'; import { TileFactory } from './tile_factory.js'; export class Grid { @@ -49,12 +50,13 @@ export class Grid { } } - add_tile(layer: string, tile_factory: TileFactory, x: number, y: number) { - const elem = this.#layers.get(layer)!.add_tile(tile_factory); + add_tile(layer: string, tile_factory: TileFactory, x: number, y: number): Tile { + const tile = this.#layers.get(layer)!.add_tile(tile_factory); + const elem = tile.get_elem(); // Grids are 1-indexed elem.style.gridColumnStart = `${x + 1}`; elem.style.gridRowStart = `${y + 1}`; this.#prnt.appendChild(elem); - return true; + return tile; } } diff --git a/ts/layer.ts b/ts/layer.ts index ca0efcb..63083ad 100644 --- a/ts/layer.ts +++ b/ts/layer.ts @@ -1,3 +1,4 @@ +import { Tile } from './tile.js'; import { TileFactory } from './tile_factory.js'; export class Layer { @@ -12,9 +13,9 @@ export class Layer { this.#tileset = tileset; } - add_tile(tile_factory: TileFactory): HTMLElement { - const elem = tile_factory.build(this.#tileset).get_elem(); - elem.style.zIndex = `${this.#level}`; - return elem; + add_tile(tile_factory: TileFactory): Tile { + const tile = tile_factory.build(this.#tileset); + tile.get_elem().style.zIndex = `${this.#level}`; + return tile; } } diff --git a/ts/layered_tile.ts b/ts/layered_tile.ts index ddad046..b1d6a1d 100644 --- a/ts/layered_tile.ts +++ b/ts/layered_tile.ts @@ -1,23 +1,32 @@ import { Tile } from './tile.js'; export class LayeredTile extends Tile { - elem: HTMLElement; + tiles: Tile[]; constructor(width: number, height: number, tiles: Tile[]) { super(width, height); + this.tiles = []; this.elem.style.position = 'relative'; for (let i = 0; i < tiles.length; i++) { const tile = tiles[i]; - const sub = tile.get_elem(); - this.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}`; + this.tiles.push(tile); + + const child = tile.get_elem(); + this.elem.appendChild(child); + child.style.width = '100%'; + child.style.height = '100%'; + child.style.position = 'absolute'; + child.style.top = '0'; + child.style.left = '0'; + child.style.zIndex = `${i}`; + } + } + + play(name: string): void { + for (const tile of this.tiles) { + tile.play(name); } } } diff --git a/ts/simple_tile.ts b/ts/simple_tile.ts index 0e914f7..232cf37 100644 --- a/ts/simple_tile.ts +++ b/ts/simple_tile.ts @@ -11,5 +11,12 @@ export class SimpleTile extends Tile { this.animations = animations; } + + play(name: string): void { + const animation = this.animations.get(name); + if (animation) { + this.elem.animate(...animation); + } + } } diff --git a/ts/tile.ts b/ts/tile.ts index ad06f31..aba7868 100644 --- a/ts/tile.ts +++ b/ts/tile.ts @@ -10,4 +10,6 @@ export abstract class Tile { get_elem(): HTMLElement { return this.elem; } + + abstract play(name: string): void; } diff --git a/ts/tower.ts b/ts/tower.ts index 988925b..29c4785 100644 --- a/ts/tower.ts +++ b/ts/tower.ts @@ -81,7 +81,8 @@ export function main() { grid.add_tile('bridge', tiles.BRIDGE_LR, 46, 18); grid.add_tile('bridge', tiles.BRIDGE_LR, 46, 10); - grid.add_tile('tower', tiles.TOWER_FIREBALL1, 30, 18); + const tower = grid.add_tile('tower', tiles.TOWER_FIREBALL1, 30, 18); + setInterval(() => tower.play('fire'), 3250); }; main();