summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/scenery/move.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-08-13 16:12:02 -0400
committerJules Laplace <jules@okfoc.us>2014-08-13 16:21:26 -0400
commit90cb5b343f3d56372f9b43faf215ed80dd879fe1 (patch)
treedfac1c586b713a70c9bd5ffce01f93a46a256e75 /public/assets/javascripts/rectangles/engine/scenery/move.js
parent14228e82f4836b1bffa3389aa9e8d12959aa3810 (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.js20
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){