var Rooms = new function(){ var base = this base.list = {} base.regions = [] base.init = function(){ Rooms.builder.init() Rooms.clipper.init() Rooms.mover.init() } base.filter = function(f){ return _.values(base.list).filter(f) } base.add = function(room){ base.list[room.id] = room } base.add_with_rect = function(rect){ var room = new Room({ rect: rect, height: quantize(randrange(300,800), 50), }) base.add(room) } base.remove = function(room){ delete base.list[room.id] } base.count = function(){ return this.values().length } base.forEach = function(f){ return base.values().forEach(f) } base.values = function(){ return _.values(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() ) } }