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(); } }