summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/models/room.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/models/room.js')
-rw-r--r--public/assets/javascripts/rectangles/models/room.js49
1 files changed, 41 insertions, 8 deletions
diff --git a/public/assets/javascripts/rectangles/models/room.js b/public/assets/javascripts/rectangles/models/room.js
index 61a7447..d19ca2f 100644
--- a/public/assets/javascripts/rectangles/models/room.js
+++ b/public/assets/javascripts/rectangles/models/room.js
@@ -1,4 +1,32 @@
-window.Room = (function(){
+
+(function(){
+ var vec2, Rect, sort
+ if ('window' in this) {
+ vec2 = window.vec2
+ Rect = window.Rect
+ sort = window.sort
+ }
+ else {
+ vec2 = require('./vec2')
+ Rect = require('./rect')
+ UidGenerator = require('../util/uid')
+ Rooms = { uid: new UidGenerator({}) }
+ sort = require('../util/sort')
+ FRONT = 0x1, BACK = 0x2, LEFT = 0x4, RIGHT = 0x8, FLOOR = 0x10, CEILING = 0x20
+ TOP = CEILING, BOTTOM = FLOOR
+ FRONT_BACK = FRONT | BACK
+ LEFT_RIGHT = LEFT | RIGHT
+ 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 Room = function(opt){
this.id = opt.id || Rooms.uid("room_")
@@ -81,10 +109,10 @@ window.Room = (function(){
var side = pair[0], els = pair[1]
if (side & LEFT_RIGHT) {
- els.sort(compare_x)
+ els.sort(sort.compare_x)
}
else if (side & FRONT_BACK) {
- els.sort(compare_z)
+ els.sort(sort.compare_z)
}
// wall holds state for the last wall we created/saw..
@@ -212,17 +240,22 @@ window.Room = (function(){
if (contains_x) {
collision |= wall_collision & FRONT_BACK
}
- else if (contains_y) {
+ if (contains_y) {
collision |= wall_collision & LEFT_RIGHT
}
- else if (bitcount(wall_collision) > 1) {
- collision |= wall_collision
- }
+// if (bitcount(wall_collision) > 1) {
+// collision |= wall_collision
+// }
})
return collision
}
- return Room
+ if ('window' in this) {
+ window.Room = Room
+ }
+ else {
+ module.exports = Room
+ }
})()