diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-06-10 16:34:52 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-06-10 16:52:14 -0400 |
| commit | 08421d8921fcc9842ea70d2e5c6439d1154e6d73 (patch) | |
| tree | 4d6d9059f912aa5c6ba931383e3f55051bce3c18 | |
| parent | a5ba8d536afe5c96c6e01763296de2a407f81aa8 (diff) | |
serialization functions
7 files changed, 76 insertions, 15 deletions
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) } }) |
