Setting houserules toggles switch
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
87141c2de2
commit
c39e3dca3c
@ -55,6 +55,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
|
|||||||
const [houseRules, setHouseRules] = useState(undefined);
|
const [houseRules, setHouseRules] = useState(undefined);
|
||||||
const [state, setState] = useState(undefined);
|
const [state, setState] = useState(undefined);
|
||||||
const [rules, setRules] = useState([]);
|
const [rules, setRules] = useState([]);
|
||||||
|
const [ruleElements, setRuleElements] = useState([]);
|
||||||
const fields = useMemo(() => [
|
const fields = useMemo(() => [
|
||||||
'state', 'rules'
|
'state', 'rules'
|
||||||
], []);
|
], []);
|
||||||
@ -120,13 +121,14 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
|
|||||||
}, [ws, houseRules]);
|
}, [ws, houseRules]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setRules([ {
|
const _rules = [ {
|
||||||
title: `More victory points`,
|
title: `More victory points`,
|
||||||
key: `victory-points`,
|
key: `victory-points`,
|
||||||
description: `Customize how many Victory Points are required to win. ` +
|
description: `Customize how many Victory Points are required to win. ` +
|
||||||
`The minimum number of Victory Points is 10.`,
|
`The minimum number of Victory Points is 10.`,
|
||||||
element: <VictoryPoints {...{ ws, houseRules,
|
element: <VictoryPoints {...{ ws, houseRules,
|
||||||
field: `victory-points` }}/>,
|
field: `victory-points` }}/>,
|
||||||
|
implemented: true
|
||||||
}, {
|
}, {
|
||||||
title: `Tiles start facing down`,
|
title: `Tiles start facing down`,
|
||||||
key: `tiles-start-facing-down`,
|
key: `tiles-start-facing-down`,
|
||||||
@ -187,7 +189,8 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
|
|||||||
title: `Robin Hood robber`,
|
title: `Robin Hood robber`,
|
||||||
key: `robin-hood-robber`,
|
key: `robin-hood-robber`,
|
||||||
description: `Robbers can't steal from players with two or less victory points.`,
|
description: `Robbers can't steal from players with two or less victory points.`,
|
||||||
element: <></>
|
element: <></>,
|
||||||
|
implemented: true
|
||||||
}, {
|
}, {
|
||||||
title: `Crime and Punishment`,
|
title: `Crime and Punishment`,
|
||||||
key: `crime-and-punishment`,
|
key: `crime-and-punishment`,
|
||||||
@ -205,8 +208,24 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
|
|||||||
field: `credit`
|
field: `credit`
|
||||||
}} />,
|
}} />,
|
||||||
} ]
|
} ]
|
||||||
|
.sort((A, B) => {
|
||||||
|
if (A.implemented && B.implemented) {
|
||||||
|
return A.title.localeCompare();
|
||||||
|
}
|
||||||
|
if (A.implemented) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (B.implemented) {
|
||||||
|
return +1;
|
||||||
|
}
|
||||||
|
return A.title.localeCompare();
|
||||||
|
});
|
||||||
|
|
||||||
|
setRules(_rules);
|
||||||
|
|
||||||
|
setRuleElements(_rules
|
||||||
.map(item => {
|
.map(item => {
|
||||||
const disabled = (state !== 'lobby'),
|
const disabled = (state !== 'lobby' || !item.implemented),
|
||||||
defaultChecked = houseRules
|
defaultChecked = houseRules
|
||||||
&& (item.key in houseRules)
|
&& (item.key in houseRules)
|
||||||
? houseRules[item.key].enabled
|
? houseRules[item.key].enabled
|
||||||
@ -218,12 +237,16 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
|
|||||||
houseRules
|
houseRules
|
||||||
&& item.key in houseRules
|
&& item.key in houseRules
|
||||||
&& houseRules[item.key].enabled}
|
&& houseRules[item.key].enabled}
|
||||||
data-disabled={disabled} key={item.key}>
|
data-disabled={disabled}
|
||||||
|
key={item.key}
|
||||||
|
data-key={item.key}>
|
||||||
<div className="HouseSelector">
|
<div className="HouseSelector">
|
||||||
<div><b>{item.title}</b>: {item.description}</div>
|
<div><b>{item.title}</b>: {item.description}</div>
|
||||||
<Switch
|
<Switch
|
||||||
inputProps={{ 'aria-label': 'controlled' }}
|
size={'small'}
|
||||||
value={defaultChecked}
|
className="RuleSwitch"
|
||||||
|
checked={defaultChecked}
|
||||||
|
id={item.key}
|
||||||
onChange={(e) => setRule(e, item.key)}
|
onChange={(e) => setRule(e, item.key)}
|
||||||
{...{ disabled }} />
|
{...{ disabled }} />
|
||||||
</div>
|
</div>
|
||||||
@ -241,7 +264,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
|
|||||||
<Paper>
|
<Paper>
|
||||||
<div className="Title">House Rules</div>
|
<div className="Title">House Rules</div>
|
||||||
<div style={{display: 'flex', flexDirection: 'column'}}>
|
<div style={{display: 'flex', flexDirection: 'column'}}>
|
||||||
{ rules }
|
{ ruleElements }
|
||||||
</div>
|
</div>
|
||||||
<Button onClick={dismissClicked}>Close</Button>
|
<Button onClick={dismissClicked}>Close</Button>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user