Files
tower/js/tiles.js
2021-05-10 03:51:24 +00:00

167 lines
5.7 KiB
JavaScript

import { Tile } from './tile.js';
// Straight
export const ROAD_LR = new Tile('road-lr', 6, 4);
export const ROAD_TB = new Tile('road-tb', 4, 6);
// Elbow
export const ROAD_BL = new Tile('road-bl', 6, 6);
export const ROAD_BR = new Tile('road-br', 6, 6);
export const ROAD_TL = new Tile('road-tl', 6, 6);
export const ROAD_TR = new Tile('road-tr', 6, 6);
// T
export const ROAD_BLR = new Tile('road-blr', 8, 6);
export const ROAD_TLR = new Tile('road-tlr', 8, 6);
export const ROAD_LTB = new Tile('road-ltb', 6, 8);
export const ROAD_RTB = new Tile('road-rtb', 6, 8);
// +
export const ROAD_TBLR = new Tile('road-tblr', 8, 8);
// Tower base
export const EMPTY = new Tile('empty', 4, 2);
// Straight
export const RIVER_LR = new Tile('river-lr', 6, 4);
export const RIVER_TB = new Tile('river-tb', 4, 6);
// Elbow
export const RIVER_BR = new Tile('river-br', 6, 6);
export const RIVER_BL = new Tile('river-bl', 6, 6);
export const RIVER_TR = new Tile('river-tr', 6, 6);
export const RIVER_TL = new Tile('river-tl', 6, 6);
export const BRIDGE_LR = new Tile('bridge-lr', 6, 4);
class Tower extends Tile {
get_elem(_) {
const elem = document.createElement('div');
elem.style.gridColumnEnd = `span ${this.width}`;
elem.style.gridRowEnd = `span ${this.height}`;
elem.style.position = 'relative';
const base = document.createElement('div');
elem.appendChild(base);
base.style.width = '100%';
base.style.height = '100%';
base.style.position = 'absolute';
base.style.top = '0';
base.style.left = '0';
base.style.backgroundImage = `url("images/tower/${this.name}.svg")`;
base.style.backgroundSize = 'cover';
base.style.zIndex = '2';
const back = document.createElement('div');
elem.appendChild(back);
back.style.width = '100%';
back.style.height = '100%';
back.style.position = 'absolute';
back.style.top = '0';
back.style.left = '0';
back.style.backgroundImage = `url("images/tower/${this.name}-back.svg")`;
back.style.backgroundSize = 'cover';
back.style.zIndex = '1';
const front = document.createElement('div');
elem.appendChild(front);
front.style.width = '100%';
front.style.height = '100%';
front.style.position = 'absolute';
front.style.top = '0';
front.style.left = '0';
front.style.backgroundImage = `url("images/tower/${this.name}-front.svg")`;
front.style.backgroundSize = 'cover';
front.style.zIndex = '3';
setInterval(() => {
back.animate([
{
'offset': 0.0,
'easing': 'cubic-bezier(0.02, 1.07, 0.73, 0.99)',
'top': '0',
},
{
'offset': 0.3,
'easing': 'linear',
'top': '20%',
},
{
'offset': 1.0,
'top': '0',
},
], {
'duration': 3000,
'iterations': 1,
});
front.animate([
{
'offset': 0.0,
'easing': 'cubic-bezier(0.02, 1.07, 0.73, 0.99)',
'top': '0',
},
{
'offset': 0.3,
'easing': 'linear',
'top': '20%',
},
{
'offset': 1.0,
'top': '0',
},
], {
'duration': 3000,
'iterations': 1,
});
}, 3250);
return elem;
}
}
export const FIREBALL1 = new Tower('fireball1', 4, 4);
class Fireball extends Tile {
get_elem(_) {
const elem = document.createElement('div');
elem.style.gridColumnEnd = `span ${this.width}`;
elem.style.gridRowEnd = `span ${this.height}`;
elem.style.position = 'relative';
const base = document.createElement('div');
elem.appendChild(base);
base.style.width = '100%';
base.style.height = '100%';
base.style.position = 'absolute';
base.style.top = '0';
base.style.left = '0';
base.style.backgroundImage = `url("images/tower/${this.name}.svg")`;
base.style.backgroundSize = 'cover';
base.style.visibility = 'hidden';
setInterval(() => {
base.animate([
{
'offset': 0.0,
'easing': 'cubic-bezier(0.33, 0.66, 0.66, 1.00)',
'top': '0',
},
{
'offset': 0.50,
'easing': 'cubic-bezier(0.33, 0.00, 0.66, 0.33)',
'top': '-500%',
},
{
'offset': 1.0,
'top': '0',
},
], {
'duration': 1500,
'iterations': 1,
});
base.animate([
{
'offset': 0.0,
'easing': 'linear',
'visibility': 'visible',
'left': '0',
'transform': 'rotate(0)',
},
{
'offset': 1.0,
'visibility': 'hidden',
'left': '1000%',
'transform': 'rotate(720deg)',
},
], {
'duration': 1500,
'iterations': 1,
});
}, 3250);
return elem;
}
}
export const FIREBALL = new Fireball('fireball', 2, 2);
//# sourceMappingURL=tiles.js.map