summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/sculpture/_sculpture.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/sculpture/_sculpture.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/sculpture/_sculpture.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/public/assets/javascripts/rectangles/engine/sculpture/_sculpture.js b/public/assets/javascripts/rectangles/engine/sculpture/_sculpture.js
new file mode 100644
index 0000000..eb64e92
--- /dev/null
+++ b/public/assets/javascripts/rectangles/engine/sculpture/_sculpture.js
@@ -0,0 +1,94 @@
+
+var Sculpture = new function(){
+
+ var base = this;
+
+ base.list = {}
+ base.nextMedia = null
+
+ base.mouse = new mouse ({ use_offset: false, mousedownUsesCapture: true })
+
+ base.init = function(){
+ }
+
+ base.add = function(opt){
+ var scene_media
+ switch (opt.media.type) {
+ case 'image':
+ scene_media = new Sculpture.types.image (opt)
+ break
+ }
+ base.list[scene_media.id] = scene_media
+ return scene_media
+ }
+
+ base.addNextToWall = function(opt){
+ opt.newMedia = true
+ opt.media = base.nextMedia
+ opt.index = opt.index || 0
+ var scene_media = base.add(opt)
+
+ // test if scenery was placed here
+ if (! scene_media) {
+ return null
+ }
+ else {
+ base.nextMedia = null
+ return scene_media
+ }
+ }
+
+ base.find = function(id){
+ return base.list[id] || null
+ }
+
+ base.remove = function(id){
+ var scene_media = base.list[id]
+ delete base.list[id]
+ scene_media && scene_media.destroy()
+ }
+
+ base.removeAll = function(){
+ base.forEach(function(scene_media){
+ base.remove(scene_media.id)
+ })
+ }
+
+ base.uid = new UidGenerator(base.list)
+
+ 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 sculptures = base.map(function(sculpture){
+ return sculpture.serialize()
+ })
+ return sculptures
+ }
+
+ base.deserialize = function(sculpture_data){
+ var added = []
+ sculpture_data.forEach(function(data){
+ var scene_media = base.add({
+ id: data.id,
+ data: data,
+ media: data.media,
+ })
+ added.push(scene_media)
+ })
+ return added
+ }
+
+ return base
+}
+
+Sculpture.types = {}