summaryrefslogtreecommitdiff
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
parent272474767b6ed1f419843c7a205c16f934eeb84f (diff)
making rooms from segments
-rw-r--r--public/assets/javascripts/rectangles/engine/map/draw.js18
-rw-r--r--public/assets/javascripts/rectangles/engine/shapes/regionlist.js46
-rw-r--r--public/assets/javascripts/rectangles/util/constants.js2
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintEditor.js18
4 files changed, 55 insertions, 29 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(){
diff --git a/public/assets/javascripts/rectangles/util/constants.js b/public/assets/javascripts/rectangles/util/constants.js
index a70cacd..522689b 100644
--- a/public/assets/javascripts/rectangles/util/constants.js
+++ b/public/assets/javascripts/rectangles/util/constants.js
@@ -22,7 +22,7 @@ var height_min = 200,
resize_margin = 8,
cursor_amp = 1.5,
DEFAULT_PICTURE_WIDTH = 350,
- MAP_GRID_SIZE = 360 // 10 feet
+ MAP_GRID_SIZE = 36 // 10 feet
var painting_distance_from_wall = 10,
dot_distance_from_picture = 3,
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintEditor.js b/public/assets/javascripts/ui/blueprint/BlueprintEditor.js
index 18ecf5f..7ec1352 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintEditor.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintEditor.js
@@ -5,6 +5,8 @@ var last_point = new vec2 (0,0)
var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
+ rooms: [],
+
initialize: function(opt){
this.parent = opt.parent
@@ -81,6 +83,7 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
scale: media.scale,
})
this.startAnimating()
+ this.rooms = RegionList.build()
},
animate: function(t, dt){
@@ -93,7 +96,7 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
map.draw.ctx.save()
map.draw.translate()
- this.floorplan.draw(map.draw.ctx, true)
+ // this.floorplan.draw(map.draw.ctx, true)
map.draw.coords()
@@ -113,13 +116,14 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
map.draw.mouse(map.ui.mouse.cursor)
map.draw.camera(scene.camera)
- var rooms = RegionList.build()
- rooms.forEach(function(room,i){
+ this.rooms.segments.forEach(function(seg,i){
+ map.draw.ctx.fillStyle = "#f00"
+ map.draw.ctx.fillRect( seg.x.a, seg.y.a, seg.width()+1, seg.height()+1 )
+ })
+
+ this.rooms.rooms.forEach(function(room,i){
map.draw.ctx.fillStyle = colors[i % colors.length]
- map.draw.ctx.fillRect( room[0][0].a, room[0][1].b,
- room[1][0].a - room[0][0].a,
- room[0][0].b - room[0][1].b
- )
+ map.draw.ctx.fillRect( room.x.a, room.y.a, room.width(), room.height() )
})
map.draw.ctx.restore()