diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-10-13 11:43:56 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-10-13 11:44:40 -0400 |
| commit | dbaf1b362e775f0923e3910d06de510369811802 (patch) | |
| tree | f7462742dfb3c3e3237b823eb899dfcd91231b55 | |
| parent | f73f5c517d08581d8d1c687a42e9ef9e5598662a (diff) | |
click background to deselect room in blueprint editor
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/map/ui_editor.js | 11 | ||||
| -rw-r--r-- | public/assets/javascripts/ui/builder/BuilderInfo.js | 27 | ||||
| -rw-r--r-- | views/controls/builder/info.ejs | 11 |
3 files changed, 44 insertions, 5 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/ui_editor.js b/public/assets/javascripts/rectangles/engine/map/ui_editor.js index 3c3347b..6dc6c90 100644 --- a/public/assets/javascripts/rectangles/engine/map/ui_editor.js +++ b/public/assets/javascripts/rectangles/engine/map/ui_editor.js @@ -167,12 +167,11 @@ Map.UI.Editor = function(map){ redo: room.copy() }) + Rooms.rebuild() app.tube("builder-pick-room", room) } } - if (base.resizing || base.dragging) { - var oldState = base.dragging.copy() if (base.resizing) { @@ -187,7 +186,15 @@ Map.UI.Editor = function(map){ undo: oldState, redo: base.dragging.copy() }) + Rooms.rebuild() } + + var intersects = Rooms.filter(function(r){ + return r.focused = r.rect.contains(cursor.x.a, cursor.y.a) + }) + if (! intersects.length) { + app.tube("builder-pick-nothing") + } base.creating = base.dragging = base.resizing = false } diff --git a/public/assets/javascripts/ui/builder/BuilderInfo.js b/public/assets/javascripts/ui/builder/BuilderInfo.js index 0bf2338..196eca6 100644 --- a/public/assets/javascripts/ui/builder/BuilderInfo.js +++ b/public/assets/javascripts/ui/builder/BuilderInfo.js @@ -13,6 +13,7 @@ var BuilderInfo = View.extend({ "change [name=units]": 'changeUnits', "change [name=resolution]": 'changeResolution', "change [name=viewHeight]": 'changeViewHeight', + "click [data-role=destroy-room]": 'destroy', }, initialize: function(opt){ @@ -25,8 +26,11 @@ var BuilderInfo = View.extend({ this.$units = this.$("[name=units]") this.$viewHeight = this.$("[name=viewHeight]") this.$unitName = this.$(".unitName") + this.$noSelection = this.$(".no-selection") + this.$settings = this.$(".setting") app.on("builder-pick-room", this.pick.bind(this)) - app.on("builder-destroy-room", this.destroy.bind(this)) + app.on("builder-destroy-room", this.hide.bind(this)) + app.on("builder-pick-nothing", this.deselect.bind(this)) }, load: function(data){ @@ -36,6 +40,8 @@ var BuilderInfo = View.extend({ }, toggle: function(state){ + this.$settings.toggle( !! this.room ) + this.$noSelection.toggle( ! this.room ) this.$el.toggleClass("active", state) }, @@ -43,7 +49,8 @@ var BuilderInfo = View.extend({ this.toggle(true) }, - hide: function(){ + hide: function(){ + this.room = null this.toggle(false) }, @@ -58,8 +65,22 @@ var BuilderInfo = View.extend({ this.$y.unitVal( room.rect.y.a ) this.show() }, + + deselect: function(){ + this.room = null + this.toggle(true) + }, + + destroy: function(){ + UndoStack.push({ + type: "destroy-room", + undo: this.room.copy(), + redo: { id: this.room.id }, + }) + + Rooms.remove(this.room) + app.tube("builder-destroy-room", this.room) - destroy: function(room){ this.room = null this.hide() }, diff --git a/views/controls/builder/info.ejs b/views/controls/builder/info.ejs index 7ef0b6a..3c5d4b7 100644 --- a/views/controls/builder/info.ejs +++ b/views/controls/builder/info.ejs @@ -1,4 +1,11 @@ <div class="vvbox settings info" id="builderInfo"> + <h4>Map Editor</h4> + + <div class="no-selection"> + Click a room to select it, or click and drag to make a new room. + </div> + + <div class="setting number"> <label for="room-width">width</label> <input type="text" class="units" name="width" id="room-width"> @@ -32,4 +39,8 @@ <input type="text" class="units" name="viewHeight" id="viewHeight"> </div> + <div class="setting"> + <a href="#" class="warn btn" data-role="destroy-room">delete this room</a> + </div> + </div> |
