summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/rooms/builder.js
diff options
context:
space:
mode:
authorJulie Lala <jules@okfoc.us>2014-07-25 02:01:54 -0400
committerJulie Lala <jules@okfoc.us>2014-07-25 02:01:54 -0400
commitc11322210bc5ca2932f8e208d57b9ec3254b8b06 (patch)
tree66a88d2c0c66f90dd3be7071a545678cb94b4abd /public/assets/javascripts/rectangles/engine/rooms/builder.js
parenteb026c75c729f857703474b416a1358ad67574ca (diff)
half-walls tests and overflow
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/rooms/builder.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/builder.js24
1 files changed, 11 insertions, 13 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/builder.js b/public/assets/javascripts/rectangles/engine/rooms/builder.js
index 492a8c6..c1cba39 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/builder.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/builder.js
@@ -149,22 +149,17 @@
this.build_floors = function (room){
var list = [], el = null
-
+
var constructed = room.intersects.filter(function(room){ return room.constructed })
sort.rooms_by_height(constructed)
-
+
if (constructed.length > 0) {
// render the regions that don't intersect with anything we've already rendered
// if the height is different, calculate the overlapping sides and render half-walls
room.regions.forEach(function(region){
var intersected = false
for (var i = 0; i < constructed.length; i++) {
- if (constructed[i].rect.contains(region)) {
- intersected = true
- // r.sides = 0xf
- // half_sides
- }
- else if (constructed[i].rect.intersects(region)) {
+ if (constructed[i].rect.overlaps(region)) {
intersected = true
if (room.height < constructed[i].height) {
var ceiling_walls = this.make_ceiling_walls( room, constructed[i], region )
@@ -181,7 +176,7 @@
list.push( el )
room.mx_ceiling.push(el)
}
- })
+ }.bind(this))
}
else {
@@ -206,7 +201,7 @@
var depth = region.y.length()
var height = hi.height - lo.height
- if (! (region.half_sides & LEFT) && region.x.a == hi.rect.x.a) {
+ if (! (region.half_sides & LEFT) && region.x.a != lo.rect.x.a && region.x.a == hi.rect.x.a) {
el = this.make_wall('.left')
el.rotationY = HALF_PI
el.height = height
@@ -221,7 +216,8 @@
el.half_side = LEFT
}
- if (! (region.half_sides & RIGHT) && region.x.b == hi.rect.x.b) {
+ if (! (region.half_sides & RIGHT) && region.x.b != lo.rect.x.b && region.x.b == hi.rect.x.b) {
+console.log("right")
el = this.make_wall('.right')
el.rotationY = -HALF_PI
el.height = height
@@ -236,7 +232,8 @@
el.half_side = RIGHT
}
- if (! (region.half_sides & FRONT) && region.y.a == hi.rect.y.a) {
+ if (! (region.half_sides & FRONT) && region.y.a != lo.rect.y.a && region.y.a == hi.rect.y.a) {
+console.log("front")
el = this.make_wall('.front')
el.width = width
el.height = height
@@ -251,7 +248,8 @@
el.half_side = FRONT
}
- if (! (region.half_sides & BACK) && region.y.b == hi.rect.y.b) {
+ if (! (region.half_sides & BACK) && region.y.b != lo.rect.y.b && region.y.b == hi.rect.y.b) {
+console.log("back")
el = this.make_wall('.back')
el.width = width
el.height = height