summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/scenery/_scenery.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/_scenery.js46
1 files changed, 33 insertions, 13 deletions
diff --git a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
index c96885c..2fd6122 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
@@ -12,27 +12,37 @@ var Scenery = new function(){
base.resize.init()
}
- base.add = function(wall, media, id){
+ base.add = function(opt){
var scene_media
- switch (media.type) {
+ switch (opt.media.type) {
case 'image':
- scene_media = new Scenery.types.image ({ media: media, wall: wall, id: id })
+ scene_media = new Scenery.types.image (opt)
break
case 'video':
case 'youtube':
case 'vimeo':
- scene_media = new Scenery.types.video ({ media: media, wall: wall, id: id })
+ scene_media = new Scenery.types.video (opt)
break
}
base.list[scene_media.id] = scene_media
return scene_media
}
- base.addNextToWall = function(wall){
- var media = base.add(wall, base.nextMedia)
- base.nextMedia = null
- return media
+ base.addNextToWall = function(opt){
+ opt.media = base.nextMedia
+ opt.index = opt.index || 0
+ var scene_media = base.add(opt)
+
+ // test if scenery was placed here
+ if (! scene_media.bounds) {
+ base.remove( scene_media.id )
+ return null
+ }
+ else {
+ base.nextMedia = null
+ return scene_media
+ }
}
base.find = function(id){
@@ -40,9 +50,15 @@ var Scenery = new function(){
}
base.remove = function(id){
- var media = base.list[id]
+ var scene_media = base.list[id]
delete base.list[id]
- media && media.destroy()
+ scene_media && scene_media.destroy()
+ }
+
+ base.removeAll = function(){
+ base.forEach(function(scene_media){
+ base.remove(scene_media.id)
+ })
}
base.uid = new UidGenerator(base.list)
@@ -68,9 +84,13 @@ 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, data.id)
- scene_media.deserialize(data)
+ var wall = Rooms.walls[data.wall_id] || Rooms.walls[0]
+ var scene_media = base.add({
+ data: data,
+ wall: wall,
+ media: data.media,
+ id: data.id
+ })
})
}