diff options
Diffstat (limited to 'assets/javascripts/rectangles/models/room.js')
| -rw-r--r-- | assets/javascripts/rectangles/models/room.js | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/assets/javascripts/rectangles/models/room.js b/assets/javascripts/rectangles/models/room.js index 440dacb..3636284 100644 --- a/assets/javascripts/rectangles/models/room.js +++ b/assets/javascripts/rectangles/models/room.js @@ -61,12 +61,13 @@ window.Room = (function(){ base.mx_walls.forEach(function(wall){ // ignore half-walls for now - if (! wall.side) return; - if (side_groups[ wall.side ]) { - side_groups[ wall.side ].push(wall) + var side = wall.side || wall.half_side + + if (side_groups[side]) { + side_groups[side].push(wall) } else { - side_groups[ wall.side ] = [wall] + side_groups[side] = [wall] } }) @@ -81,11 +82,19 @@ window.Room = (function(){ els.sort(compare_z) } - var wall = new_wall(els.shift()) - walls.push(wall) + var wall els.forEach(function(el){ - if (side & FRONT_BACK && wall.rect.x.b == el.rect.x.a) { + if (el.half_side) { + wall = new_wall(el) + walls.push(wall) + wall = null + } + else if (! wall) { + wall = new_wall(el) + walls.push(wall) + } + else if (side & FRONT_BACK && wall.rect.x.b == el.rect.x.a) { wall.rect.x.b = el.rect.x.b wall.mx.push(el) } @@ -103,7 +112,8 @@ window.Room = (function(){ function new_wall (el) { return new Wall ({ room: base.id, - side: el.side, + side: el.side | el.half_side, + half_side: el.half_side, rect: el.rect.clone(), el: el, }) |
