summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles')
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_walls.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/mover.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/move.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/randomize.js77
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/resize.js12
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/_object.js16
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/video.js6
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/undo.js3
-rw-r--r--public/assets/javascripts/rectangles/models/surface.js4
-rw-r--r--public/assets/javascripts/rectangles/models/wall.js6
-rw-r--r--public/assets/javascripts/rectangles/util/minotaur.js2
-rw-r--r--public/assets/javascripts/rectangles/util/permissions.js2
12 files changed, 114 insertions, 24 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
index 82ccb87..f0cd558 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
@@ -46,6 +46,10 @@
}
}
+ base.find = function(id){
+ return base.lookup[id]
+ }
+
base.assign = function(list){
base.list = list
base.lookup = {}
diff --git a/public/assets/javascripts/rectangles/engine/rooms/mover.js b/public/assets/javascripts/rectangles/engine/rooms/mover.js
index 7195fcc..5c7b4af 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/mover.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/mover.js
@@ -65,9 +65,7 @@ Rooms.mover = new function(){
// did we actually enter a room?
if (intersects.length) {
base.room = intersects[0]
- base.room.mx_floor.forEach(function(w){ $(w.el).addClass("active") })
- base.room.mx_ceiling.forEach(function(w){ $(w.el).addClass("active") })
- base.room.mx_walls.forEach(function(w){ $(w.el).addClass("active") })
+ app.tube("change-room", { room: base.room })
}
}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/move.js b/public/assets/javascripts/rectangles/engine/scenery/move.js
index 93bccb0..55d6ef1 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/move.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/move.js
@@ -142,7 +142,7 @@ Scenery.move = function(base){
if (editor.permissions.resize) {
Scenery.resize.rotate_dots()
-// Scenery.resize.move_dots()
+ Scenery.resize.move_dots()
}
cursor.x.a = cursor.x.b
diff --git a/public/assets/javascripts/rectangles/engine/scenery/randomize.js b/public/assets/javascripts/rectangles/engine/scenery/randomize.js
new file mode 100644
index 0000000..4f1144a
--- /dev/null
+++ b/public/assets/javascripts/rectangles/engine/scenery/randomize.js
@@ -0,0 +1,77 @@
+/*
+ // get the list of media we want to place
+ var media_data = $(".mediaContainer").toArray().map(function(el){
+ return $(el).data("media")
+ })
+ Scenery.randomize( media_data )
+*/
+
+Scenery.randomize = function (media_data) {
+ var media_list = media_data.map(function(media){
+ var width, height
+ if (media.width > media.height) {
+ width = Math.min(300, media.width)
+ height = media.height/media.width * width
+ }
+ else {
+ height = Math.min(300, media.height)
+ width = media.width/media.height * height
+ }
+ return {
+ dimensions: new vec2( width, height ),
+ media: media,
+ }
+ })
+
+ // get a list of all walls
+ var walls = {}
+ Walls.forEach(function(wall){
+ walls[wall.id] = wall
+ })
+
+ // remove the walls that already have stuff on them
+ Scenery.forEach(function(scenery){
+ delete walls[scenery.wall.id]
+ })
+
+ var wall_ids = _.keys(walls)
+ if (! wall_ids.length) {
+ return
+ }
+
+ // randomize walls
+ shuffle(wall_ids)
+
+ // assign each of the media to the walls, until we run out of either
+ media_list.some(function(media){
+ if (wall_ids.length == 0) {
+ return true
+ }
+
+ var i, fits = -1
+
+ for (i = 0; i < wall_ids.length; i++) {
+ if (walls[wall_ids[i]].surface.fits(media.dimensions)) {
+ // walls[wall_ids[i]]
+ fits = i
+ break
+ }
+ }
+
+ if (fits != -1) {
+ var wall = walls[wall_ids[fits]]
+ wall_ids.splice(fits, 1)
+
+ Scenery.add({
+ media: media.media,
+ wall: wall,
+ index: 0,
+ })
+ }
+ else {
+ // artwork won't fit anywhere??
+ }
+
+ return false
+ })
+} \ No newline at end of file
diff --git a/public/assets/javascripts/rectangles/engine/scenery/resize.js b/public/assets/javascripts/rectangles/engine/scenery/resize.js
index e26c0a7..2ba84a1 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/resize.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/resize.js
@@ -31,7 +31,8 @@ Scenery.resize = new function(){
// generate a dot element
base.build_dot = function(side) {
var dot = new MX.Object3D('.dot')
- dot.width = dot.height = dot_side
+ dot.width = dot.height = dot_side * 2
+ dot.scale = 0.5
dot.side = side
$(dot.el).on({
mouseenter: function(){ base.hovering = true },
@@ -121,11 +122,11 @@ Scenery.resize = new function(){
Scenery.mouse.bind_el(dot.el)
$(dot.el).bind({
mouseenter: function(e){
- Scenery.resize.hovering = true
+// Scenery.resize.hovering = true
},
mouseleave: function(e){
- Scenery.resize.hovering = false
- base.defer_hide()
+// Scenery.resize.hovering = false
+// base.defer_hide()
}
})
})
@@ -146,7 +147,7 @@ Scenery.resize = new function(){
function down (e, cursor){
var selection = dots.filter(function(dot){return e.target == dot.el})
if (! selection.length) return
-
+
selected_dot = selection[0]
dragging = true
@@ -195,6 +196,7 @@ Scenery.resize = new function(){
}
function up (e, cursor){
+ if (! dragging) return
dragging = false
selected_dot = null
if (! editor.permissions.resize) { return }
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/_object.js b/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
index 2dbae48..5eed53e 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
@@ -70,17 +70,17 @@ Scenery.types.base = Fiber.extend(function(base){
},
enter: function(e){
- if (editor.permissions.resize) {
- Scenery.resize.show(this)
- Scenery.hovering = true
- }
+// if (editor.permissions.resize) {
+// Scenery.resize.show(this)
+// Scenery.hovering = true
+// }
},
leave: function(e){
- if (editor.permissions.resize) {
- Scenery.resize.defer_hide(this)
- Scenery.hovering = false
- }
+// if (editor.permissions.resize) {
+// Scenery.resize.defer_hide(this)
+// Scenery.hovering = false
+// }
},
serialize: function(){
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/video.js b/public/assets/javascripts/rectangles/engine/scenery/types/video.js
index ef25d8d..76f32ac 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/video.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/video.js
@@ -4,8 +4,8 @@ Scenery.types.video = Scenery.types.base.extend(function(base){
var exports = {
init: function(opt){
- opt.scale = opt.scale || 300 / max(300, opt.media.width)
-
+ opt.scale = opt.scale || (opt.data && opt.data.scale) || 300 / max(300, opt.media.width)
+
base.init.call(this, opt)
this.build()
@@ -106,6 +106,8 @@ Scenery.types.video = Scenery.types.base.extend(function(base){
deserialize: function(data){
this.mx.move(data.position)
+ this.mx.ops.width = data.dimensions.a
+ this.mx.ops.height = data.dimensions.b
},
}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/undo.js b/public/assets/javascripts/rectangles/engine/scenery/undo.js
index e5624a0..57a0886 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/undo.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/undo.js
@@ -10,6 +10,7 @@
},
redo: function(state){
Scenery.deserialize([ state ])
+ Scenery.resize.show( scenery )
// TODO: watch individual scenery object here
Minotaur.watch( app.router.editorView.settings )
@@ -19,6 +20,7 @@
type: "update-scenery",
undo: function(state){
var scenery = Scenery.find(state.id)
+
scenery.deserialize(state)
scenery.set_wall(Walls.find( state.wall_id ))
@@ -48,6 +50,7 @@
type: "destroy-scenery",
undo: function(state){
Scenery.deserialize([ state ])
+ Scenery.resize.show( scenery )
// TODO: watch individual scenery object here
Minotaur.watch( app.router.editorView.settings )
diff --git a/public/assets/javascripts/rectangles/models/surface.js b/public/assets/javascripts/rectangles/models/surface.js
index 53977c8..c85682a 100644
--- a/public/assets/javascripts/rectangles/models/surface.js
+++ b/public/assets/javascripts/rectangles/models/surface.js
@@ -36,7 +36,7 @@
Surface.prototype.fits = function(v){
var faces = this.faces
var scratch
- if (this.bounds.x.b < v.a || this.bounds.y.b < v.b) {
+ if (this.bounds.width() < v.a || this.bounds.height() < v.b) {
return null
}
for (var i = 0; i < faces.length; i++) {
@@ -46,7 +46,7 @@
}
scratch = new Rect (0,0,0,0)
for (var i = 0; i < faces.length; i++) {
- if (faces[i].y.length() < v.b) {
+ if (faces[i].height() < v.b) {
continue
}
scratch.x.a = faces[i].x.a
diff --git a/public/assets/javascripts/rectangles/models/wall.js b/public/assets/javascripts/rectangles/models/wall.js
index 1a3ef7c..1b37aa0 100644
--- a/public/assets/javascripts/rectangles/models/wall.js
+++ b/public/assets/javascripts/rectangles/models/wall.js
@@ -64,7 +64,11 @@
e.stopPropagation()
return
}
-
+
+ app.controller.toolbar.resetPermissions()
+ Scenery.resize.show(scenery)
+ Scenery.hovering = true
+
UndoStack.push({
type: 'create-scenery',
undo: { id: scenery.id },
diff --git a/public/assets/javascripts/rectangles/util/minotaur.js b/public/assets/javascripts/rectangles/util/minotaur.js
index 0fcc766..4d9a795 100644
--- a/public/assets/javascripts/rectangles/util/minotaur.js
+++ b/public/assets/javascripts/rectangles/util/minotaur.js
@@ -4,7 +4,7 @@
var base = this
base.$el = $("#minotaur")
base.timeout = null
- base.delay = 1000
+ base.delay = 5000
base.objects = {}
base.init = function () {
diff --git a/public/assets/javascripts/rectangles/util/permissions.js b/public/assets/javascripts/rectangles/util/permissions.js
index 1b5a1b5..9e3ef4d 100644
--- a/public/assets/javascripts/rectangles/util/permissions.js
+++ b/public/assets/javascripts/rectangles/util/permissions.js
@@ -31,7 +31,7 @@ Permissions.prototype.add = function (key) {
Permissions.prototype.remove = function (key) {
var base = this
- base[key] = true
+ base[key] = false
}
Permissions.prototype.clear = function () {