const preact = require('preact'); const { STATS, eventClasses, getCombatText, ConstructAvatar } = require('../utils'); // const { animationDivs } = require('../animations'); const GameConstruct = require('./game.construct'); function GamePanel(props) { const { game, account, resolution, setActiveSkill, setActiveConstruct, sendInstanceState, sendGameReady, showLog, toggleLog, skip, quit, } = props; if (!game) return
...
; // if (showLog) { // const logs = game.log.map((l, i) => (
{l}
)).reverse(); // return ( //
//
// //
//
 
//
//
//
// {logs} //
//
// ); // } function actionClick() { if (game.phase === 'Finish') { sendInstanceState(game.instance); quit(); return true; } if (resolution) { return skip(); } return sendGameReady(); } const otherTeams = game.players.filter(t => t.id !== account.id); const playerTeam = game.players.find(t => t.id === account.id); let actionText = 'Ready'; let actionStyles = 'instance-btn instance-ui-btn right'; if (game.phase === 'Finish') actionText = 'Done'; if (resolution) actionText = 'Skip'; if (actionText === 'Ready' && playerTeam.ready) actionStyles += ' ready'; const header = (
); function findConstruct(id) { const team = game.players.find(t => t.constructs.find(c => c.id === id)); if (team) return team.constructs.find(c => c.id === id); return null; } const zero = Date.parse(game.phase_start); const now = Date.now(); const end = Date.parse(game.phase_end); const timerPct = ((now - zero) / (end - zero) * 100); const displayPct = resolution || game.phase === 'Finish' ? 0 : Math.min(timerPct, 100); const displayColour = playerTeam.ready ? 'forestgreen' : timerPct > 80 ? 'red' : 'whitesmoke'; const timerStyles = { width: `${displayPct}%`, background: displayColour, }; const timer = (
 
); function PlayerTeam(team) { const constructs = team.constructs.map(c => ); return (
{constructs}
); } function OpponentTeam(team) { const constructs = team.constructs.map(c => ); return (
{constructs}
); } const gameClasses = `game ${resolution ? 'resolving': ''}`; function gameClick(e) { e.stopPropagation(); setActiveConstruct(null); } return (
{header} {timer} {otherTeams.map(OpponentTeam)} {PlayerTeam(playerTeam, setActiveSkill)}
); } module.exports = GamePanel;