summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-08-21 11:23:46 -0400
committerJules Laplace <jules@okfoc.us>2015-08-21 11:23:46 -0400
commitca76295998fb75e9ab9c83ee9a1a694b9e0656c1 (patch)
tree4a15a5b868fb54ee18d3c318f96407af634891ad /public/assets/javascripts/rectangles/engine
parent272474767b6ed1f419843c7a205c16f934eeb84f (diff)
making rooms from segments
Diffstat (limited to 'public/assets/javascripts/rectangles/engine')
-rw-r--r--public/assets/javascripts/rectangles/engine/map/draw.js18
-rw-r--r--public/assets/javascripts/rectangles/engine/shapes/regionlist.js46
2 files changed, 43 insertions, 21 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/draw.js b/public/assets/javascripts/rectangles/engine/map/draw.js
index cc2f4d8..5824cc8 100644
--- a/public/assets/javascripts/rectangles/engine/map/draw.js
+++ b/public/assets/javascripts/rectangles/engine/map/draw.js
@@ -189,9 +189,25 @@ Map.Draw = function(map, opt){
var sides = map.sides()
var quant = sides.clone().quantize(MAP_GRID_SIZE)
for (var x = quant.x.a - MAP_GRID_SIZE; x <= quant.x.b; x += MAP_GRID_SIZE) {
- line(x, sides.y.a, x, sides.y.b)
+ if (Math.round(x) % 10 == 0) {
+ ctx.strokeStyle = "rgba(0,0,0,0.3)"
+ ctx.lineWidth = 1/map.zoom
+ }
+ else {
+ ctx.strokeStyle = "rgba(0,0,0,0.05)"
+ ctx.lineWidth = 1/map.zoom
+ }
+ line(x, sides.y.a, x, sides.y.b)
}
for (var y = quant.y.a - MAP_GRID_SIZE; y <= quant.y.b; y += MAP_GRID_SIZE) {
+ if (Math.round(y) % 10 == 0) {
+ ctx.strokeStyle = "rgba(0,0,0,0.3)"
+ ctx.lineWidth = 1/map.zoom
+ }
+ else {
+ ctx.strokeStyle = "rgba(0,0,0,0.05)"
+ ctx.lineWidth = 1/map.zoom
+ }
line(sides.x.a, y, sides.x.b, y)
}
}
diff --git a/public/assets/javascripts/rectangles/engine/shapes/regionlist.js b/public/assets/javascripts/rectangles/engine/shapes/regionlist.js
index 42519cf..acb4ead 100644
--- a/public/assets/javascripts/rectangles/engine/shapes/regionlist.js
+++ b/public/assets/javascripts/rectangles/engine/shapes/regionlist.js
@@ -6,45 +6,51 @@ var RegionList = (function(){
RegionList.build = function(){
var segments = RegionList.getSortedSegments()
+// var xx = t % (segments[0].x.a - segments[segments.length-1].x.b)
+
// loop over them from left to right
-// console.log(segments.map(function(s){ return s.toString() }).join("\n"))
+// console.log(segments.map(function(s){ return s.toString() }).join("\n"))
var rooms = []
var open_segments = []
- var segment, open_segment, y_segments
+ var segment, open_segment, x_segment, y_segments, overlapped
for (var i = 0; i < segments.length; i++) {
segment = segments[i]
- if (! isVertical(segment)) {
+ if (! segment.isVertical()) {
continue
}
+ overlapped = false
for (var j = 0; j < open_segments.length; j++) {
open_segment = open_segments[j]
if (segment.y.overlaps(open_segment.y)) {
// if we have overlap, it means we have made a full room
-
- y_segments = open_segment.y.split(segment.y)
-
- if (y_segments.length == 1) {
- open_segment.x.b = segment.x.b
- rooms.push(open_segment)
- }
-
-// other_side = clone_segment(open_segment)
-// other_side[0].a = segment[0].a
-// other_side[1].a = segment[1].a
-// rooms.push([open_segment, other_side])
- open_segments.splice(j, 1)
- j--
+ console.log(segment.y+"", "overlaps", open_segment.y+"")
+ overlapped = true
+ open_segments.splice(j--, 1)
+
+ x_segment = new vec2( open_segment.x.a, segment.x.b )
+ y_segments = segment.y.split(open_segment.y, TOP, BOTTOM)
+ console.log(y_segments.map(function(s){ return s+"" }).join("\n"))
+ y_segments.forEach(function(seg){
+
+ rooms.push(new Rect( x_segment, seg[0] ))
+
+ var new_seg = new Rect( segment.x, seg[0] )
+ open_segments.shift(new_seg)
+ j++
+ })
}
}
- open_segments.push(segment)
+ if (! overlapped) {
+ open_segments.push(segment)
+ }
}
-// console.log(rooms.map(function(s){ return s[0][0].toString() + " " + s[0][1].toString() + " " + s[1][0].toString() + " " + s[1][1].toString() }).join("\n"))
+// console.log(rooms.map(function(s){ return s.toString() }).join("\n"))
- return rooms
+ return { rooms: rooms, open_segments: open_segments, segments: segments }
}
RegionList.getSortedSegments = function(){