UNPKG

4.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/reducer.js"],"names":["createReducer","DEFAULT_STATE","game","getReducers","Object","keys","mod","filter","key","endsWith","map","gameModules","clientModules","gameReducers","clientReducers","rootReducer","state","action","startRandoSeed","randoSeed","rando","setSeed","type","CLIENT_LOAD_STATE_START","gameState","nextActions","agent","playerId","notPlayerId","slice","reducer","Error","name","seed","clearSeed"],"mappings":";;;;;QAUgBA,a,GAAAA,a;;AAVhB;;;;AACA;;;;;;AAEA,IAAMC,gBAAgB,EAAEC,MAAM,EAAR,EAAtB;;AAEA,IAAMC,cAAc,SAAdA,WAAc;AAAA,SAClBC,OAAOC,IAAP,CAAYC,GAAZ,EACGC,MADH,CACU;AAAA,WAAOC,IAAIC,QAAJ,CAAa,SAAb,CAAP;AAAA,GADV,EAEGC,GAFH,CAEO;AAAA,WAAOJ,IAAIE,GAAJ,CAAP;AAAA,GAFP,CADkB;AAAA,CAApB;;AAKO,SAASR,aAAT,CAAuBW,WAAvB,EAAwD;AAAA,MAApBC,aAAoB,uEAAJ,EAAI;;AAC7D,MAAMC,eAAeV,YAAYQ,WAAZ,CAArB;AACA,MAAMG,iBAAiBX,YAAYS,aAAZ,CAAvB;AACA,SAAO,SAASG,WAAT,GAAoD;AAAA,QAA/BC,KAA+B,uEAAvBf,aAAuB;AAAA,QAARgB,MAAQ;;AACzD,QAAIC,iBAAiBF,MAAMd,IAAN,IAAcc,MAAMd,IAAN,CAAWiB,SAA9C;AACA,QAAIH,MAAMd,IAAN,IAAcc,MAAMd,IAAN,CAAWiB,SAA7B,EAAwC;AACtCC,kBAAMC,OAAN,CAAcH,cAAd;AACD;AACD;AACA,QAAID,OAAOK,IAAP,KAAgBV,cAAcW,uBAAlC,EAA2D;AACzDP,gCACKA,KADL;AAEEd,cAAMe,OAAOO;AAFf;AAID;AACD;AACA,QACER,SACAA,MAAMd,IADN,IAEAc,MAAMd,IAAN,CAAWuB,WAFX,IAGAT,MAAMd,IAAN,CAAWuB,WAAX,CAAuB,CAAvB,CAHA,KAICR,OAAOS,KAAP,KAAiBV,MAAMd,IAAN,CAAWuB,WAAX,CAAuB,CAAvB,EAA0BE,QAA3C,IACCV,OAAOS,KAAP,KAAiBV,MAAMd,IAAN,CAAWuB,WAAX,CAAuB,CAAvB,EAA0BG,WAL7C,KAK6D;AAC7DX,WAAOK,IAAP,KAAgBN,MAAMd,IAAN,CAAWuB,WAAX,CAAuB,CAAvB,EAA0BR,MAA1B,CAAiCK,IAPnD,EAQE;AACAN,gCACKA,KADL;AAEEd,gCACKc,MAAMd,IADX;AAEEuB,uBAAaT,MAAMd,IAAN,CAAWuB,WAAX,CAAuBI,KAAvB,CAA6B,CAA7B;AAFf;AAFF;AAOD;;AA7BwD,4CA+B/BhB,YA/B+B,sBA+BdC,cA/Bc;;AA+BzD,6CAA4D;AAAvD,UAAMgB,kBAAN;AACHd,cAAQc,QAAQd,KAAR,EAAeC,MAAf,CAAR;AACA,UAAI,CAACD,KAAL,EAAY;AACV,cAAM,IAAIe,KAAJ,CAAaD,QAAQE,IAArB,yBAAN;AACD;AACF;;AAED,QAAIhB,MAAMd,IAAN,IAAckB,YAAMa,IAApB,IAA4BjB,MAAMd,IAAN,CAAWiB,SAAX,KAAyBC,YAAMa,IAA/D,EAAqE;AACnEjB,gCACKA,KADL;AAEEd,gCACKc,MAAMd,IADX;AAEEiB,qBAAWC,YAAMa;AAFnB;AAFF;AAOD;AACD,QAAItB,YAAYM,OAAOK,IAAnB,CAAJ,EAA8B;AAC5BN,cAAQ,4BAAaA,KAAb,EAAoBC,MAApB,CAAR;AACD;AACDG,gBAAMc,SAAN;AACA,WAAOlB,KAAP;AACD,GApDD;AAqDD","file":"reducer.js","sourcesContent":["import queueReducer from \"./queue-reducer\";\nimport { rando } from \"@cardcore/util\";\n\nconst DEFAULT_STATE = { game: {} };\n\nconst getReducers = mod =>\n Object.keys(mod)\n .filter(key => key.endsWith(\"Reducer\"))\n .map(key => mod[key]);\n\nexport function createReducer(gameModules, clientModules = {}) {\n const gameReducers = getReducers(gameModules);\n const clientReducers = getReducers(clientModules);\n return function rootReducer(state = DEFAULT_STATE, action) {\n let startRandoSeed = state.game && state.game.randoSeed;\n if (state.game && state.game.randoSeed) {\n rando.setSeed(startRandoSeed);\n }\n // temporary hacky game init logic\n if (action.type === clientModules.CLIENT_LOAD_STATE_START) {\n state = {\n ...state,\n game: action.gameState\n };\n }\n // special logic to clean out the queue if we're executing a queued action\n if (\n state &&\n state.game &&\n state.game.nextActions &&\n state.game.nextActions[0] &&\n (action.agent === state.game.nextActions[0].playerId ||\n action.agent !== state.game.nextActions[0].notPlayerId) && // omfg hack\n action.type === state.game.nextActions[0].action.type\n ) {\n state = {\n ...state,\n game: {\n ...state.game,\n nextActions: state.game.nextActions.slice(1)\n }\n };\n }\n\n for (const reducer of [...gameReducers, ...clientReducers]) {\n state = reducer(state, action);\n if (!state) {\n throw new Error(`${reducer.name} returned undefined`);\n }\n }\n\n if (state.game && rando.seed && state.game.randoSeed !== rando.seed) {\n state = {\n ...state,\n game: {\n ...state.game,\n randoSeed: rando.seed\n }\n };\n }\n if (gameModules[action.type]) {\n state = queueReducer(state, action);\n }\n rando.clearSeed();\n return state;\n };\n}\n"]}
\No newline at end of file