(function(){ var vec2, Rect, Room, sort, UidGenerator, _ if ('window' in this) { vec2 = window.vec2 Rect = window.Rect Room = window.Room sort = window.sort UidGenerator = window.UidGenerator _ = window._ } else { vec2 = require('../../models/vec2') Rect = require('../../models/rect') Room = require('../../models/room') UidGenerator = require('../../util/uid') sort = require('../../util/sort') _ = require('lodash') FRONT = 0x1, BACK = 0x2, LEFT = 0x4, RIGHT = 0x8, FLOOR = 0x10, CEILING = 0x20 TOP = CEILING, BOTTOM = FLOOR function sidesToString(sides){ var s = "" if (sides & FRONT) s += "front " if (sides & BACK) s += "back " if (sides & LEFT) s += "left " if (sides & RIGHT) s += "right " if (sides & TOP) s += "top " if (sides & BOTTOM) s += "bottom " return s } } var Walls = new function(){ var base = this base.list = [] base.lookup = {} base.colors = {} base.first = function(){ for (var i in base.list) { if (base.list.hasOwnProperty(i)) { return base.list[i] } } } base.assign = function(list){ base.list = list base.lookup = {} list.forEach(function(wall){ base.lookup[wall.id] = wall }) } base.bind = function(){ base.list.forEach(function(wall){ wall.bind() }) } base.count = function(){ return this.list.length } base.forEach = function(f){ return base.list.forEach(f) } base.map = function(f){ return base.list.map(f) } base.serialize = function(){ var data = [] base.list.forEach(function(wall){ data.push(wall.serialize()) }) return data } base.deserialize = function(walls_data){ walls_data.forEach(function(wall_data){ if (! wall_data) { return } var wall = base.lookup[ wall_data.id ] wall.deserialize( wall_data ) }) }, base.paint = function(){ var wallColor = rgba_string(Walls.colors.wall, app.defaults.wallOpacity) var outlineColor = rgb_string(Walls.colors.outline) var floorColor = rgb_string(Walls.colors.floor) var ceilingColor = rgb_string(Walls.colors.ceiling) Walls.forEach(function(wall){ wall.outline(wallColor, outlineColor) }) Rooms.forEach(function(room){ room.setFloorColor(floorColor) room.setCeilingColor(ceilingColor) }) } base.setColor = { wall: function(rgb){ var rgbaColor = rgba_string(rgb, app.defaults.wallOpacity) Walls.colors.wall = rgb Walls.forEach(function(wall){ wall.outline(rgbaColor, null) }) }, outline: function(rgb){ var rgbColor = rgb_string(rgb) Walls.colors.outline = rgb Walls.forEach(function(wall){ wall.outline(null, rgbColor) }) }, floor: function(rgb){ var rgbColor = rgb_string(rgb) Walls.colors.floor = rgb Rooms.forEach(function(room){ room.setFloorColor(rgbColor) }) }, ceiling: function(rgb){ var rgbColor = rgb_string(rgb) Walls.colors.ceiling = rgb Rooms.forEach(function(room){ room.setCeilingColor(rgbColor) }) }, } } if ('window' in this) { window.Walls = Walls } else { module.exports = Walls } })()