summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_walls.js15
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/mover.js5
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/undo.js28
-rw-r--r--public/assets/javascripts/ui/editor/Presets.js29
4 files changed, 61 insertions, 16 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
index 25b1c58..04d0594 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
@@ -40,12 +40,17 @@
base.colors = {}
base.init = function(){
- base.colors = {
- wall: app.defaults.colors.wall.slice(),
- outline: app.defaults.colors.outline.slice(),
- floor: app.defaults.colors.floor.slice(),
- ceiling: app.defaults.colors.ceiling.slice(),
+ base.colors = base.copyColors( app.defaults.colors )
+ }
+
+ base.copyColors = function(colors){
+ var copy = {
+ wall: colors.wall.slice(),
+ outline: colors.outline.slice(),
+ floor: colors.floor.slice(),
+ ceiling: colors.ceiling.slice(),
}
+ return copy
}
base.first = function(){
diff --git a/public/assets/javascripts/rectangles/engine/rooms/mover.js b/public/assets/javascripts/rectangles/engine/rooms/mover.js
index 5682be8..ac27aba 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/mover.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/mover.js
@@ -117,7 +117,6 @@ Rooms.mover = new function(){
wall.get_points(wall_vec)
-
t = perp(origins, wall_vec) / ( perp(cursor_copy, wall_vec) || 0.0000001 )
if ( min_t < t || t < 0 || 1 < t ) return
@@ -240,13 +239,13 @@ Rooms.mover = new function(){
wall_vec.normalize = function(){
var carry
if (this.x.a > this.y.a) {
- console.log("SWAP X")
+// console.log("SWAP X")
carry = this.x.a
this.x.a = this.y.a
this.y.a = carry
}
if (this.x.b > this.y.b) {
- console.log("SWAP Y")
+// console.log("SWAP Y")
carry = this.x.b
this.x.b = this.y.b
this.y.b = carry
diff --git a/public/assets/javascripts/rectangles/engine/scenery/undo.js b/public/assets/javascripts/rectangles/engine/scenery/undo.js
index ff4f911..52a57d9 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/undo.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/undo.js
@@ -114,7 +114,32 @@
undo: function(state){
var wall = Walls.lookup[state.id]
wall.deserialize(state)
-
+ Minotaur.watch( app.router.editorView.settings )
+ },
+ },
+ {
+ type: "update-all-wallpaper",
+ undo: function(state){
+ Walls.deserialize(state)
+ Minotaur.watch( app.router.editorView.settings )
+ },
+ },
+ {
+ type: "choose-preset",
+ undo: function(state){
+ app.controller.colorControl.load(state.colors)
+ Walls.deserialize(state.walls)
+ Minotaur.watch( app.router.editorView.settings )
+ },
+ redo: function(state){
+ app.controller.presets.loadByName(state)
+ Minotaur.watch( app.router.editorView.settings )
+ },
+ },
+ {
+ type: "choose-another-preset",
+ undo: function(state){
+ app.controller.presets.loadByName(state)
Minotaur.watch( app.router.editorView.settings )
},
},
@@ -123,7 +148,6 @@
undo: function(state){
Walls.setColor[ state.mode ]( state.rgb )
app.router.editorView.colorControl.setSwatchColor( state.mode, state.rgb )
-
Minotaur.watch( app.router.editorView.settings )
},
},
diff --git a/public/assets/javascripts/ui/editor/Presets.js b/public/assets/javascripts/ui/editor/Presets.js
index ac77d6b..1327e03 100644
--- a/public/assets/javascripts/ui/editor/Presets.js
+++ b/public/assets/javascripts/ui/editor/Presets.js
@@ -4,7 +4,6 @@ var Presets = View.extend({
events: {
"mousedown": "stopPropagation",
"click .presets span": "selectPreset",
- "click .swatches span": "selectColor",
},
presets: {
@@ -53,7 +52,9 @@ var Presets = View.extend({
}.bind(this))
},
- modified: false,
+ modified: true,
+ lastPreset: "wireframe",
+
toggle: function(state){
this.$el.toggleClass("active", state)
this.parent.cursor.message(state ? "presets" : "start")
@@ -75,15 +76,31 @@ var Presets = View.extend({
if (! this.presets[preset]) return
this.$(".active").removeClass('active')
$(e.currentTarget).addClass('active')
+ if (this.modified) {
+ UndoStack.push({
+ type: "choose-preset",
+ undo: { walls: Walls.serialize(), colors: Walls.copyColors(Walls.colors) },
+ redo: preset,
+ })
+ Minotaur.watch( app.router.editorView.settings )
+ }
+ else {
+ UndoStack.push({
+ type: "choose-another-preset",
+ undo: this.lastPreset,
+ redo: preset,
+ })
+ Minotaur.watch( app.router.editorView.settings )
+ }
+ this.lastPreset = preset
this.load(this.presets[preset])
this.modified = false
},
- selectColor: function(e){
- var preset = $(e.currentTarget).data('color')
- console.log(preset)
+ loadByName: function(name){
+ var preset = this.presets[name]
+ this.load(preset)
},
-
load: function(preset){
this.parent.colorControl.modes.forEach(function(mode){
var color