This commit is contained in:
ntr 2019-05-20 18:35:08 +10:00
parent 0fafa97f6e
commit e6156debef
3 changed files with 50 additions and 10 deletions

View File

@ -303,11 +303,10 @@
color: #666; color: #666;
} }
/* Equipment */ /* Equipment */
.equip { .equip {
display: flex; display: flex;
margin: 1.5em 0;
text-align: center; text-align: center;
} }
@ -360,7 +359,7 @@
margin-bottom: 0.5em; margin-bottom: 0.5em;
} }
button.equip { button.equipping {
animation: equip-skill 1s infinite ease-in-out alternate; animation: equip-skill 1s infinite ease-in-out alternate;
} }

View File

@ -18,7 +18,21 @@ const addState = connect(
return ws.sendVboxApply(instance.id, crypId, i); return ws.sendVboxApply(instance.id, crypId, i);
} }
return { instance, player, account, sendInstanceReady, sendVboxApply, itemInfo, itemEquip, activeCryp }; function sendUnequip(crypId, item) {
return ws.sendVboxUnequip(instance.id, crypId, item);
}
return {
instance,
player,
account,
sendInstanceReady,
sendVboxApply,
itemInfo,
itemEquip,
activeCryp,
sendUnequip,
};
}, },
function receiveDispatch(dispatch) { function receiveDispatch(dispatch) {
@ -63,6 +77,7 @@ function Cryp(props) {
setItemEquip, setItemEquip,
itemInfo, itemInfo,
setInfo, setInfo,
sendUnequip,
} = props; } = props;
function onClick(e) { function onClick(e) {
@ -74,7 +89,6 @@ function Cryp(props) {
} }
function hoverInfo(e, info) { function hoverInfo(e, info) {
console.log(info);
if (!info) return false; if (!info) return false;
e.stopPropagation(); e.stopPropagation();
return setInfo(info); return setInfo(info);
@ -98,14 +112,25 @@ function Cryp(props) {
return true; return true;
} }
function skillDblClick(e) {
if (!skill) return false;
sendUnequip(cryp.id, skill.skill);
setActiveCryp(null);
setItemUnequip(null);
e.stopPropagation();
e.preventDefault();
return true;
}
// const action = skill ? '' : 'action'; // const action = skill ? '' : 'action';
const equip = skillList.includes(vbox.bound[itemEquip]) && !skill ? 'equip' : ''; const equip = skillList.includes(vbox.bound[itemEquip]) && !skill ? 'equipping' : '';
const classes = `${equip}`; const classes = `${equip}`;
return ( return (
<button <button
key={i} key={i}
className={classes} className={classes}
onClick={skillClick} onClick={skillClick}
onDblClick={skillDblClick}
onMouseOver={e => hoverInfo(e, skill && skill.skill)} > onMouseOver={e => hoverInfo(e, skill && skill.skill)} >
{s} {s}
</button> </button>
@ -130,8 +155,22 @@ function Cryp(props) {
setActiveCryp(cryp); setActiveCryp(cryp);
} }
function specDblClick(e) {
sendUnequip(cryp.id, s);
setActiveCryp(null);
setItemUnequip(null);
e.stopPropagation();
e.preventDefault();
return true;
}
return ( return (
<figure key={i} onClick={specClick} onMouseOver={e => hoverInfo(e, s)} > <figure
key={i}
onClick={specClick}
onDblClick={specDblClick}
onMouseOver={e => hoverInfo(e, s)} >
{SPECS[s].svg(`stat-icon ${SPECS[s].colour}`)} {SPECS[s].svg(`stat-icon ${SPECS[s].colour}`)}
<figcaption>{SPECS[s].caption}</figcaption> <figcaption>{SPECS[s].caption}</figcaption>
</figure> </figure>
@ -204,6 +243,7 @@ function InstanceCryps(props) {
setVboxHighlight, setVboxHighlight,
setItemUnequip, setItemUnequip,
setItemEquip, setItemEquip,
sendUnequip,
} = props; } = props;
if (!player) return false; if (!player) return false;
@ -221,6 +261,7 @@ function InstanceCryps(props) {
setActiveCryp, setActiveCryp,
itemInfo, itemInfo,
setVboxHighlight, setVboxHighlight,
sendUnequip,
})); }));
const classes = `cryp-list`; const classes = `cryp-list`;

View File

@ -59,7 +59,7 @@ function Equipment(props) {
const isSkill = fullInfo && fullInfo.skill; const isSkill = fullInfo && fullInfo.skill;
const isSpec = fullInfo && fullInfo.spec; const isSpec = fullInfo && fullInfo.spec;
function boundClick(e, i) { function skillClick(e, i) {
if (itemUnequip && activeCryp) return false; if (itemUnequip && activeCryp) return false;
const value = vbox.bound[i]; const value = vbox.bound[i];
setItemEquip(i); setItemEquip(i);
@ -89,7 +89,7 @@ function Equipment(props) {
const item = convertItem(vbox.bound[i]); const item = convertItem(vbox.bound[i]);
if (skillList.includes(item)) { if (skillList.includes(item)) {
return ( return (
<button key={i} onClick={e => boundClick(e, i)} onMouseOver={e => hoverInfo(e, item)}> <button key={i} onClick={e => skillClick(e, i)} onMouseOver={e => hoverInfo(e, item)}>
{item} {item}
</button> </button>
); );
@ -100,7 +100,7 @@ function Equipment(props) {
const item = convertItem(vbox.bound[i]); const item = convertItem(vbox.bound[i]);
if (specList.includes(item)) { if (specList.includes(item)) {
return ( return (
<figure key={i} onClick={e => boundClick(e, i)} onMouseOver={e => hoverInfo(e, item)} > <figure key={i} onClick={e => skillClick(e, i)} onMouseOver={e => hoverInfo(e, item)} >
{SPECS[item].svg(`equip-icon ${SPECS[item].colour}`)} {SPECS[item].svg(`equip-icon ${SPECS[item].colour}`)}
<figcaption>{SPECS[item].caption}</figcaption> <figcaption>{SPECS[item].caption}</figcaption>
</figure> </figure>