2021-05-09 04:58:29 +00:00
|
|
|
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {
|
|
|
|
|
if (!privateMap.has(receiver)) {
|
|
|
|
|
throw new TypeError("attempted to set private field on non-instance");
|
|
|
|
|
}
|
|
|
|
|
privateMap.set(receiver, value);
|
|
|
|
|
return value;
|
|
|
|
|
};
|
|
|
|
|
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {
|
|
|
|
|
if (!privateMap.has(receiver)) {
|
|
|
|
|
throw new TypeError("attempted to get private field on non-instance");
|
|
|
|
|
}
|
|
|
|
|
return privateMap.get(receiver);
|
|
|
|
|
};
|
2021-05-09 22:09:06 +00:00
|
|
|
var _prnt, _tileset, _layers;
|
2021-05-09 04:58:29 +00:00
|
|
|
import { Layer } from './layer.js';
|
|
|
|
|
export class Grid {
|
|
|
|
|
constructor(prnt) {
|
|
|
|
|
_prnt.set(this, void 0);
|
|
|
|
|
_tileset.set(this, void 0);
|
|
|
|
|
_layers.set(this, new Map());
|
|
|
|
|
__classPrivateFieldSet(this, _prnt, prnt);
|
|
|
|
|
__classPrivateFieldGet(this, _prnt).style.display = 'grid';
|
|
|
|
|
}
|
|
|
|
|
set_size(x, y) {
|
|
|
|
|
__classPrivateFieldGet(this, _prnt).style.gridTemplateColumns = `repeat(${x}, 1fr)`;
|
|
|
|
|
__classPrivateFieldGet(this, _prnt).style.gridTemplateRows = `repeat(${y}, 1fr)`;
|
|
|
|
|
}
|
|
|
|
|
set_tileset(set) {
|
|
|
|
|
__classPrivateFieldSet(this, _tileset, set);
|
2021-05-09 22:09:06 +00:00
|
|
|
__classPrivateFieldGet(this, _prnt).style.backgroundImage = `url("images/${__classPrivateFieldGet(this, _tileset)}/land.svg")`;
|
2021-05-09 04:58:29 +00:00
|
|
|
// TODO: Notify layers
|
|
|
|
|
}
|
|
|
|
|
set_layers(layers) {
|
|
|
|
|
const newNames = new Set(layers);
|
|
|
|
|
for (const name of newNames) {
|
|
|
|
|
if (!__classPrivateFieldGet(this, _layers).has(name)) {
|
2021-05-09 22:09:06 +00:00
|
|
|
const layer = new Layer();
|
2021-05-09 04:58:29 +00:00
|
|
|
layer.set_tileset(__classPrivateFieldGet(this, _tileset));
|
|
|
|
|
__classPrivateFieldGet(this, _layers).set(name, layer);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (const name of __classPrivateFieldGet(this, _layers).keys()) {
|
|
|
|
|
if (!newNames.has(name)) {
|
|
|
|
|
// TODO: Notify layer to tear down
|
|
|
|
|
__classPrivateFieldGet(this, _layers).delete(name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (let i = 0; i < layers.length; i++) {
|
|
|
|
|
const name = layers[i];
|
|
|
|
|
const level = i + 1;
|
|
|
|
|
const layer = __classPrivateFieldGet(this, _layers).get(name);
|
|
|
|
|
layer.set_level(level);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-11 03:23:28 +00:00
|
|
|
add_tile(tile_factory, x, y) {
|
|
|
|
|
const tile = __classPrivateFieldGet(this, _layers).get(tile_factory.layer_name).add_tile(tile_factory);
|
2021-05-09 04:58:29 +00:00
|
|
|
// Grids are 1-indexed
|
2021-05-11 03:23:28 +00:00
|
|
|
tile.elem.style.gridColumnStart = `${x + 1}`;
|
|
|
|
|
tile.elem.style.gridRowStart = `${y + 1}`;
|
|
|
|
|
__classPrivateFieldGet(this, _prnt).appendChild(tile.elem);
|
2021-05-11 03:12:32 +00:00
|
|
|
return tile;
|
2021-05-09 04:58:29 +00:00
|
|
|
}
|
|
|
|
|
}
|
2021-05-09 22:09:06 +00:00
|
|
|
_prnt = new WeakMap(), _tileset = new WeakMap(), _layers = new WeakMap();
|
2021-05-09 04:58:29 +00:00
|
|
|
//# sourceMappingURL=grid.js.map
|