\n\n\n\n\n\n","import mod from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=3b063428&scoped=true\"\nimport script from \"./Loader.vue?vue&type=script&lang=js\"\nexport * from \"./Loader.vue?vue&type=script&lang=js\"\nimport style0 from \"./Loader.vue?vue&type=style&index=0&id=3b063428&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b063428\",\n null\n \n)\n\nexport default component.exports","\n
\n \n
\n \n
\n
\n\n\n\n\n\n","import mod from \"-!../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1d800962&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=1d800962&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d800962\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home game-view\"},[_c('div',{staticClass:\"title-side\"},[_c('game-title'),_c('div',{staticClass:\"character-animation\"},[_c('character-animation',{attrs:{\"character\":_vm.characters.vue.name,\"animation\":_vm.vueAnimation.animation,\"modification\":_vm.vueAnimation.modification}}),_c('character-animation',{attrs:{\"character\":_vm.characters.react.name,\"animation\":_vm.reactAnimation.animation,\"modification\":_vm.reactAnimation.modification}})],1)],1),_c('div',{staticClass:\"menu-side\"},[_c('div',[_c('character-animation',{attrs:{\"character\":_vm.characters.angular.name,\"animation\":_vm.angularAnimation.animation,\"modification\":_vm.angularAnimation.modification}})],1),_c('game-menu'),_vm._m(0)],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"credits\"},[_c('div',[_vm._v(\"Game by Dalila Balic\")]),_c('div',[_vm._v(\" Characters by \"),_c('a',{attrs:{\"href\":\"https://themeforest.net/user/pasilan\"}},[_vm._v(\"Pasilan\")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:['game-title', _vm.size]},[_vm._m(0),_vm._m(1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"js-logo\"},[_c('img',{attrs:{\"src\":\"/images/JSlogo.png\",\"alt\":\"JS Logo\",\"height\":\"145\",\"width\":\"145\"}})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"title\"},[_c('div',[_vm._v(\"Framework\")]),_c('div',[_vm._v(\"Combat\")])])\n}]\n\nexport { render, staticRenderFns }","\n
\n
\n \n
\n
\n
Framework
\n
Combat
\n
\n
\n\n\n\n\n\n","import mod from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GameTitle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GameTitle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GameTitle.vue?vue&type=template&id=0666fc2e&scoped=true\"\nimport script from \"./GameTitle.vue?vue&type=script&lang=js\"\nexport * from \"./GameTitle.vue?vue&type=script&lang=js\"\nimport style0 from \"./GameTitle.vue?vue&type=style&index=0&id=0666fc2e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0666fc2e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"game-menu\"},_vm._l((_vm.items),function(item,index){return _c('menu-item',{key:index,attrs:{\"item\":item}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default [\n {\n label: 'Start New Game',\n link: '/characters'\n },\n {\n label: 'Game Instructions',\n link: '/instructions'\n }\n];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-link',{attrs:{\"to\":_vm.item.link}},[_c('div',{staticClass:\"menu-item\"},[_vm._v(_vm._s(_vm.item.label))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
{{ item.label }}
\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MenuItem.vue?vue&type=template&id=3bb8e3fd&scoped=true\"\nimport script from \"./MenuItem.vue?vue&type=script&lang=js\"\nexport * from \"./MenuItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./MenuItem.vue?vue&type=style&index=0&id=3bb8e3fd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3bb8e3fd\",\n null\n \n)\n\nexport default component.exports","\n
\n \n
\n\n\n\n\n\n","import mod from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GameMenu.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GameMenu.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GameMenu.vue?vue&type=template&id=9c5d451e&scoped=true\"\nimport script from \"./GameMenu.vue?vue&type=script&lang=js\"\nexport * from \"./GameMenu.vue?vue&type=script&lang=js\"\nimport style0 from \"./GameMenu.vue?vue&type=style&index=0&id=9c5d451e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9c5d451e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('canvas',{ref:\"characterAnimation\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default options => {\n let frameIndex = 0; // The current frame to be displayed\n let tickCount = 0; // The number updates since the current frame was first displayed\n let ticksPerFrame = options.ticksPerFrame || 0; // The number of updates until the next frame should be displayed\n let numberOfFrames = options.numberOfFrames || 1;\n\n const { context, width, height, image, loop } = options;\n\n return {\n render: function() {\n // clear the canvas\n context.clearRect(0, 0, width, height);\n //draw the image\n context.drawImage(\n image,\n frameIndex * width,\n 0,\n width,\n height,\n 0,\n 0,\n width,\n height\n );\n },\n update: function() {\n let animationCompleted = false;\n tickCount += 1;\n\n if (tickCount <= ticksPerFrame) return;\n\n tickCount = 0;\n\n // If the current frame index is in range\n if (frameIndex < numberOfFrames - 1) {\n // Go to the next frame\n frameIndex += 1;\n } else if (loop) {\n frameIndex = 0;\n } else {\n animationCompleted = true;\n }\n return animationCompleted;\n }\n };\n};\n","\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CharacterAnimation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CharacterAnimation.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CharacterAnimation.vue?vue&type=template&id=726ecbec&scoped=true\"\nimport script from \"./CharacterAnimation.vue?vue&type=script&lang=js\"\nexport * from \"./CharacterAnimation.vue?vue&type=script&lang=js\"\nimport style0 from \"./CharacterAnimation.vue?vue&type=style&index=0&id=726ecbec&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"726ecbec\",\n null\n \n)\n\nexport default component.exports","\n
\n\n\n\n\n\n","import mod from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Play.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Play.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Play.vue?vue&type=template&id=2f9b9147&scoped=true\"\nimport script from \"./Play.vue?vue&type=script&lang=js\"\nexport * from \"./Play.vue?vue&type=script&lang=js\"\nimport style0 from \"./Play.vue?vue&type=style&index=0&id=2f9b9147&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f9b9147\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"game-view\"},[_c('game-header',[_vm._v(\"How to play this game\")]),_c('div',{staticClass:\"game-instructions\"},[_vm._m(0),_c('div',{staticClass:\"controls\"},[_c('h2',[_vm._v(\"Controls\")]),_vm._l((_vm.instructions),function(instruction,index){return _c('div',{key:index},[_vm._v(\" \"+_vm._s(instruction.sectionTitle)+\": \"),_c('div',{staticClass:\"control-details\"},[_c('div',{staticClass:\"action\"},_vm._l((instruction.controls),function(control,action){return _c('div',{key:action},[_vm._v(\" \"+_vm._s(action)+\" \")])}),0),_c('div',{staticClass:\"control\"},_vm._l((instruction.controls),function(control,action){return _c('div',{key:action},[_vm._v(\" \"+_vm._s(control)+\" \")])}),0)])])})],2)])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"instructions\"},[_c('h2',[_vm._v(\"Instructions\")]),_c('div',[_vm._v(\" Choose your favourite JS framework and let it face off against other JS frameworks and see who wins! \"),_c('br'),_c('br'),_vm._v(\" The character who's health (upper bar, yellow) first reaches 0, loses.\"),_c('br'),_c('br'),_vm._v(\" You can decrease your opponent's health by attacking them with a knife or shooting at them.\"),_c('br'),_c('br'),_vm._v(\" Attacking with a knife is always available, but causes less damage to your opponen't health than shooting. In order to cause damage with a knife attack you have to come close to your opponent.\"),_c('br'),_c('br'),_vm._v(\" The colored bar bellow the health bar indicates when shooting is available. Shooting can be performed from a distance and it causes significantly more damage to your opponent than attacking with a knife. So be aware of your opponent's special attack bar! \"),_c('br'),_c('br'),_vm._v(\" In order to evade attacks by your opponent and safe your character's health from being affected, you can roll, slide, jump or stay away from your opponent (for knife attacks).\"),_c('br'),_c('br'),_vm._v(\" Let's play! \")])])\n}]\n\nexport { render, staticRenderFns }","export default [\n {\n sectionTitle: 'Moving around',\n controls: {\n 'Move right': 'Left Arrow key',\n 'Move left': 'Right Arrow key',\n 'Jump': 'Up Arrow key',\n 'Slide': 'Down Arrow key'\n }\n },\n {\n sectionTitle: 'Attacking',\n controls: {\n 'Attack with knife': 'A key',\n 'Shoot': 'S key'\n }\n },\n {\n sectionTitle: 'Evading attacks',\n controls: {\n 'Jump': 'Up Arrow key',\n 'Slide': 'Down Arrow key',\n 'Roll': 'D key'\n }\n },\n {\n sectionTitle: 'Other',\n controls: {\n 'Pause game': 'Space key',\n 'Quit game': 'Esc key'\n }\n },\n]","\n
\n How to play this game\n
\n
\n
Instructions
\n
\n Choose your favourite JS framework and let it face off against other\n JS frameworks and see who wins!
\n The character who's health (upper bar, yellow) first reaches 0,\n loses.
\n You can decrease your opponent's health by attacking them with a knife\n or shooting at them.
\n Attacking with a knife is always available, but causes less damage to\n your opponen't health than shooting. In order to cause damage with a\n knife attack you have to come close to your opponent.
\n The colored bar bellow the health bar indicates when shooting is\n available. Shooting can be performed from a distance and it causes\n significantly more damage to your opponent than attacking with a\n knife. So be aware of your opponent's special attack bar!
\n In order to evade attacks by your opponent and safe your character's\n health from being affected, you can roll, slide, jump or stay away\n from your opponent (for knife attacks).