diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-08-13 16:12:02 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-08-13 16:21:26 -0400 |
| commit | 90cb5b343f3d56372f9b43faf215ed80dd879fe1 (patch) | |
| tree | dfac1c586b713a70c9bd5ffce01f93a46a256e75 /public/assets/javascripts/rectangles/engine/scenery/move.js | |
| parent | 14228e82f4836b1bffa3389aa9e8d12959aa3810 (diff) | |
undo for scenery stuff
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/scenery/move.js')
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/scenery/move.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/public/assets/javascripts/rectangles/engine/scenery/move.js b/public/assets/javascripts/rectangles/engine/scenery/move.js index 94a4e52..ef9bc32 100644 --- a/public/assets/javascripts/rectangles/engine/scenery/move.js +++ b/public/assets/javascripts/rectangles/engine/scenery/move.js @@ -3,6 +3,7 @@ Scenery.move = function(base){ var x, y, z, bounds var dragging = false + var oldState this.bind = function(){ Scenery.mouse.bind_el(base.mx.el) @@ -23,6 +24,12 @@ Scenery.move = function(base){ function down (e, cursor){ if (e.target != base.mx.el) return; if (editor.permissions.destroy) { + UndoStack.push({ + type: 'destroy-scenery', + undo: base.serialize(), + redo: { id: base.id }, + }) + Scenery.remove(base.id) return } @@ -39,6 +46,7 @@ Scenery.move = function(base){ y = base.mx.y z = base.mx.z bounds = base.bounds + oldState = base.serialize() document.body.classList.add("dragging") } @@ -63,8 +71,20 @@ Scenery.move = function(base){ } function up (e, cursor){ + if (! dragging || ! oldState) return + dragging = false document.body.classList.remove("dragging") + + console.log("pushing", oldState, base.serialize()) + + UndoStack.push({ + type: 'update-scenery', + undo: oldState, + redo: base.serialize(), + }) + + oldState = null } function switch_wall (e, new_wall, cursor){ |
