const preact = require('preact'); const range = require('lodash/range'); const { NULL_UUID } = require('./../utils'); const { stringSort, constructAvatar } = require('./../utils'); const SpawnButton = require('./spawn.button'); const InstanceCreateForm = require('./instance.create.form'); const idSort = stringSort('id'); const COLOURS = [ '#a52a2a', '#1FF01F', '#3498db', ]; function Menu(args) { const { account, constructs, team, setTeam, sendInstanceState, sendPlayerMmConstructsSet, sendInstanceJoin, sendInstanceList, sendConstructSpawn, instances, } = args; function instanceList() { if (!instances) return
...
; const instancePanels = instances.map(instance => { const player = instance.players.find(p => p.id === account.id); const scoreText = player ? `${player.score.wins} : ${player.score.losses}` : ''; function instanceClick() { if (!player) return sendInstanceJoin(instance); return sendInstanceState(instance); } return ( {instance.name} {instance.players.length} / {instance.max_players} {scoreText} ); }); const instanceJoinHidden = !team.every(c => !!c); // const mmSet = ( // // ); return (
{instancePanels} sendInstanceList()}>
instance name players status
); } function constructList() { if (!constructs) return
; // redux limitation + suggested workaround // so much for dumb components function selectConstruct(id) { // remove const i = team.findIndex(sid => sid === id); if (i > -1) { team[i] = null; return setTeam(team); } // window insert const insert = team.findIndex(j => j === null); if (insert === -1) return setTeam([id, null, null]); team[insert] = id; return setTeam(team); } const constructPanels = constructs.sort(idSort).map(construct => { const colour = team.indexOf(construct.id); const selected = colour > -1; const borderColour = selected ? COLOURS[colour] : '#000000'; return (
selectConstruct(construct.id)} > {constructAvatar(construct.name)}

{construct.name}

); }); const spawnButtonsNum = constructs.length < 3 ? (3 - constructs.length) : 1; const spawnButtons = range(spawnButtonsNum) .map(i => sendConstructSpawn(name)} />); return (
{constructPanels} {spawnButtons}
); } return (
{instanceList()}
); } module.exports = Menu;