summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-10 16:34:52 -0400
committerJules Laplace <jules@okfoc.us>2014-06-10 16:52:14 -0400
commit08421d8921fcc9842ea70d2e5c6439d1154e6d73 (patch)
tree4d6d9059f912aa5c6ba931383e3f55051bce3c18
parenta5ba8d536afe5c96c6e01763296de2a407f81aa8 (diff)
serialization functions
-rw-r--r--public/assets/javascripts/rectangles/_env.js24
-rw-r--r--public/assets/javascripts/rectangles/engine/map/draw.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js42
-rw-r--r--public/assets/javascripts/rectangles/models/rect.js3
-rw-r--r--public/assets/javascripts/rectangles/models/room.js12
-rw-r--r--public/assets/javascripts/rectangles/models/vec2.js3
-rw-r--r--public/assets/javascripts/ui/builder/BuilderSettings.js5
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)
}
})