pages/skilltreetest/static/js/main.1eb94fec.chunk.js.map

1 line
No EOL
116 KiB
Text

{"version":3,"sources":["sprites/addon_01.png","sprites/addon_02.png","sprites/addon_03.png","sprites/addon_04.png","sprites/addon_05.png","sprites/addon_06.png","sprites/addon_07.png","sprites/addon_08.png","sprites/addon_09.png","sprites/addon_10.png","sprites/addon_11.png","sprites/addon_12.png","sprites/addon_13.png","sprites/addon_14.png","sprites/addon_15.png","sprites/addon_16.png","sprites/addon_17.png","sprites/addon_18.png","sprites/addon_19.png","sprites/addon_20.png","sprites/addon_21.png","sprites/addon_22.png","sprites/addon_23.png","sprites/addon_24.png","sprites/addon_25.png","sprites/addon_26.png","sprites/addon_27.png","sprites/addon_28.png","sprites/addon_29.png","sprites/addon_30.png","sprites/addon_31.png","sprites/addon_32.png","sprites/addon_33.png","sprites/addon_34.png","sprites/addon_35.png","sprites/addon_36.png","sprites/addon_37.png","sprites/addon_38.png","sprites/addon_39.png","sprites/addon_40.png","sprites/blue_01.png","sprites/blue_02.png","sprites/blue_03.png","sprites/blue_04.png","sprites/blue_05.png","sprites/blue_06.png","sprites/blue_07.png","sprites/blue_08.png","sprites/blue_09.png","sprites/blue_10.png","sprites/blue_11.png","sprites/blue_12.png","sprites/blue_13.png","sprites/blue_14.png","sprites/blue_15.png","sprites/blue_16.png","sprites/blue_17.png","sprites/blue_18.png","sprites/blue_19.png","sprites/blue_20.png","sprites/blue_21.png","sprites/blue_22.png","sprites/blue_23.png","sprites/blue_24.png","sprites/blue_25.png","sprites/blue_26.png","sprites/blue_27.png","sprites/blue_28.png","sprites/blue_29.png","sprites/blue_30.png","sprites/blue_31.png","sprites/blue_32.png","sprites/blue_33.png","sprites/blue_34.png","sprites/blue_35.png","sprites/blue_36.png","sprites/blue_37.png","sprites/blue_38.png","sprites/blue_39.png","sprites/blue_40.png","sprites/blue_41.png","sprites/blue_42.png","sprites/emerald_01.png","sprites/emerald_02.png","sprites/emerald_03.png","sprites/emerald_04.png","sprites/emerald_05.png","sprites/emerald_06.png","sprites/emerald_07.png","sprites/emerald_08.png","sprites/emerald_09.png","sprites/emerald_10.png","sprites/emerald_11.png","sprites/emerald_12.png","sprites/emerald_13.png","sprites/gray_01.png","sprites/gray_02.png","sprites/gray_03.png","sprites/gray_04.png","sprites/gray_05.png","sprites/gray_06.png","sprites/gray_07.png","sprites/gray_08.png","sprites/gray_09.png","sprites/gray_10.png","sprites/gray_11.png","sprites/gray_12.png","sprites/green_01.png","sprites/green_02.png","sprites/green_03.png","sprites/green_04.png","sprites/green_05.png","sprites/green_06.png","sprites/green_07.png","sprites/green_08.png","sprites/green_09.png","sprites/green_10.png","sprites/green_11.png","sprites/green_12.png","sprites/green_13.png","sprites/green_14.png","sprites/green_15.png","sprites/green_16.png","sprites/green_17.png","sprites/green_18.png","sprites/green_19.png","sprites/green_20.png","sprites/green_21.png","sprites/green_22.png","sprites/green_23.png","sprites/green_24.png","sprites/green_25.png","sprites/green_26.png","sprites/green_27.png","sprites/green_28.png","sprites/green_29.png","sprites/green_30.png","sprites/green_31.png","sprites/green_32.png","sprites/green_33.png","sprites/red_01.png","sprites/red_02.png","sprites/red_03.png","sprites/red_04.png","sprites/red_05.png","sprites/red_06.png","sprites/red_07.png","sprites/red_08.png","sprites/red_09.png","sprites/red_10.png","sprites/red_11.png","sprites/red_12.png","sprites/red_13.png","sprites/red_14.png","sprites/red_15.png","sprites/red_16.png","sprites/red_17.png","sprites/red_18.png","sprites/red_19.png","sprites/red_20.png","sprites/red_21.png","sprites/red_22.png","sprites/red_23.png","sprites/red_24.png","sprites/red_25.png","sprites/red_26.png","sprites/red_27.png","sprites/red_28.png","sprites/red_29.png","sprites/red_30.png","sprites/red_31.png","sprites/red_32.png","sprites/red_33.png","sprites/red_34.png","sprites/red_35.png","sprites/red_36.png","sprites/red_37.png","sprites/violet_01.png","sprites/violet_02.png","sprites/violet_03.png","sprites/violet_04.png","sprites/violet_05.png","sprites/violet_06.png","sprites/violet_07.png","sprites/violet_08.png","sprites/violet_09.png","sprites/violet_10.png","sprites/violet_11.png","sprites/violet_12.png","sprites/violet_13.png","sprites/violet_14.png","sprites/violet_15.png","sprites/violet_16.png","sprites/violet_17.png","sprites/violet_18.png","sprites/violet_19.png","sprites/violet_20.png","sprites/violet_21.png","sprites/violet_22.png","sprites/violet_23.png","sprites/violet_24.png","sprites/violet_25.png","sprites/violet_26.png","sprites/violet_27.png","sprites/violet_28.png","sprites/violet_29.png","sprites/yellow_01.png","sprites/yellow_02.png","sprites/yellow_03.png","sprites/yellow_04.png","sprites/yellow_05.png","sprites/yellow_06.png","sprites/yellow_07.png","sprites/yellow_08.png","sprites/yellow_09.png","sprites/yellow_10.png","sprites/yellow_11.png","sprites/yellow_12.png","sprites/yellow_13.png","sprites/yellow_14.png","sprites/yellow_15.png","sprites/yellow_16.png","sprites/yellow_17.png","sprites/yellow_18.png","sprites/yellow_19.png","sprites/yellow_20.png","sprites/yellow_21.png","sprites/yellow_22.png","sprites/yellow_23.png","sprites/yellow_24.png","sprites/yellow_25.png","sprites/yellow_26.png","sprites/yellow_27.png","sprites/yellow_28.png","sprites/yellow_29.png","sprites/yellow_30.png","sprites/yellow_31.png","sprites/yellow_32.png","sprites/yellow_33.png","sprites/yellow_34.png","sprites/yellow_35.png","sprites/yellow_36.png","sprites/yellow_37.png","sprites/yellow_38.png","sprites/yellow_39.png","sprites/yellow_40.png","sprites/yellow_41.png","sprites/yellow_42.png","sprites/yellow_43.png","sprites/yellow_44.png","sprites/yellow_45.png","sprites/yellow_46.png","sprites/yellow_47.png","components/skills/SkillTextures.jsx","components/skills/SkillLinkStraight.jsx","components/skills/SkillLinkArc.jsx","components/skills/UnlockedSkillNodeIndicator.jsx","components/canvas/Particles.jsx","components/ui/Tooltip.jsx","redux/skills.js","components/canvas/Viewport.jsx","components/canvas/Canvas.jsx","sprites/skillBorder.png","components/skills/SkillNode.jsx","sprites/particle.png","sprites/Fire.png","components/skills/SkillTree.jsx","components/sidepanel/Editor.jsx","components/sidepanel/Summary.jsx","components/sidepanel/SidePanel.jsx","components/App.jsx","redux/index.js","reportWebVitals.js","index.js"],"names":["textures","addon_01","Texture","from","addon_02","addon_03","addon_04","addon_05","addon_06","addon_07","addon_08","addon_09","addon_10","addon_11","addon_12","addon_13","addon_14","addon_15","addon_16","addon_17","addon_18","addon_19","addon_20","addon_21","addon_22","addon_23","addon_24","addon_25","addon_26","addon_27","addon_28","addon_29","addon_30","addon_31","addon_32","addon_33","addon_34","addon_35","addon_36","addon_37","addon_38","addon_39","addon_40","blue_01","blue_02","blue_03","blue_04","blue_05","blue_06","blue_07","blue_08","blue_09","blue_10","blue_11","blue_12","blue_13","blue_14","blue_15","blue_16","blue_17","blue_18","blue_19","blue_20","blue_21","blue_22","blue_23","blue_24","blue_25","blue_26","blue_27","blue_28","blue_29","blue_30","blue_31","blue_32","blue_33","blue_34","blue_35","blue_36","blue_37","blue_38","blue_39","blue_40","blue_41","blue_42","emerald_01","emerald_02","emerald_03","emerald_04","emerald_05","emerald_06","emerald_07","emerald_08","emerald_09","emerald_10","emerald_11","emerald_12","emerald_13","gray_01","gray_02","gray_03","gray_04","gray_05","gray_06","gray_07","gray_08","gray_09","gray_10","gray_11","gray_12","green_01","green_02","green_03","green_04","green_05","green_06","green_07","green_08","green_09","green_10","green_11","green_12","green_13","green_14","green_15","green_16","green_17","green_18","green_19","green_20","green_21","green_22","green_23","green_24","green_25","green_26","green_27","green_28","green_29","green_30","green_31","green_32","green_33","red_01","red_02","red_03","red_04","red_05","red_06","red_07","red_08","red_09","red_10","red_11","red_12","red_13","red_14","red_15","red_16","red_17","red_18","red_19","red_20","red_21","red_22","red_23","red_24","red_25","red_26","red_27","red_28","red_29","red_30","red_31","red_32","red_33","red_34","red_35","red_36","red_37","violet_01","violet_02","violet_03","violet_04","violet_05","violet_06","violet_07","violet_08","violet_09","violet_10","violet_11","violet_12","violet_13","violet_14","violet_15","violet_16","violet_17","violet_18","violet_19","violet_20","violet_21","violet_22","violet_23","violet_24","violet_25","violet_26","violet_27","violet_28","violet_29","yellow_01","yellow_02","yellow_03","yellow_04","yellow_05","yellow_06","yellow_07","yellow_08","yellow_09","yellow_10","yellow_11","yellow_12","yellow_13","yellow_14","yellow_15","yellow_16","yellow_17","yellow_18","yellow_19","yellow_20","yellow_21","yellow_22","yellow_23","yellow_24","yellow_25","yellow_26","yellow_27","yellow_28","yellow_29","yellow_30","yellow_31","yellow_32","yellow_33","yellow_34","yellow_35","yellow_36","yellow_37","yellow_38","yellow_39","yellow_40","yellow_41","yellow_42","yellow_43","yellow_44","yellow_45","yellow_46","yellow_47","draw","instance","startX","startY","endX","endY","purchased","available","angle","Math","tan","abs","PI","sign","lineStyle","moveTo","cos","sin","lineTo","behavior","customDisplayObject","g","Graphics","customApplyProps","oldProps","newProps","clear","CustomPIXIComponent","degToRad","centerX","centerY","radius","startAngle","endAngle","lineWidth","lineColor","p0","p1","q1","q2","k2","sqrt","bezierCurveTo","scale","beginFill","drawCircle","update","requestAnimationFrame","now","Date","emitter","elapsed","emit","particleCount","lastParticleCount","app","renderer","render","stage","particles","a","b","Array","length","i","compareArrays","config","removeChild","play","playOnce","set","customDidAttach","withApp","tooltipRoot","document","getElementById","Tooltip","props","el","createElement","appendChild","this","x","y","ReactDOM","className","style","left","top","tooltip","PureComponent","defaultTree","fromJS","defaultSkills","tree","defaultTypes","types","defaultDisconnected","disconnected","defaultSummary","CHANGE_SKILL_POINTS","SET_SKILL_TREE","SET_SKILL_TYPES","SET_SKILL_DISCONNECTED","SET_SKILL_SUMMARY","unlockSkill","path","dispatch","getState","state","getIn","slice","reduce","acc","curr","push","type","setIn","diff","summary","forEach","get","saveEditor","json","JSON","parse","summarizeEffects","reducer","node","archetype","combineReducers","points","action","spentPoints","width","height","viewport","v","Viewport","screenWidth","screenHeight","interaction","plugins","drag","pinch","wheel","clampZoom","minWidth","minHeight","maxWidth","maxHeight","off","input","down","up","on","e","data","originalEvent","Object","assign","button","last","moveCenter","current","center","resize","ViewportContext","React","createContext","ViewportComponent","ViewportWrapper","CanvasReduxContext","Stage","createStageClass","Canvas","renderStage","_app","createRef","setTimeout","children","Consumer","store","overflow","onContextMenu","preventDefault","options","transparent","antialias","autoStart","ref","Provider","value","context","withResizeDetector","SkillBorderTexture","SkillBorder","ParticleTexture","FireTexture","SkillNodeChildren","map","child","j","offsetX","offsetY","Fragment","SkillLinkStraight","ConnectedSkillNode","numChildren","size","actualSegmentAngle","numArcs","ceil","segmentAngle","fill","arcChild","SkillLinkArc","floor","SkillNodeTooltip","init","updateTooltipPosition","override","active","globalPos","container","toGlobal","setState","onPointerOver","onPointerOut","SkillNode","isAvailable","memoize","requirementType","isAffordable","calculateData","rawData","Map","merge","onClick","componentDidMount","tint","Particles","AvailableParticles","texture","anchor","click","interactive","buttonMode","tap","touchstart","stopPropagation","pointerover","pointerout","defaultCursor","UnlockedSkillNodeIndicator","PurchaseParticles","connect","SkillTree","offset","Editor","stringify","updateConfig","target","apply","keys","textureID","alt","src","textureCacheIds","onChange","Component","keySeq","toArray","item","SidePanelToggle","name","open","togglePanel","toLowerCase","background","SidePanel","panel","href","App","skills","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","rootReducer","enhancer","compose","applyMiddleware","thunk","batchedSubscribe","unstable_batchedUpdates","createStore","StrictMode"],"mappings":"kkGAAe,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,MAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,uCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,oCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,qCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,mCCA1B,OAA0B,sCCA1B,OAA0B,sCCA1B,OAA0B,sCCA1B,OAA0B,sCCA1B,OAA0B,sCCA1B,OAA0B,sCCA1B,OAA0B,sCCA1B,O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","file":"static/js/main.1eb94fec.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/addon_01.c0fb4483.png\";","export default __webpack_public_path__ + \"static/media/addon_02.1820823d.png\";","export default __webpack_public_path__ + \"static/media/addon_03.957f9cec.png\";","export default __webpack_public_path__ + \"static/media/addon_04.59c7b27c.png\";","export default __webpack_public_path__ + \"static/media/addon_05.a5fa4d3d.png\";","export default __webpack_public_path__ + \"static/media/addon_06.3e032369.png\";","export default __webpack_public_path__ + \"static/media/addon_07.a5f60c44.png\";","export default __webpack_public_path__ + \"static/media/addon_08.df88bdd1.png\";","export default __webpack_public_path__ + \"static/media/addon_09.549f774b.png\";","export default __webpack_public_path__ + \"static/media/addon_10.5e8c8874.png\";","export default __webpack_public_path__ + \"static/media/addon_11.219de378.png\";","export default __webpack_public_path__ + \"static/media/addon_12.03083e78.png\";","export default __webpack_public_path__ + \"static/media/addon_13.6c02e64c.png\";","export default __webpack_public_path__ + \"static/media/addon_14.9b1504c4.png\";","export default __webpack_public_path__ + \"static/media/addon_15.24b04aa9.png\";","export default __webpack_public_path__ + \"static/media/addon_16.15205adc.png\";","export default __webpack_public_path__ + \"static/media/addon_17.79373ccc.png\";","export default __webpack_public_path__ + \"static/media/addon_18.95e04587.png\";","export default __webpack_public_path__ + \"static/media/addon_19.0b59d26c.png\";","export default __webpack_public_path__ + \"static/media/addon_20.dbe4a50f.png\";","export default __webpack_public_path__ + \"static/media/addon_21.fa4d0c68.png\";","export default __webpack_public_path__ + \"static/media/addon_22.1ce9a9f9.png\";","export default __webpack_public_path__ + \"static/media/addon_23.d4aaf44e.png\";","export default __webpack_public_path__ + \"static/media/addon_24.7c97c4d0.png\";","export default __webpack_public_path__ + \"static/media/addon_25.9b240051.png\";","export default __webpack_public_path__ + \"static/media/addon_26.6bcd0248.png\";","export default __webpack_public_path__ + \"static/media/addon_27.3f0ff707.png\";","export default __webpack_public_path__ + \"static/media/addon_28.79ed1ce5.png\";","export default __webpack_public_path__ + \"static/media/addon_29.260a95d1.png\";","export default __webpack_public_path__ + \"static/media/addon_30.2428312f.png\";","export default __webpack_public_path__ + \"static/media/addon_31.0081f0a8.png\";","export default __webpack_public_path__ + \"static/media/addon_32.a900406d.png\";","export default __webpack_public_path__ + \"static/media/addon_33.55427c57.png\";","export default __webpack_public_path__ + \"static/media/addon_34.d258d29e.png\";","export default __webpack_public_path__ + \"static/media/addon_35.1ab26f09.png\";","export default __webpack_public_path__ + \"static/media/addon_36.64a8f972.png\";","export default __webpack_public_path__ + \"static/media/addon_37.b00f80ab.png\";","export default __webpack_public_path__ + \"static/media/addon_38.bb5721d9.png\";","export default __webpack_public_path__ + \"static/media/addon_39.77f8c546.png\";","export default __webpack_public_path__ + \"static/media/addon_40.8a910314.png\";","export default __webpack_public_path__ + \"static/media/blue_01.f249673b.png\";","export default __webpack_public_path__ + \"static/media/blue_02.feeaa190.png\";","export default __webpack_public_path__ + \"static/media/blue_03.71a425f1.png\";","export default __webpack_public_path__ + \"static/media/blue_04.d0469dbf.png\";","export default __webpack_public_path__ + \"static/media/blue_05.5389d340.png\";","export default __webpack_public_path__ + \"static/media/blue_06.7f9ac9e8.png\";","export default __webpack_public_path__ + \"static/media/blue_07.63287773.png\";","export default __webpack_public_path__ + \"static/media/blue_08.d638e98c.png\";","export default __webpack_public_path__ + \"static/media/blue_09.b9489a4d.png\";","export default __webpack_public_path__ + \"static/media/blue_10.4a204cff.png\";","export default __webpack_public_path__ + \"static/media/blue_11.4bd671bf.png\";","export default __webpack_public_path__ + \"static/media/blue_12.4d37ca4b.png\";","export default __webpack_public_path__ + \"static/media/blue_13.d2e7ad62.png\";","export default __webpack_public_path__ + \"static/media/blue_14.58373a83.png\";","export default __webpack_public_path__ + \"static/media/blue_15.0ced42d9.png\";","export default __webpack_public_path__ + \"static/media/blue_16.0aef057a.png\";","export default __webpack_public_path__ + \"static/media/blue_17.536a3b0e.png\";","export default __webpack_public_path__ + \"static/media/blue_18.021af490.png\";","export default __webpack_public_path__ + \"static/media/blue_19.16140c7f.png\";","export default __webpack_public_path__ + \"static/media/blue_20.36e2dd3b.png\";","export default __webpack_public_path__ + \"static/media/blue_21.2732f20e.png\";","export default __webpack_public_path__ + \"static/media/blue_22.296a31d2.png\";","export default __webpack_public_path__ + \"static/media/blue_23.0a4afb91.png\";","export default __webpack_public_path__ + \"static/media/blue_24.fa45421a.png\";","export default __webpack_public_path__ + \"static/media/blue_25.2732a560.png\";","export default __webpack_public_path__ + \"static/media/blue_26.2a348698.png\";","export default __webpack_public_path__ + \"static/media/blue_27.40085641.png\";","export default __webpack_public_path__ + \"static/media/blue_28.7740ccfe.png\";","export default __webpack_public_path__ + \"static/media/blue_29.88240e02.png\";","export default __webpack_public_path__ + \"static/media/blue_30.84ca6b4c.png\";","export default __webpack_public_path__ + \"static/media/blue_31.3e389d47.png\";","export default __webpack_public_path__ + \"static/media/blue_32.3707de47.png\";","export default __webpack_public_path__ + \"static/media/blue_33.78252c5e.png\";","export default __webpack_public_path__ + \"static/media/blue_34.ce6ff7fb.png\";","export default __webpack_public_path__ + \"static/media/blue_35.e391e6b6.png\";","export default __webpack_public_path__ + \"static/media/blue_36.068c4005.png\";","export default __webpack_public_path__ + \"static/media/blue_37.b397a661.png\";","export default __webpack_public_path__ + \"static/media/blue_38.94557b05.png\";","export default __webpack_public_path__ + \"static/media/blue_39.15b22ce1.png\";","export default __webpack_public_path__ + \"static/media/blue_40.5e4c7ed5.png\";","export default __webpack_public_path__ + \"static/media/blue_41.b2568b39.png\";","export default __webpack_public_path__ + \"static/media/blue_42.9352aea9.png\";","export default __webpack_public_path__ + \"static/media/emerald_01.327fbff4.png\";","export default __webpack_public_path__ + \"static/media/emerald_02.0c9afb4d.png\";","export default __webpack_public_path__ + \"static/media/emerald_03.e4e90739.png\";","export default __webpack_public_path__ + \"static/media/emerald_04.4ed4be50.png\";","export default __webpack_public_path__ + \"static/media/emerald_05.dc6c5451.png\";","export default __webpack_public_path__ + \"static/media/emerald_06.73847e5d.png\";","export default __webpack_public_path__ + \"static/media/emerald_07.7da7d8ef.png\";","export default __webpack_public_path__ + \"static/media/emerald_08.0c96e2aa.png\";","export default __webpack_public_path__ + \"static/media/emerald_09.c6d31cb2.png\";","export default __webpack_public_path__ + \"static/media/emerald_10.1bbadb04.png\";","export default __webpack_public_path__ + \"static/media/emerald_11.950d1f9c.png\";","export default __webpack_public_path__ + \"static/media/emerald_12.55d372a1.png\";","export default __webpack_public_path__ + \"static/media/emerald_13.a24a319c.png\";","export default __webpack_public_path__ + \"static/media/gray_01.091b532a.png\";","export default __webpack_public_path__ + \"static/media/gray_02.1b6a7131.png\";","export default __webpack_public_path__ + \"static/media/gray_03.4be0bb4f.png\";","export default __webpack_public_path__ + \"static/media/gray_04.058058b9.png\";","export default __webpack_public_path__ + \"static/media/gray_05.1e58fa31.png\";","export default __webpack_public_path__ + \"static/media/gray_06.c14f7e68.png\";","export default __webpack_public_path__ + \"static/media/gray_07.f37528de.png\";","export default __webpack_public_path__ + \"static/media/gray_08.bdeb3898.png\";","export default __webpack_public_path__ + \"static/media/gray_09.70af4e05.png\";","export default __webpack_public_path__ + \"static/media/gray_10.6f13ff42.png\";","export default __webpack_public_path__ + \"static/media/gray_11.3641f5e2.png\";","export default __webpack_public_path__ + \"static/media/gray_12.813ff61b.png\";","export default __webpack_public_path__ + \"static/media/green_01.5f60edde.png\";","export default __webpack_public_path__ + \"static/media/green_02.5894ec05.png\";","export default __webpack_public_path__ + \"static/media/green_03.f5c861ec.png\";","export default __webpack_public_path__ + \"static/media/green_04.18f915f0.png\";","export default __webpack_public_path__ + \"static/media/green_05.5a4b9323.png\";","export default __webpack_public_path__ + \"static/media/green_06.ea3d65f1.png\";","export default __webpack_public_path__ + \"static/media/green_07.af910d0e.png\";","export default __webpack_public_path__ + \"static/media/green_08.5c7092e5.png\";","export default __webpack_public_path__ + \"static/media/green_09.098d33fc.png\";","export default __webpack_public_path__ + \"static/media/green_10.5990df85.png\";","export default __webpack_public_path__ + \"static/media/green_11.a1fc6779.png\";","export default __webpack_public_path__ + \"static/media/green_12.fcc6bbe3.png\";","export default __webpack_public_path__ + \"static/media/green_13.e9437560.png\";","export default __webpack_public_path__ + \"static/media/green_14.b7a76185.png\";","export default __webpack_public_path__ + \"static/media/green_15.d157d698.png\";","export default __webpack_public_path__ + \"static/media/green_16.ba637e3d.png\";","export default __webpack_public_path__ + \"static/media/green_17.91c2378d.png\";","export default __webpack_public_path__ + \"static/media/green_18.27033642.png\";","export default __webpack_public_path__ + \"static/media/green_19.b8bf5a31.png\";","export default __webpack_public_path__ + \"static/media/green_20.26e0c4cb.png\";","export default __webpack_public_path__ + \"static/media/green_21.67d6da45.png\";","export default __webpack_public_path__ + \"static/media/green_22.b2dc8c57.png\";","export default __webpack_public_path__ + \"static/media/green_23.9300db09.png\";","export default __webpack_public_path__ + \"static/media/green_24.9cec35c1.png\";","export default __webpack_public_path__ + \"static/media/green_25.173b2a2a.png\";","export default __webpack_public_path__ + \"static/media/green_26.647f6a5d.png\";","export default __webpack_public_path__ + \"static/media/green_27.f4a332a9.png\";","export default __webpack_public_path__ + \"static/media/green_28.1903b8fc.png\";","export default __webpack_public_path__ + \"static/media/green_29.75dfb869.png\";","export default __webpack_public_path__ + \"static/media/green_30.eb5eb24d.png\";","export default __webpack_public_path__ + \"static/media/green_31.b394f682.png\";","export default __webpack_public_path__ + \"static/media/green_32.8690e84b.png\";","export default __webpack_public_path__ + \"static/media/green_33.9359ac46.png\";","export default __webpack_public_path__ + \"static/media/red_01.25ebdff4.png\";","export default __webpack_public_path__ + \"static/media/red_02.f2164a8b.png\";","export default __webpack_public_path__ + \"static/media/red_03.9c2425b1.png\";","export default __webpack_public_path__ + \"static/media/red_04.544fef54.png\";","export default __webpack_public_path__ + \"static/media/red_05.ae881830.png\";","export default __webpack_public_path__ + \"static/media/red_06.f1ecc539.png\";","export default __webpack_public_path__ + \"static/media/red_07.3880e6ac.png\";","export default __webpack_public_path__ + \"static/media/red_08.6a999964.png\";","export default __webpack_public_path__ + \"static/media/red_09.4a4b91d3.png\";","export default __webpack_public_path__ + \"static/media/red_10.7589b5cd.png\";","export default __webpack_public_path__ + \"static/media/red_11.97ce76dd.png\";","export default __webpack_public_path__ + \"static/media/red_12.3c0fdb6f.png\";","export default __webpack_public_path__ + \"static/media/red_13.a44808fd.png\";","export default __webpack_public_path__ + \"static/media/red_14.b5107b5d.png\";","export default __webpack_public_path__ + \"static/media/red_15.fcd091f8.png\";","export default __webpack_public_path__ + \"static/media/red_16.c47a89cd.png\";","export default __webpack_public_path__ + \"static/media/red_17.30fc6fc7.png\";","export default __webpack_public_path__ + \"static/media/red_18.5bf380ff.png\";","export default __webpack_public_path__ + \"static/media/red_19.be80608c.png\";","export default __webpack_public_path__ + \"static/media/red_20.90abbaa2.png\";","export default __webpack_public_path__ + \"static/media/red_21.c74257cd.png\";","export default __webpack_public_path__ + \"static/media/red_22.74cdd3f9.png\";","export default __webpack_public_path__ + \"static/media/red_23.2d2cb928.png\";","export default __webpack_public_path__ + \"static/media/red_24.8e35e9c3.png\";","export default __webpack_public_path__ + \"static/media/red_25.854590ee.png\";","export default __webpack_public_path__ + \"static/media/red_26.fa8db215.png\";","export default __webpack_public_path__ + \"static/media/red_27.30e7f9ef.png\";","export default __webpack_public_path__ + \"static/media/red_28.9b56d25a.png\";","export default __webpack_public_path__ + \"static/media/red_29.4384f010.png\";","export default __webpack_public_path__ + \"static/media/red_30.ed419aa6.png\";","export default __webpack_public_path__ + \"static/media/red_31.02763f37.png\";","export default __webpack_public_path__ + \"static/media/red_32.08b393ad.png\";","export default __webpack_public_path__ + \"static/media/red_33.a2ad693f.png\";","export default __webpack_public_path__ + \"static/media/red_34.7c56fcba.png\";","export default __webpack_public_path__ + \"static/media/red_35.6b1e5001.png\";","export default __webpack_public_path__ + \"static/media/red_36.d86cc29d.png\";","export default __webpack_public_path__ + \"static/media/red_37.ac42dd59.png\";","export default __webpack_public_path__ + \"static/media/violet_01.9ae00b5d.png\";","export default __webpack_public_path__ + \"static/media/violet_02.f5313a21.png\";","export default __webpack_public_path__ + \"static/media/violet_03.308da286.png\";","export default __webpack_public_path__ + \"static/media/violet_04.070a8d91.png\";","export default __webpack_public_path__ + \"static/media/violet_05.89afdbd6.png\";","export default __webpack_public_path__ + \"static/media/violet_06.1bfca3da.png\";","export default __webpack_public_path__ + \"static/media/violet_07.99f7c00e.png\";","export default __webpack_public_path__ + \"static/media/violet_08.d4c7b46e.png\";","export default __webpack_public_path__ + \"static/media/violet_09.303cb3ce.png\";","export default __webpack_public_path__ + \"static/media/violet_10.b002e470.png\";","export default __webpack_public_path__ + \"static/media/violet_11.5094730d.png\";","export default __webpack_public_path__ + \"static/media/violet_12.6ead0d7c.png\";","export default __webpack_public_path__ + \"static/media/violet_13.dc895a3c.png\";","export default __webpack_public_path__ + \"static/media/violet_14.a4cd5200.png\";","export default __webpack_public_path__ + \"static/media/violet_15.6d264bd2.png\";","export default __webpack_public_path__ + \"static/media/violet_16.86179f9b.png\";","export default __webpack_public_path__ + \"static/media/violet_17.2cc51915.png\";","export default __webpack_public_path__ + \"static/media/violet_18.0689d355.png\";","export default __webpack_public_path__ + \"static/media/violet_19.ece511f3.png\";","export default __webpack_public_path__ + \"static/media/violet_20.0fd1896a.png\";","export default __webpack_public_path__ + \"static/media/violet_21.3de7d1d8.png\";","export default __webpack_public_path__ + \"static/media/violet_22.feb64214.png\";","export default __webpack_public_path__ + \"static/media/violet_23.dfcac389.png\";","export default __webpack_public_path__ + \"static/media/violet_24.b98dd1aa.png\";","export default __webpack_public_path__ + \"static/media/violet_25.e078fc45.png\";","export default __webpack_public_path__ + \"static/media/violet_26.646a8021.png\";","export default __webpack_public_path__ + \"static/media/violet_27.a2bee080.png\";","export default __webpack_public_path__ + \"static/media/violet_28.ee9c9db3.png\";","export default __webpack_public_path__ + \"static/media/violet_29.b8303692.png\";","export default __webpack_public_path__ + \"static/media/yellow_01.ee28dc27.png\";","export default __webpack_public_path__ + \"static/media/yellow_02.58f7cfa4.png\";","export default __webpack_public_path__ + \"static/media/yellow_03.8577308e.png\";","export default __webpack_public_path__ + \"static/media/yellow_04.cbd7b379.png\";","export default __webpack_public_path__ + \"static/media/yellow_05.9442193b.png\";","export default __webpack_public_path__ + \"static/media/yellow_06.87b39368.png\";","export default __webpack_public_path__ + \"static/media/yellow_07.ec8f1751.png\";","export default __webpack_public_path__ + \"static/media/yellow_08.9c6b3885.png\";","export default __webpack_public_path__ + \"static/media/yellow_09.7fffc61d.png\";","export default __webpack_public_path__ + \"static/media/yellow_10.b0544b31.png\";","export default __webpack_public_path__ + \"static/media/yellow_11.545d015e.png\";","export default __webpack_public_path__ + \"static/media/yellow_12.e9257578.png\";","export default __webpack_public_path__ + \"static/media/yellow_13.255a608a.png\";","export default __webpack_public_path__ + \"static/media/yellow_14.c893b448.png\";","export default __webpack_public_path__ + \"static/media/yellow_15.dac8e54e.png\";","export default __webpack_public_path__ + \"static/media/yellow_16.b7a5766e.png\";","export default __webpack_public_path__ + \"static/media/yellow_17.4a4082a2.png\";","export default __webpack_public_path__ + \"static/media/yellow_18.2ab8f357.png\";","export default __webpack_public_path__ + \"static/media/yellow_19.9d4c2764.png\";","export default __webpack_public_path__ + \"static/media/yellow_20.df55a929.png\";","export default __webpack_public_path__ + \"static/media/yellow_21.436e068c.png\";","export default __webpack_public_path__ + \"static/media/yellow_22.9d7c6b0a.png\";","export default __webpack_public_path__ + \"static/media/yellow_23.9356bb71.png\";","export default __webpack_public_path__ + \"static/media/yellow_24.6b3d0de7.png\";","export default __webpack_public_path__ + \"static/media/yellow_25.c80682a1.png\";","export default __webpack_public_path__ + \"static/media/yellow_26.9515fed8.png\";","export default __webpack_public_path__ + \"static/media/yellow_27.39f40077.png\";","export default __webpack_public_path__ + \"static/media/yellow_28.62c928e0.png\";","export default __webpack_public_path__ + \"static/media/yellow_29.814e1ae9.png\";","export default __webpack_public_path__ + \"static/media/yellow_30.da6807ab.png\";","export default __webpack_public_path__ + \"static/media/yellow_31.6711c35a.png\";","export default __webpack_public_path__ + \"static/media/yellow_32.69e6297b.png\";","export default __webpack_public_path__ + \"static/media/yellow_33.09617a47.png\";","export default __webpack_public_path__ + \"static/media/yellow_34.3d4a6cf3.png\";","export default __webpack_public_path__ + \"static/media/yellow_35.fb698be9.png\";","export default __webpack_public_path__ + \"static/media/yellow_36.5f0064ba.png\";","export default __webpack_public_path__ + \"static/media/yellow_37.97ab7233.png\";","export default __webpack_public_path__ + \"static/media/yellow_38.db9671f2.png\";","export default __webpack_public_path__ + \"static/media/yellow_39.4e3eccdb.png\";","export default __webpack_public_path__ + \"static/media/yellow_40.fd420ba5.png\";","export default __webpack_public_path__ + \"static/media/yellow_41.16f96e17.png\";","export default __webpack_public_path__ + \"static/media/yellow_42.28f9d562.png\";","export default __webpack_public_path__ + \"static/media/yellow_43.70a3f7f9.png\";","export default __webpack_public_path__ + \"static/media/yellow_44.dd555793.png\";","export default __webpack_public_path__ + \"static/media/yellow_45.dabe7deb.png\";","export default __webpack_public_path__ + \"static/media/yellow_46.c7df1bd4.png\";","export default __webpack_public_path__ + \"static/media/yellow_47.4dfe7e69.png\";","import { Texture } from 'pixi.js'\r\n\r\nimport addon_01 from '../../sprites/addon_01.png'\r\nimport addon_02 from '../../sprites/addon_02.png'\r\nimport addon_03 from '../../sprites/addon_03.png'\r\nimport addon_04 from '../../sprites/addon_04.png'\r\nimport addon_05 from '../../sprites/addon_05.png'\r\nimport addon_06 from '../../sprites/addon_06.png'\r\nimport addon_07 from '../../sprites/addon_07.png'\r\nimport addon_08 from '../../sprites/addon_08.png'\r\nimport addon_09 from '../../sprites/addon_09.png'\r\nimport addon_10 from '../../sprites/addon_10.png'\r\nimport addon_11 from '../../sprites/addon_11.png'\r\nimport addon_12 from '../../sprites/addon_12.png'\r\nimport addon_13 from '../../sprites/addon_13.png'\r\nimport addon_14 from '../../sprites/addon_14.png'\r\nimport addon_15 from '../../sprites/addon_15.png'\r\nimport addon_16 from '../../sprites/addon_16.png'\r\nimport addon_17 from '../../sprites/addon_17.png'\r\nimport addon_18 from '../../sprites/addon_18.png'\r\nimport addon_19 from '../../sprites/addon_19.png'\r\nimport addon_20 from '../../sprites/addon_20.png'\r\nimport addon_21 from '../../sprites/addon_21.png'\r\nimport addon_22 from '../../sprites/addon_22.png'\r\nimport addon_23 from '../../sprites/addon_23.png'\r\nimport addon_24 from '../../sprites/addon_24.png'\r\nimport addon_25 from '../../sprites/addon_25.png'\r\nimport addon_26 from '../../sprites/addon_26.png'\r\nimport addon_27 from '../../sprites/addon_27.png'\r\nimport addon_28 from '../../sprites/addon_28.png'\r\nimport addon_29 from '../../sprites/addon_29.png'\r\nimport addon_30 from '../../sprites/addon_30.png'\r\nimport addon_31 from '../../sprites/addon_31.png'\r\nimport addon_32 from '../../sprites/addon_32.png'\r\nimport addon_33 from '../../sprites/addon_33.png'\r\nimport addon_34 from '../../sprites/addon_34.png'\r\nimport addon_35 from '../../sprites/addon_35.png'\r\nimport addon_36 from '../../sprites/addon_36.png'\r\nimport addon_37 from '../../sprites/addon_37.png'\r\nimport addon_38 from '../../sprites/addon_38.png'\r\nimport addon_39 from '../../sprites/addon_39.png'\r\nimport addon_40 from '../../sprites/addon_40.png'\r\nimport blue_01 from '../../sprites/blue_01.png'\r\nimport blue_02 from '../../sprites/blue_02.png'\r\nimport blue_03 from '../../sprites/blue_03.png'\r\nimport blue_04 from '../../sprites/blue_04.png'\r\nimport blue_05 from '../../sprites/blue_05.png'\r\nimport blue_06 from '../../sprites/blue_06.png'\r\nimport blue_07 from '../../sprites/blue_07.png'\r\nimport blue_08 from '../../sprites/blue_08.png'\r\nimport blue_09 from '../../sprites/blue_09.png'\r\nimport blue_10 from '../../sprites/blue_10.png'\r\nimport blue_11 from '../../sprites/blue_11.png'\r\nimport blue_12 from '../../sprites/blue_12.png'\r\nimport blue_13 from '../../sprites/blue_13.png'\r\nimport blue_14 from '../../sprites/blue_14.png'\r\nimport blue_15 from '../../sprites/blue_15.png'\r\nimport blue_16 from '../../sprites/blue_16.png'\r\nimport blue_17 from '../../sprites/blue_17.png'\r\nimport blue_18 from '../../sprites/blue_18.png'\r\nimport blue_19 from '../../sprites/blue_19.png'\r\nimport blue_20 from '../../sprites/blue_20.png'\r\nimport blue_21 from '../../sprites/blue_21.png'\r\nimport blue_22 from '../../sprites/blue_22.png'\r\nimport blue_23 from '../../sprites/blue_23.png'\r\nimport blue_24 from '../../sprites/blue_24.png'\r\nimport blue_25 from '../../sprites/blue_25.png'\r\nimport blue_26 from '../../sprites/blue_26.png'\r\nimport blue_27 from '../../sprites/blue_27.png'\r\nimport blue_28 from '../../sprites/blue_28.png'\r\nimport blue_29 from '../../sprites/blue_29.png'\r\nimport blue_30 from '../../sprites/blue_30.png'\r\nimport blue_31 from '../../sprites/blue_31.png'\r\nimport blue_32 from '../../sprites/blue_32.png'\r\nimport blue_33 from '../../sprites/blue_33.png'\r\nimport blue_34 from '../../sprites/blue_34.png'\r\nimport blue_35 from '../../sprites/blue_35.png'\r\nimport blue_36 from '../../sprites/blue_36.png'\r\nimport blue_37 from '../../sprites/blue_37.png'\r\nimport blue_38 from '../../sprites/blue_38.png'\r\nimport blue_39 from '../../sprites/blue_39.png'\r\nimport blue_40 from '../../sprites/blue_40.png'\r\nimport blue_41 from '../../sprites/blue_41.png'\r\nimport blue_42 from '../../sprites/blue_42.png'\r\nimport emerald_01 from '../../sprites/emerald_01.png'\r\nimport emerald_02 from '../../sprites/emerald_02.png'\r\nimport emerald_03 from '../../sprites/emerald_03.png'\r\nimport emerald_04 from '../../sprites/emerald_04.png'\r\nimport emerald_05 from '../../sprites/emerald_05.png'\r\nimport emerald_06 from '../../sprites/emerald_06.png'\r\nimport emerald_07 from '../../sprites/emerald_07.png'\r\nimport emerald_08 from '../../sprites/emerald_08.png'\r\nimport emerald_09 from '../../sprites/emerald_09.png'\r\nimport emerald_10 from '../../sprites/emerald_10.png'\r\nimport emerald_11 from '../../sprites/emerald_11.png'\r\nimport emerald_12 from '../../sprites/emerald_12.png'\r\nimport emerald_13 from '../../sprites/emerald_13.png'\r\nimport gray_01 from '../../sprites/gray_01.png'\r\nimport gray_02 from '../../sprites/gray_02.png'\r\nimport gray_03 from '../../sprites/gray_03.png'\r\nimport gray_04 from '../../sprites/gray_04.png'\r\nimport gray_05 from '../../sprites/gray_05.png'\r\nimport gray_06 from '../../sprites/gray_06.png'\r\nimport gray_07 from '../../sprites/gray_07.png'\r\nimport gray_08 from '../../sprites/gray_08.png'\r\nimport gray_09 from '../../sprites/gray_09.png'\r\nimport gray_10 from '../../sprites/gray_10.png'\r\nimport gray_11 from '../../sprites/gray_11.png'\r\nimport gray_12 from '../../sprites/gray_12.png'\r\nimport green_01 from '../../sprites/green_01.png'\r\nimport green_02 from '../../sprites/green_02.png'\r\nimport green_03 from '../../sprites/green_03.png'\r\nimport green_04 from '../../sprites/green_04.png'\r\nimport green_05 from '../../sprites/green_05.png'\r\nimport green_06 from '../../sprites/green_06.png'\r\nimport green_07 from '../../sprites/green_07.png'\r\nimport green_08 from '../../sprites/green_08.png'\r\nimport green_09 from '../../sprites/green_09.png'\r\nimport green_10 from '../../sprites/green_10.png'\r\nimport green_11 from '../../sprites/green_11.png'\r\nimport green_12 from '../../sprites/green_12.png'\r\nimport green_13 from '../../sprites/green_13.png'\r\nimport green_14 from '../../sprites/green_14.png'\r\nimport green_15 from '../../sprites/green_15.png'\r\nimport green_16 from '../../sprites/green_16.png'\r\nimport green_17 from '../../sprites/green_17.png'\r\nimport green_18 from '../../sprites/green_18.png'\r\nimport green_19 from '../../sprites/green_19.png'\r\nimport green_20 from '../../sprites/green_20.png'\r\nimport green_21 from '../../sprites/green_21.png'\r\nimport green_22 from '../../sprites/green_22.png'\r\nimport green_23 from '../../sprites/green_23.png'\r\nimport green_24 from '../../sprites/green_24.png'\r\nimport green_25 from '../../sprites/green_25.png'\r\nimport green_26 from '../../sprites/green_26.png'\r\nimport green_27 from '../../sprites/green_27.png'\r\nimport green_28 from '../../sprites/green_28.png'\r\nimport green_29 from '../../sprites/green_29.png'\r\nimport green_30 from '../../sprites/green_30.png'\r\nimport green_31 from '../../sprites/green_31.png'\r\nimport green_32 from '../../sprites/green_32.png'\r\nimport green_33 from '../../sprites/green_33.png'\r\nimport red_01 from '../../sprites/red_01.png'\r\nimport red_02 from '../../sprites/red_02.png'\r\nimport red_03 from '../../sprites/red_03.png'\r\nimport red_04 from '../../sprites/red_04.png'\r\nimport red_05 from '../../sprites/red_05.png'\r\nimport red_06 from '../../sprites/red_06.png'\r\nimport red_07 from '../../sprites/red_07.png'\r\nimport red_08 from '../../sprites/red_08.png'\r\nimport red_09 from '../../sprites/red_09.png'\r\nimport red_10 from '../../sprites/red_10.png'\r\nimport red_11 from '../../sprites/red_11.png'\r\nimport red_12 from '../../sprites/red_12.png'\r\nimport red_13 from '../../sprites/red_13.png'\r\nimport red_14 from '../../sprites/red_14.png'\r\nimport red_15 from '../../sprites/red_15.png'\r\nimport red_16 from '../../sprites/red_16.png'\r\nimport red_17 from '../../sprites/red_17.png'\r\nimport red_18 from '../../sprites/red_18.png'\r\nimport red_19 from '../../sprites/red_19.png'\r\nimport red_20 from '../../sprites/red_20.png'\r\nimport red_21 from '../../sprites/red_21.png'\r\nimport red_22 from '../../sprites/red_22.png'\r\nimport red_23 from '../../sprites/red_23.png'\r\nimport red_24 from '../../sprites/red_24.png'\r\nimport red_25 from '../../sprites/red_25.png'\r\nimport red_26 from '../../sprites/red_26.png'\r\nimport red_27 from '../../sprites/red_27.png'\r\nimport red_28 from '../../sprites/red_28.png'\r\nimport red_29 from '../../sprites/red_29.png'\r\nimport red_30 from '../../sprites/red_30.png'\r\nimport red_31 from '../../sprites/red_31.png'\r\nimport red_32 from '../../sprites/red_32.png'\r\nimport red_33 from '../../sprites/red_33.png'\r\nimport red_34 from '../../sprites/red_34.png'\r\nimport red_35 from '../../sprites/red_35.png'\r\nimport red_36 from '../../sprites/red_36.png'\r\nimport red_37 from '../../sprites/red_37.png'\r\nimport violet_01 from '../../sprites/violet_01.png'\r\nimport violet_02 from '../../sprites/violet_02.png'\r\nimport violet_03 from '../../sprites/violet_03.png'\r\nimport violet_04 from '../../sprites/violet_04.png'\r\nimport violet_05 from '../../sprites/violet_05.png'\r\nimport violet_06 from '../../sprites/violet_06.png'\r\nimport violet_07 from '../../sprites/violet_07.png'\r\nimport violet_08 from '../../sprites/violet_08.png'\r\nimport violet_09 from '../../sprites/violet_09.png'\r\nimport violet_10 from '../../sprites/violet_10.png'\r\nimport violet_11 from '../../sprites/violet_11.png'\r\nimport violet_12 from '../../sprites/violet_12.png'\r\nimport violet_13 from '../../sprites/violet_13.png'\r\nimport violet_14 from '../../sprites/violet_14.png'\r\nimport violet_15 from '../../sprites/violet_15.png'\r\nimport violet_16 from '../../sprites/violet_16.png'\r\nimport violet_17 from '../../sprites/violet_17.png'\r\nimport violet_18 from '../../sprites/violet_18.png'\r\nimport violet_19 from '../../sprites/violet_19.png'\r\nimport violet_20 from '../../sprites/violet_20.png'\r\nimport violet_21 from '../../sprites/violet_21.png'\r\nimport violet_22 from '../../sprites/violet_22.png'\r\nimport violet_23 from '../../sprites/violet_23.png'\r\nimport violet_24 from '../../sprites/violet_24.png'\r\nimport violet_25 from '../../sprites/violet_25.png'\r\nimport violet_26 from '../../sprites/violet_26.png'\r\nimport violet_27 from '../../sprites/violet_27.png'\r\nimport violet_28 from '../../sprites/violet_28.png'\r\nimport violet_29 from '../../sprites/violet_29.png'\r\nimport yellow_01 from '../../sprites/yellow_01.png'\r\nimport yellow_02 from '../../sprites/yellow_02.png'\r\nimport yellow_03 from '../../sprites/yellow_03.png'\r\nimport yellow_04 from '../../sprites/yellow_04.png'\r\nimport yellow_05 from '../../sprites/yellow_05.png'\r\nimport yellow_06 from '../../sprites/yellow_06.png'\r\nimport yellow_07 from '../../sprites/yellow_07.png'\r\nimport yellow_08 from '../../sprites/yellow_08.png'\r\nimport yellow_09 from '../../sprites/yellow_09.png'\r\nimport yellow_10 from '../../sprites/yellow_10.png'\r\nimport yellow_11 from '../../sprites/yellow_11.png'\r\nimport yellow_12 from '../../sprites/yellow_12.png'\r\nimport yellow_13 from '../../sprites/yellow_13.png'\r\nimport yellow_14 from '../../sprites/yellow_14.png'\r\nimport yellow_15 from '../../sprites/yellow_15.png'\r\nimport yellow_16 from '../../sprites/yellow_16.png'\r\nimport yellow_17 from '../../sprites/yellow_17.png'\r\nimport yellow_18 from '../../sprites/yellow_18.png'\r\nimport yellow_19 from '../../sprites/yellow_19.png'\r\nimport yellow_20 from '../../sprites/yellow_20.png'\r\nimport yellow_21 from '../../sprites/yellow_21.png'\r\nimport yellow_22 from '../../sprites/yellow_22.png'\r\nimport yellow_23 from '../../sprites/yellow_23.png'\r\nimport yellow_24 from '../../sprites/yellow_24.png'\r\nimport yellow_25 from '../../sprites/yellow_25.png'\r\nimport yellow_26 from '../../sprites/yellow_26.png'\r\nimport yellow_27 from '../../sprites/yellow_27.png'\r\nimport yellow_28 from '../../sprites/yellow_28.png'\r\nimport yellow_29 from '../../sprites/yellow_29.png'\r\nimport yellow_30 from '../../sprites/yellow_30.png'\r\nimport yellow_31 from '../../sprites/yellow_31.png'\r\nimport yellow_32 from '../../sprites/yellow_32.png'\r\nimport yellow_33 from '../../sprites/yellow_33.png'\r\nimport yellow_34 from '../../sprites/yellow_34.png'\r\nimport yellow_35 from '../../sprites/yellow_35.png'\r\nimport yellow_36 from '../../sprites/yellow_36.png'\r\nimport yellow_37 from '../../sprites/yellow_37.png'\r\nimport yellow_38 from '../../sprites/yellow_38.png'\r\nimport yellow_39 from '../../sprites/yellow_39.png'\r\nimport yellow_40 from '../../sprites/yellow_40.png'\r\nimport yellow_41 from '../../sprites/yellow_41.png'\r\nimport yellow_42 from '../../sprites/yellow_42.png'\r\nimport yellow_43 from '../../sprites/yellow_43.png'\r\nimport yellow_44 from '../../sprites/yellow_44.png'\r\nimport yellow_45 from '../../sprites/yellow_45.png'\r\nimport yellow_46 from '../../sprites/yellow_46.png'\r\nimport yellow_47 from '../../sprites/yellow_47.png'\r\n\r\nconst textures = {\r\n\taddon_01: Texture.from(addon_01),\r\n\taddon_02: Texture.from(addon_02),\r\n\taddon_03: Texture.from(addon_03),\r\n\taddon_04: Texture.from(addon_04),\r\n\taddon_05: Texture.from(addon_05),\r\n\taddon_06: Texture.from(addon_06),\r\n\taddon_07: Texture.from(addon_07),\r\n\taddon_08: Texture.from(addon_08),\r\n\taddon_09: Texture.from(addon_09),\r\n\taddon_10: Texture.from(addon_10),\r\n\taddon_11: Texture.from(addon_11),\r\n\taddon_12: Texture.from(addon_12),\r\n\taddon_13: Texture.from(addon_13),\r\n\taddon_14: Texture.from(addon_14),\r\n\taddon_15: Texture.from(addon_15),\r\n\taddon_16: Texture.from(addon_16),\r\n\taddon_17: Texture.from(addon_17),\r\n\taddon_18: Texture.from(addon_18),\r\n\taddon_19: Texture.from(addon_19),\r\n\taddon_20: Texture.from(addon_20),\r\n\taddon_21: Texture.from(addon_21),\r\n\taddon_22: Texture.from(addon_22),\r\n\taddon_23: Texture.from(addon_23),\r\n\taddon_24: Texture.from(addon_24),\r\n\taddon_25: Texture.from(addon_25),\r\n\taddon_26: Texture.from(addon_26),\r\n\taddon_27: Texture.from(addon_27),\r\n\taddon_28: Texture.from(addon_28),\r\n\taddon_29: Texture.from(addon_29),\r\n\taddon_30: Texture.from(addon_30),\r\n\taddon_31: Texture.from(addon_31),\r\n\taddon_32: Texture.from(addon_32),\r\n\taddon_33: Texture.from(addon_33),\r\n\taddon_34: Texture.from(addon_34),\r\n\taddon_35: Texture.from(addon_35),\r\n\taddon_36: Texture.from(addon_36),\r\n\taddon_37: Texture.from(addon_37),\r\n\taddon_38: Texture.from(addon_38),\r\n\taddon_39: Texture.from(addon_39),\r\n\taddon_40: Texture.from(addon_40),\r\n\tblue_01: Texture.from(blue_01),\r\n\tblue_02: Texture.from(blue_02),\r\n\tblue_03: Texture.from(blue_03),\r\n\tblue_04: Texture.from(blue_04),\r\n\tblue_05: Texture.from(blue_05),\r\n\tblue_06: Texture.from(blue_06),\r\n\tblue_07: Texture.from(blue_07),\r\n\tblue_08: Texture.from(blue_08),\r\n\tblue_09: Texture.from(blue_09),\r\n\tblue_10: Texture.from(blue_10),\r\n\tblue_11: Texture.from(blue_11),\r\n\tblue_12: Texture.from(blue_12),\r\n\tblue_13: Texture.from(blue_13),\r\n\tblue_14: Texture.from(blue_14),\r\n\tblue_15: Texture.from(blue_15),\r\n\tblue_16: Texture.from(blue_16),\r\n\tblue_17: Texture.from(blue_17),\r\n\tblue_18: Texture.from(blue_18),\r\n\tblue_19: Texture.from(blue_19),\r\n\tblue_20: Texture.from(blue_20),\r\n\tblue_21: Texture.from(blue_21),\r\n\tblue_22: Texture.from(blue_22),\r\n\tblue_23: Texture.from(blue_23),\r\n\tblue_24: Texture.from(blue_24),\r\n\tblue_25: Texture.from(blue_25),\r\n\tblue_26: Texture.from(blue_26),\r\n\tblue_27: Texture.from(blue_27),\r\n\tblue_28: Texture.from(blue_28),\r\n\tblue_29: Texture.from(blue_29),\r\n\tblue_30: Texture.from(blue_30),\r\n\tblue_31: Texture.from(blue_31),\r\n\tblue_32: Texture.from(blue_32),\r\n\tblue_33: Texture.from(blue_33),\r\n\tblue_34: Texture.from(blue_34),\r\n\tblue_35: Texture.from(blue_35),\r\n\tblue_36: Texture.from(blue_36),\r\n\tblue_37: Texture.from(blue_37),\r\n\tblue_38: Texture.from(blue_38),\r\n\tblue_39: Texture.from(blue_39),\r\n\tblue_40: Texture.from(blue_40),\r\n\tblue_41: Texture.from(blue_41),\r\n\tblue_42: Texture.from(blue_42),\r\n\temerald_01: Texture.from(emerald_01),\r\n\temerald_02: Texture.from(emerald_02),\r\n\temerald_03: Texture.from(emerald_03),\r\n\temerald_04: Texture.from(emerald_04),\r\n\temerald_05: Texture.from(emerald_05),\r\n\temerald_06: Texture.from(emerald_06),\r\n\temerald_07: Texture.from(emerald_07),\r\n\temerald_08: Texture.from(emerald_08),\r\n\temerald_09: Texture.from(emerald_09),\r\n\temerald_10: Texture.from(emerald_10),\r\n\temerald_11: Texture.from(emerald_11),\r\n\temerald_12: Texture.from(emerald_12),\r\n\temerald_13: Texture.from(emerald_13),\r\n\tgray_01: Texture.from(gray_01),\r\n\tgray_02: Texture.from(gray_02),\r\n\tgray_03: Texture.from(gray_03),\r\n\tgray_04: Texture.from(gray_04),\r\n\tgray_05: Texture.from(gray_05),\r\n\tgray_06: Texture.from(gray_06),\r\n\tgray_07: Texture.from(gray_07),\r\n\tgray_08: Texture.from(gray_08),\r\n\tgray_09: Texture.from(gray_09),\r\n\tgray_10: Texture.from(gray_10),\r\n\tgray_11: Texture.from(gray_11),\r\n\tgray_12: Texture.from(gray_12),\r\n\tgreen_01: Texture.from(green_01),\r\n\tgreen_02: Texture.from(green_02),\r\n\tgreen_03: Texture.from(green_03),\r\n\tgreen_04: Texture.from(green_04),\r\n\tgreen_05: Texture.from(green_05),\r\n\tgreen_06: Texture.from(green_06),\r\n\tgreen_07: Texture.from(green_07),\r\n\tgreen_08: Texture.from(green_08),\r\n\tgreen_09: Texture.from(green_09),\r\n\tgreen_10: Texture.from(green_10),\r\n\tgreen_11: Texture.from(green_11),\r\n\tgreen_12: Texture.from(green_12),\r\n\tgreen_13: Texture.from(green_13),\r\n\tgreen_14: Texture.from(green_14),\r\n\tgreen_15: Texture.from(green_15),\r\n\tgreen_16: Texture.from(green_16),\r\n\tgreen_17: Texture.from(green_17),\r\n\tgreen_18: Texture.from(green_18),\r\n\tgreen_19: Texture.from(green_19),\r\n\tgreen_20: Texture.from(green_20),\r\n\tgreen_21: Texture.from(green_21),\r\n\tgreen_22: Texture.from(green_22),\r\n\tgreen_23: Texture.from(green_23),\r\n\tgreen_24: Texture.from(green_24),\r\n\tgreen_25: Texture.from(green_25),\r\n\tgreen_26: Texture.from(green_26),\r\n\tgreen_27: Texture.from(green_27),\r\n\tgreen_28: Texture.from(green_28),\r\n\tgreen_29: Texture.from(green_29),\r\n\tgreen_30: Texture.from(green_30),\r\n\tgreen_31: Texture.from(green_31),\r\n\tgreen_32: Texture.from(green_32),\r\n\tgreen_33: Texture.from(green_33),\r\n\tred_01: Texture.from(red_01),\r\n\tred_02: Texture.from(red_02),\r\n\tred_03: Texture.from(red_03),\r\n\tred_04: Texture.from(red_04),\r\n\tred_05: Texture.from(red_05),\r\n\tred_06: Texture.from(red_06),\r\n\tred_07: Texture.from(red_07),\r\n\tred_08: Texture.from(red_08),\r\n\tred_09: Texture.from(red_09),\r\n\tred_10: Texture.from(red_10),\r\n\tred_11: Texture.from(red_11),\r\n\tred_12: Texture.from(red_12),\r\n\tred_13: Texture.from(red_13),\r\n\tred_14: Texture.from(red_14),\r\n\tred_15: Texture.from(red_15),\r\n\tred_16: Texture.from(red_16),\r\n\tred_17: Texture.from(red_17),\r\n\tred_18: Texture.from(red_18),\r\n\tred_19: Texture.from(red_19),\r\n\tred_20: Texture.from(red_20),\r\n\tred_21: Texture.from(red_21),\r\n\tred_22: Texture.from(red_22),\r\n\tred_23: Texture.from(red_23),\r\n\tred_24: Texture.from(red_24),\r\n\tred_25: Texture.from(red_25),\r\n\tred_26: Texture.from(red_26),\r\n\tred_27: Texture.from(red_27),\r\n\tred_28: Texture.from(red_28),\r\n\tred_29: Texture.from(red_29),\r\n\tred_30: Texture.from(red_30),\r\n\tred_31: Texture.from(red_31),\r\n\tred_32: Texture.from(red_32),\r\n\tred_33: Texture.from(red_33),\r\n\tred_34: Texture.from(red_34),\r\n\tred_35: Texture.from(red_35),\r\n\tred_36: Texture.from(red_36),\r\n\tred_37: Texture.from(red_37),\r\n\tviolet_01: Texture.from(violet_01),\r\n\tviolet_02: Texture.from(violet_02),\r\n\tviolet_03: Texture.from(violet_03),\r\n\tviolet_04: Texture.from(violet_04),\r\n\tviolet_05: Texture.from(violet_05),\r\n\tviolet_06: Texture.from(violet_06),\r\n\tviolet_07: Texture.from(violet_07),\r\n\tviolet_08: Texture.from(violet_08),\r\n\tviolet_09: Texture.from(violet_09),\r\n\tviolet_10: Texture.from(violet_10),\r\n\tviolet_11: Texture.from(violet_11),\r\n\tviolet_12: Texture.from(violet_12),\r\n\tviolet_13: Texture.from(violet_13),\r\n\tviolet_14: Texture.from(violet_14),\r\n\tviolet_15: Texture.from(violet_15),\r\n\tviolet_16: Texture.from(violet_16),\r\n\tviolet_17: Texture.from(violet_17),\r\n\tviolet_18: Texture.from(violet_18),\r\n\tviolet_19: Texture.from(violet_19),\r\n\tviolet_20: Texture.from(violet_20),\r\n\tviolet_21: Texture.from(violet_21),\r\n\tviolet_22: Texture.from(violet_22),\r\n\tviolet_23: Texture.from(violet_23),\r\n\tviolet_24: Texture.from(violet_24),\r\n\tviolet_25: Texture.from(violet_25),\r\n\tviolet_26: Texture.from(violet_26),\r\n\tviolet_27: Texture.from(violet_27),\r\n\tviolet_28: Texture.from(violet_28),\r\n\tviolet_29: Texture.from(violet_29),\r\n\tyellow_01: Texture.from(yellow_01),\r\n\tyellow_02: Texture.from(yellow_02),\r\n\tyellow_03: Texture.from(yellow_03),\r\n\tyellow_04: Texture.from(yellow_04),\r\n\tyellow_05: Texture.from(yellow_05),\r\n\tyellow_06: Texture.from(yellow_06),\r\n\tyellow_07: Texture.from(yellow_07),\r\n\tyellow_08: Texture.from(yellow_08),\r\n\tyellow_09: Texture.from(yellow_09),\r\n\tyellow_10: Texture.from(yellow_10),\r\n\tyellow_11: Texture.from(yellow_11),\r\n\tyellow_12: Texture.from(yellow_12),\r\n\tyellow_13: Texture.from(yellow_13),\r\n\tyellow_14: Texture.from(yellow_14),\r\n\tyellow_15: Texture.from(yellow_15),\r\n\tyellow_16: Texture.from(yellow_16),\r\n\tyellow_17: Texture.from(yellow_17),\r\n\tyellow_18: Texture.from(yellow_18),\r\n\tyellow_19: Texture.from(yellow_19),\r\n\tyellow_20: Texture.from(yellow_20),\r\n\tyellow_21: Texture.from(yellow_21),\r\n\tyellow_22: Texture.from(yellow_22),\r\n\tyellow_23: Texture.from(yellow_23),\r\n\tyellow_24: Texture.from(yellow_24),\r\n\tyellow_25: Texture.from(yellow_25),\r\n\tyellow_26: Texture.from(yellow_26),\r\n\tyellow_27: Texture.from(yellow_27),\r\n\tyellow_28: Texture.from(yellow_28),\r\n\tyellow_29: Texture.from(yellow_29),\r\n\tyellow_30: Texture.from(yellow_30),\r\n\tyellow_31: Texture.from(yellow_31),\r\n\tyellow_32: Texture.from(yellow_32),\r\n\tyellow_33: Texture.from(yellow_33),\r\n\tyellow_34: Texture.from(yellow_34),\r\n\tyellow_35: Texture.from(yellow_35),\r\n\tyellow_36: Texture.from(yellow_36),\r\n\tyellow_37: Texture.from(yellow_37),\r\n\tyellow_38: Texture.from(yellow_38),\r\n\tyellow_39: Texture.from(yellow_39),\r\n\tyellow_40: Texture.from(yellow_40),\r\n\tyellow_41: Texture.from(yellow_41),\r\n\tyellow_42: Texture.from(yellow_42),\r\n\tyellow_43: Texture.from(yellow_43),\r\n\tyellow_44: Texture.from(yellow_44),\r\n\tyellow_45: Texture.from(yellow_45),\r\n\tyellow_46: Texture.from(yellow_46),\r\n\tyellow_47: Texture.from(yellow_47)\r\n}\r\n\r\nexport default textures\r\n","import { CustomPIXIComponent } from 'react-pixi-fiber'\r\nimport { Graphics } from 'pixi.js'\r\n\r\nfunction draw(instance, startX, startY, endX, endY, purchased, available) {\r\n // Calculate the angle, and add/subtract 45 degrees depending on sign\r\n let angle = Math.tan((endY - startY) / (endX - startX))\r\n if (Math.abs(angle) < Math.PI) angle += Math.sign(angle) * Math.PI / 4\r\n\r\n instance.lineStyle(2, available ? \"0x888888\" : \"0x000000\")\r\n .moveTo(startX - Math.cos(angle) * 3, startY - Math.sin(angle) * 3)\r\n .lineTo(endX - Math.cos(angle) * 3, endY - Math.sin(angle) * 3)\r\n .moveTo(startX + Math.cos(angle) * 3, startY + Math.sin(angle) * 3)\r\n .lineTo(endX + Math.cos(angle) * 3, endY + Math.sin(angle) * 3)\r\n if (purchased)\r\n instance.lineStyle(4, \"0xD4AF37\")\r\n .moveTo(startX, startY)\r\n .lineTo(endX, endY)\r\n}\r\n\r\nconst TYPE = 'SkillLinkStraight'\r\nconst behavior = {\r\n customDisplayObject: ({ startX, startY, endX, endY, purchased, available }) => {\r\n const g = new Graphics()\r\n draw(g, startX, -startY, endX, -endY, purchased, available)\r\n return g\r\n },\r\n customApplyProps: (instance, oldProps, newProps) => {\r\n instance.clear()\r\n draw(instance, newProps.startX, -newProps.startY, newProps.endX, -newProps.endY, newProps.purchased, newProps.available)\r\n }\r\n}\r\n\r\nexport default CustomPIXIComponent(behavior, TYPE)\r\n","import { CustomPIXIComponent } from 'react-pixi-fiber'\r\nimport { Graphics } from 'pixi.js'\r\n\r\nconst degToRad = Math.PI / 180\r\n\r\n// Reference: https://stackoverflow.com/a/44829356\r\nfunction draw(instance, centerX, centerY, radius, startAngle, endAngle, lineWidth, lineColor) {\r\n startAngle *= degToRad\r\n endAngle *= degToRad\r\n let p0 = { x: Math.cos(startAngle) * radius, y: -Math.sin(startAngle) * radius }\r\n let p1 = { x: Math.cos(endAngle) * radius, y: -Math.sin(endAngle) * radius }\r\n let q1 = p0.x * p0.x + p0.y * p0.y\r\n let q2 = q1 + p0.x * p1.x + p0.y * p1.y\r\n let k2 = 4 / 3 * (Math.sqrt(2 * q1 * q2) - q2) / (p0.x * p1.y - p0.y * p1.x)\r\n instance.lineStyle(lineWidth, lineColor)\r\n .moveTo(p0.x + centerX, p0.y + centerY)\r\n .bezierCurveTo(p0.x + centerX - k2 * p0.y, p0.y + centerY + k2 * p0.x,\r\n p1.x + centerX + k2 * p1.y, p1.y + centerY - k2 * p1.x,\r\n p1.x + centerX, p1.y + centerY)\r\n}\r\n\r\nconst TYPE = 'SkillLinkArc'\r\nconst behavior = {\r\n customDisplayObject: ({ centerX, centerY, radius, startAngle, endAngle, purchased, available }) => {\r\n const g = new Graphics()\r\n draw(g, centerX, -centerY, radius - 3, startAngle, endAngle, 2, available ? \"0x888888\" : \"0x000000\")\r\n draw(g, centerX, -centerY, radius + 3, startAngle, endAngle, 2, available ? \"0x888888\" : \"0x000000\")\r\n if (purchased) draw(g, centerX, -centerY, radius, startAngle, endAngle, 4, \"0xD4AF37\")\r\n return g\r\n },\r\n customApplyProps: (instance, oldProps, newProps) => {\r\n instance.clear()\r\n draw(instance, newProps.centerX, -newProps.centerY, newProps.radius - 3, newProps.startAngle, newProps.endAngle, 2, newProps.available ? \"0x888888\" : \"0x000000\")\r\n draw(instance, newProps.centerX, -newProps.centerY, newProps.radius + 3, newProps.startAngle, newProps.endAngle, 2, newProps.available ? \"0x888888\" : \"0x000000\")\r\n if (newProps.purchased) draw(instance, newProps.centerX, -newProps.centerY, newProps.radius, newProps.startAngle, newProps.endAngle, 4, \"0xD4AF37\")\r\n }\r\n}\r\n\r\nexport default CustomPIXIComponent(behavior, TYPE)\r\n","import { CustomPIXIComponent } from 'react-pixi-fiber'\r\nimport { Graphics } from 'pixi.js'\r\n\r\nconst TYPE = 'UnlockedSkillNodeIndicator'\r\nconst behavior = {\r\n customDisplayObject: () => new Graphics(),\r\n customApplyProps: (instance, oldProps, newProps) => {\r\n \tconst scale = newProps.scale\r\n instance.clear()\r\n instance.beginFill(\"0x00FF00\")\r\n \t.drawCircle(33.3 * scale, 31 * scale, 3 * scale)\r\n \t.drawCircle(-32.5 * scale, 31 * scale, 3 * scale)\r\n \t.drawCircle(33.3 * scale, -34.6 * scale, 3 * scale)\r\n \t.drawCircle(-32.6 * scale, -34.3 * scale, 3 * scale)\r\n }\r\n}\r\n\r\nexport default CustomPIXIComponent(behavior, TYPE)\r\n","import { CustomPIXIComponent, withApp } from 'react-pixi-fiber'\r\nimport * as particles from 'pixi-particles'\r\n\r\nexport function compareArrays(a, b) {\r\n if (!(a instanceof Array && b instanceof Array))\r\n return a == b\r\n if (a.length !== b.length)\r\n return false\r\n for (let i = 0; i < a.length; i++)\r\n if (a[i] !== b[i]) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// Update function every frame\r\nvar update = function(instance) {\r\n // Update the next frame\r\n requestAnimationFrame(() => update(instance))\r\n\r\n const now = Date.now()\r\n\r\n // The emitter requires the elapsed\r\n // number of seconds since the last update\r\n instance.emitter.update((now - instance.elapsed) * 0.001)\r\n instance.elapsed = now\r\n\r\n // Should re-render the PIXI Stage\r\n if (instance.emitter.emit || instance.emitter.particleCount > 0 || instance.lastParticleCount > 0)\r\n instance.app.renderer.render(instance.app.stage)\r\n instance.lastParticleCount = instance.emitter.particleCount\r\n};\r\n\r\nconst TYPE = 'Particles'\r\nconst behavior = {\r\n customDisplayObject: ({ app }) => {\r\n const instance = new particles.LinkedListContainer()\r\n instance.app = app\r\n return instance\r\n },\r\n customApplyProps: (instance, oldProps, newProps) => {\r\n if (!compareArrays(oldProps.textures, newProps.textures) || oldProps.config !== newProps.config) {\r\n if (instance.emitter) instance.removeChild(instance.emitter)\r\n instance.emitter = new particles.Emitter(instance, newProps.textures, newProps.config)\r\n instance.emitter.emit = false\r\n }\r\n if (oldProps.play != newProps.play) {\r\n if (newProps.play)\r\n instance.emitter.playOnce()\r\n else {\r\n instance.emitter.emit = false\r\n }\r\n }\r\n instance.scale.set(newProps.scale || 1, newProps.scale || 1)\r\n },\r\n customDidAttach: (instance) => {\r\n // Calculate the current time\r\n instance.elapsed = Date.now()\r\n\r\n // Start emitting\r\n if (instance.play > 0)\r\n instance.emitter.emit = true\r\n\r\n // Start the update\r\n update(instance)\r\n }\r\n}\r\n\r\nexport default withApp(CustomPIXIComponent(behavior, TYPE))\r\n","import React, { PureComponent } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport './tooltip.css'\r\n\r\nconst tooltipRoot = document.getElementById(\"tooltip-root\")\r\n\r\nclass Tooltip extends PureComponent {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\r\n\t\tthis.el = document.createElement('div')\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\ttooltipRoot.appendChild(this.el)\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\ttooltipRoot.removeChild(this.el)\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { x, y, ...props } = this.props\r\n\t\tReactDOM.render(\r\n\t\t\t<div className=\"tooltip\" style={{ left: x, top: y }} {...props}>\r\n\t\t\t\t{this.props.tooltip}\r\n\t\t\t</div>,\r\n\t\t\tthis.el\r\n\t\t)\r\n\t\treturn null\r\n\t}\r\n}\r\n\r\nexport default Tooltip\r\n","import { combineReducers } from 'redux-immutable'\r\nimport { fromJS } from 'immutable'\r\nimport defaultSkills from '../defaultSkillsTree.json'\r\n\r\nconst defaultTree = fromJS(defaultSkills.tree)\r\nconst defaultTypes = fromJS(defaultSkills.types)\r\nconst defaultDisconnected = fromJS(defaultSkills.disconnected)\r\nconst defaultSummary = fromJS({})\r\n\r\n// Action Types\r\nconst CHANGE_SKILL_POINTS = 'skills/CHANGE_SKILL_POINTS'\r\nconst SET_SKILL_TREE = 'skills/SET_SKILL_TREE'\r\nconst SET_SKILL_TYPES = 'skills/SET_SKILL_TYPES'\r\nconst SET_SKILL_DISCONNECTED = 'skills/SET_SKILL_DISCONNECTED'\r\nconst SET_SKILL_SUMMARY = 'skills/SET_SKILL_SUMMARY'\r\n\r\n// Action Creators\r\nexport function addSkillPoints(amount = 1) {\r\n return { type: CHANGE_SKILL_POINTS, diff: amount }\r\n}\r\n\r\nexport function resetSkillTree() {\r\n return (dispatch, getState) => {\r\n dispatch({ type: SET_SKILL_TREE, tree: defaultTree })\r\n dispatch({ type: CHANGE_SKILL_POINTS, diff: getState().getIn(['skills', 'spentPoints']) })\r\n dispatch(summarizeEffects())\r\n }\r\n}\r\n\r\nexport function unlockSkill(path) {\r\n return (dispatch, getState) => {\r\n const state = getState()\r\n let disconnected = path[0] === 'd'\r\n const tree = state.getIn(['skills', disconnected ? 'disconnected' : 'tree'])\r\n if (disconnected) {\r\n path = path.slice(1)\r\n } else {\r\n path = path.reduce((acc, curr) => {\r\n acc.push('children')\r\n acc.push(curr)\r\n return acc\r\n }, [])\r\n }\r\n path.push('unlocked')\r\n if (disconnected)\r\n dispatch({ type: SET_SKILL_DISCONNECTED, disconnected: tree.setIn(path, true) })\r\n else\r\n dispatch({ type: SET_SKILL_TREE, tree: tree.setIn(path, true) })\r\n dispatch({ type: CHANGE_SKILL_POINTS, diff: -1 })\r\n\r\n const types = tree.getIn([...path.slice(0, -1), 'types'], [])\r\n let summary = state.getIn(['skills', 'summary'])\r\n types.forEach(type => summary = summary.set(type, summary.get(type, 0) + 1))\r\n dispatch({ type: SET_SKILL_SUMMARY, summary })\r\n }\r\n}\r\n\r\nexport function saveEditor(json) {\r\n return (dispatch, getState) => {\r\n json = JSON.parse(json)\r\n const tree = fromJS(json.tree)\r\n const types = fromJS(json.types)\r\n const disconnected = fromJS(json.disconnected)\r\n if (tree && types && disconnected) {\r\n dispatch({ type: SET_SKILL_TREE, tree })\r\n dispatch({ type: SET_SKILL_TYPES, types })\r\n dispatch({ type: SET_SKILL_DISCONNECTED, disconnected })\r\n dispatch({ type: CHANGE_SKILL_POINTS, diff: getState().getIn(['skills', 'spentPoints']) })\r\n dispatch(summarizeEffects())\r\n }\r\n }\r\n}\r\n\r\nexport function summarizeEffects() {\r\n return (dispatch, getState) => {\r\n const reducer = (summary, node) => {\r\n if (node.get('unlocked'))\r\n node.get('types', []).forEach(archetype => {\r\n if (archetype in summary)\r\n summary[archetype]++\r\n else\r\n summary[archetype] = 1\r\n })\r\n node.get('children', []).forEach(node => reducer(summary, node))\r\n return summary\r\n }\r\n let summary = reducer({}, getState().getIn(['skills', 'tree']))\r\n summary = getState().getIn(['skills', 'disconnected']).reduce(reducer, summary)\r\n dispatch({ type: SET_SKILL_SUMMARY, summary: fromJS(summary) })\r\n }\r\n}\r\n\r\n// Reducers\r\nconst pointsReducer = (state = 100, action) => {\r\n if (action.type === CHANGE_SKILL_POINTS) return state + action.diff\r\n return state\r\n}\r\n\r\nconst spentPointsReducer = (state = 0, action) => {\r\n if (action.type === CHANGE_SKILL_POINTS) return state - action.diff\r\n return state\r\n}\r\n\r\nconst treeReducer = (state = defaultTree, action) => {\r\n if (action.type === SET_SKILL_TREE) return action.tree\r\n return state\r\n}\r\n\r\nconst typesReducer = (state = defaultTypes, action) => {\r\n if (action.type === SET_SKILL_TYPES) return action.types\r\n return state\r\n}\r\n\r\nconst disconnectedReducer = (state = defaultDisconnected, action) => {\r\n if (action.type === SET_SKILL_DISCONNECTED) return action.disconnected\r\n return state\r\n}\r\n\r\nconst summaryReducer = (state = defaultSummary, action) => {\r\n if (action.type === SET_SKILL_SUMMARY) return action.summary\r\n return state\r\n}\r\n\r\nexport default combineReducers({\r\n points: pointsReducer,\r\n spentPoints: spentPointsReducer,\r\n tree: treeReducer,\r\n types: typesReducer,\r\n disconnected: disconnectedReducer,\r\n summary: summaryReducer\r\n})\r\n","import React, { PureComponent } from 'react'\r\nimport { CustomPIXIComponent, withApp } from 'react-pixi-fiber'\r\nimport { Viewport } from 'pixi-viewport'\r\n\r\nconst TYPE = 'Viewport'\r\nconst behavior = {\r\n customDisplayObject: ({ width, height, app, viewport }) => {\r\n const v = new Viewport({\r\n screenWidth: width || 100,\r\n screenHeight: height || 100,\r\n interaction: app.renderer.plugins.interaction\r\n })\r\n .drag()\r\n .pinch()\r\n .wheel()\r\n .clampZoom({\r\n minWidth: 1,\r\n minHeight: 1,\r\n maxWidth: 800000,\r\n maxHeight: 800000\r\n })\r\n\r\n v.off('pointerdown', v.input.down, v.input)\r\n v.off('pointercancel', v.input.up, v.input)\r\n v.off('pointerout', v.input.up, v.input)\r\n v.on('rightdown', e => {\r\n e.data.originalEvent = Object.assign({}, e.data.originalEvent, {\r\n button: 0\r\n })\r\n v.input.down(e)\r\n })\r\n v.on('touchstart', e => {\r\n e.data.originalEvent = Object.assign({}, e.data.originalEvent, {\r\n button: 0\r\n })\r\n v.input.down(e)\r\n })\r\n v.on('rightup', v.input.up, v.input)\r\n v.on('touchend', v.input.up, v.input)\r\n v.on('rightclick', () => v.plugins.plugins.drag.last = false)\r\n v.on('tap', () => v.plugins.plugins.drag.last = false)\r\n\r\n v.on('moved', (...args) => app.renderer.render(app.stage))\r\n\r\n v.moveCenter(0, 0)\r\n\r\n viewport.current = v\r\n\r\n return v\r\n },\r\n customApplyProps: (instance, oldProps, newProps) => {\r\n const { x, y } = instance.center\r\n instance.resize(newProps.width || 100, newProps.height || 100)\r\n // Maintain center\r\n instance.moveCenter(x, y)\r\n }\r\n}\r\n\r\nexport const ViewportContext = React.createContext(null)\r\n\r\nconst ViewportComponent = withApp(CustomPIXIComponent(behavior, TYPE))\r\n\r\nclass ViewportWrapper extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.viewport = {}\r\n }\r\n\r\n getViewport() {\r\n return this.viewport.current\r\n }\r\n\r\n render() {\r\n return <ViewportComponent {...this.props} viewport={this.viewport} />\r\n }\r\n}\r\n\r\nexport default ViewportWrapper\r\n","import React, { PureComponent } from 'react'\r\nimport { ReactReduxContext, Provider } from 'react-redux'\r\nimport { withResizeDetector } from 'react-resize-detector'\r\nimport { createStageClass } from 'react-pixi-fiber'\r\nimport Viewport, { ViewportContext } from './Viewport'\r\n\r\nexport const CanvasReduxContext = React.createContext()\r\n\r\nconst Stage = createStageClass()\r\n\r\nclass Canvas extends PureComponent {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\r\n\t\tthis.viewport = React.createRef()\r\n\t\tthis.stage = React.createRef()\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.renderStage()\r\n\t}\r\n\t\r\n\tcomponentDidUpdate() {\r\n\t\tthis.renderStage()\r\n\t\t// TODO do this after loading each texture\r\n\t\tsetTimeout(this.renderStage, 10)\r\n\t\tsetTimeout(this.renderStage, 100)\r\n\t\tsetTimeout(this.renderStage, 1000)\r\n\t\tsetTimeout(this.renderStage, 2000)\r\n\t}\r\n\r\n\trenderStage = () => this.stage.current._app.renderer.render(this.stage.current._app.stage)\r\n\r\n\trender() {\r\n\t\tconst { width, height, children } = this.props\r\n\t\treturn (\r\n\t\t\t<ReactReduxContext.Consumer>{({ store }) => \r\n\t\t\t\t<div style={{ width: '100%', height: '100%', overflow: 'hidden' }}\r\n\t\t\t\t\tonContextMenu={(e) => { e.preventDefault(); return false; }}>\r\n\t\t\t\t\t<Stage options={{\r\n\t\t\t\t\t\twidth,\r\n\t\t\t\t\t\theight,\r\n\t\t\t\t\t\ttransparent: true,\r\n\t\t\t\t\t\tantialias: true,\r\n\t\t\t\t\t\tautoStart: false\r\n\t\t\t\t\t}} ref={this.stage}>\r\n\t\t\t\t\t\t<Viewport width={width} height={height} ref={this.viewport}>\r\n\t\t\t\t\t\t\t<ViewportContext.Provider value={this.viewport}>\r\n\t\t\t\t\t\t\t\t<Provider store={store} context={CanvasReduxContext}>\r\n\t\t\t\t\t\t\t\t\t{children}\r\n\t\t\t\t\t\t\t\t</Provider>\r\n\t\t\t\t\t\t\t</ViewportContext.Provider>\r\n\t\t\t\t\t\t</Viewport>\r\n\t\t\t\t\t</Stage>\r\n\t\t\t\t</div>\r\n\t\t\t}</ReactReduxContext.Consumer>\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport default withResizeDetector(Canvas)\r\n","export default __webpack_public_path__ + \"static/media/skillBorder.dea18ced.png\";","import React, { PureComponent } from 'react'\r\nimport memoize from \"memoize-one\"\r\nimport { connect } from 'react-redux'\r\nimport { Map } from 'immutable'\r\nimport { Texture } from 'pixi.js'\r\nimport { Sprite, Container } from 'react-pixi-fiber'\r\nimport textures from './SkillTextures'\r\nimport SkillLinkStraight from './SkillLinkStraight'\r\nimport SkillLinkArc from './SkillLinkArc'\r\nimport UnlockedSkillNodeIndicator from './UnlockedSkillNodeIndicator'\r\nimport Particles from '../canvas/Particles'\r\nimport Tooltip from '../ui/Tooltip'\r\nimport { unlockSkill } from '../../redux/skills'\r\n\r\nimport { CanvasReduxContext } from '../canvas/Canvas'\r\nimport { ViewportContext } from '../canvas/Viewport'\r\n\r\nimport SkillBorder from '../../sprites/skillBorder.png'\r\nimport Particle from '../../sprites/particle.png'\r\nimport Fire from '../../sprites/Fire.png'\r\n\r\nimport PurchaseParticles from '../../particles/purchase.json'\r\nimport AvailableParticles from '../../particles/available.json'\r\n\r\nconst SkillBorderTexture = Texture.from(SkillBorder)\r\nconst ParticleTexture = Texture.from(Particle)\r\nconst FireTexture = Texture.from(Fire)\r\n\r\nfunction SkillNodeChildren({ children, available, types, path }) {\r\n return children ? children.map((child, j) => {\r\n const offsetX = child.getIn(['offset', 'x'])\r\n const offsetY = child.getIn(['offset', 'y'])\r\n if (child.get('line') === 'straight') {\r\n return <React.Fragment key={j}>\r\n <SkillLinkStraight startX={0} startY={0} endX={offsetX} endY={offsetY}\r\n available={available} purchased={child.get('unlocked')} />\r\n <ConnectedSkillNode data={child} types={types} x={offsetX} y={offsetY}\r\n available={available} path={[...path, j]} />\r\n </React.Fragment>\r\n } else {\r\n // The arc algorithm only works when <= 90 degrees\r\n const numChildren = child.get('children').size\r\n const actualSegmentAngle = child.get('segmentAngle')\r\n const numArcs = Math.ceil(Math.abs(actualSegmentAngle) / 90)\r\n const segmentAngle = actualSegmentAngle / numArcs\r\n const startAngle = child.get('startAngle')\r\n const radius = child.get('radius')\r\n return <React.Fragment key={j}>\r\n <SkillLinkStraight startX={0} startY={0} available={available}\r\n purchased={child.getIn(['children', 0, 'unlocked'])}\r\n endX={offsetX + Math.cos(startAngle * Math.PI / 180) * radius}\r\n endY={offsetY + Math.sin(startAngle * Math.PI / 180) * radius} />\r\n {new Array(numArcs * (numChildren - 1)).fill(0).map((arcChild, i) => {\r\n return <SkillLinkArc key={i} centerX={offsetX} centerY={offsetY} radius={radius}\r\n available={child.getIn(['children', Math.floor(i / numArcs), 'unlocked'])}\r\n purchased={child.getIn(['children', Math.floor(i / numArcs) + 1, 'unlocked'])}\r\n startAngle={startAngle + i * segmentAngle}\r\n endAngle={startAngle + (i + 1) * segmentAngle} />\r\n })}\r\n {new Array(numChildren).fill(0).map((arcChild, i) => {\r\n const x = offsetX + Math.cos((startAngle + i * actualSegmentAngle) * Math.PI / 180) * radius\r\n const y = offsetY + Math.sin((startAngle + i * actualSegmentAngle) * Math.PI / 180) * radius\r\n return <ConnectedSkillNode key={i} data={child.getIn(['children', i])}\r\n types={types} x={x} y={y} path={[...path, j, i]}\r\n available={i === 0 ? available : child.getIn(['children', i - 1, 'unlocked'])} />\r\n })}\r\n </React.Fragment>\r\n }\r\n }) : null\r\n}\r\n\r\nclass SkillNodeTooltip extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n active: false,\r\n x: 0,\r\n y: 0\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.viewport.off('moved', this.updateTooltipPosition)\r\n }\r\n\r\n init = (viewport) => {\r\n this.viewport = viewport\r\n viewport.on('moved', this.updateTooltipPosition)\r\n this.updateTooltipPosition()\r\n }\r\n\r\n updateTooltipPosition = (override) => {\r\n if (this.state.active || (override === true)) {\r\n const globalPos = this.props.container.current.toGlobal({ x: 0, y: 0})\r\n this.setState({\r\n x: globalPos.x,\r\n y: globalPos.y\r\n })\r\n }\r\n }\r\n\r\n onPointerOver = () => { this.setState({ active: true }); this.updateTooltipPosition(true); }\r\n onPointerOut = () => this.setState({ active: false })\r\n\r\n render() {\r\n const { x, y, active } = this.state\r\n const { tooltip } = this.props\r\n return <Tooltip x={x} y={y} tooltip={tooltip} className={active ? \"tooltip active\" : \"tooltip\"} />\r\n }\r\n}\r\n\r\nclass SkillNode extends PureComponent {\r\n\r\n container = React.createRef()\r\n tooltip = React.createRef()\r\n\r\n componentDidMount() {\r\n // Wait so this.viewport has a valid value and the container's position has been set\r\n setTimeout(() => {\r\n if (this.tooltip.current)\r\n this.tooltip.current.init(this.viewport.current.viewport.current)\r\n else\r\n this.componentDidMount()\r\n }, 10)\r\n }\r\n\r\n isAvailable = memoize((available, data, summary) => {\r\n const requirementType = data.get('requirementType')\r\n if (requirementType)\r\n return summary.get(requirementType, 0) >= data.get('requirementAmount', 1)\r\n return available\r\n })\r\n isAffordable = memoize((available, points, data, summary) =>\r\n this.isAvailable(available, data, summary) && !data.get('unlocked') && points >= data.get('cost', 1)\r\n )\r\n calculateData = memoize((rawData, types) => {\r\n let data = new Map()\r\n rawData.get('types', []).map(type => types.get(type)).forEach(archetype =>\r\n data = data.merge(archetype))\r\n return data.merge(rawData)\r\n })\r\n\r\n onPointerOver = () => this.tooltip.current.onPointerOver()\r\n onPointerOut = () => this.tooltip.current.onPointerOut()\r\n onClick = () => {\r\n const { available, points, dispatch, path, types, summary } = this.props\r\n if (this.isAffordable(available, points, this.calculateData(this.props.data, types), summary))\r\n dispatch(unlockSkill(path))\r\n }\r\n\r\n render() {\r\n const { x, y, types, path, available, points, summary } = this.props\r\n\r\n const data = this.calculateData(this.props.data, types)\r\n const scale = data.get('scale')\r\n const purchased = data.get('unlocked')\r\n const tint = this.isAvailable(available, data, summary) || purchased ? \"0xFFFFFF\" : \"0x666666\"\r\n\r\n return (\r\n <Container x={x || 0} y={-y || 0} ref={this.container}>\r\n <ViewportContext.Consumer>\r\n {viewport => (this.viewport = viewport) && null}\r\n </ViewportContext.Consumer>\r\n <SkillNodeChildren children={data.get('children')} types={types}\r\n available={purchased} path={path} />\r\n <Particles scale={scale || 1} textures={[ParticleTexture, FireTexture]} config={AvailableParticles}\r\n play={this.isAffordable(available, points, data, summary) ? 1 : null} />\r\n <Sprite texture={textures[data.get('texture')]} anchor={[.5, .5]}\r\n width={75 * (scale || 1)} height={75 * (scale || 1)} tint={tint} />\r\n <Sprite texture={SkillBorderTexture} anchor={[.5, .5]} width={90 * (scale || 1)}\r\n click={this.onClick} height={90 * (scale || 1)} interactive tint={tint} buttonMode\r\n tap={this.onClick} touchstart={e => e.stopPropagation()}\r\n pointerover={this.onPointerOver} pointerout={this.onPointerOut} defaultCursor={'pointer'} />\r\n {purchased ? <UnlockedSkillNodeIndicator scale={scale || 1} /> : null}\r\n <SkillNodeTooltip ref={this.tooltip} tooltip={data.get('tooltip')} container={this.container} />\r\n <Particles scale={scale || 1} textures={[ParticleTexture]} config={PurchaseParticles}\r\n play={purchased ? 1 : null} />\r\n </Container>\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n points: state.getIn(['skills', 'points']),\r\n summary: state.getIn(['skills', 'summary'])\r\n }\r\n}\r\n\r\nconst ConnectedSkillNode = connect(mapStateToProps, null, null, { context: CanvasReduxContext })(SkillNode)\r\n\r\nexport default ConnectedSkillNode\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAQAAAC0jZKKAAACPElEQVR4AbXXcW/TMBAF8EtCypa1LCDB9/98ILG1dKNNCOZZT8h6N4562eZTzH8/ni6dfWns4kqtvbMOT2tmv+0XasG/F1aTLFxd5lDcCS8o0tyX58K9bVA9WZe40LNNqLkevrJr1HvrC1vgQoM820/UqQZubQBKWDKjDJjP+wg41/J/eAOQsGb2rWDlvKzMTyEMaJvBIHNpBdswOfhoZ4VL2h3Irc+srSiJPYv9B1Mr3IHcCS2ZJTFf2+RZ1NEWD5PF7mmQ/nfs85I9klb4KrNCa2YkZitcXmVZpwL3zFtwpYH6l3cWtqDMPP+Fb+zWPthW6BvUIJmZuOTN7APqKOjB9vZAuAM6ArvFE9CSeI5Y1B7PPfAFMPKMKMWVZmbCzKusoveoKcODjQDzgx3c6GnUFnADOAFGV5V16B7PI2BkBRjgmf4IWBbYu8I6lPuhSa2w4xP8k7CF/l5Q7HuiZW9ST+wpjgKLvP9ed6gAJXztWcG/2CaAJ/tKlJSnm7RTTHHATQAnwAFKWCn/H3y2eH2L2ZfDIf06rXD8m768l//cAvzN/kBe709a8cPFQ4jXFA8hHpvVh1D9scmrqfbYrD/oO0s5caYrDvraqwlwW3811V6mvXUrLtOq6x+NYCt0vIqv/2hgcUPWqoFFRixlB9tEIxZHWKHJLmuGQraifijUMTbIq63QzDLGrh+8wVYO3rI6nzdohc+81H3cDHiijxvNfAJ9Wv855hJL5nnlB2Tw8ojzC7UelrXqk/cPn233eGpGsfAAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQIAAAAzCAMAAABLwPbeAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMAv19/Lx/P7z8Pn2/fj69PGV9oAwAAAT5JREFUeF7l2kluBSEMBFAzGjN13f+02YVIUX7yIRvsd4MuAS0XkErmpfJVJFtimx3fODeekki/5Cvjhd50pyCPw++4eiGdUmP8lWtC6kjFe+pDupSOt3VPeqSJxWQIgbGrR1IgOZwYQrdrjDMczS6BxSv4EZyqdK2Bf5FdMLoJ+gyXj5CFccApmJcCDoRE15OJbbmRAjFjF3taTB4DOZEGDbu42WwGlhzJ+DFQSQXPNkeBZWIXF+ubICfr7ZATUiA6bKtCCgzsG6SA79gX6HrS2GIvtsSBI8/1399xhK9OQMIEjDfkHovV0fhhHMlisxtZqhifChBIB6lmO8IlHN6aW90MWUiXxpsVmdmXNPyQRsVt1CNGQ8ieFJPAG3clykjIeIGrkAFl8E8BjERWlNE3HtRqk3xwn6uBZ4h05gPyD6PwIpGumwAAAABJRU5ErkJggg==\"","import React, { PureComponent } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport SkillNode from './SkillNode'\r\nimport Canvas from '../canvas/Canvas'\r\nimport './skills.css'\r\n\r\nclass SkillTree extends PureComponent {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<React.Fragment>\r\n\t\t\t\t<Canvas>\r\n\t\t\t\t\t{this.props.disconnected.map((node, i) =>\r\n\t\t\t\t\t\t<SkillNode key={i} data={node} types={this.props.types} available={true} path={['d', i]}\r\n\t\t\t\t\t\t\tx={node.getIn(['position', 'x'])} y={node.getIn(['position', 'y'])} />\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<SkillNode data={this.props.tree} types={this.props.types} available={true} path={[]}\r\n\t\t\t\t\t\tx={this.props.tree.offset && this.props.tree.offset.x} y={this.props.tree.offset && this.props.tree.offset.y} />\r\n\t\t\t\t</Canvas>\r\n\t\t\t\t<div className=\"points-display\">{this.props.points} points</div>\r\n\t\t\t</React.Fragment>\r\n\t\t)\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\ttree: state.getIn(['skills', 'tree']),\r\n\t\tdisconnected: state.getIn(['skills', 'disconnected']),\r\n\t\ttypes: state.getIn(['skills', 'types']),\r\n\t\tpoints: state.getIn(['skills', 'points'])\r\n\t}\r\n}\r\n\r\nexport default connect(mapStateToProps)(SkillTree)\r\n","import React, { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport defaultSkills from '../../defaultSkillsTree.json'\r\nimport textures from '../skills/SkillTextures'\r\nimport { saveEditor } from '../../redux/skills'\r\nimport './editor.css'\r\n\r\nclass Editor extends Component {\r\n\r\n\tstate = {\r\n\t\tconfig: JSON.stringify(defaultSkills, null, 2)\r\n\t}\t\r\n\r\n\tupdateConfig = e => this.setState({ config: e.target.value })\r\n\r\n\tapply = () => this.props.dispatch(saveEditor(this.state.config))\r\n\r\n\trender() {\r\n\t\treturn <React.Fragment>\r\n\t\t\t<details>\r\n\t\t\t\t<summary>Textures Reference</summary>\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t{Object.keys(textures).map(textureID =>\r\n\t\t\t\t\t\t<li key={textureID} className=\"texture-preview\">\r\n\t\t\t\t\t\t\t<span>{textureID}</span>\r\n\t\t\t\t\t\t\t<img alt={textureID} src={textures[textureID].textureCacheIds[0]} />\r\n\t\t\t\t\t\t</li>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</ul>\r\n\t\t\t</details>\r\n\t\t\t<br/>\r\n\t\t\t<textarea value={this.state.config} onChange={this.updateConfig} />\r\n\t\t\t<button onClick={this.apply}>Apply</button>\r\n\t\t</React.Fragment>\r\n\t}\r\n}\r\n\r\nexport default connect()(Editor)\r\n","import React, { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nfunction Summary ({ summary }) {\r\n\treturn <React.Fragment>\r\n\t\t\t<h3>Summary of selected skill nodes, by type:</h3>\r\n\t\t\t{summary.keySeq().toArray().map(item => <div key={item}>{`${item}: ${summary.get(item)}`}</div>)}\r\n\t\t</React.Fragment>\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tsummary: state.getIn(['skills', 'summary'])\r\n\t}\r\n}\r\n\r\nexport default connect(mapStateToProps)(Summary)\r\n","import React, { PureComponent } from 'react'\r\nimport Editor from './Editor'\r\nimport Summary from './Summary'\r\nimport './sidepanel.css'\r\n\r\nfunction SidePanelToggle({ name, open, togglePanel }) {\r\n\treturn <button onClick={togglePanel(name.toLowerCase())}\r\n\t\t\tstyle={open === name.toLowerCase() ? { background: \"#333c4a\" } : {}}>\r\n\t\t\t{name}\r\n\t\t</button>\r\n}\r\n\r\nclass SidePanel extends PureComponent {\r\n\r\n\tstate = {\r\n\t\topen: null\r\n\t}\r\n\r\n\ttogglePanel = panel => () => this.setState({ open: this.state.open === panel ? null : panel })\r\n\r\n\trender() {\r\n\t\tconst open = this.state.open\r\n\r\n\t\treturn <React.Fragment>\r\n\t\t\t<div className={open ? `sidepanel open ${open}` : \"sidepanel\"}>\r\n\t\t\t\t<div>\r\n\t\t\t\tThis project is a huge Work in Progress, and not all configuration options actually do anything yet.\r\n\t\t\t\tNothing is saved in cookies so if you want to keep your skill tree design, copy it and paste it somewhere else!\r\n\t\t\t\tYou might consider using a json editor such as <a href=\"https://jsoneditoronline.org\">jsoneditoronline</a> to edit this text more easily.\r\n\t\t\t\tIf any part of the code is invalid, the error will be in the Console, in developer tools!\r\n\t\t\t\t</div>\r\n\t\t\t\t<hr/>\r\n\t\t\t\t{open === 'editor' ? <Editor />\r\n\t\t\t\t\t: open === 'summary' ? <Summary />\r\n\t\t\t\t\t: null}\r\n\t\t\t\t<div className=\"spacer\"></div>\r\n\t\t\t\t<footer>\r\n\t\t\t\t\t<ul>\r\n\t\t\t\t\t\t<li>by thepaperpilot</li>\r\n\t\t\t\t\t\t<li><a href=\"https://discord.gg/WzejVAx\">discord</a></li>\r\n\t\t\t\t\t\t<li><a href=\"https://thepaperpilot.itch.io/\">itch</a></li>\r\n\t\t\t\t\t\t<li><a href=\"https://thepaperpilot.org/\">website</a></li>\r\n\t\t\t\t\t\t<li><a href=\"https://github.com/thepaperpilot\">github</a></li>\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t</footer>\r\n\t\t\t</div>\r\n\t\t\t<div className=\"sidepanel-toggles\">\r\n\t\t\t\t<SidePanelToggle name=\"Editor\" open={open} togglePanel={this.togglePanel} />\r\n\t\t\t\t<SidePanelToggle name=\"Summary\" open={open} togglePanel={this.togglePanel} />\r\n\t\t\t</div>\r\n\t\t</React.Fragment>\r\n\t}\r\n}\r\n\r\nexport default SidePanel\r\n","import React from 'react'\nimport SkillTree from './skills/SkillTree'\nimport SidePanel from './sidepanel/SidePanel'\n\nfunction App() {\n return (\n <div className=\"App\">\n <SkillTree />\n <SidePanel />\n </div>\n )\n}\n\nexport default App\n","import { combineReducers } from 'redux-immutable'\r\nimport skills from './skills'\r\n\r\nexport default combineReducers({\r\n skills\r\n})\r\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react'\nimport ReactDOM, { unstable_batchedUpdates } from 'react-dom'\nimport { createStore, applyMiddleware, compose } from 'redux'\nimport { Provider } from 'react-redux'\nimport thunk from 'redux-thunk'\nimport { batchedSubscribe } from 'redux-batched-subscribe'\nimport App from './components/App'\nimport rootReducer from './redux/index'\nimport reportWebVitals from './reportWebVitals'\n\nimport './index.css'\n\nconst reducer = rootReducer\nconst enhancer = compose(\n\tapplyMiddleware(thunk),\n\tbatchedSubscribe(unstable_batchedUpdates)\n)\nconst store = createStore(reducer, enhancer)\n\nReactDOM.render(\n\t<React.StrictMode>\n \t<Provider store={store}>\n \t<App />\n \t</Provider>\n \t</React.StrictMode>,\n \tdocument.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""}