-
Notifications
You must be signed in to change notification settings - Fork 13
/
gamee-js.js.map
1 lines (1 loc) · 120 KB
/
gamee-js.js.map
1
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 16f37751307f6bb82f86","webpack:///./gamee/libs/shims.js","webpack:///./gamee/src/core.js","webpack:///./gamee/src/gameeAPI.js","webpack:///./gamee/src/platform_bridge.js","webpack:///./gamee/libs/bullet.js","webpack:///./gamee/src/game_controllers.js","webpack:///./gamee/src/index.js","webpack:///(webpack)/buildin/global.js"],"names":["CustomEmitter","wrapKeyEvent","shimCustomEvent","ce","window","CustomEvent","preventDefault","defaultPrevented","Error","e","event","params","evt","origPrevent","bubbles","cancelable","detail","undefined","document","createEvent","initCustomEvent","call","Object","defineProperty","get","prototype","Event","win","doc","addEventListener","docHijack","p","old","v","addListen","addEvent","on","fn","self","attachEvent","returnValue","stopPropagation","cancelBubble","obj","i","length","Element","all","eventTarget","createDocumentFragment","delegate","method","bind","forEach","ev","keyCode","which","controllers","overloadedAudioContext","type","ctx","state","resume","test","navigator","userAgent","buffer","createBuffer","dummy","createBufferSource","connect","destination","start","disconnect","setTimeout","body","removeEventListener","join","AudioContext","webkitAudioContext","core","noop","cache","internals","VERSION","CAPABILITIES","variant","soundUnlocked","onReady","onGameStart","gameeInit","ctrlType","ctrlOpts","capabilities","cb","silentMode","allOk","cap","Array","isArray","indexOf","native","createRequest","version","controller","responseData","error","platform","requestController","enableKeyboard","_bindKeyboardTriggers","err","global","data","trigger","button","gameLoadingProgress","percentageSoFar","percentage","gameReady","updateScore","score","opt_ghostSign","parseInt","ghostSign","gameOver","opt_replayData","opt_saveState","opt_hideOverlay","requestData","hasOwnProperty","replayData","hideOverlay","gameSave","share","saveState","requestSocial","numberOfPlayers","socialData","logEvent","eventName","eventValue","logEvents","requestBattleData","requestPlayerReplay","userID","replay","requestPlayerSaveState","purchaseItemWithCoins","options","oldMethod","coins","propertiesList","property","isSilentModeEnabled","console","log","purchaseItemWithGems","gems","loadRewardedVideo","rewardedAds","showRewardedVideo","requestPlayerData","playerData","startSignal","ghostMode","mainController","opts","createController","additionalController","gameeNative","apply","arguments","_keydown","_keyup","btn","controllerTypes","buttons","remapButton","OneButtonController","TwoButtonController","FourButtonController","FiveButtonController","SixButtonController","FourArrowController","TouchController","JoystickController","JoystickButtonController","TwoArrowsTwoButtonsController","TwoArrowsOneButtonController","TwoActionButtonsController","registerPlatform","platformAPI","DataTypeException","expected","present","argument","message","validateDataType","testedInput","expectedType","originMethod","GameeEmitter","Gamee","emitter","_platform","cbError","toString","_controller","gameInit","controllType","controllOpts","result","opt_cb","opt_share","getPlatform","modifiedResponse","purchaseItem","purchaseDetails","shareDetails","PlatformBridge","PostMessageBridge","MobileBridge","PlatformAPI","pause","callback","dispatchEvent","ghostShow","ghostHide","mute","unmute","opt_replay","opt_ghostMode","resetState","opt_resetState","requests","_init","instCount","opt_requestData","opt_callback","validateMethod","messId","preparedObject","request","messageId","doCall","_callback","id","doResponse","endpoint","_gameeWin","create","constructor","JSON","stringify","_resolveAPICall","response","postMessage","opt_data","device","webkit","messageHandlers","callbackHandler","_toDevice","_triggerMessage","parse","BulletClass","_self","_events","once","fnString","callbacks","off","fnToRemove","callbackObject","Bullet","Button","Controller","key","_pressed","isDown","buttonAlias","addButton","gamee","keyCodes","oldName","newName","name","x","y","position","platformBridge","platformType","toLowerCase","top","parent","gameeSimulator","loadScript","url","head","getElementsByTagName","script","createElement","src","onreadystatechange","onload","appendChild"],"mappings":"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","file":"gamee-js.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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 = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 16f37751307f6bb82f86","/**\n * @class CustomEvent\n */\n(function shimCustomEvent() {\n\ttry {\n\t\tvar ce = new window.CustomEvent('test');\n\t\tce.preventDefault();\n\t\tif (ce.defaultPrevented !== true) {\n\t\t\t// IE has problems with .preventDefault() on custom events\n\t\t\t// http://stackoverflow.com/questions/23349191\n\t\t\tthrow new Error('Could not prevent default');\n\t\t}\n\t} catch (e) {\n\t\tvar CustomEvent = function (event, params) {\n\t\t\tvar evt, origPrevent;\n\t\t\tparams = params || {\n\t\t\t\tbubbles: false,\n\t\t\t\tcancelable: false,\n\t\t\t\tdetail: undefined\n\t\t\t};\n\n\t\t\tevt = document.createEvent(\"CustomEvent\");\n\t\t\tevt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t\t\torigPrevent = evt.preventDefault;\n\t\t\tevt.preventDefault = function () {\n\t\t\t\torigPrevent.call(this);\n\t\t\t\ttry {\n\t\t\t\t\tObject.defineProperty(this, 'defaultPrevented', {\n\t\t\t\t\t\tget: function () {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.defaultPrevented = true;\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn evt;\n\t\t};\n\n\t\tCustomEvent.prototype = window.Event.prototype;\n\t\twindow.CustomEvent = CustomEvent; // expose definition to window\n\t}\n})();\n\n//addEventListener polyfill 1.0 / Eirik Backer / MIT Licence\n(function (win, doc) {\n\tif (win.addEventListener) return;\t\t//No need to polyfill\n\n\tfunction docHijack(p) { var old = doc[p]; doc[p] = function (v) { return addListen(old(v)); }; }\n\tfunction addEvent(on, fn, self) {\n\t\treturn (self = this).attachEvent('on' + on, function (e) {\n\t\t\te = e || win.event;\n\t\t\te.preventDefault = e.preventDefault || function () { e.returnValue = false; };\n\t\t\te.stopPropagation = e.stopPropagation || function () { e.cancelBubble = true; };\n\t\t\tfn.call(self, e);\n\t\t});\n\t}\n\tfunction addListen(obj, i) {\n\t\ti = obj.length;\n\t\tif (i) {\n\t\t\twhile (i--)\n\t\t\t\tobj[i].addEventListener = addEvent;\n\t\t} else {\n\t\t\tobj.addEventListener = addEvent;\n\t\t}\n\t\treturn obj;\n\t}\n\n\taddListen([doc, win]);\n\tif ('Element' in win) win.Element.prototype.addEventListener = addEvent;\t\t\t//IE8\n\telse {\t\t//IE < 8\n\t\tdoc.attachEvent('onreadystatechange', function () { addListen(doc.all); });\t\t//Make sure we also init at domReady\n\t\tdocHijack('getElementsByTagName');\n\t\tdocHijack('getElementById');\n\t\tdocHijack('createElement');\n\t\taddListen(doc.all);\n\t}\n})(window, document);\n\n// naomik event emiter http://stackoverflow.com/a/24216547/1866147\n// usage:\n// function Example() {\n// \tCustomEmitter.call(this);\n// }\n\n// // run it\n// var e = new Example();\n\n// e.addEventListener(\"something\", function (event) {\n// \tconsole.log(event)\n// });\n\n// e.dispatchEvent(new Event(\"something\"));\nexport function CustomEmitter() {\n\tvar eventTarget = document.createDocumentFragment();\n\n\tfunction delegate(method) {\n\t\tthis[method] = eventTarget[method].bind(eventTarget);\n\t}\n\n\t[\n\t\t\"addEventListener\",\n\t\t\"dispatchEvent\",\n\t\t\"removeEventListener\"\n\t].forEach(delegate, this);\n}\n\n/** ### wrapKeyEvent \n * \n * Handle old IE event differences for key events\n * \n * @param {Function} fn callback\n */\nexport function wrapKeyEvent(fn) {\n\treturn function (ev) {\n\t\tif (!ev || !ev.keyCode) {\n\t\t\tif (!ev) {\n\t\t\t\tev = window.event;\n\t\t\t}\n\n\t\t\tif (ev.which) {\n\t\t\t\tev.keyCode = ev.which;\n\t\t\t}\n\t\t}\n\n\t\treturn fn(ev);\n\t};\n}\n\n\n// WEBPACK FOOTER //\n// ./gamee/libs/shims.js","import * as controllers from \"./game_controllers.js\"\nimport { wrapKeyEvent } from \"../libs/shims.js\"\n\n// unlock audio\n// overrides native AudioContext & webkitAudioContext\n(function () {\n // this works as a constructor\n var overloadedAudioContext = function (type) {\n var ctx = new type();\n\n // add audio resume to function on touchstart\n if (ctx.state === 'suspended') {\n\n var resume = function () {\n\n // Check if hack is necessary. Only occurs in iOS6+ devices\n // and only when you first boot the iPhone, or play a audio/video\n // with a different sample rate\n if (/(iPhone|iPad)/i.test(navigator.userAgent)) {\n var buffer = ctx.createBuffer(1, 1, 44100);\n var dummy = ctx.createBufferSource();\n dummy.buffer = buffer;\n dummy.connect(ctx.destination);\n dummy.start(0);\n dummy.disconnect();\n }\n\n ctx.resume();\n setTimeout(function () {\n if (ctx.state === 'running') {\n document.body.removeEventListener([\n 'touchcancel',\n 'touchend',\n 'touchenter',\n 'touchleave',\n 'touchmove',\n 'touchstart',\n 'mouseenter',\n 'mouseover',\n 'mousemove',\n 'mousedown',\n 'mouseup'\n ].join(\" \"), resume, false);\n }\n }, 0);\n };\n\n // only touchend will work, but hey, we tried...\n // https://github.com/WebAudio/web-audio-api/issues/836\n // https://www.chromestatus.com/feature/6406908126691328\n document.body.addEventListener([\n 'touchcancel',\n 'touchend',\n 'touchenter',\n 'touchleave',\n 'touchmove',\n 'touchstart',\n 'mouseenter',\n 'mouseover',\n 'mousemove',\n 'mousedown',\n 'mouseup'\n ].join(\" \"),\n resume, false);\n }\n // allowed in JS to return different type of the object in the constructor\n return ctx\n };\n\n try {\n if (typeof window.AudioContext !== 'undefined') {\n window.AudioContext = overloadedAudioContext.bind(null, window.AudioContext);\n } else if (typeof webkitAudioContext !== 'undefined') {\n window.webkitAudioContext = overloadedAudioContext.bind(null, window.webkitAudioContext);\n }\n } catch (e) { // throw error in async part\n setTimeout(() => {\n throw e;\n }, 0)\n }\n})();\n\n\n/**\n * @class core\n */\nexport var core = (function () {\n\n // # Gamee.js\n //\n // This file defines and expose a public API for games to communicate\n // with Gamee*.\n //\n // Also it handles some requirements when Gamee is run in an desktop\n // environment.\n //\n // \\* _later in the document Gamee will be referred as GameeApp to not\n // be mistaken for word game_\n //\n // ** _GameeWebApp will refer to Gamee which is running in a desktop\n // browser_\n\n /** an empty function */\n var noop = function () { };\n\n var cache = {};\n\n /** internal variables/constants (uppercase) coupled inside separate object for potential easy referencing */\n var internals = {\n VERSION: \"2.4.0\", // version of the gamee library\n CAPABILITIES: [\"ghostMode\", \"saveState\", \"replay\", \"socialData\",\"rewardedAds\",\"coins\",\"logEvents\",\"playerData\",\"share\", \"gems\"], // supported capabilities\n variant: 0, // for automating communication with server\n soundUnlocked: false,\n onReady: noop, // for intercepting real onReady because of behind the scenes variant handling\n onGameStart: noop // for intercepting real onGameStart because of unlocking sound\n };\n\n /** ## gamee\n *\n * GameeApp interface for games. It is exposed as a `gamee` global\n * object and games should only use its public methods and\n * properties to communicate with the GameeApp.\n *\n * _There is also [$gameeNative](gamee_native.js.html) global object\n * which handles internal parts of the communication._\n */\n var core = {};\n\n //\n // ## Signaling game state\n //\n // The game should signal the GameeApp its status (playing/game-over)\n // and current score.\n //\n\n /** ### gamee.gameeInit\n *\n * Must be called first before any other gamee calls\n * returns controller object the same way requestController did previously\n * ctrlType/ctrlOpts - requested control type + options\n * capabilities -> array of strings representing supported features:\n * after the initialization onReady is invoked and after that game can use the api\n */\n core.gameeInit = function (ctrlType, ctrlOpts, capabilities, cb, silentMode = false) {\n // let's validate the array here, so that all backends can benefit from it\n var allOk = true, cap = {};\n if ((capabilities !== undefined) && (Array.isArray(capabilities))) {\n for (var i = 0; i < capabilities.length; i++) {\n if ((typeof capabilities[i] !== \"string\") ||\n (internals.CAPABILITIES.indexOf(capabilities[i]) === -1)) allOk = false;\n cap[capabilities[i]] = true;\n }\n } else allOk = false;\n\n if (!allOk)\n throw \"Capabilities array passed to gameeInit is void, malformed or unsupported capabilites requested.\";\n // TODO remove\n // gameeNative.gameeInit(core, internals.VERSION, ctrlType, allOk ? capabilities : []);\n\n this.native.createRequest(\"init\", {\n version: internals.VERSION,\n controller: ctrlType,\n capabilities: cap\n }, function (responseData) {\n // remember capabilities of the game\n cache.capabilities = cap;\n //\n // // Mute gamee-js console output\n // cache.silentMode = silentMode;\n\n // might fail if controller of this type doesnt exist\n var error = null;\n try {\n if (this.native.platform === \"web\") {\n responseData.controller = core.controller.requestController(ctrlType, { enableKeyboard: true });\n this._bindKeyboardTriggers(responseData.controller);\n } else {\n responseData.controller = core.controller.requestController(ctrlType, {});\n }\n } catch (err) {\n error = err;\n }\n\n cb(error, responseData);\n }.bind(this));\n // TODO remove\n // return core.controller.requestController(ctrlType, ctrlOpts);\n };\n\n core._bindKeyboardTriggers = function (controller) {\n global.addEventListener('message', function (ev) {\n switch (ev.data[0]) {\n case 'button_button_down':\n controller.trigger(\"keydown\", { button: \"button\" });\n break;\n\n case 'button_button_up':\n controller.trigger(\"keyup\", { button: \"button\" });\n break;\n\n case 'button_left_up':\n controller.trigger(\"keyup\", { button: \"left\" });\n break;\n\n case 'button_left_down':\n controller.trigger(\"keydown\", { button: \"left\" });\n break;\n\n case 'button_right_down':\n controller.trigger(\"keydown\", { button: \"right\" });\n break;\n\n case 'button_right_up':\n controller.trigger(\"keyup\", { button: \"right\" });\n break;\n\n case 'button_up_down':\n controller.trigger(\"keydown\", { button: \"up\" });\n break;\n\n case 'button_up_up':\n controller.trigger(\"keyup\", { button: \"up\" });\n break;\n\n case 'button_down_down':\n controller.trigger(\"keydown\", { button: \"down\" });\n break;\n\n case 'button_down_up':\n controller.trigger(\"keyup\", { button: \"down\" });\n break;\n\n case 'button_a_down':\n controller.trigger(\"keydown\", { button: \"A\" });\n break;\n\n case 'button_a_up':\n controller.trigger(\"keyup\", { button: \"A\" });\n break;\n\n case 'button_b_down':\n controller.trigger(\"keydown\", { button: \"B\" });\n break;\n\n case 'button_b_up':\n controller.trigger(\"keyup\", { button: \"B\" });\n break;\n }\n });\n };\n\n /** ### gamee.gameLoadingProgress\n *\n * Indicates how much content is already loaded in %.\n */\n core.gameLoadingProgress = (function () {\n var percentageSoFar = 0;\n\n return function (percentage) {\n if ((typeof percentage !== \"number\") || (percentage < 0) || (percentage > 100))\n throw \"Percentage passed to gameLoadingProgress out of bounds or not a number.\";\n else if (percentage > percentageSoFar) {\n percentageSoFar = percentage;\n this.native.createRequest(\"gameLoadingProgress\", { percentage: percentage });\n }\n };\n })();\n\n\n /** ### gamee.gameReady\n *\n * Notifies platform game can accept start command.\n */\n core.gameReady = function () {\n this.native.createRequest(\"gameReady\");\n };\n\n /** ### gamee.gameStart\n *\n * Indicates that game is ready to be started (even after restart).\n */\n // core.gameStart = function () {\n // gameeNative.gameLoadingProgress(100); // FB requires this\n // gameeNative.gameStart(gamee);\n // };\n\n /** ### gamee.updateScore\n *\n * sends score to UI\n */\n core.updateScore = function (score, opt_ghostSign) {\n if (typeof score !== \"number\")\n throw \"Score passed to updateScore is not a number.\";\n var data = {\n score: parseInt(score, 10)\n };\n if (opt_ghostSign) {\n data.ghostSign = true;\n }\n this.native.createRequest(\"updateScore\", data);\n // core.native.createRequest(method, requestData, callback);\n };\n\n /** ### gamee.gameOver\n *\n * Indicates the game has ended, the game is waiting for subsequent onGameStart.\n * Data has the same format as data received in onReady callback.\n * Data must be string = responsibility for turning data structure into string is left to the game!\n */\n core.gameOver = function (opt_replayData, opt_saveState, opt_hideOverlay) {\n opt_hideOverlay = opt_hideOverlay !== undefined ? opt_hideOverlay : false;\n // var allOk = ((data !== undefined) && (typeof data === \"string\")) || (data === undefined);\n // if (!allOk) console.error(\"Data provided to gameOver function must be string.\");\n // gameeNative.gameOver(gamee, internals.variant, allOk ? data : \"\");\n var requestData = {};\n if (opt_replayData) {\n if (!opt_replayData.hasOwnProperty(\"variant\")) {\n opt_replayData.variant = \"\";\n }\n if (!opt_replayData.hasOwnProperty(\"data\")) {\n throw \"Replay data must have `data` property\";\n }\n requestData.replayData = opt_replayData;\n }\n requestData.hideOverlay = opt_hideOverlay;\n\n if (opt_saveState) {\n requestData.state = opt_saveState;\n }\n\n core.native.createRequest(\"gameOver\", requestData);\n };\n\n /** ### gamee.gameSave\n *\n * Player has requested saving current game's state\n * data must be string = responsibility for turning data structure into string is left to game!\n * share must be expression evaluating to either true or false; it indicates, whether the game progress should be shared on feed\n */\n core.gameSave = function (data, share) {\n\n if(!cache.capabilities.saveState)\n throw \"Save State not supported, you must add the capability on gamee.Init\";\n\n core.native.createRequest(\"saveState\", { state: data, share: share });\n };\n\n core.requestSocial = function (cb,numberOfPlayers) {\n\n if(!cache.capabilities.socialData)\n throw \"Social Data not supported, you must add the capability on gamee.Init\";\n\n this.native.createRequest(\"requestSocial\", numberOfPlayers, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.logEvent = function (eventName, eventValue) {\n\n if(!cache.capabilities.logEvents)\n throw \"Log Events not supported, you must add the capability on gamee.Init\";\n\n //var valuesToLogString = JSON.stringify(eventValue)\n\n this.native.createRequest(\"logEvent\", {eventName,eventValue}, function (error){\n if(error){\n throw error\n }\n });\n\n };\n\n core.requestBattleData = function (cb) {\n this.native.createRequest(\"requestBattleData\", undefined, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.requestPlayerReplay = function (userID, cb) {\n\n if(!cache.capabilities.replay)\n throw \"Replays not supported, you must add the capability on gamee.Init\";\n\n this.native.createRequest(\"requestPlayerReplay\", {userID}, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.requestPlayerSaveState = function (userID, cb) {\n this.native.createRequest(\"requestPlayerSaveState\", {userID}, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.purchaseItemWithCoins = function (options, cb, oldMethod) {\n\n if(!cache.capabilities.coins)\n throw \"Coins purchases not supported, you must add the capability on gamee.Init\";\n\n if (options) {\n var propertiesList = [\"coinsCost\",\"itemName\"];\n propertiesList.forEach(function (property){\n if(!options.hasOwnProperty(property))\n throw \"Purchase Options must have `\"+property+\"` property\"\n })\n }\n\n if (!this.isSilentModeEnabled()) {\n console.log(options);\n }\n\n var method = \"purchaseItemWithCoins\";\n if (oldMethod !== undefined && oldMethod === true) {\n method = \"purchaseItem\";\n }\n this.native.createRequest(method, options, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.purchaseItemWithGems = function (options, cb) {\n\n if(!cache.capabilities.gems)\n throw \"Gems purchases not supported, you must add the capability on gamee.Init\";\n\n if (options) {\n var propertiesList = [\"gemsCost\",\"itemName\"];\n propertiesList.forEach(function (property){\n if(!options.hasOwnProperty(property))\n throw \"Purchase options must have `\"+property+\"` property\"\n })\n }\n\n if (!this.isSilentModeEnabled()) {\n console.log(options);\n }\n\n this.native.createRequest(\"purchaseItemWithGems\", options, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.share = function (options, cb) {\n\n if(!cache.capabilities.share)\n throw \"Share option not supported, you must add the capability on gamee.Init\";\n\n if (options) {\n var propertiesList = [\"destination\"];\n propertiesList.forEach(function (property){\n if(!options.hasOwnProperty(property))\n throw \"Share Options must have `\"+property+\"` property\";\n })\n }\n\n if (!this.isSilentModeEnabled()) {\n console.log(options);\n }\n\n this.native.createRequest(\"share\",options, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.loadRewardedVideo = function (cb) {\n\n if(!cache.capabilities.rewardedAds)\n throw \"Rewarded Ads not supported, you must add the capability on gamee.Init\";\n\n this.native.createRequest(\"loadRewardedVideo\", function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.showRewardedVideo = function (cb) {\n\n if(!cache.capabilities.rewardedAds)\n throw \"Rewarded Ads not supported, you must add the capability on gamee.Init\";\n\n this.native.createRequest(\"showRewardedVideo\", function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.requestPlayerData = function (cb, userID) {\n\n if(!cache.capabilities.playerData)\n throw \"Player Data not supported, you must add the capability on gamee.Init\";\n\n let options = undefined;\n if (userID) {\n options = {userID};\n }\n\n this.native.createRequest(\"requestPlayerData\", options, function (responseData) {\n cb(null, responseData);\n });\n };\n\n core.startSignal = function (data) {\n var error;\n\n if (data.replay && !cache.capabilities.replay)\n error = \"Game doesn't support replay. \";\n\n if (data.ghostMode && !cache.capabilities.ghostMode)\n error = \"Game doesn't support ghost Mode. \";\n\n return error;\n };\n //\n // ## Private objects and methods\n // These are internal objects in closed scope. Good to know about them\n // when debugging.\n\n //\n // ## gamee.controller\n //\n // Namespace where the methods for controller are published.\n //\n\n /**\n * TODO transform this into instance of gamee class\n */\n core.controller = {\n /** ### mainController\n *\n * Current controller.\n */\n mainController: null,\n\n /** ### requestController\n *\n * Factory method to create a controller. It creates the controller\n * and signals to GameeApp which type the game requires\n *\n * You should called this method once before calling\n * `gamee.gameStart()`.\n *\n * @param {String} type type of controller (see [controllerTypes](#controllertypes))\n * @param {Object} [opts] optional controller options\n * {'enableKeyboard': .., 'buttons': ...}\n * @param {boolean} [opts.enableKeyboard] enable the keyboard\n * @param {Object} [opts.buttons] remap buttons {'oldKey': 'newKey',\n * 'left': 'break' ..}\n */\n requestController: function (type, opts) {\n if (type === \"FullScreen\")\n return null;\n\n var controller = createController(type, opts);\n\n this.mainController = controller;\n\n return controller;\n },\n\n /** ### additionalController\n *\n * Construct an additional controller. Sometimes games require a\n * different controller depending on platform (eg. touch on mobile,\n e but Four Buttons on desktop)\n *\n * **This is currently supported only for GameeWebApp** as a way to\n * have alternate keybinding. The game should request a type used\n * for mobile platform and then some other as *additionalController*\n * if alternate keybinding is needed;\n */\n // TODO remove this function\n additionalController: function (type, opts) {\n var controller = createController(type, opts);\n gameeNative.additionalController(type);\n\n return controller;\n },\n\n /** ### trigger\n *\n * Triggers and event for the controller\n *\n * This is called by GameeApp to trigger the *keydown*, *keyup*\n * events. For more info see [Controller](#controller)\n *\n * @param {String} eventName name of the event\n * @param {*} [data,...] data to pass for the event\n *\n */\n trigger: function () {\n var i;\n\n if (this.mainController) {\n this.mainController.trigger.apply(this.mainController, arguments);\n } else {\n throw new Error('No controller present');\n }\n }\n };\n\n /** ### core._keydown\n *\n * A helper function to listen for `keydown` events on window object.\n *\n * @param {Function} fn callback to handle the event\n */\n core._keydown = function (fn) {\n global.addEventListener('keydown', wrapKeyEvent(fn));\n };\n\n /** ### core._keyup\n *\n * A helper function to listen for `keyup` events on window object.\n *\n * @param {Function} fn callback to handle the event\n */\n core._keyup = function (fn) {\n global.addEventListener('keyup', wrapKeyEvent(fn));\n };\n\n /** ### createController\n *\n * Function to create a controller.\n *\n * *see [requestController](#requestcontroller)\n *\n * @param {String} type\n * @param {Object} [opts]\n * @returns {Controller} controller\n */\n function createController(type, opts) {\n var btn, controller;\n\n if (!controllerTypes[type]) {\n throw new Error('Unsupported controller type, ' + type);\n }\n\n opts = opts || {};\n\n controller = new controllerTypes[type]();\n\n if (opts.enableKeyboard) {\n controller.enableKeyboard(core);\n }\n\n if (opts.buttons) {\n for (btn in opts.buttons) {\n controller.remapButton(btn, opts.buttons[btn]);\n }\n }\n\n return controller;\n }\n\n\n\n /** ### controllerTypes\n *\n * List of controller types and their coresponding classes.\n *\n * *see [Controllers](#controllers) for more info*\n * @requires Controller\n */\n var controllerTypes = {\n 'OneButton': controllers.OneButtonController,\n 'TwoButtons': controllers.TwoButtonController,\n 'FourButtons': controllers.FourButtonController,\n 'FiveButtons': controllers.FiveButtonController,\n 'SixButtons': controllers.SixButtonController,\n 'FourArrows': controllers.FourArrowController,\n 'Touch': controllers.TouchController,\n 'Joystick': controllers.JoystickController,\n 'JoystickWithButton': controllers.JoystickButtonController,\n 'TwoArrowsTwoButtons': controllers.TwoArrowsTwoButtonsController,\n 'TwoArrowsOneButton': controllers.TwoArrowsOneButtonController,\n 'TwoActionButtons': controllers.TwoActionButtonsController\n };\n\n\n core.registerPlatform = function (platformAPI) {\n // platformAPI.addEventListener()\n // TODO ?\n };\n\n /**\n * Is true mute all console outputs\n * @return {boolean}\n */\n core.isSilentModeEnabled = function () {\n return cache.silentMode;\n };\n\n return core;\n})();\n\nexport var DataTypeException = function (expected, present, argument, method) {\n this.expected = expected;\n this.present = present;\n this.method = method;\n this.argument = argument;\n this.message = `Invalid data type in method ${this.method}, argument ${this.argument} is expected to be ${this.expected}, but found ${this.present}`;\n};\n\nexport var validateDataType = function (testedInput, expectedType, argument, originMethod) {\n switch (expectedType) {\n\n case \"array\":\n if (!Array.isArray(testedInput))\n throw new DataTypeException(expectedType, typeof testedInput, argument, originMethod);\n break;\n\n default:\n if (typeof testedInput !== expectedType)\n throw new DataTypeException(expectedType, typeof testedInput, argument, originMethod);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./gamee/src/core.js","import { core } from \"./core.js\"\nimport { CustomEmitter } from \"../libs/shims.js\"\nimport { validateDataType } from \"./core.js\"\n\n/**\n * gameeAPI module desc\n * @module gameeAPI\n */\n\n/**\n * Emit events\n * @class GameeEmitter\n * @extends CustomEmitter\n */\nexport var GameeEmitter = function () {\n CustomEmitter.call(this);\n};\n\n/**\n * @class Gamee\n * @requires core\n *\n */\nexport var Gamee = function (platform) {\n /**\n * @instance\n *\n * @fires gameeAPI:GameeEmitter~start\n * @fires gameeAPI:GameeEmitter~mute\n * @fires gameeAPI:GameeEmitter~unmute\n * @fires gameeAPI:GameeEmitter~pause\n * @fires gameeAPI:GameeEmitter~unpause\n * @fires gameeAPI:GameeEmitter~ghostHide\n * @fires gameeAPI:GameeEmitter~ghostShow\n */\n this.emitter = new GameeEmitter();\n this._platform = platform;\n};\n\nGamee.prototype = (function () {\n\n var cbError = function (err) {\n if (err) {\n throw \"Error \" + err.toString();\n }\n };\n\n return {\n _controller: core.controller,\n /**\n * gameInit\n * @memberof Gamee\n * @param {string} controllType\n * @param {object} controllOpts\n * @param {string[]} capabilities\n * @param {gameInitCallback} cb\n * @param {boolean} silentMode\n */\n gameInit: function (controllType, controllOpts, capabilities, cb, silentMode = false) {\n validateDataType(controllType, \"string\", \"controllType\", \"gamee.updateScore\");\n validateDataType(controllOpts, \"object\", \"controllOpts\", \"gamee.gameInit\");\n validateDataType(capabilities, \"array\", \"capabilities\", \"gamee.gameInit\");\n validateDataType(cb, \"function\", \"cb\", \"gamee.gameInit\");\n validateDataType(silentMode, \"boolean\", \"silentMode\", \"gamee.gameInit\");\n var result = core.gameeInit(controllType, controllOpts, capabilities, cb, silentMode);\n // cb(null, result);\n },\n\n /**\n * gameLoadingProgress\n *\n * gamee.gameLoadingProgress()\n *\n * @memberof Gamee\n * @param {number} percentage current loading progress\n * @param {Gamee~voidCallback} [opt_cb]\n *\n */\n gameLoadingProgress: function (percentage, opt_cb) {\n validateDataType(percentage, \"number\", \"percentage\", \"gamee.gameLoadingProgress\");\n opt_cb = opt_cb || cbError;\n validateDataType(opt_cb, \"function\", \"opt_cb\", \"gamee.gameLoadingProgress\");\n core.gameLoadingProgress(percentage);\n opt_cb(null);\n },\n\n /**\n * gameReady\n *\n * @memberof Gamee\n * @param {Gamee~voidCallback} [opt_cb]\n */\n gameReady: function (opt_cb) {\n opt_cb = opt_cb || cbError;\n validateDataType(opt_cb, \"function\", \"opt_cb\", \"gamee.gameReady\");\n core.gameReady();\n opt_cb(null);\n },\n\n /**\n * gameSave\n *\n * NOTE: There are 2 signatures for this function\n *\n * gamee.gameSave(data, opt_cb)\n * gamee.gameSave(data, opt_share, opt_cb)\n *\n * @memberof Gamee\n * @param {String} data current ingame progress\n * @param {Boolean} [opt_share=false]\n * @param {Gamee~voidCallback} [opt_cb]\n *\n */\n gameSave: function (data, opt_share, opt_cb) {\n var share = false, cb;\n validateDataType(data, \"string\", \"data\", \"gamee.gameSave\");\n if (typeof opt_share === 'function')\n opt_cb = opt_share;\n else if (typeof opt_share !== \"undefined\")\n validateDataType(opt_share, \"boolean\", \"opt_share\", \"gamee.gameSave\");\n\n opt_cb = opt_cb || cbError;\n validateDataType(opt_cb, \"function\", \"opt_cb\", \"gamee.gameSave\");\n core.gameSave(data, share);\n opt_cb(null);\n },\n\n /**\n * getPlatform\n *\n * @memberof Gamee\n * @returns {string} platform type can be android | ios | web | fb\n */\n getPlatform: function () {\n return this._platform;\n },\n\n /**\n * updateScore\n *\n * @memberof Gamee\n * @param {number} score\n * @param {boolean} [opt_ghostSign=false] If true, score will be updated for ghost instead.\n * @param {Gamee~voidCallback} [opt_cb]\n */\n updateScore: function (score, opt_ghostSign, opt_cb) {\n validateDataType(score, \"number\", \"score\", \"gamee.updateScore\");\n if (typeof opt_ghostSign === \"function\")\n opt_cb = opt_ghostSign;\n else if (typeof opt_ghostSign !== \"undefined\")\n validateDataType(opt_ghostSign, \"boolean\", \"opt_ghostSign\", \"gamee.updateScore\");\n\n opt_cb = opt_cb || cbError;\n validateDataType(opt_cb, \"function\", \"opt_cb\", \"gamee.updateScore\");\n core.updateScore(score, opt_ghostSign);\n opt_cb(null);\n },\n\n /**\n * gameOver\n *\n * @memberof Gamee\n * @param {Gamee~ReplayData} [opt_replayData]\n * @param {Gamee~voidCallback} [opt_cb]\n * @param {Gamee~object} [opt_saveState]\n * @param {Gamee~boolean} [opt_hideOverlay]\n */\n gameOver: function (opt_replayData, opt_cb, opt_saveState, opt_hideOverlay) {\n if (typeof opt_replayData === \"function\")\n opt_cb = opt_replayData;\n else if (typeof opt_replayData !== \"undefined\")\n validateDataType(opt_replayData, \"object\", \"opt_replayData\", \"gamee.gameOver\");\n\n if (typeof opt_hideOverlay !== 'undefined') {\n validateDataType(opt_hideOverlay, \"boolean\", \"opt_hideOverlay\", \"gamee.gameOver\");\n }\n\n opt_cb = opt_cb || cbError;\n validateDataType(opt_cb, \"function\", \"opt_cb\", \"gamee.gameOver\");\n core.gameOver(opt_replayData, opt_saveState, opt_hideOverlay);\n opt_cb(null);\n },\n\n /**\n * requestSocialData\n *\n * @memberof Gamee\n * @param {Gamee~requestSocialDataCallback} cb\n * @param {number} numberOfPlayers\n */\n requestSocial: function (cb, numberOfPlayers) {\n validateDataType(cb, \"function\", \"cb\", \"gamee.requestSocial\");\n\n // functionality supposed to be removed once we do update for iOS\n var data = core.requestSocial(function (error, responseData) {\n var modifiedResponse = !responseData.hasOwnProperty(\"socialData\") ? { socialData: responseData } : responseData;\n cb(null, modifiedResponse);\n }, numberOfPlayers);\n\n // var data = core.requestSocial(cb);\n //cb(null, data);\n },\n\n /**\n * logEvent\n *\n * @memberof Gamee\n * @param {string} eventName\n * @param {string} eventValue\n */\n logEvent: function (eventName, eventValue) {\n\n validateDataType(eventName,\"string\",\"eventName\",\"gamee.logEvent\");\n\n if(!eventName || eventName.length > 24){\n console.error(\"eventName parameter cant be null and can only contain up to 24 characters\");\n return\n }\n\n validateDataType(eventValue,\"string\",\"eventValue\",\"gamee.logEvent\");\n\n if(!eventValue || eventValue.length > 160){\n console.error(\"eventValue parameter cant be null and can only contain up to 160 characters\");\n return\n }\n\n core.logEvent(eventName,eventValue);\n },\n\n /**\n * requestBattleData\n *\n * @memberof Gamee\n * @param {Gamee~requestBattleDataDataCallback} cb\n */\n requestBattleData: function (cb) {\n validateDataType(cb, \"function\", \"cb\", \"gamee.requestBattleData\");\n\n core.requestBattleData(cb);\n },\n\n /**\n * requestPlayerReplay\n *\n * @memberof Gamee\n * @param {number} userID\n * @param {Gamee~requestPlayerReplayDataCallback} cb\n */\n requestPlayerReplay: function (userID, cb) {\n\n validateDataType(userID, \"number\", \"userID\", \"gamee.requestPlayerReplay\");\n validateDataType(cb, \"function\", \"cb\", \"gamee.requestPlayerReplay\");\n\n core.requestPlayerReplay(userID, cb);\n },\n\n /**\n * requestPlayerSaveState\n *\n * @memberof Gamee\n * @param {number} userID\n * @param {Gamee~requestPlayerSaveStateDataCallback} cb\n */\n requestPlayerSaveState: function (userID, cb) {\n\n validateDataType(userID, \"number\", \"userID\", \"gamee.requestPlayerSaveState\");\n validateDataType(cb, \"function\", \"cb\", \"gamee.requestPlayerSaveState\");\n\n core.requestPlayerSaveState(userID, cb);\n },\n\n /*\n *purchaseItem\n *@member of Gamee\n *@param {object} purchaseDetails\n *@param {Gamee~purchaseItemDataCallback} cb\n */\n purchaseItem: function (purchaseDetails,cb){\n\n validateDataType(purchaseDetails,\"object\",\"purchaseDetails\",\"gamee.purchaseItem\");\n validateDataType(cb,\"function\",\"cb\",\"gamee.purchaseItem\");\n\n core.purchaseItemWithCoins(purchaseDetails, cb, true)\n },\n\n /*\n *purchaseItemWithCoins\n *@member of Gamee\n *@param {object} purchaseDetails\n *@param {Gamee~purchaseItemDataCallback} cb\n */\n purchaseItemWithCoins: function (purchaseDetails, cb) {\n validateDataType(purchaseDetails,\"object\",\"purchaseDetails\",\"gamee.purchaseItemWithCoins\");\n validateDataType(cb,\"function\",\"cb\",\"gamee.purchaseItemWithCoins\");\n\n core.purchaseItemWithCoins(purchaseDetails, cb)\n },\n\n /*\n *purchaseItemWithGems\n *@member of Gamee\n *@param {object} purchaseDetails\n *@param {Gamee~purchaseItemWithGemsDataCallback} cb\n */\n purchaseItemWithGems: function (purchaseDetails,cb) {\n\n validateDataType(purchaseDetails,\"object\",\"purchaseDetails\",\"gamee.purchaseItemWithGems\");\n validateDataType(cb,\"function\",\"cb\",\"gamee.purchaseItemWithGems\");\n\n core.purchaseItemWithGems(purchaseDetails,cb)\n },\n\n /*share\n *@member of Gamee\n *@param {object} shareDetails\n *@param {Gamee~shareDataCallback} cb\n */\n share: function (shareDetails,cb){\n validateDataType(shareDetails,\"object\",\"shareDetails\",\"gamee.share\");\n validateDataType(cb,\"function\",\"cb\",\"gamee.share\");\n\n core.share(shareDetails,cb)\n },\n\n /*\n *loadRewardedVideo\n *@member of Gamee\n *@param {Gamee~loadRewardedVideo} cb\n */\n loadRewardedVideo: function (cb){\n\n validateDataType(cb,\"function\",\"cb\",\"gamee.loadRewardedVideo\");\n core.loadRewardedVideo(cb)\n },\n\n /*\n *showRewardedVideo\n *@member of Gamee\n *@param{Gamee~showRewardedVideo} cb\n */\n showRewardedVideo: function (cb){\n\n validateDataType(cb,\"function\",\"cb\",\"gamee.showRewardedVideo\");\n core.showRewardedVideo(cb)\n },\n\n /**\n *requestPlayerData\n *@member of Gamee\n *@param{Gamee~requestPlayerData} cb\n * @param {number} userID\n */\n requestPlayerData: function (cb, userID){\n\n validateDataType(cb,\"function\",\"cb\",\"gamee.requestPlayerData\");\n if (userID !== undefined) {\n validateDataType(userID,\"number\",\"userId\",\"gamee.requestPlayerData\");\n }\n core.requestPlayerData(cb, userID)\n },\n };\n\n /**\n *\n * @typedef ReplayData\n * @param {string} variant\n * @param {string} data\n */\n\n /**\n * This callback is displayed as part of the Requester class.\n * @callback Gamee~voidCallback\n * @param {string} responseCode\n */\n\n /**\n * This callback is displayed as part of the Requester class.\n * @callback Gamee~gameInitCallback\n * @param {object} data\n * @param {string} responseCode\n */\n\n /**\n * This callback is displayed as part of the Requester class.\n * @callback Gamee~requestSocialDataCallback\n * @param {object} data\n * @param {string} responseCode\n */\n\n})();\n\n/**\n * Signals that game should start as normal|replay|ghost game.\n * Signal means there is no overlay over the game.\n * This signal is also being used for game restart. If previous\n * instance of the game was running, it should be terminated without\n * any additional calls and current progress should be tossed.\n * @event gameeAPI:GameeEmitter~start\n * @type {object}\n * @property {EventDetailStart} detail - Common property of events\n */\n\n/**\n * Data carried with start event.\n * @typedef EventDetailStart\n * @property {Gamee~voidCallback} callback - called after finishing task\n * @property {boolean} [opt_resetState=false] - if true, game must delete current progress and saved progress\n * @property {boolean} [opt_replay] - if true, game must run in replay mode\n * @property {boolean} [opt_ghostMode] - if true, game must run in ghost mode\n */\n\n/**\n * After that signal, game must silent all sounds immediately.\n * Game must remain silent until unmute signal occures.\n * @event gameeAPI:GameeEmitter~mute\n * @type {object}\n * @property {EventDetailVoid} detail - Common property of events\n */\n\n/**\n * After unmute signal, game can play sounds again.\n * @event gameeAPI:GameeEmitter~unmute\n * @type {object}\n * @property {EventDetailVoid} detail - Common property of events\n */\n\n/**\n * Pause signal means there appeared overlay over the game. Player\n * is unable to reach the context of the game anymore. So game should\n * pause all its acctions immediately.\n * @event gameeAPI:GameeEmitter~pause\n * @type {object}\n * @property {EventDetailVoid} detail - Common property of events\n */\n\n/**\n * Unpause signal means there is no overlay over the game anymore.\n * Game should continue with all previous actions.\n * @event gameeAPI:GameeEmitter~unpause\n * @type {object}\n * @property {EventDetailVoid} detail - Common property of events\n */\n\n/**\n * Signal ghostHide can appear only if game is running in ghost mode.\n * Game should hide ghost behavior and look like exactly as game without\n * the ghost (if this is possible).\n * @event gameeAPI:GameeEmitter~ghostHide\n * @type {object}\n * @property {EventDetailVoid} detail - Common property of events\n */\n\n/**\n * Signal ghostShow can appear only if game is running in ghost mode.\n * Game should show ghost again if it was hidden. If ghost died or ended\n * while it was hidden, game should point that out, so the player can understand\n * why the ghost is not visible anymore.\n * @event gameeAPI:GameeEmitter~ghostShow\n * @type {object}\n * @property {EventDetailVoid} detail - Common property of events\n */\n\n/**\n * Data carried with various events. Contains only callback method.\n * @typedef {object} EventDetailVoid\n * @property {Gamee~voidCallback} callback - call after finishing task\n */\n\n/**\n * @type {function}\n * @param {MyEvent} e - The observable event.\n * @listens gameeAPI:GameeEmitter~event:snowball\n */\n\n\n\n// WEBPACK FOOTER //\n// ./gamee/src/gameeAPI.js","import { core } from \"./core.js\"\n\n/**\n *\n * @requires core\n *\n * @typedef PlatformAPI\n * @param {EventTarget} emitter\n * @param {function} _pause\n * @param {function} _resume\n * @param {function} _ghostShow\n * @param {function} _ghostHide\n * @param {function} _mute\n * @param {function} _unmute\n * @param {function} _start\n */\nexport var PlatformAPI = {\n\temitter: null,\n\tpause: function (cb) {\n\t\tvar event = new CustomEvent('pause', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\t\tthis.emitter.dispatchEvent(event);\n\t},\n\tresume: function (cb) {\n\t\tvar event = new CustomEvent('resume', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\t\tthis.emitter.dispatchEvent(event);\n\t},\n\tghostShow: function (cb) {\n\t\tvar event = new CustomEvent('ghostShow', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\t\tthis.emitter.dispatchEvent(event);\n\t},\n\tghostHide: function (cb) {\n\t\tvar event = new CustomEvent('ghostHide', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\t\tthis.emitter.dispatchEvent(event);\n\t},\n\tmute: function (cb) {\n\t\tvar event = new CustomEvent('mute', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\t\tthis.emitter.dispatchEvent(event);\n\t},\n\tunmute: function (cb) {\n\t\tvar event = new CustomEvent('unmute', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\t\tthis.emitter.dispatchEvent(event);\n\t},\n\tstart: function (data, cb) {\n\t\tvar event = new CustomEvent('start', {\n\t\t\tdetail: {\n\t\t\t\tcallback: cb\n\t\t\t}\n\t\t});\n\n\t\tvar error = core.startSignal(data);\n\t\tif (error) {\n\t\t\tcb(error);\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.replay)\n\t\t\tevent.detail.opt_replay = true;\n\t\tif (data.ghostMode)\n\t\t\tevent.detail.opt_ghostMode = true;\n\t\tif (data.resetState)\n\t\t\tevent.detail.opt_resetState = true;\n if (data.replayData){\n event.detail.replayData = data.replayData\n }\n\n\t\tthis.emitter.dispatchEvent(event);\n\t}\n};\n\n\n/**\n * @class PlatformBridge\n *\n */\nexport function PlatformBridge() {\n\tthis.requests = {};\n\tthis.platform = \"\";\n\tthis._init();\n}\n\nPlatformBridge.prototype = {\n\tinstCount: 0,\n\t_init: function () {\n\t},\n\tcreateRequest: function (method, opt_requestData, opt_callback) {\n\t\tif (!this.validateMethod(method))\n\t\t\treturn;\n\t\tif (typeof opt_requestData === 'function') {\n\t\t\topt_callback = opt_requestData;\n\t\t\topt_requestData = undefined;\n\t\t}\n\n\t\tvar messId = this.instCount++;\n\n\t\tif (typeof opt_callback !== 'undefined') {\n\t\t\tthis.requests[messId] = opt_callback;\n\t\t}\n\n\t\tvar preparedObject = {\n\t\t\trequest: {\n\t\t\t\tmethod: method,\n\t\t\t\tmessageId: messId,\n\t\t\t\tdata: null\n\t\t\t}\n\t\t};\n\n\t\tthis.doCall(preparedObject, opt_requestData);\n\t},\n\tvalidateMethod: function (method) {\n\t\treturn method === \"gameLoadingProgress\" ? false : true;\n\t},\n\t/**\n\t * @abstract\n\t */\n\tdoCall: function (preparedObject, requestData) {\n\t\tthrow \"Not implemented\";\n\t},\n\t_callback: function (id, responseData) {\n\t\tvar cb = this.requests[id];\n\t\tdelete this.requests[id];\n\t\tif (cb)\n\t\t\tcb(responseData);\n\t},\n\t/**\n\t * @abstract\n\t */\n\tdoResponse: function (preparedObject, responseData) {\n\t\tthrow \"Not implemented\";\n\t},\n};\n\n\n/**\n * @class PostMessageBridge\n * @requires PlatformBridge\n */\nexport function PostMessageBridge(endpoint) {\n\tthis._gameeWin = endpoint;\n\tPlatformBridge.call(this);\n\tthis.platform = \"web\";\n}\n\nPostMessageBridge.prototype = Object.create(PlatformBridge.prototype);\nPostMessageBridge.prototype.constructor = PostMessageBridge;\n\nPostMessageBridge.prototype._init = function () {\n\n\twindow.addEventListener('message', function (ev) {\n\t\t// if(ev.origin === \"source we want\")\n\t\t// console.log(\"_triggerMessage detail: \" + ev.detail);\n\t\t// console.log(\"_triggerMessage data: \" + ev.data);\n\t\tvar data;\n\t\tif (typeof ev.detail === \"object\" && typeof ev.detail !== null) {\n\t\t\tdata = ev.detail;\n\t\t} else if (typeof ev.data === \"object\") {\n\t\t\tdata = ev.data;\n\t\t} else {\n\t\t\t// message is not from native platform\n\t\t\treturn;\n\t\t}\n\n if (!core.isSilentModeEnabled()) {\n console.log(JSON.stringify(data, null, 4) + ' data');\n }\n\t\t// this is request\n\t\tif (data.request && data.request.method && typeof data.request.messageId !== \"undefined\") {\n\t\t\tthis._resolveAPICall(data.request.method, data.request.messageId, data.request.data);\n\t\t}\n\t\t// this is reponse\n\t\telse if (data.response && typeof data.response.messageId !== \"undefined\") {\n\t\t\tif (data.error)\n\t\t\t\tthrow data.error;\n\t\t\tthis._callback(data.response.messageId, data.response.data);\n\t\t}\n\t\t// else this message target is not this framework\n\t}.bind(this), false);\n};\n\n\nPostMessageBridge.prototype.doCall = function (preparedObject, requestData) {\n\tif (typeof requestData === \"object\") {\n\t\tpreparedObject.request.data = requestData || {};\n\t}\n\tthis._gameeWin.postMessage(preparedObject, \"*\");\n};\n\nPostMessageBridge.prototype.doResponse = function (messageId, responseData) {\n\tvar preparedObject = {\n\t\tversion: this.version,\n\t\tresponse: {\n\t\t\tmessageId: messageId\n\t\t}\n\t};\n\n\tif (responseData)\n\t\tpreparedObject.data = responseData;\n\n\tthis._gameeWin.postMessage(preparedObject, \"*\");\n};\n\nPostMessageBridge.prototype._resolveAPICall = function (method, messageId, opt_data) {\n\tvar cb = this.doResponse.bind(this, messageId);\n\n\tswitch (method) {\n\t\tcase \"pause\":\n\t\t\tPlatformAPI.pause(cb);\n\t\t\tbreak;\n\t\tcase \"resume\":\n\t\t\tPlatformAPI.resume(cb);\n\t\t\tbreak;\n\t\tcase \"mute\":\n\t\t\tPlatformAPI.mute(cb);\n\t\t\tbreak;\n\t\tcase \"unmute\":\n\t\t\tPlatformAPI.unmute(cb);\n\t\t\tbreak;\n\t\tcase \"ghostShow\":\n\t\t\tPlatformAPI.ghostShow(cb);\n\t\t\tbreak;\n\t\tcase \"ghostHide\":\n\t\t\tPlatformAPI.ghostHide(cb);\n\t\t\tbreak;\n\t\tcase \"start\":\n\t\t\tif (!opt_data) {\n\t\t\t\tthrow \"Method _start missing params\";\n\t\t\t}\n\t\t\tPlatformAPI.start(opt_data, cb);\n\t\t\tbreak;\n\t\tdefault:\n\t\t if (!core.isSilentModeEnabled()) {\n\t\t\t console.error(\"Unknown method call\");\n }\n\t}\n};\n\n\n/**\n * @class MobileBridge\n * @requires PlatformBridge\n *\n */\nexport function MobileBridge(device) {\n\tthis.device = device;\n\tPostMessageBridge.call(this);\n\tthis.platform = \"mobile\";\n}\n\nMobileBridge.prototype = Object.create(PostMessageBridge.prototype);\nMobileBridge.prototype.constructor = MobileBridge;\n\nMobileBridge.prototype._init = function () {\n\tPostMessageBridge.prototype._init.call(this);\n\tif (this.device === \"ios\") {\n\t\tthis._gameeWin = webkit.messageHandlers.callbackHandler;\n\t} else if (this.device === \"android\") {\n\t\tthis._gameeWin = _toDevice;\n\t} else {\n\t\tthrow \"Unknown device used in webkit bridge\";\n\t}\n\n\twindow._triggerMessage = function (data) {\n\t\ttry {\n\t\t\tdata = JSON.parse(data); // message is custom message from IOS/android platform\n\t\t} catch (err) {\n\t\t\tthrow \"Couldn't parse message from native app: \\n\" + data + \"\\n\" + err;\n\t\t}\n\t\tif (!core.isSilentModeEnabled()) {\n console.log(JSON.stringify(data, null, 4));\n }\n\t\tthis.dispatchEvent(new CustomEvent(\"message\", { detail: data }));\n\t}.bind(window);\n\n};\n\nMobileBridge.prototype.doCall = function (preparedObject, requestData) {\n\tif (typeof requestData === \"object\") {\n\t\tpreparedObject.request.data = requestData || {};\n\t}\n\n\tif (this.device === \"android\") // stringify data for android devices, but not for ios\n\t\tpreparedObject = JSON.stringify(preparedObject);\n\n\tthis._gameeWin.postMessage(preparedObject, \"*\");\n};\n\n\n\n// WEBPACK FOOTER //\n// ./gamee/src/platform_bridge.js","\nvar BulletClass = function () {\n var _self = this,\n _events = {};\n\n _self.on = function (event, fn, once) {\n if (arguments.length < 2 ||\n typeof event !== \"string\" ||\n typeof fn !== \"function\") return;\n\n var fnString = fn.toString();\n\n // if the named event object already exists in the dictionary...\n if (typeof _events[event] !== \"undefined\") {\n // add a callback object to the named event object if one doesn't already exist.\n if (typeof _events[event].callbacks[fnString] === \"undefined\") {\n _events[event].callbacks[fnString] = {\n cb: fn,\n once: !!once\n };\n }\n else if (typeof once === \"boolean\") {\n // the function already exists, so update it's 'once' value.\n _events[event].callbacks[fnString].once = once;\n }\n }\n else {\n // create a new event object in the dictionary with the specified name and callback.\n _events[event] = {\n callbacks: {}\n };\n\n _events[event].callbacks[fnString] = { cb: fn, once: !!once };\n }\n };\n\n _self.once = function (event, fn) {\n _self.on(event, fn, true);\n };\n\n _self.off = function (event, fn) {\n if (typeof event !== \"string\" ||\n typeof _events[event] === \"undefined\") return;\n\n // remove just the function, if passed as a parameter and in the dictionary.\n if (typeof fn === \"function\") {\n var fnString = fn.toString(),\n fnToRemove = _events[event].callbacks[fnString];\n\n if (typeof fnToRemove !== \"undefined\") {\n // delete the callback object from the dictionary.\n delete _events[event].callbacks[fnString];\n }\n }\n else {\n // delete all functions in the dictionary that are\n // registered to this event by deleting the named event object.\n delete _events[event];\n }\n };\n\n _self.trigger = function (event, data) {\n if (typeof event !== \"string\" ||\n typeof _events[event] === \"undefined\") return;\n\n for (var fnString in _events[event].callbacks) {\n var callbackObject = _events[event].callbacks[fnString];\n\n if (typeof callbackObject.cb === \"function\") callbackObject.cb(data);\n if (typeof callbackObject.once === \"boolean\" && callbackObject.once === true) _self.off(event, callbackObject.cb);\n }\n };\n\n};\n\n\nexport var Bullet = new BulletClass();\n\n\n// WEBPACK FOOTER //\n// ./gamee/libs/bullet.js","import { Bullet } from \"../libs/bullet.js\"\n\n/**\n * @module game_controllers\n */\n\n/** ## Bullet\n *\n * [Bullet.js](https://github.com/munkychop/bullet) is used as pub/sub\n * library.\n *\n * The controller and its buttons are instance of Bullet.\n */\nexport var BulletClass = Bullet.constructor;\n\n\n/** ## Button\n *\n * Represenation of a controller button. It is a child of\n * [Bullet](https://github.com/munkychop/bullet), so you can\n * subscribe for events triggered on it.\n *\n * @class Button\n * @param {String} key name of the button\n * @param {Number} keyCode keycode for the key to represent the button\n * on keyboard\n */\nexport function Button(key, keyCode) {\n\tvar self = this;\n\n\tBulletClass.call(this);\n\n\tthis._pressed = true;\n\n\tthis.key = key;\n\tthis.keyCode = keyCode;\n\n\tthis.on('keydown', function () {\n\t\tself._pressed = true;\n\t});\n\n\tthis.on('keyup', function () {\n\t\tself._pressed = false;\n\t});\n}\n\nButton.prototype = Object.create(BulletClass.constructor.prototype);\nButton.constructor = Button;\n\n/** ### isDown\n *\n * Ask if the button is currently pressed.\n *\n * @return {Boolean} true if the button is currently pressed\n */\nButton.prototype.isDown = function () {\n\treturn this._pressed;\n};\n\n/** ## Controller\n *\n * Controller has a collection of [buttons](#buttons).\n * It is a child of\n * [Bullet](https://github.com/munkychop/bullet), so you can\n * subscribe for events triggered on it.\n *\n * Controllers will get all the events for its buttons so you can\n * listen for them globaly from controller or individualy on every\n * button.\n *\n * ```javascript\n * controller.on('keydown', function(data) {\n * console.log('button ' + data.button + ' is pressed');\n * });\n *\n * controller.buttons.left.on('keydown', function() {\n * console.log('button left is pressed');\n * });\n * ```\n *\n * @class Controller\n */\nexport function Controller() {\n\tvar self = this;\n\n\tBulletClass.call(this);\n\n\t// ### buttons\n\t//\n\t// Map of controller's [buttons](#button) by their name.\n\t//\n\t// ```javascript\n\t// controller.buttons.left // Button('left', ..)\n\t// ```\n\tthis.buttons = {};\n\n\t// ### buttonAlias\n\t//\n\t// Map of remapped buttons.\n\t//\n\t// *see [remapButton](#remapbutton) for more info*\n\t//\n\tthis.buttonAlias = {};\n\n\t// Events prefixed with *$* are private, sent from GameeApp ment\n\t// to be handled before resended as *public (non-prefixed)*\n\t// event.\n\t//\n\t// They should be not used in games as they can change in the future.\n\tthis.on('$keydown', function (data) {\n\t\tif (data.button && self.buttonAlias[data.button]) {\n\t\t\tdata.button = self.buttonAlias[data.button];\n\t\t}\n\n\t\tself.trigger('keydown', data);\n\t});\n\n\tthis.on('$keyup', function (data) {\n\t\tif (data.button && self.buttonAlias[data.button]) {\n\t\t\tdata.button = self.buttonAlias[data.button];\n\t\t}\n\n\t\tself.trigger('keyup', data);\n\t});\n\n\t// By default GameeApp will trigger *keydown* and *keyup* events for\n\t// the controller for every button presses/released.\n\t//\n\t// The controller then handles the event and triggers the event for\n\t// the coresponding button.\n\t//\n\t// It expexts a `data` argument which should have a property `button`\n\t// with the name of button.\n\tthis.on('keydown', function (data) {\n\t\tif (!data.button || !self.buttons[data.button]) {\n\t\t\treturn;\n\t\t}\n\n\t\tself.buttons[data.button].trigger('keydown');\n\t});\n\n\tthis.on('keyup', function (data) {\n\t\tif (!data.button || !self.buttons[data.button]) {\n\t\t\treturn;\n\t\t}\n\n\t\tself.buttons[data.button].trigger('keyup');\n\t});\n}\n\nController.prototype = Object.create(BulletClass.constructor.prototype);\nController.constructor = Controller;\n\n/** ### addButton\n *\n * Add button to the controller.\n *\n * @param {Button} button a [Button](#button) instance\n */\nController.prototype.addButton = function (button) {\n\tthis.buttons[button.key] = button;\n};\n\n/** ### enableKeyboard\n *\n * Enable keyboard controlls. It will attach event listeners to the\n * *window* object for every button and trigger their *keydown* /\n * *keyup* event for the controller.\n */\nController.prototype.enableKeyboard = function (gamee) {\n\tvar key, button, keyCodes = {}, self = this;\n\n\tfor (key in this.buttons) {\n\t\tbutton = this.buttons[key];\n\n\t\tif (button.keyCode) {\n\t\t\tkeyCodes[button.keyCode] = button;\n\t\t}\n\t}\n\n\tgamee._keydown(function (ev) {\n\t\tvar button = keyCodes[ev.keyCode];\n\n\t\tif (!button) {\n\t\t\treturn;\n\t\t}\n\n\t\tev.preventDefault();\n\t\tself.trigger('keydown', { button: button.key });\n\t});\n\n\tgamee._keyup(function (ev) {\n\t\tvar button = keyCodes[ev.keyCode];\n\n\t\tif (!button) {\n\t\t\treturn;\n\t\t}\n\n\t\tev.preventDefault();\n\t\tself.trigger('keyup', { button: button.key });\n\t});\n};\n\n/** ### remapButton\n *\n * Remap the names of the controller's buttons. Controllers have their\n * button names set (left, right, A, B), but sometimes in context of\n * the game a different names are desired.\n *\n * ```javascript\n * var controller = gamee.controller.requestController('TwoButtons');\n * controller.remapButton('left', 'throttle');\n * controller.remapButton('right', 'break');\n *\n * controller.buttons.throttle.on('keydown', ..);\n * ```\n *\n * @param {String} oldName button name we want to change\n * @param {String} newName new button name\n */\nController.prototype.remapButton = function (oldName, newName) {\n\n\t// handle old code\n\tif (newName.name) {\n\t\tnewName = newName.name;\n\t}\n\n\tif (this.buttons[oldName]) {\n\t\tthis.buttonAlias[oldName] = newName.name;\n\n\t\tthis.buttons[newName.name] = this.buttons[oldName];\n\n\t\tdelete this.buttons[oldName];\n\t} else {\n\t\tthrow Error('Button ' + oldName + ' was not found in controller');\n\t}\n};\n\n// ## Controllers\n\n/** ### OneButtonController\n *\n * Controller with only one button.\n * @class OneButtonController\n */\nexport function OneButtonController() {\n\tController.call(this);\n\n\t// * __name__: 'button'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('button', 32));\n}\nOneButtonController.prototype = Object.create(Controller.prototype);\nOneButtonController.prototype.constructor = OneButtonController;\n\n\n/** ### TwoButtonController\n *\n * Controller with two buttons\n * @class TwoButtonController\n */\nexport function TwoButtonController() {\n\tController.call(this);\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n}\nTwoButtonController.prototype = Object.create(Controller.prototype);\nTwoButtonController.prototype.constructor = TwoButtonController;\n\n\n/** ### TwoActionButtonsController\n *\n * Controller with two action buttons (A,B)\n * @class TwoActionButtonsController\n */\nexport function TwoActionButtonsController() {\n\tController.call(this);\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('A', 32));\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('B', 17));\n}\nTwoActionButtonsController.prototype = Object.create(Controller.prototype);\nTwoActionButtonsController.prototype.constructor = TwoActionButtonsController;\n\n\n/** ### FourButtonController\n *\n * Controller with four buttons\n * @class FourButtonController\n */\nexport function FourButtonController() {\n\tController.call(this);\n\n\t// * __name__: 'up'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('up', 38));\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n\n\t// * __name__: 'A'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('A', 32));\n}\nFourButtonController.prototype = Object.create(Controller.prototype);\nFourButtonController.prototype.constructor = FourButtonController;\n\n/** ### FiveButtonController\n *\n * Controller with five buttons\n * @class FiveButtonController\n */\nexport function FiveButtonController() {\n\tController.call(this);\n\n\t// * __name__: 'up'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('up', 38));\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n\n\t// * __name__: 'down'\n\t// * __key__: down arrow\n\tthis.addButton(new Button('down', 40));\n\n\t// * __name__: 'A'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('A', 32));\n}\nFiveButtonController.prototype = Object.create(Controller.prototype);\nFiveButtonController.prototype.constructor = FiveButtonController;\n\n/** ### SixButtonController\n *\n * Controller with six buttons\n * @class SixButtonController\n */\nexport function SixButtonController() {\n\tController.call(this);\n\n\t// * __name__: 'up'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('up', 38));\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n\n\t// * __name__: 'down'\n\t// * __key__: down arrow\n\tthis.addButton(new Button('down', 40));\n\n\t// * __name__: 'A'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('A', 32));\n\n\t// * __name__: 'B'\n\t// * __key__: ctrl\n\tthis.addButton(new Button('B', 17));\n}\nSixButtonController.prototype = Object.create(Controller.prototype);\nSixButtonController.prototype.constructor = SixButtonController;\n\n/** ### TwoArrowsOneButtonController\n *\n * Controller with two arrows and one action button\n * @class TwoArrowsOneButtonController\n */\nexport function TwoArrowsOneButtonController() {\n\tController.call(this);\n\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n\n\n\t// * __name__: 'A'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('A', 32));\n\n}\nTwoArrowsOneButtonController.prototype = Object.create(Controller.prototype);\nTwoArrowsOneButtonController.prototype.constructor = TwoArrowsOneButtonController;\n\n/** ### TwoArrowsTwoButtonsController\n *\n * Controller with two arrows and two action buttons\n * @class TwoArrowsTwoButtonsController\n */\nexport function TwoArrowsTwoButtonsController() {\n\tController.call(this);\n\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n\n\n\t// * __name__: 'A'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('A', 32));\n\n\t// * __name__: 'B'\n\t// * __key__: ctrl\n\tthis.addButton(new Button('B', 17));\n\n}\nTwoArrowsTwoButtonsController.prototype = Object.create(Controller.prototype);\nTwoArrowsTwoButtonsController.prototype.constructor = TwoArrowsTwoButtonsController;\n\n/** ### FourArrowController\n *\n * Controller with four arrow buttons\n * @class FourArrowController\n */\nexport function FourArrowController() {\n\tController.call(this);\n\n\t// * __name__: 'up'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('up', 38));\n\n\t// * __name__: 'left'\n\t// * __key__: left arrow\n\tthis.addButton(new Button('left', 37));\n\n\n\t// * __name__: 'right'\n\t// * __key__: righ arrow\n\tthis.addButton(new Button('right', 39));\n\n\t// * __name__: 'down'\n\t// * __key__: down arrow\n\tthis.addButton(new Button('down', 40));\n}\nFourArrowController.prototype = Object.create(Controller.prototype);\nFourArrowController.prototype.constructor = FourArrowController;\n\n/** ### TouchController\n *\n * This controller has no buttons. Instead it has a touchpad which\n * triggers *touchstart*, *touchend*, *touchmove*, *touchcancel*,\n * *touchend* events (similar to\n * [Touch event types](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent#Touch_event_types))\n *\n * The position of the touch is in the `data.position` argument as a\n * *x* and *y* with the values between [0, 0] for the left top corner\n * and [1, 1] for the bottom right corner ([0.5, 0.5] is the center).\n *\n * ```javascript\n * controller = gamee.controller.requestController('Touch');\n *\n * controller.on('touchstart', function(data) {\n *\tif (data.position.x < 0.5 && data.position.y < 0.5) {\n * console.log('touch in the top left quadrant');\n * }\n * })\n * ```\n * @class TouchController\n */\nexport function TouchController() {\n\tvar self = this;\n\n\tController.call(this);\n\n\tthis.on(\"$touchstart\", function (data) {\n\t\tself.trigger('touchstart', data);\n\t});\n\n\tthis.on(\"$touchend\", function (data) {\n\t\tself.trigger('touchend', data);\n\t});\n\n\tthis.on(\"$touchmove\", function (data) {\n\t\tself.trigger('touchmove', data);\n\t});\n\n\tthis.on(\"$touchleave\", function (data) {\n\t\tself.trigger('touchleave', data);\n\t});\n\n\tthis.on(\"$touchcancel\", function (data) {\n\t\tself.trigger('touchcancel', data);\n\t});\n}\nTouchController.prototype = Object.create(TouchController.prototype);\nTouchController.prototype.constructor = TouchController;\n\n/** ### JoystickController\n *\n * JoystickController emits `change` event, after the position of the\n * joystick is changed.\n *\n * The position of the joystick is in the property `x` and `y`. The\n * position on axis is between <-1, 1> (for x -1 is max left\n * position, 1 max right position). [0.0, 0.0] is the center.\n *\n * ```javascript\n * joystick = gamee.controller.requestController('Joystick');\n *\n * joystick.on('change', function() {\n * new_x = joystick.x;\n * nex_y = joystick.y;\n * })\n * ```\n * @class JoystickController\n */\nexport function JoystickController() {\n\tvar self = this;\n\n\tController.call(this);\n\n\t// x axis\n\tthis.x = 0;\n\t// y axis\n\tthis.y = 0;\n\n\tthis.on(\"$change\", function (data) {\n\t\tself.x = data.position.x;\n\t\tself.y = data.position.y;\n\n\t\tself.trigger(\"change\", data);\n\t});\n}\nJoystickController.prototype = Object.create(Controller.prototype);\nJoystickController.prototype.constructor = JoystickController;\n\n/** ### JoystickButtonController\n *\n * JoystickButtonController is a `JoystickController` with one button.\n *\n * ```javascript\n * joystick = gamee.controller.requestController('JoystickWithButton');\n *\n * joystick.on('change', function() {\n * new_x = joystick.x;\n * nex_y = joystick.y;\n * })\n *\n * joystick.buttons.button.on('keydown', callback)\n * // or simply\n * joystick.on('keydown', callback)\n * ```\n * @class JoystickButtonController\n */\nexport function JoystickButtonController() {\n\tvar self = this;\n\n\tJoystickController.call(this);\n\n\t// * __name__: 'button'\n\t// * __key__: spacebar\n\tthis.addButton(new Button('button', 32));\n}\nJoystickButtonController.prototype = Object.create(JoystickController.prototype);\nJoystickButtonController.prototype.constructor = JoystickButtonController;\n\n\n\n// WEBPACK FOOTER //\n// ./gamee/src/game_controllers.js","import { } from \"../libs/shims.js\"\nimport { Gamee } from \"./gameeAPI.js\"\nimport { core } from \"./core.js\"\nimport { PlatformAPI, PlatformBridge, PostMessageBridge, MobileBridge } from \"./platform_bridge.js\"\n\n\n/**\n * Instance of gamee object with API for developers.\n * Internal functions becomes private this way\n *\n * @requires Gamee\n */\nexport var gamee;\n\n/**\n * Resolves what platform is being used and make instance of platform API.\n *\n * @requires PlatformBridge\n */\nvar platformBridge = (function () {\n\n var platformBridge, platformType = \"web\";\n\n // Reslove Gamee enviroment\n /* current user agent */\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (/iphone|ipod|ipad/.test(userAgent)) { // test ios device\n // user agent is use to determine current enviroment\n\n // Test if window with game have a parent (loading in iframe)\n if (window.self !== window.top) {\n platformType = \"web\";\n } else {\n platformType = \"ios\";\n }\n } else if (/gamee\\/[0-9\\.]+$/.test(userAgent)) { // test android app\n // TODO do you really test android like that?\n platformType = \"android\";\n } else if (window.parent) { // TODO doesnt make sence, parent always exists!!\n platformType = \"web\";\n } else if (window.parent && window.parent.gameeSimulator) { // TODO doesnt make sence, parent always exist?\n platformType = \"web\";\n }\n\n gamee = new Gamee(platformType);\n\n window.gamee = gamee;\n\n switch (platformType) {\n case \"web\":\n if (window.parent === window) {\n console.error(\"Gamee must run in iframe on web platform\");\n }\n platformBridge = new PostMessageBridge(window.parent);\n break;\n case \"ios\":\n platformBridge = new MobileBridge(\"ios\");\n break;\n case \"android\":\n platformBridge = new MobileBridge(\"android\");\n break;\n default:\n throw \"Can't identify the platform\";\n }\n return platformBridge;\n})();\n\ncore.PlatformAPI = PlatformAPI;\ncore.native = platformBridge;\n\nPlatformAPI.emitter = gamee.emitter;\n\n\nfunction loadScript (url, callback) {\n // Adding the script tag to the head as suggested before\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.src = url;\n\n // Then bind the event to the callback function.\n // There are several events for cross browser compatibility.\n script.onreadystatechange = callback;\n script.onload = callback;\n\n // Fire the loading\n head.appendChild(script);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./gamee/src/index.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 7\n// module chunks = 0 1"],"sourceRoot":""}