From 15058f6c83da00b54f676b9fafbb758ddef0be84 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 1 Dec 2014 13:46:57 -0500 Subject: undo random scenery placement --- .../rectangles/engine/scenery/_scenery.js | 3 +++ .../rectangles/engine/scenery/randomize.js | 18 ++++++++++--- .../javascripts/rectangles/engine/scenery/undo.js | 30 +++++++++++++++++++++- 3 files changed, 47 insertions(+), 4 deletions(-) (limited to 'public/assets/javascripts/rectangles/engine') diff --git a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js index d03e0e1..d52fe21 100644 --- a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js +++ b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js @@ -99,6 +99,7 @@ var Scenery = new function(){ } base.deserialize = function(scenery_data){ + var added = [] scenery_data.forEach(function(data){ var wall = Walls.lookup[data.wall_id] || Walls.first() var scene_media = base.add({ @@ -107,7 +108,9 @@ var Scenery = new function(){ media: data.media, id: data.id }) + added.push(scene_media) }) + return added } return base 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 diff --git a/public/assets/javascripts/rectangles/engine/scenery/undo.js b/public/assets/javascripts/rectangles/engine/scenery/undo.js index 8b85d02..1232780 100644 --- a/public/assets/javascripts/rectangles/engine/scenery/undo.js +++ b/public/assets/javascripts/rectangles/engine/scenery/undo.js @@ -121,7 +121,7 @@ }) }, }, - + // { @@ -166,6 +166,34 @@ Minotaur.watch( app.router.editorView.settings ) }, }, + { + type: "randomize-scenery", + undo: function(state){ + state.added.forEach(function(_scenery){ + Scenery.remove(_scenery.id) + }) + var scenery_list = Scenery.deserialize(state.removed) + scenery_list.forEach(function(scenery){ + scenery.was_randomly_placed = true + }) + Scenery.resize.hide() + + // TODO: watch individual scenery object here + Minotaur.watch( app.router.editorView.settings ) + }, + redo: function(state){ + state.removed.forEach(function(_scenery){ + Scenery.remove(_scenery.id) + }) + var scenery_list = Scenery.deserialize(state.added) + scenery_list.forEach(function(scenery){ + scenery.was_randomly_placed = true + }) + + // TODO: watch individual scenery object here + Minotaur.watch( app.router.editorView.settings ) + }, + }, ]) })() -- cgit v1.2.3-70-g09d2 From 87ce2f24887f20cf34165f92b43bbfd33435f30a Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 1 Dec 2014 13:59:42 -0500 Subject: hiding floor/ceiling in ff --- public/assets/javascripts/rectangles/engine/rooms/builder.js | 6 ++++++ public/assets/javascripts/ui/editor/ColorControl.js | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'public/assets/javascripts/rectangles/engine') diff --git a/public/assets/javascripts/rectangles/engine/rooms/builder.js b/public/assets/javascripts/rectangles/engine/rooms/builder.js index c95734b..5e09fab 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/builder.js +++ b/public/assets/javascripts/rectangles/engine/rooms/builder.js @@ -261,6 +261,9 @@ el.rotationX = PI/2 el.rect = region el.side = FLOOR + if ($.browser.mozilla) { + el.el.style.display = "none" + } return el } this.make_ceiling = function (room, region) { @@ -277,6 +280,9 @@ el.rotationX = -PI/2 el.rect = region el.side = CEILING + if ($.browser.mozilla) { + el.el.style.display = "none" + } return el } this.make_wall = function (klass) { diff --git a/public/assets/javascripts/ui/editor/ColorControl.js b/public/assets/javascripts/ui/editor/ColorControl.js index 9ab2623..54a6a2e 100644 --- a/public/assets/javascripts/ui/editor/ColorControl.js +++ b/public/assets/javascripts/ui/editor/ColorControl.js @@ -47,7 +47,12 @@ var ColorControl = View.extend({ $swatch.css("background-color","rgb(" + color + ")") $swatch.data('color', color) this.$colors.append($swatch) - }.bind(this)) + }.bind(this)) + + if ($.browser.mozilla) { + $("#floor-color").parent().hide() + $("#ceiling-color").parent().hide() + } }, modes: [ "wall", "outline", "floor", "ceiling" ], -- cgit v1.2.3-70-g09d2