summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles')
-rw-r--r--public/assets/javascripts/rectangles/engine/map/_map.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/map/draw.js6
-rw-r--r--public/assets/javascripts/rectangles/engine/map/ui_editor.js19
-rw-r--r--public/assets/javascripts/rectangles/engine/map/ui_minimap.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_walls.js19
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/builder.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/mover.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/randomize.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/image.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/video.js2
-rw-r--r--public/assets/javascripts/rectangles/util/constants.js4
-rw-r--r--public/assets/javascripts/rectangles/util/wheel.js25
13 files changed, 60 insertions, 35 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/_map.js b/public/assets/javascripts/rectangles/engine/map/_map.js
index 99ede82..3a47dab 100644
--- a/public/assets/javascripts/rectangles/engine/map/_map.js
+++ b/public/assets/javascripts/rectangles/engine/map/_map.js
@@ -66,8 +66,8 @@ var Map = function(opt){
canvas.height = base.dimensions.b = window.innerHeight
}
- base.toggle = function(){
- $(base.el).toggle()
+ base.toggle = function(state){
+ $(base.el).toggle(state)
}
}
diff --git a/public/assets/javascripts/rectangles/engine/map/draw.js b/public/assets/javascripts/rectangles/engine/map/draw.js
index 7eb6e7c..eceda3c 100644
--- a/public/assets/javascripts/rectangles/engine/map/draw.js
+++ b/public/assets/javascripts/rectangles/engine/map/draw.js
@@ -177,11 +177,11 @@ Map.Draw = function(map, opt){
ctx.lineWidth = 1/map.zoom
var sides = map.sides()
- var quant = sides.clone().quantize(200)
- for (var x = quant.x.a - 200; x <= quant.x.b; x += 200) {
+ var quant = sides.clone().quantize(MAP_GRID_SIZE)
+ for (var x = quant.x.a - MAP_GRID_SIZE; x <= quant.x.b; x += MAP_GRID_SIZE) {
line(x, sides.y.a, x, sides.y.b)
}
- for (var y = quant.y.a - 200; y <= quant.y.b; y += 200) {
+ for (var y = quant.y.a - MAP_GRID_SIZE; y <= quant.y.b; y += MAP_GRID_SIZE) {
line(sides.x.a, y, sides.x.b, y)
}
}
diff --git a/public/assets/javascripts/rectangles/engine/map/ui_editor.js b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
index 3c3347b..072ff7e 100644
--- a/public/assets/javascripts/rectangles/engine/map/ui_editor.js
+++ b/public/assets/javascripts/rectangles/engine/map/ui_editor.js
@@ -161,18 +161,19 @@ Map.UI.Editor = function(map){
cursor.y.abs().quantize(1)
var room = Rooms.add_with_rect( cursor )
+ Rooms.rebuild()
+
UndoStack.push({
type: "create-room",
undo: { id: room.id },
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,14 +188,22 @@ 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
}
var wheelState, wheelTimeout
- function mousewheel (e, val, delta){
+ function mousewheel (e, deltaY, deltaX){
var cursor = base.mouse.cursor
var intersects = Rooms.filter(function(r){
@@ -204,7 +213,7 @@ Map.UI.Editor = function(map){
if (intersects.length) {
wheelState = wheelState || intersects[0].copy()
- intersects[0].height = clamp( ~~(intersects[0].height - delta), height_min, height_max )
+ intersects[0].height = clamp( ~~(intersects[0].height - deltaY), height_min, height_max )
clearTimeout(wheelTimeout)
wheelTimeout = setTimeout(function(){
@@ -218,7 +227,7 @@ Map.UI.Editor = function(map){
}, 500)
}
else {
- map.set_zoom(map.zoom_exponent - delta/20)
+ map.set_zoom(map.zoom_exponent - deltaY/20)
}
}
diff --git a/public/assets/javascripts/rectangles/engine/map/ui_minimap.js b/public/assets/javascripts/rectangles/engine/map/ui_minimap.js
index fabbdb9..0fdd336 100644
--- a/public/assets/javascripts/rectangles/engine/map/ui_minimap.js
+++ b/public/assets/javascripts/rectangles/engine/map/ui_minimap.js
@@ -72,8 +72,8 @@ Map.UI.Minimap = function(map){
base.dragging = false
}
- function mousewheel (e, val, delta){
- map.set_zoom(map.zoom_exponent - delta/20)
+ function mousewheel (e, deltaY, deltaX){
+ map.set_zoom(map.zoom_exponent - deltaY/20)
}
function rightclick (e){
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index b901a25..5686aba 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -13,6 +13,7 @@
vec2 = require('../../models/vec2')
Rect = require('../../models/rect')
Room = require('../../models/room')
+ Walls = require('./_walls')
UidGenerator = require('../../util/uid')
sort = require('../../util/sort')
_ = require('lodash')
@@ -59,7 +60,6 @@
height: 500
})
base.add(room)
- Rooms.rebuild()
return room
}
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
index 0da3b9a..119a659 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js
@@ -134,19 +134,24 @@
})
}
+ base.luminance = function(rgb){
+ rgb = rgb || Walls.colors.wall
+ var rgb_max = Math.max.apply(0, rgb)
+ var rgb_min = Math.min.apply(255, rgb)
+ return (rgb_max + rgb_min ) / 2
+ }
+
base.setColor = {
wall: function(rgb){
var rgbaColor = rgba_string(rgb, app.defaults.wallOpacity)
var rgbColor = rgb_string(rgb)
+
+ if (Rooms.mover.room) {
+ $("#header").toggleClass("black", base.luminance() < 100)
+ $("body").css("background-color", rgbColor)
+ }
- var rgb_max = Math.max.apply(0, rgb)
- var rgb_min = Math.min.apply(255, rgb)
- var luminance = (rgb_max + rgb_min ) / 2
-
- $("#header").toggleClass("black", luminance < 128)
- $("body").css("background-color", rgbColor)
-
Walls.colors.wall = rgb
Walls.list.forEach(function(wall){
wall.outline(rgbaColor, null)
diff --git a/public/assets/javascripts/rectangles/engine/rooms/builder.js b/public/assets/javascripts/rectangles/engine/rooms/builder.js
index 4619eb1..33333fb 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/builder.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/builder.js
@@ -293,7 +293,7 @@
this.el = this.rect = this.face = null
}
- // possible if walls are opaque
+ // preferable if walls are opaque
// el.el.classList.add("backface-hidden")
return el
diff --git a/public/assets/javascripts/rectangles/engine/rooms/mover.js b/public/assets/javascripts/rectangles/engine/rooms/mover.js
index 98f80c5..a2d2223 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/mover.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/mover.js
@@ -43,6 +43,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")
base.room = null
}
@@ -59,6 +60,7 @@ 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 ))
app.tube("change-room", { room: base.room })
}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/randomize.js b/public/assets/javascripts/rectangles/engine/scenery/randomize.js
index 4f1144a..82b6bf9 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/randomize.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/randomize.js
@@ -10,11 +10,11 @@ Scenery.randomize = function (media_data) {
var media_list = media_data.map(function(media){
var width, height
if (media.width > media.height) {
- width = Math.min(300, media.width)
+ width = Math.min(DEFAULT_PICTURE_WIDTH, media.width)
height = media.height/media.width * width
}
else {
- height = Math.min(300, media.height)
+ height = Math.min(DEFAULT_PICTURE_WIDTH, media.height)
width = media.width/media.height * height
}
return {
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/image.js b/public/assets/javascripts/rectangles/engine/scenery/types/image.js
index bed847b..10fc917 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/image.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/image.js
@@ -7,7 +7,7 @@ Scenery.types.image = Scenery.types.base.extend(function(base){
init: function(opt){
- opt.scale = opt.scale || (opt.data && opt.data.scale) || 300 / max(300, opt.media.width)
+ opt.scale = opt.scale || (opt.data && opt.data.scale) || DEFAULT_PICTURE_WIDTH / max(DEFAULT_PICTURE_WIDTH, opt.media.width)
base.init.call(this, opt)
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/video.js b/public/assets/javascripts/rectangles/engine/scenery/types/video.js
index b723f56..a669a90 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/video.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/video.js
@@ -6,7 +6,7 @@ Scenery.types.video = Scenery.types.base.extend(function(base){
type: 'video',
init: function(opt){
- opt.scale = opt.scale || (opt.data && opt.data.scale) || 300 / max(300, opt.media.width)
+ opt.scale = opt.scale || (opt.data && opt.data.scale) || DEFAULT_PICTURE_WIDTH / max(DEFAULT_PICTURE_WIDTH, opt.media.width)
base.init.call(this, opt)
diff --git a/public/assets/javascripts/rectangles/util/constants.js b/public/assets/javascripts/rectangles/util/constants.js
index 198cc41..3bc314c 100644
--- a/public/assets/javascripts/rectangles/util/constants.js
+++ b/public/assets/javascripts/rectangles/util/constants.js
@@ -20,7 +20,9 @@ var height_min = 200,
side_min = 10,
side_max = 5000,
resize_margin = 8,
- cursor_amp = 1.5
+ cursor_amp = 1.5,
+ DEFAULT_PICTURE_WIDTH = 350,
+ MAP_GRID_SIZE = 360 // 10 feet
var painting_distance_from_wall = 10,
dot_distance_from_picture = 3
diff --git a/public/assets/javascripts/rectangles/util/wheel.js b/public/assets/javascripts/rectangles/util/wheel.js
index 6836772..712d470 100644
--- a/public/assets/javascripts/rectangles/util/wheel.js
+++ b/public/assets/javascripts/rectangles/util/wheel.js
@@ -21,37 +21,44 @@ function wheel (opt) {
val: 0,
})
- opt.el.addEventListener('mousewheel', onMouseWheel, false);
+ opt.el.addEventListener('wheel', onMouseWheel, false);
+// opt.el.addEventListener('mousewheel', onMouseWheel, false);
opt.el.addEventListener('DOMMouseScroll', onMouseWheel, false);
function onMouseWheel (e) {
if (opt.locked) {
return
}
+
if (! opt.propagate) {
e.stopPropagation()
e.preventDefault()
}
- var delta = 0;
+ var deltaX = 0, deltaY = 0;
// WebKit
- if ( event.wheelDeltaY ) {
- delta -= event.wheelDeltaY * opt.ratio
+ if ( event.deltaY ) {
+ deltaY -= event.deltaY * opt.ratio
+ deltaX -= event.deltaX * opt.ratio
+ }
+ else if ( event.wheelDeltaY ) {
+ deltaY -= event.wheelDeltaY * opt.ratio
+ deltaX -= event.wheelDeltaX * opt.ratio
}
// Opera / Explorer 9
else if ( event.wheelDelta ) {
- delta -= event.wheelDelta * opt.ratio
+ deltaY -= event.wheelDelta * opt.ratio
}
// Firefox
else if ( event.detail ) {
- delta += event.detail * 2
+ deltaY += event.detail * 2
}
- if (! opt.reversible && delta < 0) return;
+ if (! opt.reversible && (deltaY < 0 && deltaX < 0)) return;
- opt.val = clamp(opt.val + delta, opt.min, opt.max)
+ // opt.val = clamp(opt.val + delta, opt.min, opt.max)
- opt.update(e, opt.val, delta)
+ opt.update(e, deltaY, deltaX)
}
opt.lock = function(){ opt.locked = true }