diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/scenery/randomize.js')
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/scenery/randomize.js | 18 |
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 |
