diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/rooms/_rooms.js')
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/rooms/_rooms.js | 196 |
1 files changed, 118 insertions, 78 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js index e0033e3..f7fad3e 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js +++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js @@ -1,99 +1,139 @@ -var Rooms = new function(){ - - var base = this - - base.list = {} - base.walls = {} - base.regions = [] +(function(){ - base.init = function(){ - Rooms.builder.init() - Rooms.clipper.init() - Rooms.mover.init() + 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._ } - - base.filter = function(f){ - return _.values(base.list).filter(f) + else { + vec2 = require('../../models/vec2') + Rect = require('../../models/rect') + Room = require('../../models/room') + sort = require('../../util/sort') + UidGenerator = require('../../util/uid') + _ = 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 Rooms = new function(){ + + var base = this - base.add = function(room){ - base.list[room.id] = room - } + base.list = {} + base.walls = {} + base.regions = [] + + base.init = function(){ + Rooms.builder.init() + Rooms.clipper.init() + Rooms.mover.init() + } - base.add_with_rect = function(rect){ - var room = new Room({ - rect: rect, - height: 500 - }) - base.add(room) - return room - } + base.filter = function(f){ + return _.values(base.list).filter(f) + } - base.remove = function(room){ - delete base.list[room.id] - Rooms.clipper.update() - } + base.add = function(room){ + base.list[room.id] = room + } - base.removeAll = function(){ - base.list = {} - base.regions = [] - Rooms.clipper.update() - } + base.add_with_rect = function(rect){ + var room = new Room({ + rect: rect, + height: 500 + }) + base.add(room) + return room + } - base.count = function(){ - return this.values().length - } + base.remove = function(room){ + delete base.list[room.id] + Rooms.clipper.update() + } - base.forEach = function(f){ - return base.values().forEach(f) - } + base.removeAll = function(){ + base.list = {} + base.regions = [] + Rooms.clipper.update() + } - base.map = function(f){ - return base.values().map(f) - } + base.count = function(){ + return this.values().length + } - base.values = function(){ - return _.values(base.list) - } + base.forEach = function(f){ + return base.values().forEach(f) + } - base.serialize = function(){ - var rooms = base.map(function(room){ - return room.serialize() - }) - return rooms - } + base.map = function(f){ + return base.values().map(f) + } - base.deserialize = function(rooms_data){ - rooms_data.forEach(function(data){ - var rect = new Rect(data.rect.x[0], data.rect.y[0], data.rect.x[1], data.rect.y[1]) - var room = new Room({ - id: data.id, - rect: rect, - height: data.height + base.values = function(){ + return _.values(base.list) + } + + base.serialize = function(){ + var rooms = base.map(function(room){ + return room.serialize() }) - base.add(room) - }) - Rooms.clipper.update() - } + return rooms + } + + base.deserialize = function(rooms_data){ + rooms_data.forEach(function(data){ + var rect = new Rect(data.rect.x[0], data.rect.y[0], data.rect.x[1], data.rect.y[1]) + var room = new Room({ + id: data.id, + rect: rect, + height: data.height + }) + base.add(room) + }) + Rooms.clipper.update() + } - base.serializeWalls = function(){ - return [] - } + base.serializeWalls = function(){ + return [] + } - base.deserializeWalls = function(walls_data){ - return [] - } + base.deserializeWalls = function(walls_data){ + return [] + } + + base.uid = UidGenerator(base.list) - base.uid = UidGenerator(base.list) + base.sorted_by_position = function(){ + return sort.rooms_by_position( base.values() ) + } + base.sorted_by_height = function(){ + return sort.rooms_by_height( base.values() ) + } + base.sorted_by_area = function(){ + return sort.rooms_by_area( base.values() ) + } - base.sorted_by_position = function(){ - return sort_rooms_by_position( base.values() ) } - base.sorted_by_height = function(){ - return sort_rooms_by_height( base.values() ) + + if ('window' in this) { + window.Rooms = Rooms } - base.sorted_by_area = function(){ - return sort_rooms_by_area( base.values() ) + else { + module.exports = Rooms } - -} +})() |
