mnml/client/src/components/instance.component.jsx
2019-11-05 12:24:41 +11:00

77 lines
1.7 KiB
JavaScript

const preact = require('preact');
const { connect } = require('preact-redux');
const Vbox = require('./vbox.component');
const InfoContainer = require('./info.container');
const InstanceConstructsContainer = require('./instance.constructs');
const Faceoff = require('./faceoff');
const actions = require('../actions');
const addState = connect(
function receiveState(state) {
const {
instance,
nav,
} = state;
return {
instance,
nav,
};
},
function receiveDispatch(dispatch) {
function setInfo(c) {
return dispatch(actions.setInfo(c));
}
function clearItems() {
dispatch(actions.setCombiner([]));
dispatch(actions.setReclaiming(false));
dispatch(actions.setItemEquip(null));
dispatch(actions.setItemUnequip([]));
dispatch(actions.setVboxHighlight([]));
dispatch(actions.setVboxSelected([]));
return true;
}
return {
setInfo,
clearItems,
};
}
);
function Instance(args) {
const {
instance,
clearItems,
} = args;
if (!instance) return false;
if (instance.phase !== 'InProgress') {
return <Faceoff />;
}
function instanceClick(e) {
e.stopPropagation();
clearItems();
}
function onTouchMove(e) {
e.preventDefault();
}
return (
<main id="instance" class='instance' onClick={instanceClick}>
<Vbox />
<InfoContainer />
<InstanceConstructsContainer />
</main>
);
}
module.exports = addState(Instance);