summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine')
-rw-r--r--public/assets/javascripts/rectangles/engine/map/_map.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/map/ui_editor.js17
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_walls.js57
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/builder.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/mover.js11
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/undo.js2
6 files changed, 77 insertions, 14 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/_map.js b/public/assets/javascripts/rectangles/engine/map/_map.js
index 3a47dab..64372c5 100644
--- a/public/assets/javascripts/rectangles/engine/map/_map.js
+++ b/public/assets/javascripts/rectangles/engine/map/_map.js
@@ -67,7 +67,7 @@ var Map = function(opt){
}
base.toggle = function(state){
- $(base.el).toggle(state)
+ return $(base.el).toggle(state).is(':visible')
}
}
diff --git a/public/assets/javascripts/rectangles/engine/map/ui_editor.js b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
index 072ff7e..9d69990 100644
--- a/public/assets/javascripts/rectangles/engine/map/ui_editor.js
+++ b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
@@ -26,6 +26,13 @@ Map.UI.Editor = function(map){
resize: true,
destroy: false,
})
+
+ base.blur = function(){
+ Rooms.forEach(function(r){
+ return r.focused = false
+ })
+ app.tube("builder-pick-nothing")
+ }
//
@@ -190,7 +197,7 @@ Map.UI.Editor = function(map){
})
Rooms.rebuild()
}
-
+
var intersects = Rooms.filter(function(r){
return r.focused = r.rect.contains(cursor.x.a, cursor.y.a)
})
@@ -207,13 +214,14 @@ Map.UI.Editor = function(map){
var cursor = base.mouse.cursor
var intersects = Rooms.filter(function(r){
- return r.focused = r.rect.contains(cursor.x.a, cursor.y.a)
+ return r.focused // = r.rect.contains(cursor.x.a, cursor.y.a)
})
if (intersects.length) {
wheelState = wheelState || intersects[0].copy()
- intersects[0].height = clamp( ~~(intersects[0].height - deltaY), height_min, height_max )
+ intersects[0].height = clamp( ~~(intersects[0].height + deltaY * 2), height_min, height_max )
+ app.tube("builder-pick-room", intersects[0])
clearTimeout(wheelTimeout)
wheelTimeout = setTimeout(function(){
@@ -224,7 +232,7 @@ Map.UI.Editor = function(map){
})
Rooms.rebuild()
wheelState = null
- }, 500)
+ }, 250)
}
else {
map.set_zoom(map.zoom_exponent - deltaY/20)
@@ -233,4 +241,5 @@ Map.UI.Editor = function(map){
function rightclick (e){
}
+
}
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
index 119a659..fe5913d 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
@@ -135,11 +135,65 @@
}
base.luminance = function(rgb){
- rgb = rgb || Walls.colors.wall
+ rgb = rgb || Walls.colors.ceiling
var rgb_max = Math.max.apply(0, rgb)
var rgb_min = Math.min.apply(255, rgb)
return (rgb_max + rgb_min ) / 2
}
+
+ base.setBodyColor = function(){
+ $("#header").toggleClass("black", Walls.luminance() < 100)
+ $("body").css("background-color", rgb_string( Walls.colors.wall ))
+ }
+ base.clearBodyColor = function(){
+ $("#header").removeClass("black")
+ $("body").css("background-color", "transparent")
+ }
+
+ base.setWallpaper = {
+ wall: function(background){
+ var img = new Image ()
+ img.onload = function(){
+ Walls.list.forEach(function(wall){
+ wall.wallpaper(background, img)
+ })
+ }.bind(this)
+ img.src = background.src
+ img.complete && img.onload()
+ },
+ floor: function(background){
+ Walls.floors.forEach(function(floor){
+ if (floor.ceiling) return
+ floor.wallpaper(background)
+ })
+ },
+ ceiling: function(background){
+ Walls.floors.forEach(function(floor){
+ if (! floor.ceiling) return
+ floor.wallpaper(background)
+ })
+ },
+ }
+
+ base.clearWallpaper = {
+ wall: function(){
+ Walls.list.forEach(function(wall){
+ wall.wallpaper("none")
+ })
+ },
+ floor: function(){
+ Walls.floors.forEach(function(floor){
+ if (floor.ceiling) return
+ wall.wallpaper("none")
+ })
+ },
+ ceiling: function(){
+ Walls.floors.forEach(function(floor){
+ if (! floor.ceiling) return
+ wall.wallpaper("none")
+ })
+ },
+ }
base.setColor = {
@@ -181,7 +235,6 @@
room.setCeilingColor(rgbColor)
})
},
-
}
}
diff --git a/public/assets/javascripts/rectangles/engine/rooms/builder.js b/public/assets/javascripts/rectangles/engine/rooms/builder.js
index 33333fb..c95734b 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/builder.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/builder.js
@@ -280,7 +280,7 @@
return el
}
this.make_wall = function (klass) {
- // klass += ".backface-hidden"
+ klass += ".backface-hidden"
var el = new MX.Object3D(".face" + (klass || ""))
el.width = el.height = el.scaleX = el.scaleY = el.scaleZ = 1
el.z = el.y = el.x = 0
diff --git a/public/assets/javascripts/rectangles/engine/rooms/mover.js b/public/assets/javascripts/rectangles/engine/rooms/mover.js
index a2d2223..fae2ce6 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/mover.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/mover.js
@@ -11,7 +11,8 @@ Rooms.mover = new function(){
base.bind = function(){
app.on("move", base.update)
- keys.on("backslash", function(){
+ keys.on("backslash", function(e){
+ if ( ! (e.ctrlKey || e.metaKey) ) return
base.noclip = ! base.noclip
base.room = null
app.movements.gravity( ! base.noclip )
@@ -43,8 +44,7 @@ Rooms.mover = new function(){
// in this case, we appear to have left the room..
// $(".face.active").removeClass("active")
- $("#header").removeClass("black")
- $("body").css("background-color", "transparent")
+ Walls.clearBodyColor()
base.room = null
}
@@ -60,8 +60,9 @@ Rooms.mover = new function(){
// did we actually enter a room?
if (intersects.length) {
base.room = intersects[0]
- $("#header").toggleClass("black", Walls.luminance() < 100)
- $("body").css("background-color", rgb_string( Walls.colors.wall ))
+ if (! base.noclip) {
+ Walls.setBodyColor()
+ }
app.tube("change-room", { room: base.room })
}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/undo.js b/public/assets/javascripts/rectangles/engine/scenery/undo.js
index bee8c49..ff4f911 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/undo.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/undo.js
@@ -122,7 +122,7 @@
type: "update-colors",
undo: function(state){
Walls.setColor[ state.mode ]( state.rgb )
- app.router.editorView.lightControl.setSwatchColor( state.mode, state.rgb )
+ app.router.editorView.colorControl.setSwatchColor( state.mode, state.rgb )
Minotaur.watch( app.router.editorView.settings )
},