summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine')
-rw-r--r--public/assets/javascripts/rectangles/engine/map/_map.js11
-rw-r--r--public/assets/javascripts/rectangles/engine/map/ui_editor.js18
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js1
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/clipper.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/_scenery.js8
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/move.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/_object.js2
7 files changed, 32 insertions, 14 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/_map.js b/public/assets/javascripts/rectangles/engine/map/_map.js
index d5a8442..99ede82 100644
--- a/public/assets/javascripts/rectangles/engine/map/_map.js
+++ b/public/assets/javascripts/rectangles/engine/map/_map.js
@@ -65,13 +65,14 @@ var Map = function(opt){
canvas.width = base.dimensions.a = window.innerWidth
canvas.height = base.dimensions.b = window.innerHeight
}
-
- base.update = function(){
- base.draw.animate()
- }
-
+
base.toggle = function(){
$(base.el).toggle()
}
}
+
+Map.prototype.update = function(){
+ this.draw && this.draw.animate()
+}
+
diff --git a/public/assets/javascripts/rectangles/engine/map/ui_editor.js b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
index 262272b..ea7a356 100644
--- a/public/assets/javascripts/rectangles/engine/map/ui_editor.js
+++ b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
@@ -20,6 +20,13 @@ Map.UI.Editor = function(map){
update: mousewheel,
})
+ base.permissions = new Permissions({
+ create: true,
+ move: true,
+ resize: true,
+ destroy: false,
+ })
+
//
function down (e, cursor){
@@ -43,12 +50,17 @@ Map.UI.Editor = function(map){
return r.focused = r.rect.contains(cursor.x.a, cursor.y.a)
})
- if (intersects.length) {
+ if (intersects.length && base.permissions.destroy) {
+ base.mouse.down = false
+ Rooms.remove(intersects[0])
+ return
+ }
+ else if (intersects.length && (base.permissions.move || base.permissions.resize)) {
base.dragging = intersects[0]
- base.resizing = base.dragging.rect.nearEdge(cursor.x.a, cursor.y.a, resize_margin / map.zoom)
+ base.resizing = base.permissions.resize && base.dragging.rect.nearEdge(cursor.x.a, cursor.y.a, resize_margin / map.zoom)
base.dragging.rect.translation.sides = base.resizing
}
- else {
+ else if (base.permissions.create) {
base.creating = true
}
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index 0186e9a..48931e9 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -30,6 +30,7 @@ var Rooms = new function(){
base.remove = function(room){
delete base.list[room.id]
+ Rooms.clipper.update()
}
base.removeAll = function(){
diff --git a/public/assets/javascripts/rectangles/engine/rooms/clipper.js b/public/assets/javascripts/rectangles/engine/rooms/clipper.js
index 0854013..eb467cd 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/clipper.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/clipper.js
@@ -8,7 +8,7 @@ Rooms.clipper = new function(){
}
base.bind = function(){
- map.ui.mouse.tube.on("up", function(){ base.update() })
+ map.ui && map.ui.mouse.tube.on("up", function(){ base.update() })
}
base.update = function(){
diff --git a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
index 143a4d9..74801e9 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
@@ -12,16 +12,16 @@ var Scenery = new function(){
base.resize.init()
}
- base.add = function(wall, media){
+ base.add = function(wall, media, id){
var scene_media
switch (media.type) {
case 'image':
- scene_media = new Scenery.types.image ({ media: media, wall: wall })
+ scene_media = new Scenery.types.image ({ media: media, wall: wall, id: id })
break
case 'youtube':
case 'vimeo':
- scene_media = new Scenery.types.video ({ media: media, wall: wall })
+ scene_media = new Scenery.types.video ({ media: media, wall: wall, id: id })
break
}
@@ -64,7 +64,7 @@ var Scenery = new function(){
base.deserialize = function(scenery_data){
scenery_data.forEach(function(data){
var wall = Rooms.walls[data.wall_id]
- var scene_media = base.add(wall, data.media)
+ var scene_media = base.add(wall, data.media, data.id)
scene_media.deserialize(data)
})
}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/move.js b/public/assets/javascripts/rectangles/engine/scenery/move.js
index f38a740..bad0a55 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/move.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/move.js
@@ -26,6 +26,10 @@ Scenery.move = function(base){
Scenery.remove(base.id)
return
}
+ if (! (editor.permissions.move || editor.permissions.resize) ) {
+ e.clickAccepted = false
+ return
+ }
dragging = true
x = base.mx.x
y = base.mx.y
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/_object.js b/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
index 4367efc..05c760b 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
@@ -5,7 +5,7 @@ Scenery.types.base = Fiber.extend(function(base){
init: function(opt){
_.bindAll(this, 'enter', 'leave')
- this.id = Scenery.uid("scenery")
+ this.id = opt.id || Scenery.uid("scenery")
this.move = new Scenery.move (this)
this.media = opt.media
this.dimensions = new vec2(this.media.width, this.media.height)