1
0

Everyone starts with same animation seeds for tiles

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-06-21 12:14:10 -07:00
parent 93ee3aa458
commit 3648b58f5c
2 changed files with 15 additions and 6 deletions

View File

@ -41,6 +41,7 @@ const Board = () => {
const [ pipOrder, setPipOrder ] = useState(); const [ pipOrder, setPipOrder ] = useState();
const [ borders, setBorders ] = useState(); const [ borders, setBorders ] = useState();
const [ borderOrder, setBorderOrder ] = useState(); const [ borderOrder, setBorderOrder ] = useState();
const [animationSeeds, setAnimationSeeds] = useState();
const [ tiles, setTiles ] = useState(); const [ tiles, setTiles ] = useState();
const [ tileOrder, setTileOrder ] = useState([]); const [ tileOrder, setTileOrder ] = useState([]);
const [ placements, setPlacements ] = useState(undefined); const [ placements, setPlacements ] = useState(undefined);
@ -53,7 +54,7 @@ const Board = () => {
'signature', 'robber', 'robberName', 'signature', 'robber', 'robberName',
'pips', 'pipOrder', 'borders', 'borderOrder', 'tiles', 'tileOrder', 'pips', 'pipOrder', 'borders', 'borderOrder', 'tiles', 'tileOrder',
'placements', 'turn', 'state', 'color', 'longestRoadLength', 'placements', 'turn', 'state', 'color', 'longestRoadLength',
'rules' 'rules', 'animationSeeds'
], []); ], []);
console.log(`board - ws`, ws); console.log(`board - ws`, ws);
@ -118,6 +119,10 @@ const Board = () => {
setBorderOrder(data.update.borderOrder); setBorderOrder(data.update.borderOrder);
} }
if ('animationSeeds' in data.update && !equal(data.update.animationSeeds, animationSeeds)) {
console.log(`board - setting new animationSeeds`);
setAnimationSeeds(data.update.animationSeeds);
}
if ('tileOrder' in data.update && !equal(data.update.tileOrder, tileOrder)) { if ('tileOrder' in data.update && !equal(data.update.tileOrder, tileOrder)) {
console.log(`board - setting new tileOrder`); console.log(`board - setting new tileOrder`);
setTileOrder(data.update.tileOrder); setTileOrder(data.update.tileOrder);
@ -501,7 +506,7 @@ const Board = () => {
><div className="Tile-Shape"/></div>; ><div className="Tile-Shape"/></div>;
}; };
const generateTiles = function (tileOrder) { const generateTiles = function (tileOrder, animationSeeds) {
let row = 0, rowCount = 0; let row = 0, rowCount = 0;
let y = tileHalfWidth - (rows.length - 1) * 0.5 * tileWidth, let y = tileHalfWidth - (rows.length - 1) * 0.5 * tileWidth,
x = -(rows[row] - 1) * 0.5 * tileHeight; x = -(rows[row] - 1) * 0.5 * tileHeight;
@ -531,7 +536,7 @@ const Board = () => {
if (tile.type === 'wheat') { if (tile.type === 'wheat') {
div = <div key={`tile-${order}`}> div = <div key={`tile-${order}`}>
<Flock count={Math.floor(Math.random() * 4)} <Flock count={Math.floor(1 + animationSeeds[index] * 4)}
style={{ style={{
top: `${tile.top - tileImageHeight * 0.5}px`, top: `${tile.top - tileImageHeight * 0.5}px`,
left: `${tile.left - tileImageWidth * 0.5}px`, left: `${tile.left - tileImageWidth * 0.5}px`,
@ -651,9 +656,9 @@ const Board = () => {
setBorderElements(generateBorders(borderOrder)); setBorderElements(generateBorders(borderOrder));
} }
if (tiles && tileOrder) { if (tiles && tileOrder && animationSeeds) {
console.log(`board - Generate board - tiles`); console.log(`board - Generate board - tiles`);
setTileElements(generateTiles(tileOrder)); setTileElements(generateTiles(tileOrder, animationSeeds));
} }
/* Regenerate pips every time; it uses ws */ /* Regenerate pips every time; it uses ws */
@ -669,6 +674,7 @@ const Board = () => {
}, [ }, [
signature, generated, signature, generated,
pips, pipOrder, borders, borderOrder, tiles, tileOrder, pips, pipOrder, borders, borderOrder, tiles, tileOrder,
animationSeeds,
ws, state, rules ws, state, rules
]); ]);

View File

@ -2119,7 +2119,8 @@ const shuffle = (game, session) => {
borderOrder: game.borderOrder, borderOrder: game.borderOrder,
robber: game.robber, robber: game.robber,
robberName: game.robberName, robberName: game.robberName,
signature: game.signature signature: game.signature,
animationSeeds: game.animationSeeds
}); });
} }
@ -4757,6 +4758,7 @@ const shuffleBoard = (game) => {
] ]
const sequence = order[Math.floor(Math.random() * order.length)]; const sequence = order[Math.floor(Math.random() * order.length)];
game.pipOrder = []; game.pipOrder = [];
game.animationSeeds = [];
for (let i = 0, p = 0; i < sequence.length; i++) { for (let i = 0, p = 0; i < sequence.length; i++) {
const target = sequence[i]; const target = sequence[i];
/* If the target tile is the desert (18), then set the /* If the target tile is the desert (18), then set the
@ -4769,6 +4771,7 @@ const shuffleBoard = (game) => {
} else { } else {
game.pipOrder[target] = p++; game.pipOrder[target] = p++;
} }
game.animationSeeds.push(Math.random());
} }
shuffleArray(game.developmentCards); shuffleArray(game.developmentCards);