highlight empty skill slots, bug fixes

This commit is contained in:
Mashy 2019-05-14 10:58:37 +10:00
parent af050143df
commit e56f170132
4 changed files with 40 additions and 14 deletions

View File

@ -320,6 +320,7 @@
.instance-equip .items { .instance-equip .items {
display: flex; display: flex;
justify-content: center; justify-content: center;
flex: 1 1 100%;
} }
.instance-equip .label { .instance-equip .label {
@ -331,7 +332,6 @@
} }
.instance-equip .skills { .instance-equip .skills {
display: flex; display: flex;
min-height: 100px;
flex-direction: column; flex-direction: column;
} }
@ -349,6 +349,23 @@
} }
button.equip {
animation: equip-skill 1s infinite ease-in-out alternate;
}
@keyframes equip-skill {
0% {
background-color: black;
box-shadow: inset 0 0 0 0 whitesmoke;
}
100% {
background-color: #181818;
box-shadow: inset 0.5em 0 0 0 whitesmoke;
}
}
.instance-equip .specs { .instance-equip .specs {
display: flex; display: flex;
padding-left: 50px; padding-left: 50px;

View File

@ -55,10 +55,12 @@ function Info(args) {
} }
if (type === 'skill') { if (type === 'skill') {
const skillInfo = SKILLS[value.skill];
const description = skillInfo ? skillInfo.description : '?????';
return ( return (
<div className="info-skill"> <div className="info-skill">
<div> {value.skill} </div> <div> {value.skill} </div>
<div> {SKILLS[value.skill].description} </div> <div> {description} </div>
<button onClick={() => sendUnequip(value.cryp.id, value.skill)}> <button onClick={() => sendUnequip(value.cryp.id, value.skill)}>
unequip unequip
</button> </button>
@ -165,7 +167,7 @@ function Info(args) {
if (activeCryp) return false; if (activeCryp) return false;
if (!player) return false; if (!player) return false;
if (combiner[0] !== null) { if (!(combiner.every(u => u === null))) {
const filteredCombos = vboxInfo.combos const filteredCombos = vboxInfo.combos
.filter(combo => combiner.every(u => u === null .filter(combo => combiner.every(u => u === null
|| combo.units.includes(player.vbox.bound[u]))); || combo.units.includes(player.vbox.bound[u])));

View File

@ -51,6 +51,7 @@ function Cryp(props) {
const { const {
activeVar, activeVar,
cryp, cryp,
player,
sendVboxApply, sendVboxApply,
setInfo, setInfo,
setActiveCryp, setActiveCryp,
@ -64,12 +65,22 @@ function Cryp(props) {
return false; return false;
} }
function onClick(e) {
e.stopPropagation();
e.preventDefault();
if (activeVar !== null) return sendVboxApply(cryp.id, activeVar);
return setActiveCryp(cryp);
}
const { vbox } = player;
const skillList = vboxInfo.vars.filter(v => v.skill).map(v => v.v);
const specList = vboxInfo.vars.filter(v => v.spec).map(v => v.v);
const skills = range(0, 3).map(i => { const skills = range(0, 3).map(i => {
const skill = cryp.skills[i]; const skill = cryp.skills[i];
const s = skill const s = skill
? skill.skill ? skill.skill
: (<span>&nbsp;</span>); : (<span>&nbsp;</span>);
function skillClick(e) { function skillClick(e) {
if (!skill && activeVar !== null) return sendVboxApply(cryp.id, activeVar); if (!skill && activeVar !== null) return sendVboxApply(cryp.id, activeVar);
if (!skill) setHighlight('skill'); if (!skill) setHighlight('skill');
@ -78,19 +89,14 @@ function Cryp(props) {
return setActiveCryp(cryp); return setActiveCryp(cryp);
} }
const classes = `right ${skill ? '' : 'action'}`; const action = skill ? '' : 'action';
const equip = skillList.includes(vbox.bound[activeVar]) && !skill ? 'equip' : '';
const classes = `right ${action} ${equip}`;
return ( return (
<button key={i} className={classes} onClick={skillClick} >{s}</button> <button key={i} className={classes} onClick={skillClick} >{s}</button>
); );
}); });
function onClick(e) {
e.stopPropagation();
e.preventDefault();
if (activeVar !== null) return sendVboxApply(cryp.id, activeVar);
return setActiveCryp(cryp);
}
const specs = range(0, 6).map(i => { const specs = range(0, 6).map(i => {
const s = cryp.specs[i]; const s = cryp.specs[i];
@ -215,7 +221,7 @@ function InstanceCryps(props) {
if (instance.phase === 'Lobby') return false; if (instance.phase === 'Lobby') return false;
const cryps = player.cryps.map((c, i) => Cryp({ const cryps = player.cryps.map((c, i) => Cryp({
activeVar, cryp: c, sendVboxApply, setInfo, setActiveCryp, vboxInfo, setVboxHighlight, activeVar, cryp: c, player, sendVboxApply, setInfo, setActiveCryp, vboxInfo, setVboxHighlight,
})); }));
const classes = `instance-cryp-list ${vboxHidden ? '' : 'hidden'}`; const classes = `instance-cryp-list ${vboxHidden ? '' : 'hidden'}`;

View File

@ -272,6 +272,7 @@ impl From<Skill> for Var {
Skill::Curse => Var::Curse, Skill::Curse => Var::Curse,
Skill::Clutch => Var::Clutch, Skill::Clutch => Var::Clutch,
Skill::Decay => Var::Decay, Skill::Decay => Var::Decay,
Skill::Debuff => Var::Debuff,
Skill::Haste => Var::Haste, Skill::Haste => Var::Haste,
Skill::Hostility => Var::Hostility, Skill::Hostility => Var::Hostility,
Skill::Heal => Var::Heal, Skill::Heal => Var::Heal,
@ -551,7 +552,7 @@ impl Vbox {
// actually move // actually move
self.bound.push(self.free[i].remove(j)); self.bound.push(self.free[i].remove(j));
self.bound.sort_unstable(); // self.bound.sort_unstable();
Ok(self) Ok(self)
} }