summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/rooms/_walls.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/rooms/_walls.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_walls.js134
1 files changed, 134 insertions, 0 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
new file mode 100644
index 0000000..f2f395b
--- /dev/null
+++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
@@ -0,0 +1,134 @@
+(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.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
+ }
+})()