const preact = require('preact'); const range = require('lodash/range'); const shapes = require('./shapes'); const { convertVar } = require('./../utils'); function Vbox(args) { const { activeCryp, setActiveCryp, combiner, info, instance, player, reclaiming, sendVboxAccept, sendVboxApply, sendVboxCombine, sendVboxDiscard, sendVboxReclaim, setCombiner, setInfo, setReclaiming, showTeam, vboxHidden, vboxHighlight, setVboxHighlight, vboxInfo, } = args; if (!player) return false; if (instance.phase === 'Lobby') return false; const { vbox } = player; function combinerChange(newCombiner) { setCombiner(newCombiner); if (newCombiner.every(c => c === null)) return setVboxHighlight([]); const combinerValues = newCombiner.map(cv => player.vbox.bound[cv]).filter(cv => cv); const filteredCombos = vboxInfo.combos .filter(combo => combinerValues.every(u => combo.units.includes(u))); const comboValues = vboxInfo.vars.filter(v => { if (!filteredCombos.some(c => c.units.includes(v.v))) return false; if (!['Red', 'Green', 'Blue'].includes(v.v) && combinerValues.includes(v.v)) return false; return true; }); return setVboxHighlight(comboValues.map(v => v.v)); } // // VBOX // const free = []; for (let i = 0; i < 6; i++) { free.push([vbox.free[0][i], vbox.free[1][i], vbox.free[2][i]]); } let vboxTimer; const LONG_TOUCH_TIME = 500; function vboxTouchStart(e, i, j) { vboxTimer = (setTimeout(() => { sendVboxAccept(j, i); vboxTimer = null; }, LONG_TOUCH_TIME)); return true; } function vboxTouchEnd(e, i, j) { if (vboxTimer) { clearTimeout(vboxTimer); } return true; } function vboxTouchMove(e) { if (vboxTimer) clearTimeout(vboxTimer); e.stopPropagation(); return true; } const freeRows = free.map((row, i) => { const cells = row.map((c, j) => { const highlighted = c && vboxHighlight.includes(c); function freeClick() { if (c) { setActiveCryp(null); return setInfo('item', c); } return false; } return
| combinerRmv(0)}> {combiner[0] !== null ? convertVar(vbox.bound[combiner[0]]) : shapes.vboxColour('gray')} | combinerRmv(1)}> {combiner[1] !== null ? convertVar(vbox.bound[combiner[1]]) : shapes.vboxColour('gray')} | combinerRmv(2)}> {convertVar(vbox.bound[combiner[2]])} |