summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/scenery/randomize.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-12-01 13:46:57 -0500
committerJules Laplace <jules@okfoc.us>2014-12-01 13:46:57 -0500
commit15058f6c83da00b54f676b9fafbb758ddef0be84 (patch)
tree322a665434d83d78a2335e053591aab00a9c2060 /public/assets/javascripts/rectangles/engine/scenery/randomize.js
parentdc4cd71e3a0585a419898c834360f42f5bd09bd4 (diff)
undo random scenery placement
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/scenery/randomize.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/randomize.js18
1 files changed, 15 insertions, 3 deletions
diff --git a/public/assets/javascripts/rectangles/engine/scenery/randomize.js b/public/assets/javascripts/rectangles/engine/scenery/randomize.js
index 1c2eb56..6581f38 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/randomize.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/randomize.js
@@ -33,7 +33,7 @@ Scenery.randomize.get_dimensions = function (media_objs){
// Returns a lookup of walls to use, keyed by wall ID.
Scenery.randomize.get_empty_walls = function(wall_list){
// get a list of all walls
- var walls = {};
+ var walls = {}, removed = [];
(wall_list || Walls.list).forEach(function(wall){
walls[wall.id] = wall
@@ -44,6 +44,7 @@ Scenery.randomize.get_empty_walls = function(wall_list){
Scenery.forEach(function(scenery){
if (scenery.was_randomly_placed) {
// remove it and reuse this wall?
+ removed.push( scenery.serialize() )
Scenery.remove( scenery.id )
}
else {
@@ -52,7 +53,7 @@ Scenery.randomize.get_empty_walls = function(wall_list){
})
}
- return walls
+ return { walls: walls, removed: removed }
}
// Randomly place a set of media objects on empty walls.
@@ -60,7 +61,10 @@ Scenery.randomize.get_empty_walls = function(wall_list){
// Optionally takes a list of walls to use.
Scenery.randomize.add = function (media_objs, wall_list) {
var media_list = Scenery.randomize.get_dimensions(media_objs)
- var walls = Scenery.randomize.get_empty_walls(wall_list)
+ var empty_data = Scenery.randomize.get_empty_walls(wall_list)
+ var walls = empty_data.walls
+ var removed = empty_data.removed
+ var added = []
var wall_ids = _.keys(walls)
if (! wall_ids.length) { return }
@@ -93,6 +97,7 @@ Scenery.randomize.add = function (media_objs, wall_list) {
index: 0,
})
scenery.was_randomly_placed = true
+ added.push(scenery.serialize())
}
else {
// artwork won't fit anywhere??
@@ -100,4 +105,11 @@ Scenery.randomize.add = function (media_objs, wall_list) {
return false
})
+
+ UndoStack.push({
+ type: "randomize-scenery",
+ undo: { added: added, removed: removed },
+ redo: { added: added, removed: removed },
+ })
+
} \ No newline at end of file