diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/map/_map.js')
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/map/_map.js | 47 |
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() |
