1
0

Fix volcano toggling

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-06-08 16:19:10 -07:00
parent 7bf5927d99
commit 3ae7ac061f

View File

@ -15,46 +15,45 @@ const Volcano = ({ ws, rules, field, disabled }) => {
const init = (Math.random() > 0.5) const init = (Math.random() > 0.5)
? Math.floor(8 + Math.random() * 5) /* Do not include 7 */ ? Math.floor(8 + Math.random() * 5) /* Do not include 7 */
: Math.floor(2 + Math.random() * 5); /* Do not include 7 */ : Math.floor(2 + Math.random() * 5); /* Do not include 7 */
const [number, setNumber] = useState(rules[field].number || init); const [number, setNumber] =
const [gold, setGold] = useState(rules[field].gold || false); useState((field in rules && 'number' in rules[field]) ? rules[field].number : init);
const [gold, setGold] =
useState((field in rules && 'gold' in rules[field]) ? rules[field].gold : false);
console.log(`house-rules - ${field} - `, rules[field]); console.log(`house-rules - ${field} - `, rules[field]);
if (!(field in rules)) { useEffect(() => {
rules[field] = {}; setGold(rules[field].gold);
setNumber(rules[field].number);
}, [rules, field]);
const toggleGold = () => {
rules[field].gold = !gold;
setGold(rules[field].gold);
ws.send(JSON.stringify({
type: 'rules',
rules: rules
}));
}; };
const update = (value) => { const update = (delta) => {
let number = (rules[field].number || init) + value; let value = number + delta;
if (number < 2 || number > 12) { if (value < 2 || value > 12) {
return; return;
} }
/* Number to trigger Volcano cannot be 7 */ /* Number to trigger Volcano cannot be 7 */
if (number === 7) { if (value === 7) {
number = value > 0 ? 8 : 6; value = delta > 0 ? 8 : 6;
} }
setNumber(number); setNumber(value);
rules[field].number = value;
ws.send(JSON.stringify({
type: 'rules',
rules: rules
}));
}; };
useEffect(() => {
if (rules[field].gold !== gold) {
rules[field].gold = gold;
ws.send(JSON.stringify({
type: 'rules',
rules: rules
}));
}
}, [ rules, ws, gold, field ]);
useEffect(() => {
if (rules[field].number !== number) {
rules[field].number = number;
ws.send(JSON.stringify({
type: 'rules',
rules: rules
}));
}
}, [rules, ws, number, field]);
return <div className="Volcano"> return <div className="Volcano">
<div> <div>
The Volcano replaces the Desert. When the Volcano erupts, roll a die to determine the direction the lava will flow. One of the six intersections on the Volcano tile will be affected. If there is a settlement on the selected intersection, it is destroyed! The Volcano replaces the Desert. When the Volcano erupts, roll a die to determine the direction the lava will flow. One of the six intersections on the Volcano tile will be affected. If there is a settlement on the selected intersection, it is destroyed!
@ -78,7 +77,7 @@ const Volcano = ({ ws, rules, field, disabled }) => {
size={'small'} size={'small'}
className="RuleSwitch" className="RuleSwitch"
checked={gold} checked={gold}
onChange={(e) => setGold(!gold)} onChange={(e) => toggleGold()}
{...{ disabled }} /> {...{ disabled }} />
</div> </div>
</div> </div>