{"version":3,"sources":["webpack://rotm_v2/webpack/runtime/chunk loaded","webpack://rotm_v2/./src/extjs.js","webpack://rotm_v2/./src/rotm.did.js","webpack://rotm_v2/./src/main.js","webpack://rotm_v2/webpack/bootstrap","webpack://rotm_v2/webpack/runtime/amd options","webpack://rotm_v2/webpack/runtime/compat get default export","webpack://rotm_v2/webpack/runtime/define property getters","webpack://rotm_v2/webpack/runtime/global","webpack://rotm_v2/webpack/runtime/hasOwnProperty shorthand","webpack://rotm_v2/webpack/runtime/make namespace object","webpack://rotm_v2/webpack/runtime/node module decorator","webpack://rotm_v2/webpack/runtime/jsonp chunk loading","webpack://rotm_v2/webpack/startup"],"names":["deferred","_preloadedIdls","ExtConnection","_mapIdls","_identity","_host","_agent","_canisters","constructor","host","identity","this","_makeAgent","idl","canister","setIdentity","setHost","cid","hasOwnProperty","Error","agent","canisterId","args","connect","IDL","HexNeighbors","Tuple","Opt","Nat","BoardHex","Record","Nat8","Board","Vec","Text","BoardId","Nat32","MagniAttack","Magni","MagniId","MagniNFTId","ItemId","MagniNFT","Bool","GameHash","OpponentId","GameOption","Variant","GameId","GameScore","GameResult","Principal","GameStatus","Null","GameState","Response","Move","PlayerMove","GameData","Game","HeaderField","HttpRequest","HttpResponse","Nat16","Service","Func","Float64","AUTH","logintype","profile","opponentProfile","window","StoicIdentity","openlogin","clientId","network","uxMode","unloadROTM","ROTM","_gameId","gameLeave","showLoader","preload","imgs","i","length","Image","src","document","addEventListener","async","API","init","GD","getGameData","magni","CONFIG","push","name","concat","attack","boards","toLowerCase","hexs","map","a","coords","offsetX","offsetY","currentRoom","click","hideLoader","rooms","login","enter","e","onbeforeunload","currentSound","bgmuted","mute","updateGameState","gs","_intv","state","status","game","SOUND","alert","play","_stopPolling","gameState","lead","isPlayer1","drawMessage","selectedHex","unhighlight","clear","currentPlayer","otherPlayer","moves","isPlayersTurn","loadProfile","updateMagni","then","r","x0p","ended","noresult","backButton","show","win","scoreMsg","lose","bgmusic","movesMade","p","gamegrid","isPlayerHex","place","colors","ally","enemy","placeHex","drawScore","fromHexString","hex","substr","bytes","c","parseInt","_gameState","_clearPolling","clearInterval","_startPolling","setInterval","gamePoll","ok","console","log","err","inGame","gameFind","roster","poll","Promise","resolve","reject","mids","m","resp","catch","gameJoin","id","gameCreate","pvp","gamePractise","practice","gameMove","position","gameEnd","mymagni","getPromo","code","promo","toUpperCase","setUsername","un","reward","newmagni","find","o","stats","checkUsername","test","drawHelp","createButton","open","focus","loadUser","pp","getPrincipal","isSet","username","toText","elo","toString","won","played","draw","INNERDRAW","group","exit","getIdentity","setTimeout","menu","privKey","Uint8Array","setBackground","maxTimeToLive","BigInt","identityProvider","onSuccess","onError","title","inputType","inputPlaceholder","animationType","buttons","type","text","showLoading","msfx","umsfx","mbg","umbg","rect","move","fill","font","size","anchor","family","weight","translate","lobby","logout","select","hide","sfxmuted","settings","adventure","chapter","stage","scene","clickHandler","inAdventureMode","s","launchAdventure","headerMessage","hexClickHandler","buttonIsFree","x","y","playergrid","set","hexBg","removeCard","updateSelectedTeam","herogrid","magnitomove","pop","starters","indexOf","drawCurrentRating","gameMode","gm","createBtn","joinBtn","playOnlineBtn","backBtn","cancelBtn","isValidTeam","selectedTeam","finally","makeid","button","image","drawPlayerProfile","premadegrid","special","omd","rd","highlight","player","index","character","board","result","playerScore","opponentScore","bbt","bbfn","localScore","standard","Grid","players","oppP","loadOpponentProfile","drawOpponentProfile","st1","st2","Howl","battle","volume","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","n","getter","__esModule","d","definition","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","Symbol","toStringTag","value","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"mappings":"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","file":"bundle.js","sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/* global BigInt */\r\nimport { Actor, HttpAgent } from \"@dfinity/agent\"; \r\n\r\n//Preload IDLS against a common name\r\nconst _preloadedIdls = {\r\n\r\n};\r\n\r\nclass ExtConnection {\r\n _mapIdls = {\r\n };\r\n\r\n _identity = false;\r\n _host = false;\r\n _agent = false;\r\n _canisters = {};\r\n \r\n constructor(host, identity) {\r\n if (identity) this._identity = identity;\r\n if (host) this._host = host;\r\n this._makeAgent();\r\n }\r\n idl(canister, idl) {\r\n this._mapIdls[canister] = idl;\r\n return this;\r\n };\r\n setIdentity(identity) {\r\n if (identity) this._identity = identity;\r\n else this._identity = false;\r\n this._makeAgent();\r\n return this;\r\n }\r\n setHost(host) {\r\n if (host) this._host = host;\r\n else this._host = false;\r\n this._makeAgent();\r\n return this;\r\n }\r\n canister(cid, idl) {\r\n if (!idl){\r\n if (this._mapIdls.hasOwnProperty(cid)) {\r\n idl = this._mapIdls[cid];\r\n } else {\r\n throw new Error(idl + \" is not a preloaded IDL\");\r\n }\r\n } else if (typeof idl == 'string') {\r\n if (_preloadedIdls.hasOwnProperty(idl)) {\r\n idl = _preloadedIdls[idl];\r\n } else {\r\n throw new Error(idl + \" is not a preloaded IDL\");\r\n }\r\n }\r\n if (!this._canisters.hasOwnProperty(cid)){\r\n this._canisters[cid] = Actor.createActor(idl, {agent : this._agent, canisterId : cid});\r\n }\r\n return this._canisters[cid];\r\n }\r\n\r\n _makeAgent() {\r\n var args = {};\r\n if (this._identity) args['identity'] = this._identity;\r\n if (this._host) args['host'] = this._host;\r\n this._agent = new HttpAgent(args);\r\n };\r\n};\r\n\r\nconst api = {\r\n connect : (host, identity) => new ExtConnection(host ?? \"https://boundary.ic0.app/\", identity),\r\n};\r\nexport default api;","export default ({ IDL }) => {\n const HexNeighbors = IDL.Tuple(\n IDL.Opt(IDL.Nat),\n IDL.Opt(IDL.Nat),\n IDL.Opt(IDL.Nat),\n IDL.Opt(IDL.Nat),\n IDL.Opt(IDL.Nat),\n IDL.Opt(IDL.Nat),\n );\n const BoardHex = IDL.Record({\n 'sides' : HexNeighbors,\n 'coords' : IDL.Tuple(IDL.Nat8, IDL.Nat8),\n });\n const Board = IDL.Record({ 'hexs' : IDL.Vec(BoardHex), 'name' : IDL.Text });\n const BoardId = IDL.Nat32;\n const MagniAttack = IDL.Tuple(\n IDL.Nat8,\n IDL.Nat8,\n IDL.Nat8,\n IDL.Nat8,\n IDL.Nat8,\n );\n const Magni = IDL.Record({\n 'img' : IDL.Text,\n 'name' : IDL.Text,\n 'attack' : MagniAttack,\n });\n const MagniId = IDL.Nat32;\n const MagniNFTId = IDL.Nat32;\n const ItemId = IDL.Nat32;\n const MagniNFT = IDL.Record({\n 'exp' : IDL.Nat32,\n 'magni' : MagniId,\n 'upgrades' : IDL.Vec(ItemId),\n 'transferrable' : IDL.Bool,\n });\n const GameHash = IDL.Text;\n const OpponentId = IDL.Nat32;\n const GameOption = IDL.Variant({\n 'pvp' : IDL.Tuple(BoardId, IDL.Opt(GameHash)),\n 'practice' : BoardId,\n 'opponent' : OpponentId,\n });\n const GameId = IDL.Nat32;\n const GameScore = IDL.Tuple(IDL.Nat8, IDL.Nat8);\n const GameResult = IDL.Variant({\n 'result' : IDL.Tuple(GameScore, IDL.Principal, IDL.Opt(IDL.Principal)),\n 'noresult' : IDL.Tuple(IDL.Principal, IDL.Opt(IDL.Principal), IDL.Text),\n });\n const GameStatus = IDL.Variant({\n 'lead' : IDL.Null,\n 'play' : IDL.Null,\n 'ended' : GameResult,\n 'lobby' : IDL.Null,\n });\n const GameState = IDL.Record({\n 'status' : GameStatus,\n 'moves' : IDL.Vec(IDL.Tuple(IDL.Nat, IDL.Tuple(MagniNFTId, MagniNFT))),\n 'option' : GameOption,\n 'lead' : IDL.Vec(MagniNFT),\n 'score' : GameScore,\n 'players' : IDL.Vec(IDL.Principal),\n 'isPlayer1' : IDL.Bool,\n 'board' : Board,\n });\n const Result = IDL.Variant({\n 'ok' : IDL.Tuple(GameId, GameState),\n 'err' : IDL.Text,\n });\n const Response = Result;\n const Move = IDL.Record({ 'hex' : IDL.Nat, 'magni' : MagniNFTId });\n const PlayerMove = IDL.Variant({ 'lead' : MagniNFTId, 'move' : Move });\n const GameData = IDL.Record({\n 'magni' : IDL.Vec(IDL.Tuple(MagniId, Magni)),\n 'boards' : IDL.Vec(IDL.Tuple(BoardId, Board)),\n });\n const Game = IDL.Record({\n 'result' : IDL.Opt(GameResult),\n 'moves' : IDL.Vec(Move),\n 'option' : GameOption,\n 'lead' : IDL.Vec(MagniNFTId),\n 'score' : GameScore,\n 'player1' : IDL.Opt(IDL.Principal),\n 'players' : IDL.Vec(IDL.Principal),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n 'url' : IDL.Text,\n 'method' : IDL.Text,\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n });\n const HttpResponse = IDL.Record({\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n 'status_code' : IDL.Nat16,\n });\n return IDL.Service({\n 'acceptCycles' : IDL.Func([], [], []),\n 'addBoard' : IDL.Func([Board], [BoardId], []),\n 'addMagni' : IDL.Func([Magni], [MagniId], []),\n 'availableCycles' : IDL.Func([], [IDL.Nat], ['query']),\n 'connect' : IDL.Func([], [IDL.Vec(IDL.Tuple(MagniNFTId, MagniNFT))], []),\n 'eloTest' : IDL.Func(\n [IDL.Nat16, IDL.Nat16, IDL.Float64],\n [IDL.Nat16, IDL.Nat16],\n ['query'],\n ),\n 'gameCreate' : IDL.Func([GameOption, IDL.Vec(MagniNFTId)], [Response], []),\n 'gameFetch' : IDL.Func([], [Response], []),\n 'gameFind' : IDL.Func([IDL.Vec(MagniNFTId)], [Response], []),\n 'gameJoin' : IDL.Func([GameHash, IDL.Vec(MagniNFTId)], [Response], []),\n 'gameLeave' : IDL.Func([GameId], [Response], []),\n 'gameMove' : IDL.Func([PlayerMove], [Response], []),\n 'gamePoll' : IDL.Func([GameId], [Response], ['query']),\n 'getAllPlayerMagni' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(MagniNFTId)))],\n ['query'],\n ),\n 'getGameData' : IDL.Func([], [GameData], ['query']),\n 'getGameStats' : IDL.Func([], [IDL.Nat, GameId, MagniNFTId], ['query']),\n 'getGames' : IDL.Func([], [IDL.Vec(IDL.Tuple(GameId, Game))], ['query']),\n 'getMyMagni' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(MagniNFTId, MagniNFT))],\n ['query'],\n ),\n 'getPlayerStats' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat32, IDL.Nat32)))],\n ['query'],\n ),\n 'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),\n 'profile' : IDL.Func(\n [IDL.Principal],\n [\n IDL.Opt(IDL.Text),\n IDL.Opt(IDL.Nat16),\n IDL.Opt(IDL.Tuple(IDL.Nat32, IDL.Nat32)),\n ],\n ['query'],\n ),\n 'promo' : IDL.Func([IDL.Text], [IDL.Bool], []),\n 'rewardReceivers' : IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']),\n 'setUsername' : IDL.Func([IDL.Text], [IDL.Bool], []),\n 'updateBoard' : IDL.Func([BoardId, Board], [], []),\n });\n};\nexport const init = ({ IDL }) => { return []; };","import api from \"./extjs.js\"; \nimport rotmIDL from \"./rotm.did.js\"; \nimport { Ed25519KeyIdentity } from \"@dfinity/identity\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport {Howl, Howler} from 'howler';\nimport {StoicIdentity} from \"ic-stoic-identity\";\nimport OpenLogin from \"@toruslabs/openlogin\";\nwindow.StoicIdentity = StoicIdentity;\nvar AUTH, logintype, profile, opponentProfile;\nconst openlogin = new OpenLogin({\n clientId: \"BHsvffJZzsm_Kb-xNOO9fGOZ2ciiMHlRjgBCeTRw18Io6OBE0QR4nd0R8AGZmL6wK9KFr9LbDeNNuj6yutSbTUA\",\n network: \"mainnet\", // valid values (testnet or mainnet)\n uxMode : 'popup',\n});\nshowLoader();\nfunction preload(imgs) {\n for (var i = 0; i < imgs.length; i++) {\n new Image().src = imgs[i];\n }\n}\npreload(\n [\n \"./assets/bg.jpg\",\n \"./assets/bgs/arena.jpg\",\n \"./assets/bgs/lobby.jpg\",\n \"./assets/bgs/menu.jpg\",\n \"./assets/heros/h0.png\",\n \"./assets/heros/h1.png\",\n \"./assets/heros/h2.png\",\n \"./assets/heros/h3.png\",\n \"./assets/heros/h4.png\",\n \"./assets/heros/h5.png\",\n \"./assets/heros/h6.png\",\n \"./assets/heros/h7.png\",\n \"./assets/heros/h8.png\",\n \"./assets/heros/h9.png\",\n \"./assets/heros/h10.png\",\n \"./assets/heros/h11.png\",\n \"./assets/heros/h12.png\",\n \"./assets/heros/h13.png\",\n \"./assets/heros/h14.png\",\n \"./assets/heros/h15.png\",\n \"./assets/heros/h16.png\",\n \"./assets/heros/h17.png\",\n \"./assets/heros/h18.png\",\n \"./assets/heros/h19.png\",\n \"./assets/heros/ring0.png\",\n \"./assets/heros/ring1.png\",\n \"./assets/heros/ring2.png\",\n \"./assets/heros/ring3.png\"\n ]\n);\n\ndocument.addEventListener('DOMContentLoaded', async () => {\n API = api.connect().idl('p5mob-qaaaa-aaaah-qaebq-cai', rotmIDL).canister('p5mob-qaaaa-aaaah-qaebq-cai');\n AUTH = await AuthClient.create();\n await openlogin.init();\n var GD = await API.getGameData();\n for(var i = 0; i < GD.magni.length; i++) {\n CONFIG.magni.push([GD.magni[i][1].name].concat(GD.magni[i][1].attack));\n };\n for(var i = 0; i < GD.boards.length; i++) {\n var _tb = [];\n CONFIG.boards[GD.boards[i][1].name.toLowerCase()] = GD.boards[i][1].hexs.map(a => a.coords);\n };\n document.addEventListener('click', ({ offsetX, offsetY }) => {\n if (typeof currentRoom.click != 'undefined'){\n currentRoom.click(offsetX, offsetY);\n }\n });\n hideLoader()\n rooms.login.enter();\n});\nwindow.addEventListener(\"beforeunload\", function(e){\n unloadROTM();\n}, false);\nwindow.onbeforeunload = unloadROTM;\nfunction unloadROTM(){\n if (ROTM._gameId) {\n return ROTM.gameLeave();\n }\n return null;\n}\nwindow.addEventListener('blur', () => {\n if (currentSound && !bgmuted) currentSound.mute(true);\n});\nwindow.addEventListener('focus', () => {\n if (currentSound && !bgmuted) currentSound.mute(false);\n});\nconst updateGameState = async (gs) => {\n if (!ROTM._intv) return;\n if (state == 'find') {\n if (gs.status.hasOwnProperty('lead')) {\n rooms.game.enter();\n SOUND.alert.play();\n ROTM._stopPolling();\n state = 'busy';\n };\n }\n if (state == 'busy') {\n if (gs.status.hasOwnProperty('lead')) {\n if (gameState == 1) { //We have submitted our lead\n if (gs.lead.length == 0 || !gs.isPlayer1) {\n //We need to resubmit ours\n gameState = 0;\n drawMessage(\"It was a tie - Choose another Strike Unit!\");\n SOUND.alert.play();\n selectedHex.unhighlight();\n selectedHex = false;\n ROTM._stopPolling();\n } else {\n //Waiting\n //console.log(\"Waiting for opponent to choose their Strike Unit\");\n //Keep polling\n }\n }\n };\n if (gs.status.hasOwnProperty('play')) {\n if (gameState == 1) {\n gameState = 2;\n selectedHex.clear();\n selectedHex = false;\n if (gs.isPlayer1) {\n currentPlayer = 1;\n otherPlayer = 2;\n } else {\n otherPlayer = 1;\n currentPlayer = 2;\n }\n }\n if (gs.isPlayer1 && gs.moves.length % 2 == 0) {\n isPlayersTurn = true;\n ROTM._stopPolling();\n SOUND.alert.play()\n drawMessage(\"It is your turn now - Deploy a Magni!\");\n } else if (!gs.isPlayer1 && gs.moves.length % 2 == 1) {\n isPlayersTurn = true;\n ROTM._stopPolling();\n SOUND.alert.play()\n drawMessage(\"It is your turn now - Deploy a Magni!\");\n } else {\n isPlayersTurn = false;\n }\n };\n if (gs.status.hasOwnProperty('ended')) {\n //state = 'free';\n ROTM._stopPolling();\n showLoader();\n await loadProfile();\n ROTM.updateMagni().then(r => {\n hideLoader();\n if (r) {\n x0p(\"Congratulations!\", \"You have unlocked a new Magni!\");\n }\n gameState = 3;\n if (gs.status.ended.hasOwnProperty('noresult')) {\n drawMessage(\"Game over - \"+gs.status.ended.noresult[2]+\"!\"); \n rooms.game.backButton.show() \n SOUND.win.play()\n } else if (gs.status.ended.hasOwnProperty('result')) {\n drawMessage(\"Game over - you \"+scoreMsg()+\"!\");\n if (scoreMsg() == \"won\") SOUND.win.play();\n else SOUND.lose.play();\n rooms.game.backButton.show() \n }\n bgmusic();\n });\n };\n };\n if (gs.moves.length > movesMade) {\n //console.log(\"Updating moves\");\n for (var i = movesMade; i < gs.moves.length; i++) {\n var p = (i%2 == 0 ? 1 : 2);\n gamegrid[gs.moves[i][0]].isPlayerHex = (p == currentPlayer);\n gamegrid[gs.moves[i][0]].place(p, gs.moves[i][1], (p == currentPlayer ? CONFIG.colors.ally : CONFIG.colors.enemy));\n if (i >= 2) placeHex(gamegrid[gs.moves[i][0]]);\n }\n movesMade = gs.moves.length;\n };\n if (currentRoom == rooms.game) drawScore();\n};\n\nconst fromHexString = (hex) => {\n if (hex.substr(0,2) === \"0x\") hex = hex.substr(2);\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n}\nconst ROTM = {\n _gameState : false,\n _gameId : false,\n _intv : false,\n _clearPolling : () => {\n isPlayersTurn = false;\n if (ROTM._intv) clearInterval(ROTM._intv);\n ROTM._intv = false;\n },\n _stopPolling : () => {\n if (ROTM._intv) clearInterval(ROTM._intv);\n ROTM._intv = false;\n },\n _startPolling : () => {\n ROTM._intv = setInterval(() => {\n API.gamePoll(ROTM._gameId).then(r => {\n //console.log(r);\n if (r.hasOwnProperty(\"ok\")){\n ROTM._gameState = r.ok[1];\n updateGameState(ROTM._gameState);\n } else {\n console.log(r.err);\n };\n });\n }, 1*1000);\n },\n inGame : () => {\n if (!ROTM._gameState) return false;\n if (ROTM._gameState.status.hasOwnProperty(\"#ended\")) return false;\n return true;\n },\n /*\n gameCreate : (roster, poll) => {\n if (ROTM.inGame()) return;\n },\n gameJoin : async (roster, poll) => {\n if (ROTM.inGame()) return;\n },\n */\n gameFind : (roster, poll) => {\n return new Promise(async (resolve, reject) => { \n if (ROTM.inGame()) reject(\"in game\");\n var mids = roster.map(m => m[0]);\n \n API.gameFind(mids).then(resp => {\n if (resp.hasOwnProperty('ok')) {\n ROTM._gameId = resp.ok[0];\n ROTM._gameState = resp.ok[1];\n ROTM._startPolling();\n updateGameState(ROTM._gameState);\n resolve(ROTM._gameState);\n } else {\n reject(resp.err);\n };\n }).catch(reject);\n });\n },\n gameJoin : (roster, id, poll) => {\n return new Promise(async (resolve, reject) => { \n if (ROTM.inGame()) reject(\"in game\");\n var mids = roster.map(m => m[0]);\n \n API.gameJoin(id, mids).then(resp => {\n if (resp.hasOwnProperty('ok')) {\n ROTM._gameId = resp.ok[0];\n ROTM._gameState = resp.ok[1];\n ROTM._startPolling();\n updateGameState(ROTM._gameState);\n resolve(ROTM._gameState);\n } else {\n reject(resp.err);\n };\n }).catch(reject);\n });\n },\n gameCreate : (roster, id, poll) => {\n return new Promise(async (resolve, reject) => { \n if (ROTM.inGame()) reject(\"in game\");\n var mids = roster.map(m => m[0]);\n \n API.gameCreate({\n pvp : [0, [id]]\n }, mids).then(resp => {\n if (resp.hasOwnProperty('ok')) {\n ROTM._gameId = resp.ok[0];\n ROTM._gameState = resp.ok[1];\n ROTM._startPolling();\n updateGameState(ROTM._gameState);\n resolve(ROTM._gameState);\n } else {\n reject(resp.err);\n };\n }).catch(reject);\n });\n },\n gamePractise : (roster, poll) => {\n return new Promise(async (resolve, reject) => { \n if (ROTM.inGame()) reject(\"in game\");\n var mids = roster.map(m => m[0]);\n \n API.gameCreate({\n practice : 0\n }, mids).then(resp => {\n if (resp.hasOwnProperty('ok')) {\n ROTM._gameId = resp.ok[0];\n ROTM._gameState = resp.ok[1];\n ROTM._startPolling();\n updateGameState(ROTM._gameState);\n resolve(ROTM._gameState);\n } else {\n reject(resp.err);\n };\n }).catch(reject);\n });\n },\n gameMove : async (magni, position) => {\n return new Promise(async (resolve, reject) => { \n if (position) {\n API.gameMove({\"move\" : { hex : position, magni : magni[0] }}).then(resp => {\n //console.log(resp);\n if (resp.hasOwnProperty('ok')) {\n ROTM._gameState = resp.ok[1];\n movesMade++;\n ROTM._startPolling();\n updateGameState(ROTM._gameState);\n resolve(ROTM._gameState);\n } else {\n reject(resp.err);\n };\n }).catch(reject);\n } else {\n API.gameMove({\"lead\" : magni[0]}).then(resp => {\n if (resp.hasOwnProperty('ok')) {\n ROTM._gameState = resp.ok[1];\n ROTM._startPolling();\n updateGameState(ROTM._gameState);\n resolve(ROTM._gameState);\n } else {\n reject(resp.err);\n };\n }).catch(reject); \n }\n });\n },\n gameEnd : () => {\n ROTM._clearPolling();\n ROTM._gameId = false;\n ROTM._gameState = false; \n },\n gameLeave : async () => {\n ROTM._clearPolling();\n if (ROTM._gameId) await API.gameLeave(ROTM._gameId);\n ROTM._gameId = false;\n ROTM._gameState = false; \n },\n connect : async () => {\n mymagni = await API.connect();\n },\n profile : (p) => {\n return API.profile(p);\n },\n getPromo : (code) => {\n return API.promo(code.toUpperCase());\n },\n setUsername : (un) => {\n return API.setUsername(un);\n },\n updateMagni : async () => {\n var reward = false;\n var newmagni = await API.connect();\n for(var i = 0; i < newmagni.length; i++) {\n let m = mymagni.find(o => o[0] == newmagni[i][0]);\n if (!m) {\n mymagni.push(newmagni[i]);\n reward = true;\n }\n };\n return reward;\n },\n stats : async () => {\n \n },\n gs : () => {\n return ROTM._gameState;\n }\n};\nconst checkUsername = (un) => {\n return /^([a-z0-9]|[-._](?![-._])){4,20}$/.test(un.toLowerCase());\n};\nconst drawHelp = () => {\n createButton(1045,845,150,40,'Help', () => {\n window.open('https://toniqlabs.gitbook.io/rise-of-the-magni/', '_blank').focus();\n });\n};\nconst drawSoundControl = () => {\n var msfx, umsfx, mbg, umbg; \n msfx = createButton(5,800,150,40,'Mute SFX', () => {\n SOUND.alert.mute(true);\n SOUND.select.mute(true);\n SOUND.place.mute(true);\n SOUND.lose.mute(true);\n SOUND.win.mute(true);\n msfx.hide();\n umsfx.show();\n sfxmuted = true;\n });\n umsfx = createButton(5,800,150,40,'Unmute SFX', () => {\n SOUND.alert.mute(false);\n SOUND.select.mute(false);\n SOUND.place.mute(false);\n SOUND.lose.mute(false);\n SOUND.win.mute(false);\n umsfx.hide();\n msfx.show();\n sfxmuted = false;\n });\n if (sfxmuted) msfx.hide();\n else umsfx.hide();\n mbg = createButton(5,845,150,40,'Mute BG Music', () => {\n bgmuted = true;\n currentSound.mute(true)\n mbg.hide();\n umbg.show();\n });\n umbg = createButton(5,845,150,40,'Unmute BG Music', () => {\n bgmuted = false;\n currentSound.mute(false)\n mbg.show();\n umbg.hide();\n });\n if (bgmuted) mbg.hide();\n else umbg.hide();\n drawHelp();\n};\nconst loadUser = async () => {\n API = api.connect(\"https://boundary.ic0.app/\",identity).idl('p5mob-qaaaa-aaaah-qaebq-cai', rotmIDL).canister('p5mob-qaaaa-aaaah-qaebq-cai');\n await ROTM.connect();\n await loadProfile();\n return true;\n};\nconst loadOpponentProfile = async () => {\n var gs = ROTM.gs();\n console.log(gs);\n console.log(gs.players);\n console.log(gs.players[0]);\n console.log(gs.players[0].toText());\n var oppP = (identity.getPrincipal().toText() == gs.players[0].toText() ? gs.players[1] : gs.players[0]);\n if (oppP.toText() == \"2vxsx-fae\") {\n opponentProfile = {\n username : \"THE BEAST\",\n elo : \"Over 9000!\",\n won : \"0\",\n played : \"TOO MANY\",\n };\n } else {\n var pp = await ROTM.profile(oppP);\n opponentProfile = {\n username : (pp[0].length ? pp[0][0] : identity.getPrincipal().toText().substr(0, 29) + \"...\"),\n elo : (pp[1].length ? pp[1][0] : 1200).toString(),\n won : (pp[2].length ? pp[2][0][0] : 0).toString(),\n played : (pp[2].length ? pp[2][0][1] : 0).toString(),\n };\n }\n return true;\n};\nconst loadProfile = async () => {\n var pp = await ROTM.profile(identity.getPrincipal());\n profile = {\n isSet : (pp[0].length ? true : false),\n username : (pp[0].length ? pp[0][0] : identity.getPrincipal().toText().substr(0, 29) + \"...\"),\n elo : (pp[1].length ? pp[1][0] : 1200).toString(),\n won : (pp[2].length ? pp[2][0][0] : 0).toString(),\n played : (pp[2].length ? pp[2][0][1] : 0).toString(),\n };\n return true;\n};\nvar rooms = {\n login : {\n draw : INNERDRAW.group(),\n enter : async () => {\n if (currentRoom) currentRoom.exit();\n currentRoom = rooms.login;\n currentRoom.draw.clear();\n \n showLoader();\n var id;\n id = await AUTH.getIdentity();\n if (id.getPrincipal().toString() != '2vxsx-fae') {\n logintype = 'ii';\n identity = id;\n await loadUser();\n setTimeout(() => {\n rooms.menu.enter();\n bgmusic('lobby');\n }, 200);\n hideLoader();\n return;\n };\n if (openlogin.privKey) {\n logintype = 'openlogin';\n identity = Ed25519KeyIdentity.generate(new Uint8Array(fromHexString(openlogin.privKey)));\n await loadUser();\n setTimeout(() => {\n rooms.menu.enter();\n bgmusic('lobby');\n }, 200);\n hideLoader();\n return;\n }\n id = await StoicIdentity.load();\n if (id !== false){\n try{\n logintype = 'stoic';\n identity = id;\n await loadUser();\n setTimeout(() => {\n rooms.menu.enter();\n bgmusic('lobby');\n }, 200);\n hideLoader();\n return;\n } catch(e) {\n console.log(e);\n StoicIdentity.disconnect()\n };\n }\n hideLoader();\n setBackground('assets/bgs/menu.jpg');\n createButton(500,500,200,40,'Internet Identity', async () => {\n if (identity) return;\n showLoader();\n AUTH.login({\n maxTimeToLive : BigInt(24*60*60*1000000000),\n identityProvider: \"https://identity.ic0.app/\",\n onSuccess: async () => {\n logintype = 'ii';\n identity = await AUTH.getIdentity()\n await loadUser();\n hideLoader();\n rooms.menu.enter();\n bgmusic('lobby');\n },\n onError : () => {\n hideLoader();\n x0p(\"Error!\", \"Error logging in...\");\n }\n });\n });\n createButton(500,560,200,40,'Open Login', async () => {\n if (identity) return;\n showLoader();\n await openlogin.login();\n if (openlogin.privKey) {\n logintype = 'openlogin';\n identity = Ed25519KeyIdentity.generate(new Uint8Array(fromHexString(openlogin.privKey)));\n await loadUser();\n hideLoader();\n rooms.menu.enter();\n bgmusic('lobby');\n } else {\n hideLoader();\n x0p(\"Error!\", \"Error logging in...\");\n }\n });\n \n createButton(500,620,200,40,'Stoic Connect', () => {\n if (identity) return;\n showLoader();\n StoicIdentity.connect().then(async id => {\n logintype = 'stoic';\n identity = id;\n await loadUser();\n hideLoader();\n rooms.menu.enter();\n bgmusic('lobby');\n }).catch(e => {\n StoicIdentity.disconnect();\n console.log(e);\n hideLoader();\n x0p(\"Error!\", \"Error logging in...\"); \n });\n });\n createButton(500,680,200,40,'Help', () => {\n window.open('https://toniqlabs.gitbook.io/rise-of-the-magni/', '_blank').focus();\n });\n },\n exit : () => {\n currentRoom.draw.clear();\n }\n },\n menu : {\n draw : INNERDRAW.group(),\n enter : async () => {\n if (currentRoom) currentRoom.exit();\n currentRoom = rooms.menu;\n currentRoom.draw.clear();\n setBackground('assets/bgs/menu.jpg');\n \n \n if (profile.isSet == false) {\n while(true){\n var p = await x0p({\n title: 'Please register a username',\n inputType: 'text',\n inputPlaceholder: 'Alphanumeric, max 20 chars.',\n animationType: 'fadeIn',\n buttons: [\n {\n type: 'info',\n text: 'Register',\n showLoading: true\n }\n ]\n })\n if (p.text !== \"\") {\n var un = checkUsername(p.text);\n if (un) {\n var resp = await ROTM.setUsername(p.text);\n if (!resp) {\n await x0p('Error!', 'That username is alrady taken');\n continue;\n } else {\n await x0p('Success!', 'Username has been registered!');\n profile.username = p.text;\n profile.isSet = true;\n break;\n }\n };\n }\n await x0p('Error!', 'Please enter a valid username');\n }\n }\n\n currentRoom.draw.rect(1200, 30).move(0, 0).fill(\"#333\");\n currentRoom.draw.text(\"Logged in as \" + profile.username).font( {\n size: 10, \n anchor: 'left', \n family:\"Verdana\", \n weight:'bold'\n }).translate(5,5).fill(\"white\");\n \n \n createButton(500,500,200,40,'Adventure', () => {\n x0p(\"Sorry!\", \"Sorry, not available yet...!\");\n //setTimeout(() => rooms.lobby.enter(0), 100);\n });\n createButton(500,560,200,40,'Training', () => {\n setTimeout(() => rooms.lobby.enter(1), 100);\n });\n createButton(500,620,200,40,'Online', () => {\n setTimeout(() => rooms.lobby.enter(2), 100);\n });\n createButton(500,680,200,40,'Promo Code', () => {\n setTimeout(async () => {\n var p = await x0p({\n title: 'Enter Promo code!',\n inputType: 'text',\n inputPlaceholder: 'Promo Code',\n animationType: 'fadeIn',\n buttons: [\n {\n type: 'cancel',\n text: 'Back',\n },\n {\n type: 'info',\n text: 'Enter Promo',\n showLoading: true\n }\n ]\n })\n if (p.text !== \"\") {\n var resp = await ROTM.getPromo(p.text);\n if (!resp) {\n await x0p('Error!', 'Invalid promo!');\n } else {\n await ROTM.updateMagni()\n await x0p('Success!', 'You have unlocked a new reward!');\n }\n }\n }, 100);\n });\n createButton(500,740,200,40,'Logout', () => {\n setTimeout(async () => {\n if (logintype == 'ii') {\n await AUTH.logout(); \n } else if (logintype == \"stoic\") {\n StoicIdentity.disconnect();\n } else if (logintype == \"openlogin\") {\n await openlogin.logout();\n };\n identity = false;\n API = api.connect().idl('p5mob-qaaaa-aaaah-qaebq-cai', rotmIDL).canister('p5mob-qaaaa-aaaah-qaebq-cai');\n rooms.login.enter()\n }, 100);\n });\n \n drawSoundControl();\n },\n exit : () => {\n currentRoom.draw.clear();\n }\n },\n settings : {\n draw : INNERDRAW.group(),\n enter : async () => {\n if (currentRoom) currentRoom.exit();\n currentRoom = rooms.settings;\n currentRoom.draw.clear();\n \n setBackground('assets/bgs/menu.jpg');\n var ff = {\n size: 10, \n anchor: 'middle', \n family:\"Verdana\", \n weight:'bold'\n };\n currentRoom.draw.text(\"Username: \" + profile.username).font(ff).translate(600,600).fill(\"white\");\n \n createButton(500,740,200,40,'Back', () => {\n setTimeout(() => rooms.menu.enter(), 100);\n });\n },\n exit : () => {\n currentRoom.draw.clear();\n }\n },\n adventure : {\n draw : INNERDRAW.group(),\n chapter : false,\n stage : false,\n scene : false,\n clickHandler : false,\n inAdventureMode : false,\n enter : (c,s) => {\n if (currentRoom) currentRoom.exit();\n currentRoom = rooms.adventure;\n if (rooms.adventure.inAdventureMode) {\n currentRoom.draw.show();\n } else {\n rooms.adventure.inAdventureMode = true;\n currentRoom.draw.clear();\n \n rooms.adventure.scene = currentRoom.draw.group();\n \n rooms.adventure.chapter = 0;\n rooms.adventure.stage = 0;\n \n launchAdventure(c,s);\n }\n },\n exit : () => {\n if (!rooms.adventure.inAdventureMode)\n currentRoom.draw.clear();\n else\n currentRoom.draw.hide();\n },\n click : (offsetX, offsetY) => {\n if (rooms.adventure.clickHandler) {\n rooms.adventure.clickHandler();\n }\n }\n },\n lobby : {\n headerMessage : false,\n draw : INNERDRAW.group(),\n hexClickHandler : (offsetX, offsetY, hex) => {\n if (state != \"free\") return;\n if (currentRoom != rooms.lobby) return;\n if (!buttonIsFree) return;\n buttonIsFree = false;\n var hexCoordinates = { x : hex.x, y : hex.y };\n //console.log(hex);\n if (hex.type == 'hero') {\n if (hex.magni !== false){\n for(var i = 0; i < playergrid.length; i++) {\n if (playergrid[i].magni == false) {\n playergrid[i].isPlayerHex = true;\n playergrid[i].set(hex.magni, CONFIG.colors.hexBg);\n hex.removeCard();\n SOUND.select.play();\n updateSelectedTeam();\n break;\n } \n }\n }\n } else if (hex.type == 'team'){\n if (hex.magni !== false){\n for(var i = 0; i < herogrid.length; i++) {\n if (herogrid[i].magni == false) {\n herogrid[i].set(hex.magni, CONFIG.colors.hexBg);\n break;\n } \n }\n hex.removeCard();\n SOUND.select.play();\n updateSelectedTeam();\n }\n } else if (hex.type == 'special'){\n var magnitomove = []\n SOUND.select.play();\n for(var i = 0; i < playergrid.length; i++) {\n if (playergrid[i].magni !== false) {\n magnitomove.push(playergrid[i].magni);\n playergrid[i].removeCard();\n } \n }\n if (magnitomove.length > 0) {\n for(var i = 0; i < herogrid.length; i++) {\n if (herogrid[i].magni == false) {\n herogrid[i].set(magnitomove.pop(), CONFIG.colors.hexBg);\n if (magnitomove.length == 0) break;\n } \n }\n }\n for(var i = 0; i < herogrid.length; i++) {\n if (CONFIG.starters[hex.magni][1].indexOf(herogrid[i].magni[1].magni) >= 0) {\n magnitomove.push(herogrid[i].magni);\n herogrid[i].removeCard();\n if (magnitomove.length == 10) break;\n }\n };\n for(var i = 0; i < magnitomove.length; i++) {\n playergrid[i].isPlayerHex = true;\n playergrid[i].set(magnitomove[i], CONFIG.colors.hexBg);\n };\n updateSelectedTeam();\n }\n drawCurrentRating();\n buttonIsFree = true;\n },\n gameMode : 0,\n enter : (gm) => {\n if (currentRoom) currentRoom.exit();\n currentRoom = rooms.lobby;\n currentRoom.draw.clear();\n state = 'busy';\n if (typeof gm != 'undefined' && gm !== false) rooms.lobby.gameMode = gm;\n setBackground('assets/bgs/lobby.jpg');\n drawMessage(\"Select your team!\");\n \n //Buttons\n var createBtn, joinBtn, playOnlineBtn, backBtn, cancelBtn;\n if (rooms.lobby.gameMode == 0){\n createButton(1020,10,150,40,'Start Adventure', function(){\n if (isValidTeam()) {\n rooms.adventure.enter(0,0);\n } else {\n x0p(\"Whoops!\", \"Please select a full team with a rating of 23 or less\");\n }\n }); \n } else if (rooms.lobby.gameMode == 1){\n createButton(1020,10,150,40,'Start Training', function(){\n if (isValidTeam()) {\n if (state != 'free') return;\n showLoader();\n ROTM.gamePractise(selectedTeam, updateGameState).then(() => {\n rooms.game.enter();\n SOUND.alert.play();\n ROTM._stopPolling();\n state = 'busy';\n }).catch(e => {\n state = 'free';\n alert(e);\n }).finally(() => {\n hideLoader();\n });\n } else {\n x0p(\"Whoops!\", \"Please select a full team with a rating of 23 or less\");\n }\n }); \n } else if (rooms.lobby.gameMode == 2){\n createBtn = createButton(850,10,150,40,'Create Game', () => {\n if (isValidTeam()) {\n if (state != 'free') return;\n showLoader();\n var id = makeid(5);\n ROTM.gameCreate(selectedTeam, id, updateGameState).then(() => {\n state = 'find';\n drawMessage(\"Waiting - Room code: \" + id);\n playOnlineBtn.hide();\n createBtn.hide();\n joinBtn.hide();\n backBtn.hide();\n cancelBtn.show();\n }).catch(e => {\n state = 'free';\n x0p(\"Whoops!\", e);\n }).finally(() => {\n hideLoader();\n });\n } else {\n x0p(\"Whoops!\", \"Please select a full team with a rating of 23 or less\");\n }\n });\n joinBtn = createButton(850,60,150,40,'Join Game', async () => {\n if (isValidTeam()) {\n if (state != 'free') return;\n var p = await x0p('Please enter room code', null, 'input');\n var id = (p.button == 'info' ? p.text : false);\n if (id && id.length == 5) {\n showLoader();\n ROTM.gameJoin(selectedTeam, id.toString(), updateGameState).then(() => {\n state = 'find';\n drawMessage(\"Joining game...\");\n playOnlineBtn.hide();\n createBtn.hide();\n backBtn.hide();\n cancelBtn.show();\n }).catch(e => {\n x0p(\"Whoops!\", e);\n state = 'free';\n }).finally(() => {\n hideLoader();\n });\n } else {\n x0p(\"Whoops!\", \"Please ener a valid room code\");\n }\n } else {\n x0p(\"Whoops!\", \"Please select a full team with a rating of 23 or less\");\n }\n });\n playOnlineBtn = createButton(1020,10,150,40,'Matchmaking', () => {\n if (isValidTeam()) {\n if (state != 'free') return;\n showLoader();\n ROTM.gameFind(selectedTeam, updateGameState).then(() => {\n state = 'find';\n drawMessage(\"Finding a match...\");\n playOnlineBtn.hide();\n createBtn.hide();\n joinBtn.hide();\n backBtn.hide();\n cancelBtn.show();\n }).catch(e => {\n state = 'free';\n x0p(\"Whoops!\", e);\n }).finally(() => {\n hideLoader();\n });\n } else {\n x0p(\"Whoops!\", \"Please select a full team with a rating of 23 or less\");\n }\n });\n cancelBtn = createButton(1020,60,150,40,'Cancel', () => {\n showLoader();\n ROTM.gameLeave().then(() => {\n state = 'free';\n drawMessage(\"Select your team!\");\n cancelBtn.hide();\n playOnlineBtn.show();\n createBtn.show();\n joinBtn.show();\n backBtn.show();\n }).catch(e => {\n x0p(\"Whoops!\", e);\n }).finally(() => {\n hideLoader();\n });\n });\n cancelBtn.hide();\n \n }\n \n backBtn = createButton(1020,60,150,40,'Back', function(){\n rooms.menu.enter();\n }); \n \n \n currentRoom.draw.image('assets/bgs/battle.png').translate(0, 752);\n drawPlayerProfile(profile);\n drawHelp();\n \n selectedHex = false;\n herogrid.map((hex, i) => {\n hex.init('hero', currentRoom.draw.group());\n if (i < mymagni.length) {\n if (selectedTeam.indexOf(mymagni[i]) < 0) hex.set(mymagni[i], CONFIG.colors.hexBg);\n }\n });\n playergrid.map((hex, i) => {\n hex.isPlayerHex = true;\n hex.init('team', currentRoom.draw.group());\n if (selectedTeam.length > i)\n if (selectedTeam[i]) hex.set(selectedTeam[i], CONFIG.colors.hexBg);\n });\n premadegrid.map((hex, i) => {\n hex.init('special', currentRoom.draw.group());\n hex.special(CONFIG.starters[i][0], i);\n });\n drawCurrentRating()\n state = 'free';\n },\n click : (offsetX, offsetY) => {\n\n },\n exit : () => {\n currentRoom.draw.clear();\n currentRoom.headerMessage = false;\n omd = false;\n rd = false;\n }\n },\n game : {\n headerMessage : false,\n draw : INNERDRAW.group(),\n hexClickHandler : (offsetX, offsetY, hex) => {\n if (gameState == 3) return;\n var hexCoordinates = { x : hex.x, y : hex.y };\n if (gameState == 0){\n if (hex.type == 'team') {\n selectedHex = hex;\n selectedHex.highlight(CONFIG.colors.ally)\n gameState = 1;\n drawMessage(\"Waiting for other player...\");\n ROTM.gameMove(selectedHex.magni);\n SOUND.select.play();\n }\n } else if (gameState == 2){\n if (isPlayersTurn){\n if (hex.type == 'game') {\n if (hex.player == 0){\n if (selectedHex) {\n ROTM.gameMove(selectedHex.magni, hex.index);\n hex.isPlayerHex = true;\n isPlayersTurn = false;\n hex.place(currentPlayer, selectedHex.magni, CONFIG.colors.ally);\n SOUND.place.play();\n placeHex(hex, true);\n selectedHex.clear();\n drawMessage(\"Waiting for other player...\");\n }\n }\n }\n if (hex.type == 'team' && hex.magni !== false) {\n if (selectedHex) selectedHex.unhighlight();\n hex.highlight(CONFIG.colors.ally)\n selectedHex = hex;\n SOUND.select.play();\n }\n }\n }\n },\n character : false,\n board : false,\n result : 0,\n playerScore : 0,\n opponentScore : 0,\n enter : async (bbt, bbfn, board, character) => {\n if (currentRoom) currentRoom.exit();\n currentRoom = rooms.game;\n currentRoom.draw.clear();\n localScore = [0,0];\n bgmusic('battle');\n setBackground('assets/bgs/arena.jpg');\n currentRoom.draw.image('assets/bgs/battle.png').translate(0, 752);\n selectedHex = false;\n gameState = 0;\n movesMade = 0;\n if (character) rooms.game.character = character;\n if (!bbt) bbt = \"Back\";\n if (!bbfn) bbfn = (r) => { \n bgmusic('lobby');\n ROTM.gameEnd();\n rooms.lobby.enter()\n };\n if (!board) board = CONFIG.boards.standard;\n gamegrid = Grid(board);\n rooms.game.board = board;\n rooms.game.backButton = createButton(1020,10,150,40, bbt, () => {\n bbfn(rooms.game.result);\n });\n rooms.game.backButton.hide();\n \n //Draw game grid\n gamegrid.map((hex, i) => {\n hex.index = i;\n hex.magni = false;\n hex.player = 0;\n hex.init('game', currentRoom.draw.group());\n });\n var c = 0;\n playergrid.map(hex => {\n hex.isPlayerHex = true;\n hex.init('team', currentRoom.draw.group());\n hex.set(selectedTeam[c++], CONFIG.colors.hexBg);\n });\n \n //drawSoundControl();\n await loadOpponentProfile();\n drawPlayerProfile(profile);\n drawOpponentProfile(opponentProfile);\n \n //Reset variables\n drawMessage(\"Game found - Select your Strike Unit\");\n },\n exit : () => {\n currentRoom.draw.clear();\n currentRoom.headerMessage = false;\n st1 = false;\n st2 = false;\n omd = false;\n }\n }\n}\nwindow.rooms = rooms;\nwindow.ROTM = ROTM;\n\n\nwindow.SOUND = {\n alert : new Howl({src: ['assets/sounds/alert.mp3']}),\n battle : new Howl({src: ['assets/sounds/battle.wav']}),\n lobby : new Howl({src: ['assets/sounds/lobby.wav']}),\n lose : new Howl({src: ['assets/sounds/lose.wav']}),\n place : new Howl({src: ['assets/sounds/place.wav']}),\n select : new Howl({src: ['assets/sounds/select.mp3']}),\n win : new Howl({src: ['assets/sounds/win.mp3']}),\n};\nSOUND.battle.volume(0.5);\nSOUND.alert.volume(0.2);\nSOUND.select.volume(0.4);\nSOUND.place.volume(0.1);\nSOUND.lose.volume(0.1);\nSOUND.win.volume(0.1);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t296: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkrotm_v2\"] = self[\"webpackChunkrotm_v2\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [646], () => (__webpack_require__(5872)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}