scoreboard
This commit is contained in:
parent
be427f2271
commit
4722b4507d
@ -41,8 +41,8 @@ do not allow vbox actions for finished instances
|
|||||||
|
|
||||||
|
|
||||||
*SERVER*
|
*SERVER*
|
||||||
* std game mode
|
|
||||||
* time control
|
* modify time controls to be optional
|
||||||
|
|
||||||
* eth adapter
|
* eth adapter
|
||||||
* pay for rerolls
|
* pay for rerolls
|
||||||
|
|||||||
@ -5,13 +5,15 @@ const { INFO } = require('./../constants');
|
|||||||
const { convertItem } = require('../utils');
|
const { convertItem } = require('../utils');
|
||||||
const shapes = require('./shapes');
|
const shapes = require('./shapes');
|
||||||
|
|
||||||
|
const ScoreBoard = require('./scoreboard');
|
||||||
|
|
||||||
function InfoComponent(args) {
|
function InfoComponent(args) {
|
||||||
const {
|
const {
|
||||||
info,
|
info,
|
||||||
itemInfo,
|
itemInfo,
|
||||||
|
|
||||||
combiner,
|
combiner,
|
||||||
player,
|
player,
|
||||||
|
instance,
|
||||||
} = args;
|
} = args;
|
||||||
|
|
||||||
function Info() {
|
function Info() {
|
||||||
@ -152,12 +154,13 @@ function InfoComponent(args) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// const beginningHdr = instance.phase === 'Lobby'
|
const scoreboard = instance.phase === 'Lobby' || info
|
||||||
// ? <h2>game beginning...</h2>
|
? null
|
||||||
// : null;
|
: <ScoreBoard />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class='info' >
|
<div class='info' >
|
||||||
|
{scoreboard}
|
||||||
<Info />
|
<Info />
|
||||||
<Combos />
|
<Combos />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -5,12 +5,13 @@ const Vbox = require('./vbox.component');
|
|||||||
const InfoContainer = require('./info.container');
|
const InfoContainer = require('./info.container');
|
||||||
const InstanceConstructsContainer = require('./instance.constructs');
|
const InstanceConstructsContainer = require('./instance.constructs');
|
||||||
const EquipmentContainer = require('./instance.equip');
|
const EquipmentContainer = require('./instance.equip');
|
||||||
|
const ScoreBoard = require('./scoreboard');
|
||||||
|
|
||||||
const actions = require('../actions');
|
const actions = require('../actions');
|
||||||
|
|
||||||
const addState = connect(
|
const addState = connect(
|
||||||
function receiveState(state) {
|
function receiveState(state) {
|
||||||
const { ws, instance, nav } = state;
|
const { instance, nav } = state;
|
||||||
return { instance, nav };
|
return { instance, nav };
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -34,57 +35,15 @@ function Instance(args) {
|
|||||||
} = args;
|
} = args;
|
||||||
|
|
||||||
if (!instance) return false;
|
if (!instance) return false;
|
||||||
|
|
||||||
function playerRound(id) {
|
|
||||||
if (!instance.rounds.length) return null;
|
|
||||||
return instance.rounds[instance.rounds.length - 1].find(r => r.player_ids.includes(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
function playerText(p) {
|
|
||||||
const round = playerRound(p.id);
|
|
||||||
if (!round) {
|
|
||||||
return p.ready
|
|
||||||
? 'ready'
|
|
||||||
: '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (round.finished) return 'finished';
|
|
||||||
if (round.game_id) return 'in game';
|
|
||||||
|
|
||||||
return p.ready
|
|
||||||
? 'ready'
|
|
||||||
: '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function ScoreBoard() {
|
|
||||||
if (instance.phase === 'InProgress') return null;
|
|
||||||
|
|
||||||
const players = instance.players.map((p, i) => {
|
|
||||||
const pText = playerText(p);
|
|
||||||
return (
|
|
||||||
<tr key={i}
|
|
||||||
class={p.ready ? 'ready' : ''}>
|
|
||||||
<td>{p.name}</td>
|
|
||||||
<td>{p.wins} / {p.losses}</td>
|
|
||||||
<td>{pText}</td>
|
|
||||||
</tr>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
return (
|
|
||||||
<table class="scoreboard" >
|
|
||||||
<tbody>
|
|
||||||
{players}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const instanceClasses = `instance ${nav === 'constructs' ? 'constructs-visible' : ''}`;
|
const instanceClasses = `instance ${nav === 'constructs' ? 'constructs-visible' : ''}`;
|
||||||
|
|
||||||
|
const lobbyInfo = (instance.phase === 'Lobby')
|
||||||
|
? <ScoreBoard />
|
||||||
|
: null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main class={instanceClasses} onMouseOver={() => setInfo(null)} >
|
<main class={instanceClasses} onMouseOver={() => setInfo(null)} >
|
||||||
<ScoreBoard />
|
{lobbyInfo}
|
||||||
<Vbox />
|
<Vbox />
|
||||||
<InfoContainer />
|
<InfoContainer />
|
||||||
<EquipmentContainer />
|
<EquipmentContainer />
|
||||||
|
|||||||
34
client/src/components/scoreboard.jsx
Normal file
34
client/src/components/scoreboard.jsx
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
const preact = require('preact');
|
||||||
|
const { connect } = require('preact-redux');
|
||||||
|
|
||||||
|
const addState = connect(
|
||||||
|
function receiveState(state) {
|
||||||
|
const { instance } = state;
|
||||||
|
return { instance };
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
function ScoreBoard(args) {
|
||||||
|
const {
|
||||||
|
instance,
|
||||||
|
} = args;
|
||||||
|
|
||||||
|
const players = instance.players.map((p, i) =>
|
||||||
|
<tr key={i}
|
||||||
|
class={p.ready ? 'ready' : ''}>
|
||||||
|
<td>{p.name}</td>
|
||||||
|
<td>{p.wins} / {p.losses}</td>
|
||||||
|
<td>{p.ready ? 'ready' : ''}</td>
|
||||||
|
</tr>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<table class="scoreboard" >
|
||||||
|
<tbody>
|
||||||
|
{players}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = addState(ScoreBoard);
|
||||||
Loading…
x
Reference in New Issue
Block a user