diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-06-11 17:24:16 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-06-11 17:24:16 -0400 |
| commit | 507ee48290b4d1d868de6e8c2518318be90eba2b (patch) | |
| tree | dec56cd3643d8178f0ffb964381a8c73273491b0 | |
| parent | 50ba987880d90f40a5bf4d7e9e125b453723882b (diff) | |
handle map resizing
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/map/_map.js | 16 | ||||
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/map/draw.js | 28 | ||||
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/map/ui.js | 16 | ||||
| -rw-r--r-- | public/assets/javascripts/ui/builder/BuilderSettings.js | 12 | ||||
| -rwxr-xr-x | public/assets/stylesheets/app.css | 4 | ||||
| -rw-r--r-- | views/controls/builder/settings.ejs | 2 | ||||
| -rw-r--r-- | views/controls/builder/toolbar.ejs | 3 |
7 files changed, 51 insertions, 30 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/_map.js b/public/assets/javascripts/rectangles/engine/map/_map.js index 5e00eab..c27c159 100644 --- a/public/assets/javascripts/rectangles/engine/map/_map.js +++ b/public/assets/javascripts/rectangles/engine/map/_map.js @@ -1,8 +1,6 @@ /* */ -window.w = window.h = null; - var Map = function(){ var base = this base.el = document.querySelector("#map") @@ -10,11 +8,10 @@ var Map = function(){ if (! base.el) return base.dimensions = new vec2(window.innerWidth, window.innerHeight) - base.bounds = new vec2(window.innerWidth, window.innerHeight) base.center = new vec2(0,0) base.sides = function(){ - var sides = base.bounds.clone().div(2).div(base.zoom) + var sides = base.dimensions.clone().div(2).div(base.zoom) return new Rect( base.center.a - sides.a, -base.center.b - sides.b, base.center.a + sides.a, -base.center.b + sides.b ) } @@ -27,12 +24,19 @@ var Map = function(){ } var canvas = base.canvas = document.createElement("canvas") - var w = window.w = canvas.width = base.dimensions.a - var h = window.h = canvas.height = base.dimensions.b + canvas.width = base.dimensions.a + canvas.height = base.dimensions.b + document.querySelector("#map").appendChild(canvas) base.draw = new MapDraw (base) base.ui = new MapUI (base) + + base.resize = function(){ + canvas.width = base.dimensions.a = window.innerWidth + canvas.height = base.dimensions.b = window.innerHeight + } + $(window).resize(base.resize) base.update = function(){ base.draw.animate() diff --git a/public/assets/javascripts/rectangles/engine/map/draw.js b/public/assets/javascripts/rectangles/engine/map/draw.js index 7f55e51..a441de4 100644 --- a/public/assets/javascripts/rectangles/engine/map/draw.js +++ b/public/assets/javascripts/rectangles/engine/map/draw.js @@ -10,12 +10,12 @@ var MapDraw = function(map){ draw.clear() draw.ruler() - ctx.translate( map.bounds.a * 1/2, map.bounds.b * 1/2) + ctx.translate( map.dimensions.a * 1/2, map.dimensions.b * 1/2) ctx.scale( map.zoom, map.zoom ) ctx.translate( map.center.a, map.center.b) ctx.scale( -1, 1 ) - draw.regions(Rooms.regions) + draw.regions(Rooms.regions, colors) draw.mouse(map.ui.mouse.cursor) draw.coords() scene && draw.camera(scene.camera) @@ -23,23 +23,39 @@ var MapDraw = function(map){ ctx.restore() } + draw.render = function(){ + ctx.save() + draw.clear() + + ctx.translate( map.dimensions.a * 1/2, map.dimensions.b * 1/2) + ctx.scale( map.zoom, map.zoom ) + ctx.translate( map.center.a, map.center.b) + ctx.scale( -1, 1 ) + + draw.regions(Rooms.regions, ["#fff"]) + draw.mouse(map.ui.mouse.cursor) + scene && draw.camera(scene.camera) + + ctx.restore() + } + draw.clear = function(){ ctx.fillStyle = "rgba(255,255,255,0.9)" - ctx.clearRect(0,0,w,h) - ctx.fillRect(0,0,w,h) + ctx.clearRect(0, 0, map.dimensions.a, map.dimensions.b) + ctx.fillRect(0, 0, map.dimensions.a, map.dimensions.b) } draw.ruler = function (){ ctx.strokeStyle = "rgba(80,80,80,0.5)" ctx.lineWidth = 1 var len = 5 - for (var i = 0.5; i < w; i += 10) { + for (var i = 0.5; i < map.dimensions.a; i += 10) { line(i, 0, i, len) line(0, i, len, i) } } - draw.regions = function(regions){ + draw.regions = function(regions, colors){ for (var i = 0; i < regions.length; i++) { if (regions[i].dupe) continue ctx.fillStyle = colors[i % colors.length] diff --git a/public/assets/javascripts/rectangles/engine/map/ui.js b/public/assets/javascripts/rectangles/engine/map/ui.js index 97baf88..7890c9b 100644 --- a/public/assets/javascripts/rectangles/engine/map/ui.js +++ b/public/assets/javascripts/rectangles/engine/map/ui.js @@ -22,8 +22,8 @@ var MapUI = function(map){ // function down (e, cursor){ - cursor.x.div(w).add(0.5).mul(map.bounds.a / map.zoom).add(map.center.a) - cursor.y.div(h).sub(0.5).mul(map.bounds.b / map.zoom).sub(map.center.b) + cursor.x.div(map.dimensions.a).add(0.5).mul(map.dimensions.a / map.zoom).add(map.center.a) + 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) { cursor.quantize(1/map.zoom) @@ -57,13 +57,13 @@ var MapUI = function(map){ } function move (e, cursor) { - cursor.x.div(w).add(0.5).mul(map.bounds.a / map.zoom).add(map.center.a) - cursor.y.div(h).sub(0.5).mul(map.bounds.b / map.zoom).sub(map.center.b) + cursor.x.div(map.dimensions.a).add(0.5).mul(map.dimensions.a / map.zoom).add(map.center.a) + cursor.y.div(map.dimensions.b).sub(0.5).mul(map.dimensions.b / map.zoom).sub(map.center.b) } function drag (e, cursor) { - cursor.x.b = ((cursor.x.b/w)+0.5) * map.bounds.a / map.zoom + map.center.a - cursor.y.b = ((cursor.y.b/h)-0.5) * map.bounds.b / map.zoom - map.center.b + cursor.x.b = ((cursor.x.b/map.dimensions.a)+0.5) * map.dimensions.a / map.zoom + map.center.a + cursor.y.b = ((cursor.y.b/map.dimensions.b)-0.5) * map.dimensions.b / map.zoom - map.center.b if (base.resizing) { var x_length = base.dragging.rect.x.length(), @@ -89,8 +89,8 @@ var MapUI = function(map){ } function up (e, cursor, new_cursor) { - new_cursor.x.div(w).add(0.5).mul(map.bounds.a / map.zoom).add(map.center.a) - new_cursor.y.div(h).sub(0.5).mul(map.bounds.b / map.zoom).sub(map.center.b) + new_cursor.x.div(map.dimensions.a).add(0.5).mul(map.dimensions.a / map.zoom).add(map.center.a) + new_cursor.y.div(map.dimensions.b).sub(0.5).mul(map.dimensions.b / map.zoom).sub(map.center.b) if (base.creating) { if (cursor.height() > side_min && cursor.width() > side_min) { diff --git a/public/assets/javascripts/ui/builder/BuilderSettings.js b/public/assets/javascripts/ui/builder/BuilderSettings.js index 0eb5dfa..051bbf4 100644 --- a/public/assets/javascripts/ui/builder/BuilderSettings.js +++ b/public/assets/javascripts/ui/builder/BuilderSettings.js @@ -23,12 +23,11 @@ var BuilderSettings = FormView.extend({ load: function(data){ this.$id.val(data._id) this.$name.val(data.name) - this.$privacy.find("[value=" + data.privacy + "]").prop('checked', true) - - console.log(data) + data.rooms && Rooms.deserialize(data.rooms) data.startPosition && scene.camera.move(data.startPosition) - + data.privacy && this.$privacy.find("[value=" + data.privacy + "]").prop('checked', "checked") + this.action = data.isNew ? this.createAction : this.updateAction }, @@ -67,11 +66,13 @@ var BuilderSettings = FormView.extend({ }, serialize: function(){ + map.draw.render() + var fd = new FormData() fd.append( "_csrf", this.$csrf.val() ) fd.append( "_id", this.$id.val() ) fd.append( "name", this.$name.val() ) - fd.append( "privacy", this.$privacy.val() ) + fd.append( "privacy", this.$privacy.filter(":checked").val() == "private" ) fd.append( "rooms", JSON.stringify( Rooms.serialize() ) ) fd.append( "startPosition", JSON.stringify( app.position(scene.camera) ) ) fd.append( "thumbnail", dataUriToBlob(map.canvas.toDataURL()) ) @@ -79,7 +80,6 @@ var BuilderSettings = FormView.extend({ }, success: function(data){ - console.log(data) this.$id.val(data._id) this.$name.val(data.name) this.action = this.updateAction diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index 0135573..49dfd98 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -1282,8 +1282,8 @@ button:hover { color: #000; } -.radio-group__option { - display: none; +.radio-group__option { + display: none; } /*FORM STUFF*/ diff --git a/views/controls/builder/settings.ejs b/views/controls/builder/settings.ejs index 1061b67..bdb8e15 100644 --- a/views/controls/builder/settings.ejs +++ b/views/controls/builder/settings.ejs @@ -15,7 +15,7 @@ <div class="setting"> <div class="radio-group"> - <input id="privacy_private" class="radio-group__option" type="radio" name="privacy" value="public" checked="checked"> + <input id="privacy_private" class="radio-group__option" type="radio" name="privacy" value="public" checked> <label class="radio-group__label" for="privacy_private"> Everyone </label> diff --git a/views/controls/builder/toolbar.ejs b/views/controls/builder/toolbar.ejs index b8ac6e9..b05f314 100644 --- a/views/controls/builder/toolbar.ejs +++ b/views/controls/builder/toolbar.ejs @@ -1,6 +1,7 @@ <div class="edit menu vvbox" id="builderToolbar"> <span - data-info="add media" + data-role='toggle-map-view' + data-info="toggle map view" class="icon-ios7-photos-outline"></span> <span data-role='create-mode' |
