summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/rectangles/engine/map/ui_editor.js28
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/undo.js12
-rw-r--r--public/assets/javascripts/ui/builder/BuilderInfo.js29
-rw-r--r--public/assets/javascripts/ui/editor/EditorView.js2
-rwxr-xr-xpublic/assets/stylesheets/app.css14
-rw-r--r--views/controls/builder/info.ejs2
7 files changed, 86 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 c838b8b..d1b0b89 100644
--- a/public/assets/javascripts/rectangles/engine/map/ui_editor.js
+++ b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
@@ -42,6 +42,7 @@ Map.UI.Editor = function(map){
cursor.y.div(map.dimensions.b).sub(0.5).mul(map.dimensions.b / map.zoom).sub(map.center.b)
if (e.ctrlKey || e.which === 3) {
+ if (Rooms.regions.length == 0) return
cursor.quantize(1/map.zoom)
map.center.a = cursor.x.a
map.center.b = -cursor.y.a
@@ -226,7 +227,32 @@ Map.UI.Editor = function(map){
return r.focused // = r.rect.contains(cursor.x.a, cursor.y.a)
})
- if (intersects.length) {
+ if (intersects.length && window.heightIsGlobal) {
+ var rooms = Rooms.values()
+ wheelState = wheelState || rooms[0].height
+ var height = clamp( ~~(rooms[0].height + deltaY * 2), height_min, height_max )
+ rooms.forEach(function(room){
+ room.height = height
+ })
+
+ app.tube("builder-pick-room", intersects[0])
+
+ clearTimeout(wheelTimeout)
+ wheelTimeout = setTimeout(function(){
+ UndoStack.push({
+ type: "update-rooms-height",
+ undo: wheelState,
+ redo: height
+ })
+ Rooms.rebuild()
+
+ // TODO: watch individual scenery object here
+ Minotaur.watch( app.router.editorView.settings )
+
+ wheelState = null
+ }, 250)
+ }
+ else if (intersects.length) {
wheelState = wheelState || intersects[0].copy()
intersects[0].height = clamp( ~~(intersects[0].height + deltaY * 2), height_min, height_max )
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index 5686aba..46c1d7f 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -81,6 +81,10 @@
base.forEach = function(f){
return base.values().forEach(f)
}
+
+ base.some = function(f){
+ return base.values().some(f)
+ }
base.map = function(f){
return base.values().map(f)
diff --git a/public/assets/javascripts/rectangles/engine/scenery/undo.js b/public/assets/javascripts/rectangles/engine/scenery/undo.js
index 6ad9e0d..8b85d02 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/undo.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/undo.js
@@ -111,7 +111,17 @@
Rooms.rebuild()
},
},
-
+
+ {
+ type: "update-rooms-height",
+ undo: function(state){
+ var rooms = Rooms.values()
+ rooms.forEach(function(room){
+ room.height = state
+ })
+ },
+ },
+
//
{
diff --git a/public/assets/javascripts/ui/builder/BuilderInfo.js b/public/assets/javascripts/ui/builder/BuilderInfo.js
index 7606361..9a7dbf9 100644
--- a/public/assets/javascripts/ui/builder/BuilderInfo.js
+++ b/public/assets/javascripts/ui/builder/BuilderInfo.js
@@ -16,6 +16,7 @@ var BuilderInfo = View.extend({
"change [name=units]": 'changeUnits',
"keydown [name=viewHeight]": 'enterViewHeight',
"change [name=viewHeight]": 'changeViewHeight',
+ "change [name=heightGlobal]": 'changeHeightGlobal',
"click [data-role=destroy-room]": 'destroy',
},
@@ -31,6 +32,7 @@ var BuilderInfo = View.extend({
this.$unitName = this.$(".unitName")
this.$noSelection = this.$(".no-selection")
this.$settings = this.$(".setting")
+ this.$heightGlobalCheckbox = this.$("[name=heightGlobal]")
app.on("builder-pick-room", this.pick.bind(this))
app.on("builder-destroy-room", this.hide.bind(this))
app.on("builder-pick-nothing", this.deselect.bind(this))
@@ -40,6 +42,18 @@ var BuilderInfo = View.extend({
this.$viewHeight.unitVal( window.viewHeight = data.viewHeight || app.defaults.viewHeight )
this.$units.val( "ft" )
this.$unitName.html( "ft" )
+
+ if (Rooms.regions.length == 0) {
+ this.changeHeightGlobal(true)
+ }
+ else {
+ var rooms = Rooms.values()
+ var height = rooms[0].height
+ var differentHeights = Rooms.some(function(room){
+ return room.height != height
+ })
+ this.changeHeightGlobal( ! differentHeights )
+ }
},
toggle: function(state){
@@ -118,7 +132,12 @@ var BuilderInfo = View.extend({
},
changeHeight: function(e){
e.stopPropagation()
- this.room.height = this.$height.unitVal()
+ var height = this.room.height = this.$height.unitVal()
+ if (window.heightIsGlobal) {
+ Rooms.forEach(function(room){
+ room.height = height
+ })
+ }
Rooms.rebuild()
},
changeX: function(e){
@@ -141,5 +160,13 @@ var BuilderInfo = View.extend({
changeViewHeight: function(){
window.viewHeight = this.$viewHeight.unitVal( )
},
+ changeHeightGlobal: function(state){
+ if (typeof state == "boolean") {
+ this.$heightGlobalCheckbox.prop("checked", state)
+ window.heightIsGlobal = state
+ return
+ }
+ window.heightIsGlobal = this.$heightGlobalCheckbox.prop("checked")
+ },
})
diff --git a/public/assets/javascripts/ui/editor/EditorView.js b/public/assets/javascripts/ui/editor/EditorView.js
index 3773366..4a2f712 100644
--- a/public/assets/javascripts/ui/editor/EditorView.js
+++ b/public/assets/javascripts/ui/editor/EditorView.js
@@ -50,7 +50,7 @@ var EditorView = View.extend({
readyLayout: function(data){
data.isNew = true
- $('#help-button').trigger("click")
+ // $('#help-button').trigger("click")
this.ready(data)
},
diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css
index 814df90..55f3219 100755
--- a/public/assets/stylesheets/app.css
+++ b/public/assets/stylesheets/app.css
@@ -1582,7 +1582,8 @@ border-left: 1px solid black;
transition:opacity 0.3s ease-in-out;
}
.reader #minimap {
- right: 20px;
+ right: 10px;
+ bottom: 10px;
left: auto;
-webkit-transform:translateX(180px);
-moz-transform:translateX(180px);
@@ -2141,6 +2142,17 @@ input[type="range"]::-webkit-slider-thumb {
top: 0px;
}
+.setting.number #room-height {
+ width: 60px;
+}
+.setting.number #room-height-global-label {
+ float: none;
+ margin-left: 6px;
+}
+.setting.number #room-height-global-label:after {
+ content: '';
+}
+
#mediaEditor .setting.number label {
width: 40px;
}
diff --git a/views/controls/builder/info.ejs b/views/controls/builder/info.ejs
index 2762207..8a0e0d5 100644
--- a/views/controls/builder/info.ejs
+++ b/views/controls/builder/info.ejs
@@ -20,6 +20,8 @@
<div class="setting number twoline">
<label for="room-height">ceiling height</label>
<input type="text" class="units" name="height" id="room-height">
+ <label for="room-height-global" id="room-height-global-label">global?</label>
+ <input type="checkbox" name="heightGlobal" id="room-height-global">
</div>
<div class="setting number halflines">
<label for="room-x">x</label>