const preact = require('preact'); const range = require('lodash/range'); const { INFO } = require('./../constants'); const { convertItem } = require('../utils'); const shapes = require('./shapes'); const ScoreBoard = require('./scoreboard'); function InfoComponent(args) { const { itemInfo, combiner, player, instance, } = args; args.info = 'PowerRG'; const { info } = args; function Info() { if (!info) return false; const fullInfo = itemInfo.items.find(i => i.item === info) || INFO[info]; if (!fullInfo) return false; const isSkill = fullInfo.skill; const isSpec = fullInfo.spec; if (isSkill) { return (

{fullInfo.item}

{fullInfo.description}
); } if (isSpec) { let red = 0; let blue = 0; let green = 0; player.constructs.forEach(construct => { red += construct.colours.red; blue += construct.colours.blue; green += construct.colours.green; }); const teamColours = { red, blue, green }; const colourReqs = fullInfo.values.bonuses || []; const thresholds = colourReqs.map((bonus, i) => { const colours = ['red', 'green', 'blue']; const colourGoals = colours.map(c => { const colourReq = bonus.req[c]; if (colourReqs === 0) return false; const start = i === 0 ? 0 : colourReqs[i - 1].req[c]; const dots = range(start, colourReq).map(j => { const unmet = teamColours[c] < j + 1; const reqClass = unmet ? 'unmet' : ''; return (
{shapes.square([c])}
); }); return (
{dots}
); }); const reqsMet = colours.every(c => teamColours[c] >= bonus.req[c]); const reqClass = reqsMet ? '' : 'unmet'; return (
{colourGoals}
+ {bonus.bonus}
); }); return (

{info}

{fullInfo.description}
{thresholds}
); } return (

{fullInfo.item}

{fullInfo.description}
); } function Combos() { if (!player) return false; // show recipe for what's in combiner if (combiner.some(u => u !== null)) { const filteredCombos = itemInfo.combos .filter(combo => combiner.every(u => u === null || combo.components.includes(player.vbox.bound[u]))); if (filteredCombos.length > 6) return false; return ( {filteredCombos.map((c, i) => {c.components.map((u, j) => )} )}
{convertItem(c.item)}{convertItem(u)}
); } if (!info) return false; const vboxCombos = itemInfo.combos.filter(c => c.components.includes(info)); if (vboxCombos.length > 6) return false; return ( {vboxCombos.map((c, i) => {c.components.map((u, j) => )} )}
{convertItem(c.item)}{convertItem(u)}
); } const scoreboard = instance.phase === 'Lobby' || info ? null : ; return (
{scoreboard}
); } module.exports = InfoComponent;