diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/engine')
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) |
