summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/map/_map.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-20 13:22:12 -0400
committerJules Laplace <jules@okfoc.us>2014-06-20 13:22:12 -0400
commit3e261676b2f836d272f094e73b0b26c55ef674db (patch)
tree3bd995149a187bc6226c6d9e0d9c2123db765de0 /public/assets/javascripts/rectangles/engine/map/_map.js
parent4d41eaa24d04fe61233c024ece899731aaf9f1e8 (diff)
minimap
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/map/_map.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/map/_map.js47
1 files changed, 36 insertions, 11 deletions
diff --git a/public/assets/javascripts/rectangles/engine/map/_map.js b/public/assets/javascripts/rectangles/engine/map/_map.js
index c27c159..0623d05 100644
--- a/public/assets/javascripts/rectangles/engine/map/_map.js
+++ b/public/assets/javascripts/rectangles/engine/map/_map.js
@@ -1,42 +1,67 @@
/*
*/
-var Map = function(){
+var Map = function(opt){
+
+ opt = defaults(opt, {
+ type: "editor",
+ el: document.querySelector("#map"),
+ width: window.innerWidth,
+ height: window.innerHeight,
+ zoom: -2,
+ })
+
var base = this
- base.el = document.querySelector("#map")
+ base.el = opt.el
if (! base.el) return
- base.dimensions = new vec2(window.innerWidth, window.innerHeight)
+ base.dimensions = new vec2(opt.width, opt.height)
base.center = new vec2(0,0)
- base.sides = function(){
+ base.sides_for_center = function(){
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 )
}
+ base.sides_for_camera = function(){
+ var sides = base.dimensions.clone().div(2).div(base.zoom)
+ return new Rect( scene.camera.x - sides.a, scene.camera.z - sides.b,
+ scene.camera.x + sides.a, scene.camera.z + sides.b )
+ }
+
- base.zoom = 1/4
- base.zoom_exponent = -2
base.set_zoom = function (n) {
base.zoom_exponent = n
- base.zoom = pow(2, base.zoom_exponent)
+ base.zoom = pow(2, n)
}
+ base.set_zoom(opt.zoom)
var canvas = base.canvas = document.createElement("canvas")
canvas.width = base.dimensions.a
canvas.height = base.dimensions.b
- document.querySelector("#map").appendChild(canvas)
+ base.el.appendChild(canvas)
- base.draw = new MapDraw (base)
- base.ui = new MapUI (base)
+ switch (opt.type) {
+ case "editor":
+ base.draw = new MapDraw (base)
+ base.ui = new Map.UI.Editor (base)
+ base.sides = base.sides_for_center
+ $(window).resize(base.resize)
+ break
+
+ case "minimap":
+ base.draw = new MapDraw (base, { center: scene.camera })
+ base.ui = new Map.UI.Minimap (base)
+ base.sides = base.sides_for_camera
+ break
+ }
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()