From bd83449e79ad54b56eaae70e7d23b3314a11eeaf Mon Sep 17 00:00:00 2001 From: Mal Date: Wed, 5 Feb 2020 22:29:09 +0100 Subject: [PATCH] Row insertion implemented. --- tilorswift/js/Field.js | 2 +- tilorswift/js/Terrain.js | 42 ++++++++++++++++++++++++++++------------ tilorswift/style.css | 6 ++++++ 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/tilorswift/js/Field.js b/tilorswift/js/Field.js index 9d94faf..ea28d77 100644 --- a/tilorswift/js/Field.js +++ b/tilorswift/js/Field.js @@ -3,7 +3,7 @@ import TilorswiftFieldEnteredEvent from "./events/TilorswiftFieldEnteredEvent.js export default class Field { - constructor(tileset, index = 0) + constructor(tileset, index = -1) { this.tileset = tileset; this.index = index; diff --git a/tilorswift/js/Terrain.js b/tilorswift/js/Terrain.js index f37fd40..e081946 100644 --- a/tilorswift/js/Terrain.js +++ b/tilorswift/js/Terrain.js @@ -27,18 +27,7 @@ export default class Terrain this.htmlElement.style.height = this.tileset.getTileHeight() * this.tilesY + 'px'; for (let r = 0; r < this.tilesY; r++) { - let row = []; - let tr = document.createElement('tr'); - - for (let col = 0; col < this.tilesX; col++) { - let field = new Field(this.tileset); - let td = field.getElement(); - row.push(field); - tr.appendChild(td); - } - - this.fields.push(row); - this.htmlElement.appendChild(tr); + this.insertRow(); } window.addEventListener( @@ -59,6 +48,35 @@ export default class Terrain return this.tileset; } + addRows(quantity, index) + { + for (let q = 0; q < quantity; q++) { + this.insertRow(index); + this.tilesY++; + } + } + + insertRow(index = undefined) + { + let row = []; + let tr = document.createElement('tr'); + + for (let col = 0; col < this.tilesX; col++) { + let field = new Field(this.tileset); + let td = field.getElement(); + row.push(field); + tr.appendChild(td); + } + + if (index === undefined || index >= this.tilesY - 1) { + this.fields.push(row); + this.htmlElement.appendChild(tr); + } else { + this.fields = this.fields.slice(0, index).concat(row).concat(this.fields.slice(index)); + this.htmlElement.insertBefore(tr, this.htmlElement.childNodes[index]); + } + } + setFieldIndex(x, y, index) { this.fields[y][x].setIndex(index); diff --git a/tilorswift/style.css b/tilorswift/style.css index 970649b..770fb99 100644 --- a/tilorswift/style.css +++ b/tilorswift/style.css @@ -158,3 +158,9 @@ body { .field:hover .selection { opacity: 0.5; } + +/* +tr:hover > td > .selection { + opacity: 0.5; +} +*/ \ No newline at end of file