From a91321725a3a2db451055ee7d5e4a40576b83c5c Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 10 Jun 2014 13:37:27 -0400 Subject: rename map stuff so we can use alternate drawing ui --- .../javascripts/rectangles/engine/map/draw.js | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'public/assets/javascripts/rectangles/engine/map/draw.js') diff --git a/public/assets/javascripts/rectangles/engine/map/draw.js b/public/assets/javascripts/rectangles/engine/map/draw.js index ec60d31..f4cb1d2 100644 --- a/public/assets/javascripts/rectangles/engine/map/draw.js +++ b/public/assets/javascripts/rectangles/engine/map/draw.js @@ -1,33 +1,33 @@ -map.draw = new function(){ +var MapDraw = function(map){ - var base = this + var draw = this - base.animate = function(){ + draw.animate = function(){ ctx.save() - map.draw.clear_canvas() - map.draw.ruler() + draw.clear_canvas() + draw.ruler() ctx.translate( map.bounds.a * 1/2, map.bounds.b * 1/2) ctx.scale( map.zoom, map.zoom ) ctx.translate( map.center.a, map.center.b) ctx.scale( -1, 1 ) - map.draw.regions(Rooms.regions) - map.draw.mouse(map.ui.mouse.cursor) - map.draw.coords() - scene && map.draw.camera(scene.camera) + draw.regions(Rooms.regions) + draw.mouse(map.ui.mouse.cursor) + draw.coords() + scene && draw.camera(scene.camera) ctx.restore() } - base.clear_canvas = function(){ + draw.clear_canvas = function(){ ctx.fillStyle = "rgba(255,255,255,0.9)" ctx.clearRect(0,0,w,h) ctx.fillRect(0,0,w,h) } - base.ruler = function (){ + draw.ruler = function (){ ctx.strokeStyle = "rgba(80,80,80,0.5)" ctx.lineWidth = 1 var len = 5 @@ -37,7 +37,7 @@ map.draw = new function(){ } } - base.regions = function(regions){ + draw.regions = function(regions){ for (var i = 0; i < regions.length; i++) { if (regions[i].dupe) continue ctx.fillStyle = colors[i % colors.length] @@ -46,7 +46,7 @@ map.draw = new function(){ } } - base.mouse = function(mouse){ + draw.mouse = function(mouse){ var radius = 3 / map.zoom ctx.fillStyle = "rgba(255,0,0,0.4)"; @@ -65,7 +65,7 @@ map.draw = new function(){ } } - base.camera = function(cam){ + draw.camera = function(cam){ ctx.lineWidth = 0.5 ctx.save() @@ -88,7 +88,7 @@ map.draw = new function(){ ctx.restore() } - base.coords = function(){ + draw.coords = function(){ ctx.fillStyle = "#888"; dot_at(0,0) ctx.fillStyle = "#bbb"; -- cgit v1.2.3-70-g09d2 From 08421d8921fcc9842ea70d2e5c6439d1154e6d73 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 10 Jun 2014 16:34:52 -0400 Subject: serialization functions --- public/assets/javascripts/rectangles/_env.js | 24 ++++++------- .../javascripts/rectangles/engine/map/draw.js | 2 ++ .../javascripts/rectangles/engine/rooms/_rooms.js | 42 +++++++++++++++++++++- .../assets/javascripts/rectangles/models/rect.js | 3 ++ .../assets/javascripts/rectangles/models/room.js | 12 +++++-- .../assets/javascripts/rectangles/models/vec2.js | 3 ++ .../javascripts/ui/builder/BuilderSettings.js | 5 +++ 7 files changed, 76 insertions(+), 15 deletions(-) (limited to 'public/assets/javascripts/rectangles/engine/map/draw.js') diff --git a/public/assets/javascripts/rectangles/_env.js b/public/assets/javascripts/rectangles/_env.js index 86aebdc..46b43a9 100644 --- a/public/assets/javascripts/rectangles/_env.js +++ b/public/assets/javascripts/rectangles/_env.js @@ -22,18 +22,18 @@ environment.init = function(){ map.center.a = 0 map.center.b = 0 - Rooms.add( new Room ({ - rect: new Rect(-500,-500, 500,500), - height: 500, - })) - Rooms.add( new Room ({ - rect: new Rect(600,0, 1100,500), - height: 500, - })) - Rooms.add( new Room ({ - rect: new Rect(450,150, 650,350), - height: 300, - })) +// Rooms.add( new Room ({ +// rect: new Rect(-500,-500, 500,500), +// height: 500, +// })) +// Rooms.add( new Room ({ +// rect: new Rect(600,0, 1100,500), +// height: 500, +// })) +// Rooms.add( new Room ({ +// rect: new Rect(450,150, 650,350), +// height: 300, +// })) app.movements.gravity(true) diff --git a/public/assets/javascripts/rectangles/engine/map/draw.js b/public/assets/javascripts/rectangles/engine/map/draw.js index f4cb1d2..75e8ad1 100644 --- a/public/assets/javascripts/rectangles/engine/map/draw.js +++ b/public/assets/javascripts/rectangles/engine/map/draw.js @@ -41,6 +41,8 @@ var MapDraw = function(map){ for (var i = 0; i < regions.length; i++) { if (regions[i].dupe) continue ctx.fillStyle = colors[i % colors.length] + ctx.strokeStyle = "#000" + ctx.lineWidth = (1 / map.zoom) fill_region(regions[i]) stroke_sides(regions[i]) } diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js index efde370..ce1fae7 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js +++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js @@ -22,7 +22,7 @@ var Rooms = new function(){ base.add_with_rect = function(rect){ var room = new Room({ rect: rect, - height: quantize(randrange(300,800), 50), + height: 500 // quantize(randrange(300,800), 50), }) base.add(room) } @@ -38,9 +38,49 @@ var Rooms = new function(){ base.forEach = function(f){ return base.values().forEach(f) } + base.map = function(f){ + return base.values().map(f) + } + base.values = function(){ return _.values(base.list) } + + base.serialize = function(){ + var rooms = base.map(function(room){ + return room.serialize() + }) + var rooms_data = { rooms: rooms } + return rooms_data + } + + base.deserialize = function(rooms_data){ + rooms_data.rooms.forEach(function(data){ + var rect = new Rect(data.rect.x[0], data.rect.y[0], data.rect.x[1], data.rect.y[1]) + var room = new Room({ + id: data.id, + rect: rect, + height: data.height + }) + base.add(room) + }) + } + + base.uid = (function(){ + var id = 0 + return function(s){ + s = s || "" + var ss + while (1) { + ss = s + (id++) + if (! (ss in base.list)) { + console.log(ss) + return ss + } + } + } + })() + base.sorted_by_position = function(){ return sort_rooms_by_position( base.values() ) diff --git a/public/assets/javascripts/rectangles/models/rect.js b/public/assets/javascripts/rectangles/models/rect.js index 7a2ac6f..cb14e66 100644 --- a/public/assets/javascripts/rectangles/models/rect.js +++ b/public/assets/javascripts/rectangles/models/rect.js @@ -94,6 +94,9 @@ window.Rect = (function(){ var s = "[" + this.x.toString() + " " + this.y.toString() + "] " + sides return s } + Rect.prototype.serialize = function(){ + return { x: this.x.serialize(), y: this.y.serialize() } + } Rect.prototype.quantize = function(n){ this.x.quantize(n) this.y.quantize(n) diff --git a/public/assets/javascripts/rectangles/models/room.js b/public/assets/javascripts/rectangles/models/room.js index 256889d..d0478b3 100644 --- a/public/assets/javascripts/rectangles/models/room.js +++ b/public/assets/javascripts/rectangles/models/room.js @@ -1,7 +1,7 @@ window.Room = (function(){ var Room = function(opt){ - this.id = opt.id || _.uniqueId("room") + this.id = opt.id || Rooms.uid("room_") this.rect = opt.rect this.regions = [] this.walls = [] @@ -15,7 +15,15 @@ window.Room = (function(){ Room.prototype.toString = function(){ return this.rect.toString() } - + + Room.prototype.serialize = function(){ + return { + id: this.id, + rect: this.rect.serialize(), + height: ~~this.height, + } + } + Room.prototype.reset = function(){ var copy = this.rect.clone() copy.id = this.id diff --git a/public/assets/javascripts/rectangles/models/vec2.js b/public/assets/javascripts/rectangles/models/vec2.js index 9b0447c..e56a010 100644 --- a/public/assets/javascripts/rectangles/models/vec2.js +++ b/public/assets/javascripts/rectangles/models/vec2.js @@ -91,6 +91,9 @@ vec2.prototype.intersection = function(v){ vec2.prototype.toString = function(){ return "[" + ~~this.a + " " + ~~this.b + "]" } +vec2.prototype.serialize = function(){ + return [ ~~this.a, ~~this.b ] +} vec2.prototype.quantize = function(n){ n = n || 10 this.a = quantize(this.a, n) diff --git a/public/assets/javascripts/ui/builder/BuilderSettings.js b/public/assets/javascripts/ui/builder/BuilderSettings.js index ff8a71b..004c1c4 100644 --- a/public/assets/javascripts/ui/builder/BuilderSettings.js +++ b/public/assets/javascripts/ui/builder/BuilderSettings.js @@ -10,6 +10,11 @@ var BuilderSettings = View.extend({ toggle: function(){ this.$el.toggleClass("active") + }, + + save: function(){ + var data = Rooms.serialize() + console.log(data) } }) -- cgit v1.2.3-70-g09d2