{"version":3,"sources":["webpack:///webpack/bootstrap 84ce98dd7228b701fffd","webpack:///./src/canvas/canvas.js","webpack:///./src/utils/index.js","webpack:///./src/app/app.js","webpack:///./src/base/asset.js","webpack:///./src/base/assetManager.js","webpack:///./src/base/camera.js","webpack:///./src/base/imageAsset.js","webpack:///./src/engine/Vector2.js","webpack:///./src/input/gamepadController.js","webpack:///./src/input/inputController.js","webpack:///./src/screen/screenManager.js","webpack:///./src/sprite/BaseSprite.js","webpack:///./src/patches/Object.js","webpack:///./src/patches/Path2D.js","webpack:///./src/screen/screen.js","webpack:///./src/sprite/MultiSprite.js","webpack:///./src/base/imageAssetLoader.js","webpack:///./src/input/keyCodeMap.js","webpack:///./src/main.js","webpack:///./src/utils/privateProperty.js"],"names":["Canvas","element","dimension","setupCanvas","focus","canvas","document","querySelector","HTMLElement","console","warn","setAttribute","getAttribute","style","position","setElement","el","width","window","innerWidth","height","innerHeight","addEventListener","apply","arguments","removeEventListener","getContext","clearColor","context","fillStyle","clearRect","fillRect","convertHex","hex","opacity","replace","r","parseInt","substring","g","b","result","round","val","places","c","i","Math","using","self","ns","pattern","name","regex","RegExp","match","extend","args","length","key","hasOwnProperty","obj","pluginArgs","WeakMap","$install","plugin","install","LudicApp","config","$app","input","utils","plugins","_plugins","Array","isArray","forEach","get","devmode","$ludicAppContext","running","lastTime","Date","now","_requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","bind","_animate","delta","time","_time","Number","isNaN","save","update","restore","updateFunction","splice","app","use","installedPlugins","has","from","push","set","Asset","url","type","options","resolve","reject","am","data","AssetManager","assets","loadQueue","promiseQueue","loaders","addLoader","overwrite","promise","asset","NewAsset","loading","then","onAssetResolve","onAssetReject","getAsset","log","Promise","reason","finalPromise","all","assetsLoaded","shift","load","onAssetsLoadedCallback","loader","destroy","fileTypes","DEFAULT_PTM","DEFAULTS","inverseY","inverseX","x","y","ptm","Camera","Object","assign","viewCenterPixel","singleWorldPoint","singlePixelPoint","offset","futurePos","updateEnvironmentVariables","camera","ctx","setTransform","strokeStyle","beginPath","moveTo","lineTo","stroke","ent","chaseMethod","chaseEntity","pixelPoint","_getWorldPointFromPixelPoint_x","_getWorldPointFromPixelPoint_y","worldPoint","_getPixelPointFromWorldPoint_x","_getPixelPointFromWorldPoint_y","vector2","instantaneous","fraction","currentViewCenterWorld","getViewCenterWorld","toMove","get_x","get_y","moveCenterBy","setOffset","setViewCenterWorld","getWorldPointFromPixelPoint","bounds","w","h","translate","getOffsetX","getOffsetY","getPTM","scale","lineWidth","ImageAsset","Image","onload","src","Vector2","ps4Mapping","buttons","axes","sticks","lx","ly","rx","ry","gamepadMaps","gamepadsAxisDeadZone","gamepadsConfig","GamepadController","initGamepads","inputController","gamepads","lastButtonStates","lastAxisStates","e","gamepad","index","id","getGamepads","gps","navigator","gp","_stepGamepads","ix","lastState","getLastState","pressed","gamepadButtonEvent","setLastState","value","axis","dz","getDeadZone","getLastAxisState","gamepadAxisEvent","zeroed","gpIndex","state","gamepadIndex","deadZone","undefined","button","down","dispatchEvent","onGamepadButtonEvent","GamepadButtonEvent","l","evt","enabled","func","keyIdentifier","bndr","binder","call","stopPropagation","listeners","gamepadId","axisIndex","setLastAxisState","gpMap","getGamepadMap","stick","GamepadAxisEvent","values","getValueByAxisId","onGamepadAxis","keyCode","Gamepad","prototype","axisId","indexOf","defaultKeyConfig","preventDefault","mousePosPixel","prevMousePosPixel","InputController","inputControllers","initKeys","initMouse","addInputController","listener","alsoAdd","InputEventListener","addInputListener","allKeys","dir","logAllKeys","keyHandler","thisArg","handler","event","cfg","keyConfig","keys","modifiers","direction","method","_once","shiftKey","altKey","ctrlKey","_execCommand","once","onMouseEvent","updateMousePos","rect","getBoundingClientRect","clientX","left","clientY","top","controller","stripModifiers","mods","split","ret","mod","importKeyConfig","_key","KeyCodeMap","map","conf","_loadListener","methods","avail","code","_code","arr","_stack","_listeners","ScreenManager","idIncrementer","getNewId","Proxy","target","prop","ScreenEventListener","stack","screen","_step","_isFinished","onScreenFinished","_finalData","$manager","$id","onAddedToManager","onScreenAdded","pop","onRemovedFromManager","onScreensRemoved","onWarnPopScreen","findIndex","s","screensRemoved","slice","reverse","addScreenEventListener","manager","replaced","RIGHT","LEFT","BaseSprite","image","framesX","framesY","offsetX","offsetY","getImage","frames","frameWidth","frameHeight","totalFrames","scaleToWidth","currentFrameIndex","parseSpriteSheet","setFrame","frame","sx","sy","frameIndex","pos","useShadow","drawWidth","drawHeight","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","drawImage","defineProperty","enumerable","path","reduce","prev","curr","Path2D","p","arc","ellipse","Screen","rest","onDestroy","MultiSprite","start","count","_ix","end","slices","sliceName","states","setSlice","optScale","fl","df","floor","ImageAssetLoader","PrivateProperty","weakMap","ctor","setArgs"],"mappings":"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","file":"ludic.commonjs.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 84ce98dd7228b701fffd","\n\nclass Canvas {\n constructor(element, dimension='2d') {\n this.dimension = dimension\n this.setupCanvas(element)\n this.focus()\n }\n\n setupCanvas(element){\n let canvas\n\n if(typeof element === 'string'){\n canvas = document.querySelector(element)\n } else if(element instanceof HTMLElement){\n canvas = element\n } else {\n console.warn(`Ludic::Canvas: Unknown property type passed as 'el'.`, element)\n }\n\n if(canvas != null){\n // make sure canvas has 'tabindex' attr for key binding\n canvas.setAttribute('tabindex', canvas.getAttribute('tabindex') || '1')\n canvas.style.position = 'relative'\n this.setElement(canvas)\n } else {\n console.warn(`Ludic::Canvas: Ludic does not have a canvas to bind to. Please supply one with the 'el' config property.`)\n }\n }\n\n resize(){\n this.el.width = window.innerWidth\n this.el.height = window.innerHeight\n }\n\n focus(){\n this.el.focus()\n }\n\n getElement() {\n return this.el\n }\n\n setElement(canvas){\n this.el = canvas\n }\n\n addEventListener(){\n this.el.addEventListener.apply(this.el, arguments)\n }\n\n removeEventListener(){\n this.el.removeEventListener.apply(this.el, arguments)\n }\n\n getContext(dimension = this.dimension){\n return this.el.getContext(dimension)\n }\n\n height(){\n return this.el.height\n }\n\n width(){\n return this.el.width\n }\n\n /**\n * Helper function to clear the current context at full width-height\n * @param {String} clearColor - color to clear the screen with\n */\n clear(clearColor = 'white', context = this.getContext()){\n context.fillStyle = clearColor\n context.clearRect(0, 0, this.width(), this.height())\n context.fillRect(0, 0, this.width(), this.height())\n }\n}\n\nexport default Canvas\n\n\n\n// WEBPACK FOOTER //\n// ./src/canvas/canvas.js","export function convertHex(hex, opacity = 1){\n hex = hex.replace('#','')\n var r = parseInt(hex.substring(0,2), 16)\n var g = parseInt(hex.substring(2,4), 16)\n var b = parseInt(hex.substring(4,6), 16)\n\n var result = 'rgba('+r+','+g+','+b+','+opacity+')'\n return result\n}\n\nexport function round(val, places=0) {\n var c = 1\n for (var i = 0; i < places; i++){\n c *= 10\n }\n return Math.round(val*c)/c\n}\n\nexport function using(self, ns, pattern){\n self = self || this\n if (pattern == null) {\n // import all\n for (let name in ns) {\n self[name] = ns[name]\n }\n } else if (typeof pattern == 'string') {\n let regex = new RegExp(pattern)\n // import only stuff matching given pattern\n for (let name in ns) {\n if (name.match(regex)) {\n self[name] = ns[name]\n }\n }\n }\n}\n\nexport function extend(...args) {\n for (var i = 1; i < args.length; i++){\n\n if(typeof args[i] === 'object' && !(args[i] instanceof HTMLElement)){\n for (var key in args[i]){\n if (args[i].hasOwnProperty(key)){\n args[0] = args[0] || {}\n var obj = this.extend(args[0][key], args[i][key])\n args[0][key] = obj\n }\n }\n } else {\n args[0] = args[i]\n }\n\n }\n return args[0]\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","import Canvas from '../canvas/canvas';\nimport Camera from '../base/camera';\nimport * as Utils from '../utils';\nimport ScreenManager from '../screen/screenManager';\nimport InputController from '../input/inputController';\n\nconst pluginArgs = new WeakMap()\n\nlet $install = function $install(plugin, ...args){\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args)\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args)\n }\n}\n\nexport class LudicApp {\n constructor(config, $app = {}) {\n this.$app = $app\n // TODO: Create better config system\n this.$app.config = config;\n this.$app.canvas = new Canvas(config.el);\n this.$app.context = this.$app.canvas.getContext();\n this.$app.input = new InputController(this.$app.canvas);\n this.$app.utils = Utils;\n\n // install plugins\n let plugins = this.$app._plugins\n if(plugins && Array.isArray(plugins)){\n plugins.forEach(plugin => $install(plugin, ...(pluginArgs.get(plugin) || [])))\n }\n\n\n //Put the app context on the window in devmode\n if(this.$app.devmode){\n window.$ludicAppContext = this.$app;\n }\n\n this.running = false;\n this.lastTime = Date.now();\n\n this._requestAnimFrame = (()=>{\n return window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n (function(){\n console.warn('LudicApp: falling back to basic requestAnimationFrame');\n return false;\n })() ||\n function( callback ){\n window.setTimeout(callback, 1000 / 60);\n };\n })();\n\n // do some binding\n this._requestAnimFrame = this._requestAnimFrame.bind(window);\n this._animate = this._animate.bind(this);\n }\n\n // override\n update(delta,time) {}\n\n _animate(time) {\n if(this.running){\n this._requestAnimFrame(this._animate);\n\n var delta = (time - this.lastTime) / 1000;\n this.lastTime = this.$app._time = time;\n\n if(!Number.isNaN(delta)){\n this.$app.context.save();\n this.update(delta,time);\n this.$app.context.restore();\n }\n }\n }\n\n pause() {\n this.running = !this.running;\n if (this.running)\n this._animate();\n }\n\n run(updateFunction){\n this.running = true;\n if(updateFunction != null){\n this.update = updateFunction;\n }\n this._animate();\n }\n\n use(plugin, ...args){\n args.splice(0,0,this.$app)\n $install(plugin, args)\n }\n\n}\n\nexport default function app(config){\n return new LudicApp(config, app)\n}\n\napp.use = function(plugin){\n const installedPlugins = (this._plugins || (this._plugins = []))\n if(pluginArgs.has(plugin)){\n return this\n }\n\n // additional parameters\n const args = Array.from(arguments)\n args.splice(0,1,this)\n installedPlugins.push(plugin)\n pluginArgs.set(plugin, args)\n return this\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.js","\n\nclass Asset {\n constructor(name, url, type, options) {\n this.name = name;\n this.url = url;\n this.type = type;\n this.options = options || {};\n\n }\n\n load(){\n }\n\n onload(resolve,reject){\n return () => {\n resolve(this);\n };\n }\n\n onAssetResolve(am){\n }\n\n onAssetReject(am){\n\n }\n\n destroy(){\n this.name = null;\n this.url = null;\n this.type = null;\n this.options = null;\n this.data = null;\n }\n}\n\nexport default Asset;\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/asset.js","// import ImageAsset from './imageAsset';\n// import RubeAsset from './rubeAsset';\n// import RubeImageAsset from './rubeImageAsset';\nimport ImageLoader from './imageAssetLoader';\n\nclass AssetManager {\n constructor() {\n this.assets = {};\n\n this.loadQueue = [];\n this.promiseQueue = [];\n this.loaders = {};\n\n this.addLoader('image', ImageLoader);\n }\n\n loadResource(name, url, type, options, overwrite){\n // let promise = Promise.reject({\n // reason: \"resource load failed\",\n // name,\n // url,\n // type,\n // options,\n // overwrite\n // });\n let promise = null;\n // first check if we have the asset\n if(!this.assets[name] || overwrite){\n var asset = this.NewAsset(name, url, type, options);\n if(asset){\n this.loadQueue.push(asset);\n\n this.loading = true;\n\n promise = asset.promise.then(this.onAssetResolve.bind(this), this.onAssetReject.bind(this));\n }\n }\n return promise;\n }\n\n getAsset(name){\n return this.assets[name];\n }\n\n getImage(name){\n var asset = this.getAsset(name);\n\n switch (asset.type) {\n case 'image':\n case 'rubeImage':\n return asset.data;\n break;\n default:\n return null;\n }\n }\n\n getData(name){\n return this.getAsset(name).data;\n }\n\n onAssetResolve(asset){\n this.assets[asset.name] = asset;\n asset.onAssetResolve(this);\n return asset;\n }\n\n onAssetReject(){\n console.log('rejected: ',arguments);\n return Promise.reject({\n reason: 'onAssetReject'\n });\n }\n\n isLoading(){\n return this.loading;\n }\n\n step(){\n\n if(this.loadQueue.length==0){\n if(!this.finalPromise){\n this.finalPromise = Promise.all(this.promiseQueue).then(()=>{\n if(this.finalPromise){ // [tries to*] assures that this is not called prematurely if an asset is added late\n this.assetsLoaded.apply(this, arguments);\n this.promiseQueue = []; // reset promise queue to free objects;\n }\n });\n }\n } else {\n this.finalPromise = null;\n var asset = this.loadQueue.shift();\n this.promiseQueue.push(asset.promise);\n asset.load();\n }\n\n }\n\n assetsLoaded(){\n // console.log('all assets loaded: ',arguments);\n if(this.onAssetsLoadedCallback){\n this.onAssetsLoadedCallback(this);\n }\n this.loading = false;\n }\n\n setOnAssetsLoadedCallback(callback){\n this.onAssetsLoadedCallback = callback;\n }\n\n NewAsset(name, url, type, options){\n type = type || 'image';\n // switch (type) {\n // case 'image':\n // return new ImageAsset(name, url, type, options);\n // break;\n // case 'rube':\n // return new RubeAsset(name, url, type, options);\n // break;\n // case 'rubeImage':\n // return new RubeImageAsset(name, url, type, options);\n // break;\n // default:\n // return null;\n // }\n\n let loader = this.loaders[type];\n\n if(loader){\n return loader.load(name, url, type, options);\n } else {\n return null;\n }\n }\n\n destroyAsset(asset){\n delete this.assets[asset.name];\n asset.destroy();\n }\n\n addLoader(fileTypes, loader){\n if(typeof fileTypes === 'string'){\n fileTypes = [fileTypes];\n }\n\n fileTypes.forEach((type)=>{\n this.loaders[type] = loader;\n });\n }\n}\n\nexport default new AssetManager();\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/assetManager.js","import {round} from '../utils'\nimport Vector2 from '../engine/Vector2'\nimport Canvas from '../canvas/canvas'\nimport app from '../app/app'\n\n// PTM: Pixels to Meters ratio\nvar DEFAULT_PTM = 32\n\nconst DEFAULTS = {\n inverseY: true,\n inverseX: false,\n x: 0,\n y: 0,\n ptm: DEFAULT_PTM,\n}\n\nclass Camera {\n\n /**\n * `new Camera(options)`\n * @param {object} [options] - options object\n * @param {boolean} [options.inverseY=true] - make 'y' axis point up\n * @param {boolean} [options.inverseX=false] - make 'x' axis point left\n * @param {number} [options.x=0] - 'x' coordinate to start the camera\n * @param {number} [options.y=0] - 'y' coordinate to start the camera\n * @param {number} [options.width=app.canvas.width()] - width of the camera view\n * @param {number} [options.height=app.canvas.height()] - height of the camera view\n *\n * `new Camera({Canvas})`\n * @param {Canvas} [canvas] - optional canvas to provide dimensions\n *\n * `new Camera(ptm)` - assumes fill canvas width/height\n * @param {number} [ptm] - pixels to meters scaling factor\n *\n * `new Camera(width,height)`\n * @param {number} [width] - width of the camera view\n * @param {number} [height] - height of the camera view\n *\n * `new Camera(x,y,width,height)`\n * @param {number} [x] - 'x' coordinate to start the camera\n * @param {number} [y] - 'y' coordinate to start the camera\n * @param {number} [width] - width of the camera view\n * @param {number} [height] - height of the camera view\n */\n constructor(){\n let options = Object.assign({},DEFAULTS)\n if(arguments.length === 1){\n if(typeof arguments[0] === 'object'){\n if(arguments[0] instanceof Canvas){\n options.width = arguments[0].width();\n options.height = arguments[0].height();\n } else {\n // options argument\n options = Object.assign(options, arguments[0])\n }\n } else if(typeof arguments[0] === 'number'){\n // arg is ptm\n options.ptm = arguments[0];\n } else {\n console.warn(`Camera::Unknown single argument '${typeof arguments[0]}'.`, arguments);\n }\n } else if(arguments.length === 2) {\n // width and height\n let [width, height] = arguments;\n options.width = width;\n options.height = height;\n } else if(arguments.length === 4){\n // x,y,width,height\n let [x,y,width,height] = arguments;\n options.x = x;\n options.y = y;\n options.width = width;\n options.height = height;\n } else if(arguments.length === 0) {\n console.warn(`Camera::Initialized without any arguments.`, arguments)\n } else if(arguments.length !== 0) {\n console.warn(`Camera::Unknown arguments.`, arguments)\n }\n\n // apply the options\n this.x = options.x;\n this.y = options.y;\n this.width = options.width;\n this.height = options.height;\n this.inverseX = options.inverseX;\n this.inverseY = options.inverseY;\n this.ptm = options.ptm;\n\n // setup variables\n this.viewCenterPixel = {\n x: 0,\n y: 0\n };\n this.singleWorldPoint = {\n x:0,\n y:0\n };\n this.singlePixelPoint = {\n x:0,\n y:0\n };\n this.offset = {\n x:0,\n y:0\n };\n this.futurePos = new Vector2(0,0);\n\n this.updateEnvironmentVariables();\n window.addEventListener('resize', this.updateEnvironmentVariables.bind(this), false);\n\n window.camera = this;\n }\n\n getCanvas(){\n return this.canvas;\n }\n\n\n draw(ctx){\n\n this.setTransform(ctx);\n\n }\n\n drawAxes(ctx) {\n ctx.strokeStyle = 'rgb(192,0,0)';\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(1, 0);\n ctx.stroke();\n ctx.strokeStyle = 'rgb(0,192,0)';\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(0, 1);\n ctx.stroke();\n }\n\n setChaseEntity(ent,chaseMethod){\n this.chaseEntity = ent;\n this.chaseMethod = chaseMethod;\n }\n\n setChaseMethod(chaseMethod){\n this.chaseMethod = chaseMethod;\n }\n\n getWorldPointFromPixelPoint(pixelPoint) {\n this.singleWorldPoint.x = this._getWorldPointFromPixelPoint_x(pixelPoint.x)\n this.singleWorldPoint.y = this._getWorldPointFromPixelPoint_y(pixelPoint.y);\n return this.singleWorldPoint;\n }\n\n _getWorldPointFromPixelPoint_x(x){\n // let inv = (this.offset.x - x) / this.ptm;\n // let reg = (x - this.offset.x) / this.ptm;\n return (this.inverseX ? (this.offset.x - x) : (x - this.offset.x)) / this.ptm\n }\n\n _getWorldPointFromPixelPoint_y(y){\n // let inv = (y - (this.height - this.offset.y)) / this.ptm;\n // let reg = ((this.height - this.offset.y) - y) / this.ptm;\n return (this.inverseY ? (y - (this.height - this.offset.y)) : ((this.height - this.offset.y) - y)) / this.ptm\n }\n\n getPixelPointFromWorldPoint(worldPoint){\n this.singlePixelPoint.x = this._getPixelPointFromWorldPoint_x(worldPoint.x);\n this.singlePixelPoint.y = this._getPixelPointFromWorldPoint_y(worldPoint.y);\n return this.singlePixelPoint;\n }\n\n _getPixelPointFromWorldPoint_x(x){\n // let reg = (x*this.ptm) + this.offset.x;\n // let inv = this.offset.x - (x*this.ptm);\n return this.inverseX ? (this.offset.x - (x*this.ptm)) : ((x*this.ptm) + this.offset.x);\n }\n\n _getPixelPointFromWorldPoint_y(y){\n // let inv = (y*this.ptm) + (this.height - this.offset.y);\n // let reg = (this.height - this.offset.y) - (y*this.ptm);\n return this.inverseY ? ((y*this.ptm) + (this.height - this.offset.y)) : ((this.height - this.offset.y) - (y*this.ptm));\n }\n\n setViewCenterWorld(vector2, instantaneous, fraction) {\n var currentViewCenterWorld = this.getViewCenterWorld();\n var toMove = {};\n toMove.x = vector2.get_x() - currentViewCenterWorld.x;\n toMove.y = vector2.get_y() - currentViewCenterWorld.y;\n this.moveCenterBy(toMove, instantaneous, fraction);\n }\n\n centerWorldToCamera(){\n // this.setViewCenterWorld(new Vector2(), true);\n this.setOffset(this.viewCenterPixel);\n }\n\n centerWorldToTopLeft(){\n this.setViewCenterWorld(new Vector2(), true);\n }\n\n getViewCenterWorld(){\n return this.getWorldPointFromPixelPoint( this.viewCenterPixel );\n }\n\n moveCenterBy(toMove,instantaneous, fraction){\n fraction = fraction || instantaneous ? 1 : 0.25;\n this.offset.x -= round(fraction * toMove.x * this.ptm, 0);\n this.offset.y += round(fraction * toMove.y * this.ptm, 0);\n }\n\n updateEnvironmentVariables(){\n this.viewCenterPixel = {\n x: this.width / 2,\n y: this.height / 2\n };\n }\n\n getViewCenterPixel(){\n return this.viewCenterPixel\n }\n\n getViewportBounds(){\n var bounds = {\n x: this._getWorldPointFromPixelPoint_x(0),\n y: this._getWorldPointFromPixelPoint_y(0),\n w: this._getWorldPointFromPixelPoint_x(this.width),\n h: this._getWorldPointFromPixelPoint_y(this.height),\n }\n return bounds;\n }\n\n getPTM(){\n return this.ptm;\n }\n\n setPTM(ptm){\n this.ptm = ptm;\n }\n\n getOffset(){\n return this.offset;\n }\n\n getOffsetX(){\n return this.offset.x;\n }\n\n getOffsetY(){\n return this.offset.y;\n }\n\n setOffset(obj, y){\n if(typeof obj === 'object' && !y){\n this.offset.x = obj['x'] || 0;\n this.offset.y = obj['y'] || 0;\n } else if(typeof obj === 'number' && typeof y === 'number'){\n this.offset.x = obj;\n this.offset.y = y;\n }\n }\n\n setTransform(ctx){\n ctx.translate(this.getOffsetX(), this.getOffsetY());\n let ptm = this.getPTM();\n // apply the scaling factor and inverses\n ctx.scale(this.inverseX ? -ptm : ptm, this.inverseY ? -ptm : ptm);\n ctx.lineWidth /= ptm;\n }\n\n resetTransform(ctx){\n let ptm = this.getPTM();\n // ctx.scale(1 / this.getPTM(),1 / this.getPTM());\n ctx.scale(this.inverseX ? (-1 / ptm) : (1 / ptm), this.inverseY ? (-1 / ptm) : (1 / ptm));\n ctx.lineWidth *= ptm;\n ctx.translate(-this.getOffsetX(), -this.getOffsetY());\n }\n}\n\n\nexport default Camera\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/camera.js","import Asset from './asset';\n\nclass ImageAsset extends Asset {\n constructor(name, url, type, options) {\n super(name, url, type || 'image', options);\n\n this.data = new Image();\n this.promise = new Promise((resolve,reject)=>{\n this.data.onload = this.onload(resolve,reject);\n });\n\n }\n\n load(){\n this.data.src = this.url;\n }\n\n onload(resolve,reject){\n return () => {\n resolve(this);\n };\n }\n\n destroy(){\n\n }\n}\n\nexport default ImageAsset;\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/imageAsset.js","\n\nexport default class Vector2 {\n constructor(x = 0,y = 0) {\n this.x = x;\n this.y = y;\n }\n\n get_x(){\n return this.x;\n }\n get_y(){\n return this.y;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/engine/Vector2.js","let ps4Mapping = {\n buttons: ['cross','circle','square','triangle','l1','r1','l2','r2','extra','start','l3','r3','up','down','left','right','home','select'],\n axes: ['lx','ly','rx','ry'],\n sticks: {\n lx:'leftStick',\n ly:'leftStick',\n rx:'rightStick',\n ry:'rightStick'\n }\n};\n\nlet gamepadMaps = {\n 'Wireless Controller (STANDARD GAMEPAD Vendor: 054c Product: 05c4)':ps4Mapping // ps4 controller\n};\n\nlet gamepadsAxisDeadZone = 0.08;\nlet gamepadsConfig = {};\n\nclass GamepadController {\n constructor() {\n this.initGamepads();\n }\n\n install(inputController){\n this.inputController = inputController;\n }\n\n initGamepads(){\n this.gamepads = {};\n this.lastButtonStates = [\n [], // gamepad index 0\n [], // gamepad index 1\n [], // gamepad index 2\n [] // gamepad index 3\n ];\n this.lastAxisStates = [\n [], // gamepad index 0\n [], // gamepad index 1\n [], // gamepad index 2\n [] // gamepad index 3\n ];\n window.addEventListener(\"gamepadconnected\", (e)=>{\n console.log(\"Gamepad connected at index %d: %s. %d buttons, %d axes.\",\n e.gamepad.index, e.gamepad.id,\n e.gamepad.buttons.length, e.gamepad.axes.length);\n console.log(e.gamepad);\n this.getGamepads();\n });\n window.addEventListener(\"gamepaddisconnected\", (e)=>{\n console.log('Gamepad disconnected: ',e);\n this.getGamepads();\n });\n\n // window.addEventListener('gamepadbuttondown', (e)=>{\n // console.log('gamepad button down: ',e);\n // });\n //\n // window.addEventListener('gamepadbuttonup', (e)=>{\n // console.log('gamepad button up: ',e);\n // });\n }\n\n getGamepads(){\n var gps = navigator.getGamepads() || [];\n var gp;\n for(var i=0;i{\n // get the last known state of the button\n var lastState = this.getLastState(i,ix);\n b.index = ix; // tell the button what it's index is\n b.lastState = lastState;\n\n if(b.pressed){\n // if pressed, create a button event and set the buttons last known state\n this.gamepadButtonEvent(gp,b,true);\n this.setLastState(i,ix,true);\n } else {\n if(lastState) {\n // if the button is not pressed but its last state was pressed, create a 'button up' event\n if(lastState.pressed) {\n this.gamepadButtonEvent(gp,b,false);\n }\n }\n // set the buttons last known state for not pressed\n this.setLastState(i,ix,false);\n }\n });\n\n // do the same thing for each of the axis (analog sticks)\n // loop through each and poll state\n gp.axes.forEach( (value,axis)=>{\n // get the deadZone associated with each axis\n var dz = this.getDeadZone(axis);\n // get the last known state for the axis\n var lastState = this.getLastAxisState(i,axis);\n\n // if the value of the axis is withing the bounds of the deadzone\n // create an axis event\n if( value < -dz || value > dz ){\n this.gamepadAxisEvent(gp,axis,value,false);\n } else if(!lastState.zeroed){\n this.gamepadAxisEvent(gp,axis,0,true);\n }\n });\n } else {\n console.log('no gamepad!',i);\n }\n }\n }\n\n getLastAxisState(gpIndex,axis){\n var b = this.lastAxisStates[gpIndex][axis] || {zeroed:true};\n return b;\n }\n\n setLastAxisState(gpIndex,axis,state){\n this.lastAxisStates[gpIndex][axis] = {zeroed:state};\n }\n\n getDeadZone(gamepadIndex){\n if(gamepadsConfig.hasOwnProperty(gamepadIndex) && gamepadsConfig[gamepadIndex].hasOwnProperty(deadZone)){\n return gamepadsConfig[gamepadIndex].deadZone;\n }\n return gamepadsAxisDeadZone;\n }\n\n setDeadZone(deadZone,gamepadIndex){\n if(gamepadIndex !== null && gamepadIndex !== undefined){\n if(gamepadsConfig.hasOwnProperty(gamepadIndex)){\n gamepadsConfig[gamepadIndex].deadZone = deadZone;\n } else {\n gamepadsConfig[gamepadIndex] = {deadZone: deadZone};\n }\n } else {\n gamepadsAxisDeadZone = deadZone;\n }\n }\n\n getLastState(i,ix){\n var b = this.lastButtonStates[i][ix];\n return b;\n }\n\n setLastState(i,ix,state){\n this.lastButtonStates[i][ix] = {pressed:state};\n }\n\n gamepadButtonEvent(gamepad,button,down) {\n button.id = gamepadMaps[gamepad.id].buttons[button.index];\n if(button.id){\n this.inputController.dispatchEvent(this,this.onGamepadButtonEvent,new GamepadButtonEvent(gamepad,button,down));\n } else {\n console.log(arguments);\n }\n }\n\n onGamepadButtonEvent(l,evt){\n if(!l || !l.enabled){\n return;\n }\n let func = l[evt.keyIdentifier];\n if(!func){\n return;\n }\n if(l.gamepadIndex >= 0 && l.gamepadIndex !== evt.gamepadIndex){\n return;\n }\n\n let bndr = l.binder || l;\n let b = func.call(bndr,evt.down,evt);\n if(b === true){\n return true;\n }\n // check for if listener wants the only control\n if(l.stopPropagation){\n return true;\n }\n }\n\n _onGamepadButtonEvent(evt){\n var l;\n let down = evt.down;\n\n // if(this.config.logAllKeys){\n // console.log(evt.keyCode,evt.keyIdentifier);\n // }\n for(let i=listeners.length-1; i>=0; i--){\n l = listeners[i];\n if(!l || !l.enabled){\n continue;\n }\n let func = l[evt.keyIdentifier];\n if(!func){\n continue;\n }\n if(l.gamepadIndex >= 0 && l.gamepadIndex !== evt.gamepadIndex){\n continue;\n }\n\n let bndr = l.binder || l;\n let b = func.call(bndr,down,evt);\n if(b === true){\n return;\n }\n // check for if listener wants the only control\n if(l.stopPropagation){\n break;\n }\n }\n // if(this.config.logUnmappedKeys){\n // console.log(evt.keyCode,evt.keyIdentifier,evt.button.value, listeners.length===0?\"No listeners\":\"\");\n // }\n }\n\n getGamepadMap(gamepadId){\n return gamepadMaps[gamepadId] || {};\n }\n\n gamepadAxisEvent(gamepad,axisIndex,value,zeroed){\n this.setLastAxisState(gamepad.index,axisIndex,zeroed);\n var gpMap = this.getGamepadMap(gamepad.id);\n var axis = {};\n axis.id = gpMap.axes[axisIndex];\n axis.stick = gpMap.sticks[axis.id];\n axis.index = axisIndex;\n axis.value = value;\n axis.zeroed = zeroed;\n\n var evt = new GamepadAxisEvent(gamepad,axis);\n evt.values = {};\n if(axis.stick==='leftStick'){\n evt.values.x = gamepad.getValueByAxisId('lx');\n evt.values.y = gamepad.getValueByAxisId('ly');\n } else if(axis.stick==='rightStick'){\n evt.values.x = gamepad.getValueByAxisId('rx');\n evt.values.y = gamepad.getValueByAxisId('ry');\n }\n\n // this.onGamepadAxis(evt);\n this.inputController.dispatchEvent(this,this.onGamepadAxis, evt);\n }\n\n _onGamepadAxis(evt){\n var l;\n for(var i=listeners.length-1; i>=0; i--){\n l = listeners[i];\n if(!l){\n continue;\n }\n\n let func = l[evt.stick];\n if(!func){\n continue;\n }\n // only fire for correct gamepadIndex\n if(l.gamepadIndex >= 0 && l.gamepadIndex !== evt.gamepadIndex){\n continue;\n }\n\n let bndr = l.binder || l;\n if(func.call(bndr,evt.values.x,evt.values.y,evt) === false){\n continue;\n }\n return;\n }\n }\n onGamepadAxis(l,evt){\n let func = l[evt.stick];\n if(!func){\n return\n }\n // only fire for correct gamepadIndex\n if(l.gamepadIndex >= 0 && l.gamepadIndex !== evt.gamepadIndex){\n return\n }\n\n let bndr = l.binder || l;\n if(func.call(bndr,evt.values.x,evt.values.y,evt) === false){\n return\n }\n }\n}\n\nclass GamepadButtonEvent {\n constructor(gamepad,button,down) {\n this.gamepad = gamepad;\n this.gamepadIndex = gamepad.index;\n this.button = button;\n this.down = down;\n this.type = 'gamepadButtonEvent';\n this.keyCode = button.index;\n this.keyIdentifier = button.id;\n }\n}\n\n\n\nclass GamepadAxisEvent {\n constructor(gamepad,axis) {\n this.gamepad = gamepad;\n this.gamepadIndex = gamepad.index;\n this.axis = axis;\n this.stick = axis.stick;\n this.keyCode = 200+axis.index;\n this.keyIdentifier = axis.id;\n this.values = axis.values;\n this.type = 'gamepadAxisEvent';\n }\n}\n\nGamepad.prototype.getValueByAxisId = function(axisId){\n var gp = gamepadMaps[this.id];\n var ix = gp.axes.indexOf(axisId);\n if(ix>-1){\n return this.axes[ix];\n }\n return;\n}\n\nexport default GamepadController\n\n\n\n// WEBPACK FOOTER //\n// ./src/input/gamepadController.js","import KeyCodeMap from './keyCodeMap';\n\nimport GamepadController from './gamepadController'\n\nlet listeners = [];\nlet defaultKeyConfig = {\n preventDefault: true\n}\nlet ps4Mapping = {\n buttons: ['cross','circle','square','triangle','l1','r1','l2','r2','extra','start','l3','r3','up','down','left','right','home','select'],\n axes: ['lx','ly','rx','ry'],\n sticks: {\n lx:'leftStick',\n ly:'leftStick',\n rx:'rightStick',\n ry:'rightStick'\n }\n};\n\nlet gamepadMaps = {\n 'Wireless Controller (STANDARD GAMEPAD Vendor: 054c Product: 05c4)':ps4Mapping // ps4 controller\n};\n\nlet gamepadsAxisDeadZone = 0.08;\nlet gamepadsConfig = {};\n\nlet mousePosPixel = {};\nlet prevMousePosPixel = {};\n// let gamepadTypeMaps = [{id:'054c',type:'ps4'}];\n\nclass InputController {\n constructor(canvas) {\n this.canvas = canvas;\n // TODO: refactor config\n this.config = {};\n\n this.inputControllers = [];\n\n this.initKeys();\n this.initMouse();\n this.addInputController(new GamepadController())\n // this.initGamepads();\n }\n\n addInputController(inputController){\n inputController.install(this);\n this.inputControllers.push(inputController);\n }\n\n // input methods\n\n addInputListener(listener){\n listeners.push(listener);\n }\n\n /**\n * Instantiates and returns a new InputEventListener\n * @param {Object} options - passed along to new InputEventListener\n * @param {Binder} binder (optional) - passed along to new InputEventListener\n * @param {Boolean} alsoAdd (optional) - determines whether the returning InputEventListener should also be added to this\n *\n * @return {InputEventListener} - listener object used to attached handlers for input events\n */\n newInputListener(options, binder, alsoAdd){\n if(typeof alsoAdd === 'undefined' && typeof binder === 'boolean'){\n // alsoAdd was the second param, without binder\n alsoAdd = binder;\n binder = null;\n }\n var l = new InputEventListener(options, binder);\n if(alsoAdd){\n this.addInputListener(l);\n }\n return l;\n }\n\n removeInputListener(listener){\n var ix = listeners.indexOf(listener);\n if(ix>-1){\n listeners.splice(ix,1);\n }\n }\n\n // -- keyboard\n initKeys() {\n // object for all key states\n this.allKeys = {};\n\n let func = (evt)=>{\n // evt.preventDefault();\n // this.onKeyDown(this.canvas,evt);\n // this.onKeyEvent(evt);\n var l;\n let down = evt.type === 'keydown';\n let dir = down?'down':'up';\n\n // give the event a list of all keys states\n this.allKeys[evt.keyCode] = this.allKeys[evt.key] = down;\n evt.allKeys = this.allKeys;\n\n if(this.config.logAllKeys){\n console.log(evt.keyCode);\n }\n this.dispatchEvent(this,this.keyHandler,evt,down,dir)\n }\n\n this.canvas.addEventListener('keydown', func, false);\n this.canvas.addEventListener('keyup', func, false);\n }\n\n dispatchEvent(thisArg, handler, event, ...args){\n for(let listener, i=listeners.length-1; i>=0; i--){\n listener = listeners[i];\n if(!listener || !listener.enabled){ continue;}\n if(handler.call(thisArg,listener,event,...args) === true){\n break;\n }\n }\n }\n\n keyHandler(l,evt,down,dir){\n let cfg = l.keyConfig;\n let key = cfg[evt.keyCode];\n let binder = l.binder || l;\n if(key){\n if(typeof key === 'object' || Array.isArray(key)) {\n let keys;\n // make array out of single object, treat everything like an array\n if(Array.isArray(key)){\n keys = key;\n } else {\n keys = [key];\n }\n\n // loop through all key configs\n for(let key of keys){\n let modifiers = false;\n let direction = !key.hasOwnProperty('direction') || key.direction === dir || key.direction === 'both';\n let method = key.hasOwnProperty('method') && key.method;\n key._once = down?key._once:false;\n\n // logic for modifiers\n if(!!key.shiftKey == evt.shiftKey && !!key.altKey == evt.altKey && !!key.ctrlKey == evt.ctrlKey){\n modifiers = true;\n }\n\n if(method && modifiers && direction && !key._once){\n binder = key.binder || binder;\n var b = this._execCommand(l,method,binder,down,evt);\n key._once = key.once && down;\n }\n }\n } else {\n console.warn(`InputController: Unsupported key config type '${key}'`);\n }\n }\n // else {\n // console.log('no config for keycode', evt.keyCode, key);\n // }\n\n // check for if listener wants the only control\n // if(l.stopPropagation){\n // break;\n // }\n }\n\n onKeyEvent(evt) {\n // console.log(evt);\n var l;\n let down = evt.type === 'keydown';\n let dir = down?'down':'up';\n\n // give the event a list of all keys states\n this.allKeys[evt.keyCode] = this.allKeys[evt.key] = down;\n evt.allKeys = this.allKeys;\n\n if(this.config.logAllKeys){\n console.log(evt.keyCode);\n }\n for(var i=listeners.length-1; i>=0; i--){\n l = listeners[i];\n if(!l || !l.enabled){ continue;}\n\n\n }\n\n }\n\n _execCommand(listener, method, binder, ...args){\n if(typeof method === 'string'){\n return listener[method].call(binder,...args);\n } else if(typeof method === 'function'){\n return method.call(binder,...args);\n } else {\n return false;\n }\n }\n\n\n // -- mouse\n initMouse(){\n this.canvas.addEventListener('mousemove', function(evt) {\n this.onMouseEvent('mouseMove',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('mousedown', function(evt) {\n this.onMouseEvent('mouseDown',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('mouseup', function(evt) {\n this.onMouseEvent('mouseUp',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('mouseout', function(evt) {\n this.onMouseEvent('mouseOut',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('mouseenter', function(evt) {\n this.onMouseEvent('mouseEnter',this.canvas.el,evt);\n }.bind(this), false);\n this.canvas.addEventListener('mouseleave', function(evt) {\n this.onMouseEvent('mouseLeave',this.canvas.el,evt);\n }.bind(this), false);\n\n // touch events\n this.canvas.addEventListener('touchstart', function(evt) {\n this.onMouseEvent('touchStart',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('touchend', function(evt) {\n this.onMouseEvent('touchEnd',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('touchmove', function(evt) {\n this.onMouseEvent('touchMove',this.canvas.el,evt);\n }.bind(this), false);\n\n this.canvas.addEventListener('touchcancel', function(evt) {\n this.onMouseEvent('touchCancel',this.canvas,evt);\n }.bind(this), false);\n }\n\n onMouseEvent(key, canvas, evt){\n prevMousePosPixel = mousePosPixel;\n this.updateMousePos(canvas, evt);\n\n for(var i=listeners.length-1; i>=0; i--){\n let l = listeners[i];\n if(l && l.enabled){\n if(l.hasOwnProperty(key)){\n let bndr = l.binder || l;\n let b = l[key].call(bndr,mousePosPixel,evt);\n if(b === true){\n return;\n }\n }\n }\n }\n }\n\n // -- mouse helper function\n updateMousePos(canvas, evt) {\n var rect = canvas.getBoundingClientRect();\n mousePosPixel = {\n x: evt.clientX - rect.left,\n y: canvas.height - (evt.clientY - rect.top)\n };\n }\n\n // -- gamepad\n\n\n update(...args){\n this.inputControllers.forEach((controller)=>{\n if(controller.hasOwnProperty('update')){\n controller.update(...args)\n }\n })\n }\n\n}\n\nlet stripModifiers = function(key){\n let mods = key.split('.');\n key = mods[0];\n let ret = {key, config:{}};\n if(mods.length > 1){\n for(let i=1; i{\n return Object.assign({},mods.config,conf);\n });\n } else {\n console.warn(`InputController: Unsupported key config type '${typeof cfg}' for '${key}'`, cfg);\n }\n }\n return config;\n}\n\nclass InputEventListener {\n constructor(options, binder) {\n let keyConfig = options;\n if(options.hasOwnProperty('keyConfig')){\n keyConfig = options.keyConfig;\n }\n if(options.hasOwnProperty('gamepadIndex')){\n this.gamepadIndex = options.gamepadIndex;\n } else {\n this.gamepadIndex = -1;\n }\n if(options.hasOwnProperty('binder')){\n binder = options.binder;\n }\n\n this.stopPropagation = options.stopPropagation;\n\n this.keyConfig = importKeyConfig.call(this,keyConfig);\n this.options = options;\n this.binder = binder;\n this.enabled = options.hasOwnProperty('enabled') ? options.enabled : true;\n\n if(options.hasOwnProperty('methods')){\n this._loadListener(options.methods);\n }\n }\n\n $enable(){\n this.enabled = true;\n }\n\n $disable(){\n this.enabled = false;\n }\n\n _loadListener(listener){\n let avail = ['start', 'select', 'home', 'extra', 'left', 'right', 'up', 'down',\n 'l1', 'l2', 'l3', 'r1', 'r2', 'r3', 'triangle', 'square', 'circle', 'cross',\n 'leftStick', 'rightStick', 'mouseMove', 'mouseDown', 'mouseUp', 'mouseOut', 'mouseEnter', 'mouseLeave',\n 'touchStart', 'touchEnd', 'touchMove', 'touchCancel',\n ];\n\n for(let key of avail){\n if(key in listener){\n let method = listener[key];\n\n if(typeof method === 'function'){\n this[key] = method;\n } else if(typeof method === 'string'){\n console.log(this.keyConfig);\n let code = method;\n\n if(Number.isNaN(parseInt(code))){\n // need to convert char\n let _code = KeyCodeMap[code];\n if(_code){\n code = _code;\n } else {\n console.warn('There is no mapping for: ', method);\n continue;\n }\n }\n\n let arr = this.keyConfig[code];\n\n if(arr.length === 1){\n this[key] = arr[0].method\n } else {\n console.warn('multiple entries per keycode is not supported at this yet.', key, arr, method);\n }\n }\n }\n }\n }\n\n start(){\n return null;\n }\n\n select(){\n return null;\n }\n\n home(){ // ps/xb button\n return null;\n }\n\n left(){\n return null;\n }\n\n right(){\n return null;\n }\n\n up(){\n return null;\n }\n\n down(){\n return null;\n }\n\n l1(){\n return null;\n }\n\n l2(){\n return null;\n }\n\n l3(){\n return null;\n }\n\n r1(){\n return null;\n }\n\n r2(){\n return null;\n }\n\n r3(){\n return null;\n }\n\n triangle(){\n return null;\n }\n\n square(){\n return null;\n }\n\n circle(){\n return null;\n }\n\n cross(){\n return null;\n }\n\n extra(){\n return null;\n }\n\n leftStick(x,y,event){\n return null;\n }\n\n rightStick(x,y,event){\n return null;\n }\n}\n// assign the InputEventListener class as a static property on InputController\n// so it can be instantiated properly outside of this module\nInputController.InputEventListener = InputEventListener;\n\nexport default InputController;\n\n\n\n// WEBPACK FOOTER //\n// ./src/input/inputController.js","import PrivateProperty from '../utils/privateProperty'\n\nlet _stack = new PrivateProperty();\nlet _listeners = new PrivateProperty();\n\nexport default class ScreenManager {\n constructor() {\n // initialize some private variables\n let idIncrementer = 0;\n this.getNewId = ()=>{\n return idIncrementer++;\n }\n\n // define private properties\n _listeners.set(this,new Proxy([],{\n get(target,prop){\n if(prop in ScreenEventListener.prototype){\n return (...args)=>{\n // only call prop if it exists\n // this allows for the 'listener' to not be a 'ScreenEventListener' but any object that defines its properties\n target.forEach(e=> e[prop] != null ? e[prop].call(e,...args) : undefined)\n }\n }\n return target[prop]\n }\n }))\n _stack.set(this,[]);\n }\n\n update(delta){\n let stack = _stack(this);\n if(stack.length > 0){\n let screen = stack[stack.length-1];\n screen._step.apply(screen,arguments);\n\n if(screen._isFinished){\n _listeners(this).onScreenFinished(screen, this, screen._finalData);\n }\n }\n }\n\n addScreen(screen, replace){\n let stack = _stack(this)\n // give the screen a ref to the manager\n screen.$manager = this;\n // give the screen an id\n screen.$id = this.getNewId()\n if(replace){\n stack.splice(stack.length-1,1,screen);\n } else {\n stack.push(screen);\n }\n // call screen's callback\n screen.onAddedToManager(this)\n // call listener methods\n _listeners(this).onScreenAdded(screen, this, replace);\n }\n\n popScreen(){\n let stack = _stack(this)\n if(stack.length > 1){\n let screen = stack.pop();\n // call screen's callback\n screen.onRemovedFromManager(this);\n // call listener methods\n _listeners(this).onScreensRemoved([screen], this);\n return [screen];\n } else {\n // cannot pop the last screen, only replace.\n _listeners(this).onWarnPopScreen(stack, this);\n return [];\n }\n }\n\n popToScreen(screen){\n let stack = _stack(this)\n if(!screen.hasOwnProperty('$id')){\n return false;\n }\n let index = stack.findIndex((s)=>{\n return s.$id === screen.$id\n })\n if(index === -1){\n return false;\n } else {\n let screensRemoved = stack.splice(index);\n // call screen callback method\n screensRemoved.slice().reverse().forEach(screen => screen.onRemovedFromManager(this));\n // call listener method\n _listeners(this).onScreensRemoved(screensRemoved, this);\n return screensRemoved;\n }\n }\n\n addScreenEventListener(listener){\n _listeners(this).push(listener)\n }\n\n getNewScreenEventListener(alsoAdd){\n let listener = new ScreenEventListener()\n if(alsoAdd){\n this.addScreenEventListener(listener);\n }\n return listener;\n }\n}\n\nclass ScreenEventListener {\n onScreenFinished(screen, manager, data){}\n onScreenAdded(screen, manager, replaced){}\n onScreensRemoved(screen, manager){}\n onWarnPopScreen(stack, manager){}\n}\n\nScreenManager.ScreenEventListener = ScreenEventListener;\n\n\n\n// WEBPACK FOOTER //\n// ./src/screen/screenManager.js","import AssetManager from '../base/assetManager';\n\nconst RIGHT = 10;\nconst LEFT = 11;\n\nclass BaseSprite {\n constructor(image, framesX, framesY, offsetX, offsetY) {\n\n if(typeof image === 'string'){\n this.image = AssetManager.getImage(image);\n } else {\n this.image = image;\n }\n\n if(!this.image){\n console.warn('Sprite created without an image', this);\n return;\n }\n\n this.width = this.image.width;\n this.height = this.image.height;\n\n this.frames = [];\n this.framesX = framesX;\n this.framesY = framesY;\n this.frameWidth = this.width / this.framesX;\n this.frameHeight = this.height / this.framesY;\n this.totalFrames = this.framesX * this.framesY;\n\n this.scaleToWidth(1);\n\n this.setOffset(offsetX || 0, offsetY || 0);\n\n this.currentFrameIndex = 0;\n\n this.direction = RIGHT;\n\n this.parseSpriteSheet();\n\n this.setFrame();\n }\n\n parseSpriteSheet(){\n for(var y = 0; y < this.framesY; y++){\n for(var x = 0; x < this.framesX; x++){\n var frame = {};\n frame.sx = x * this.frameWidth;\n frame.sy = y * this.frameHeight;\n\n this.frames.push(frame);\n }\n }\n\n\n\n console.log(this.frames);\n }\n\n animate(){\n this.currentFrameIndex = (this.currentFrameIndex + 1) % this.frames.length;\n this.setFrame();\n }\n\n setFrame(frameIndex){\n frameIndex = frameIndex===undefined ? this.currentFrameIndex : frameIndex;\n this.frame = this.frames[frameIndex];\n }\n\n setPosition(pos){\n this.pos = pos;\n }\n\n setOffset(offset, offsetY){\n if(typeof offset === 'object'){\n this.offset = offset;\n } else if(offsetY !== undefined){\n this.offset = {\n x: offset,\n y: offsetY\n }\n }\n }\n\n setUseShadow(use){\n this.useShadow = use;\n }\n\n setDirection(dir){\n this.direction = dir;\n }\n\n scaleToWidth(w){\n var h = w / this.frameWidth;\n this.drawWidth = w;\n this.drawHeight = h * this.frameHeight;\n }\n\n scaleToHeight(h){\n var w = h / this.frameHeight;\n this.drawWidth = w * this.frameWidth;\n this.drawHeight = h;\n }\n\n scale(scale){\n this.drawWidth *= scale;\n this.drawHeight *= scale;\n }\n\n draw(ctx){\n\n ctx.save();\n if(this.direction === RIGHT){\n ctx.scale(1,-1); // flip the y\n ctx.translate(-this.offset.x,-this.offset.y); // [ -(w/2) , -(?) ]\n ctx.translate(this.pos.x,-this.pos.y);\n } else {\n ctx.scale(-1,-1); // flip the x & y\n ctx.translate(-this.offset.x,-this.offset.y); // [ -(w/2) , -(?) ]\n ctx.translate(-this.pos.x,-this.pos.y);\n }\n\n if(this.useShadow){\n ctx.shadowColor = 'black';\n ctx.shadowBlur = 20;\n ctx.shadowOffsetX = 5;\n ctx.shadowOffsetY = 10;\n }\n\n ctx.drawImage(this.image, this.frame.sx, this.frame.sy, this.frameWidth, this.frameHeight, 0, 0, this.drawWidth, this.drawHeight);\n\n ctx.restore();\n }\n}\n\nexport default BaseSprite;\n\n\n\n// WEBPACK FOOTER //\n// ./src/sprite/BaseSprite.js","// implementation modeled from http://stackoverflow.com/a/6491621\nObject.defineProperty(Object, 'resolve', {\n enumerable: false,\n value: function(path, obj = {}) {\n if(path == null){\n return;\n }\n if(path === ''){\n return obj\n }\n path = path.replace(/\\[['\"]?(\\w+)['\"]?\\]/g, '.$1'); // convert indexes and brackets ([\"keyname\"] or ['keyname']) to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n var keys = path.split('.');\n return keys.reduce(function(prev, curr) {\n return prev ? prev[curr] : undefined\n }, obj)\n }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/patches/Object.js","Path2D.rect = function(...args){\n let p = new Path2D();\n // .rect(x, y, width, height)\n p.rect(...args);\n return p;\n}\nPath2D.arc = function(...args){\n let p = new Path2D();\n // .arc(x, y, radius, startAngle, endAngle, anticlockwise)\n p.arc(...args);\n return p;\n}\nPath2D.ellipse = function(...args){\n let p = new Path2D();\n // .ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n p.ellipse(...args);\n return p;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/patches/Path2D.js","\nexport default class Screen {\n constructor(options) {\n this.options = options || {};\n }\n\n _step(delta,...rest){\n if(!this._isFinished){\n this.update.apply(this,arguments);\n }\n }\n\n // override\n update(delta,...rest){}\n\n finish(data){\n if(!this._isFinished){\n this.onDestroy();\n this._finalData = data || {};\n this._isFinished = true;\n }\n }\n\n onDestroy(){}\n onAddedToManager(manager){}\n onRemovedFromManager(manager){}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/screen/screen.js","\nimport BaseSprite from './BaseSprite';\n\nclass MultiSprite extends BaseSprite {\n constructor(image, framesX, framesY, offsetX, offsetY) {\n super(image, framesX, framesY, offsetX, offsetY);\n\n }\n\n createSlice(name, start, count, scale){\n var slice = {};\n\n slice.ix = 0;\n slice._ix = 0;\n slice.start = start;\n slice.end = start+count;\n slice.scale = scale || 1;\n\n slice.name = name;\n slice.frames = this.frames.slice(start, slice.end);\n\n console.log(slice);\n\n this.slices[name] = slice;\n }\n\n createState(name, frameIndex, sliceName){\n sliceName = sliceName || 'default';\n\n var state = {};\n\n state.name = name;\n state.ix = frameIndex;\n state.sliceName = sliceName;\n\n this.states[name] = state;\n }\n\n parseSpriteSheet(){\n this.slices = this.slices || {};\n this.states = this.states || {};\n super.parseSpriteSheet.apply(this,arguments);\n var slice = {\n ix: 0,\n start: 0,\n end: this.frames.length-1,\n name: 'default',\n frames: this.frames\n };\n\n this.slices[slice.name] = slice;\n this.setSlice(slice.name);\n }\n\n setSlice(name){\n this.slice = this.slices[name];\n }\n\n animate(sliceName, optScale){\n if(sliceName){\n this.setSlice(sliceName);\n }\n\n var scale = optScale || this.slice.scale,\n fl = this.slice.frames.length,\n df = fl * scale,\n _ix = this.slice._ix++;\n\n this.slice.ix = Math.floor( ((_ix) % (df)) / scale);\n if(_ix >= df){\n this.slice._ix = 1;\n }\n\n this.setFrame();\n }\n\n setFrame(frameIndex, sliceName){\n frameIndex = frameIndex===undefined ? this.slice.ix : frameIndex;\n if(sliceName){\n this.frame = this.slices[sliceName].frames[frameIndex];\n } else {\n this.frame = this.slice.frames[frameIndex];\n }\n }\n\n setState(name){\n var state = this.states[name];\n this.setFrame(state.ix, state.sliceName);\n }\n}\n\nexport default MultiSprite;\n\n\n\n// WEBPACK FOOTER //\n// ./src/sprite/MultiSprite.js","import ImageAsset from './imageAsset';\n\nclass ImageAssetLoader {\n constructor() {\n\n }\n\n load(name, url, type, options){\n return new ImageAsset(name, url, type, options);;\n }\n}\n\nexport default new ImageAssetLoader();\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/imageAssetLoader.js","/** alias mapping for keyboard keys **/\n\nexport default {\n\n // special keys\n 'enter': '13',\n 'tab': '9',\n 'delete': '8',\n 'backspace': '8',\n 'space': '32',\n 'esc': '27',\n 'escape': '27',\n\n // modifier keys\n 'control': '17',\n 'ctrl': '17',\n 'alt': '18',\n 'option': '18', // on mac\n 'caps': '20',\n 'caps-lock': '20',\n 'capslock': '20',\n\n 'windows': '91', // windows key\n 'left-command': '91', // left command key on mac layout\n 'left-cmd': '91',\n 'search': '91', // on chromebook\n 'menu': '93', // windows menu\n 'right-command': '93', // right command key on mac layout\n 'right-cmd': '93',\n\n // arrow keys\n 'left' : '37',\n 'up' : '38',\n 'right' : '39',\n 'down' : '40',\n\n // alpha keys, in order of keyboard qwerty layout\n 'q': '81',\n 'w': '87',\n 'e': '69',\n 'r': '82',\n 't': '84',\n 'y': '89',\n 'u': '85',\n 'i': '73',\n 'o': '79',\n 'p': '80',\n 'a' : '65',\n 's' : '83',\n 'd' : '68',\n 'f' : '70',\n 'g' : '71',\n 'h' : '72',\n 'j' : '74',\n 'k' : '75',\n 'l' : '76',\n 'z' : '90',\n 'x' : '88',\n 'c' : '67',\n 'v' : '86',\n 'b' : '66',\n 'n' : '78',\n 'm' : '77',\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/input/keyCodeMap.js","\n// app\nexport {default as default, default as app, LudicApp} from './app/app'\n\n// base\nexport {default as Asset} from './base/asset'\nexport {default as AssetManager} from './base/assetManager'\nexport {default as Camera} from './base/camera'\nexport {default as ImageAsset} from './base/imageAsset'\n\n// canvas\nexport {default as Canvas} from './canvas/canvas'\n\n// input\nexport {default as InputController} from './input/inputController'\nexport {default as GamepadController} from './input/gamepadController'\n\n// patches\n/*\n patches that are prototype extensions, just import here\n patches that require a parameter (monkey patch) export function name with prefix `Patch`\n i.e. export {default as PatchFixSomeClass} from './patches/fixSomeClass'\n*/\nimport path2D from './patches/Path2D';\nimport object from './patches/Object';\n\n// screen\nexport {default as Screen} from './screen/screen'\nexport {default as ScreenManager} from './screen/screenManager'\n\n// sprite\nexport {default as BaseSprite} from './sprite/BaseSprite'\nexport {default as MultiSprite} from './sprite/MultiSprite'\n\n// ui\n// export {default as HUD} from './ui/hud'\n// export {default as HUDElement} from './ui/HUDElement'\n// export {default as Text} from './ui/Text'\n// export {default as Dialog} from './ui/Dialog'\n// export {default as MenuDialog} from './ui/MenuDialog'\n\n// util\nimport * as utils from './utils'\nexport {utils}\n\n// vectors\nexport {default as Vector2} from './engine/Vector2'\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","\nexport default class PrivateProperty {\n constructor() {\n let weakMap = new WeakMap();\n let ctor = function(...getArgs){\n return weakMap.get(...getArgs);\n }\n ctor.set = function(...setArgs){\n return weakMap.set(...setArgs);\n }\n // ctor.get = function(...getArgs){\n // return weakMap.get(...getArgs);\n // }\n ctor.get = ctor;\n return ctor\n }\n\n set(...args){\n this.weakMap.set(...setArgs)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/privateProperty.js"],"sourceRoot":""}