mnml/client/src/components/game.container.jsx
2019-04-25 14:20:04 +10:00

73 lines
1.8 KiB
JavaScript

const { connect } = require('preact-redux');
const actions = require('../actions');
const Game = require('./game.component');
const addState = connect(
function receiveState(state) {
const {
ws,
game,
account,
resolution,
showLog,
activeSkill,
activeCryp,
} = state;
function selectSkillTarget(targetCrypId) {
if (activeSkill) {
return ws.sendGameSkill(game.id, activeSkill.crypId, targetCrypId, activeSkill.skill);
}
return false;
}
function sendInstanceState(instanceId) {
if (!instanceId) return false;
return ws.sendInstanceState(instanceId);
}
// intercept self casting skills
if (activeSkill && activeSkill.skill.self_targeting) {
ws.sendGameSkill(game.id, activeSkill.crypId, null, activeSkill.skill.skill);
}
return {
game,
showLog,
account,
resolution,
activeSkill,
activeCryp,
selectSkillTarget,
sendInstanceState,
};
},
function receiveDispatch(dispatch) {
function setActiveSkill(crypId, skill) {
dispatch(actions.setActiveSkill(crypId, skill));
// particlesJS(`particles-${crypId}`, config);
}
function setActiveCryp(cryp) {
dispatch(actions.setActiveCryp(cryp));
}
function quit() {
dispatch(actions.setGame(null));
}
function toggleLog(v) {
dispatch(actions.setShowLog(v));
}
return { setActiveSkill, setActiveCryp, quit, toggleLog };
}
);
module.exports = addState(Game);