Files
rotsock/serverjs/map.js
T

73 lines
1.6 KiB
JavaScript

// map.js
// =========
var ROT = require('rot-js');
var Glyph = require('./glyph.js');
var Tile = require('./tile.js');
var w = 80;
var h = 40;
function Map(tiles) {
this._tiles = tiles;
// cache the width and height based
// on the length of the dimensions of
// the tiles array
this._width = tiles.length;
this._height = tiles[0].length;
};
// Standard getters
Map.prototype.getWidth = function() {
return this._width;
};
Map.prototype.getHeight = function() {
return this._height;
};
// Gets the tile for a given coordinate set
Map.prototype.getTile = function(x, y) {
// Make sure we are inside the bounds. If we aren't, return
// null tile.
if (x < 0 || x >= this._width || y < 0 || y >= this._height) {
return Tile.nullTile;
} else {
return this._tiles[x][y] || Tile.nullTile;
}
};
Map.prototype.consoleDisplay = function() {
for (var x = 0; x < this.getWidth(); x++) {
for (var y = 0; y < this.getHeight(); y++) {
console.log(this.getTile(x, y));
}
console.log('\n');
}
}
function createArena(w, h) {
var tilearray = []
for (var x = 0; x < w; x++) {
tilearray.push([]);
for (var y = 0; y < h; y++) {
tilearray[x].push(Tile.Tile.nullTile);
}
}
console.log(tilearray);
var generator = new ROT.Map.Arena(w, h);
generator.create(function(x, y, v) {
if (v === 1) {
tilearray[x][y] = Tile.Tile.floorTile;
} else {
tilearray[x][y] = Tile.Tile.wallTile;
}
});
return new Map(tilearray);
}
module.exports = {
Map,
createArena,
};