antiyoy.js/GameElement.js

62 lines
2.0 KiB
JavaScript
Raw Normal View History

2019-04-08 19:54:07 +00:00
class GameElement {
constructor(x, y, game, asset, setObject = true) {
this.game = game;
this.x = Math.min(x, this.game.fieldSize.x - 1);
this.y = Math.min(y, this.game.fieldSize.y - 1);
this.uuid = guid();
this.createElement(asset);
if(setObject)
this.game.field[x][y].object = this;
}
adjustPosition() {
const tile = this.game.field[this.x][this.y].element;
this.displayWidth = Math.round(this.game.hexagonSize.width * .9);
let offsetX = tile.offsetLeft;
let offsetY = tile.offsetTop;
if (this.y % 2 !== 0)
offsetX += Math.round(this.displayWidth * .5);
this.element.style.width = this.displayWidth + 'px';
this.element.style.left = offsetX + 'px';
this.element.style.top = offsetY + 'px';
}
createElement(asset) {
this.element = GameElement.createElement(asset, (this.constructor.name).toLowerCase());
this.adjustPosition();
this.game.view.appendChild(this.element);
}
static createElement(asset, className) {
const element = document.createElement('img');
element.src = 'assets/' + asset;
element.ondragstart = () => {
return false
};
element.ondragend = () => {
return false
};
element.classList.add('gameElement', className);
return element;
}
static getDraggingObject(game, className, image) {
const draggingContainer = body.createChild('div', 'draggingContainer');
const dragging = GameElement.createElement(image, className);
dragging.classList.add('dragging');
dragging.style.width = game.hexagonSize.width * game.scale * 1.1 + 'px';
dragging.style.height = game.hexagonSize.padding * game.scale * 1.1 + 'px';
draggingContainer.appendChild(dragging);
return draggingContainer;
}
update() {
this.adjustPosition();
this.game.updateBalance();
}
}