/* */ 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 = opt.el if (! base.el) return base.dimensions = new vec2(opt.width, opt.height) base.center = new vec2(0,0) 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.set_zoom = function (n) { base.zoom_exponent = n 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 base.el.appendChild(canvas) 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 } base.update = function(){ base.draw.animate() } base.toggle = function(){ $(base.el).toggle() } }