@gamepark/react-game 7.7.4 → 7.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/GameProvider/GameErrorBoundary.js +108 -108
- package/dist/components/GameProvider/GameInternalProviders.d.ts +6 -0
- package/dist/components/GameProvider/GameInternalProviders.js +10 -0
- package/dist/components/GameProvider/GameInternalProviders.js.map +1 -0
- package/dist/components/GameProvider/LogHistoryBridge.d.ts +7 -0
- package/dist/components/GameProvider/LogHistoryBridge.js +23 -0
- package/dist/components/GameProvider/LogHistoryBridge.js.map +1 -0
- package/dist/components/JournalTabs/History/History.js +52 -13
- package/dist/components/JournalTabs/History/History.js.map +1 -1
- package/dist/components/JournalTabs/History/LazyLogItem.d.ts +10 -0
- package/dist/components/JournalTabs/History/LazyLogItem.js +35 -0
- package/dist/components/JournalTabs/History/LazyLogItem.js.map +1 -0
- package/dist/components/JournalTabs/History/SetupLogItem.js +19 -19
- package/dist/components/JournalTabs/History/SharedIntersectionContext.d.ts +9 -0
- package/dist/components/JournalTabs/History/SharedIntersectionContext.js +36 -0
- package/dist/components/JournalTabs/History/SharedIntersectionContext.js.map +1 -0
- package/dist/components/JournalTabs/History/VirtualizedLogItem.d.ts +12 -0
- package/dist/components/JournalTabs/History/VirtualizedLogItem.js +6 -0
- package/dist/components/JournalTabs/History/VirtualizedLogItem.js.map +1 -0
- package/dist/components/Log/LogHistoryProvider.d.ts +7 -0
- package/dist/components/Log/LogHistoryProvider.js +22 -0
- package/dist/components/Log/LogHistoryProvider.js.map +1 -0
- package/dist/components/material/Dices/OctahedralDiceDescription.d.ts +48 -0
- package/dist/components/material/Dices/OctahedralDiceDescription.js +142 -0
- package/dist/components/material/Dices/OctahedralDiceDescription.js.map +1 -0
- package/dist/components/material/GameTable/DevToolEntry.d.ts +17 -0
- package/dist/components/material/GameTable/DevToolEntry.js +13 -0
- package/dist/components/material/GameTable/DevToolEntry.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/BotTool.d.ts +8 -0
- package/dist/components/material/GameTable/DevTools/BotTool.js +13 -0
- package/dist/components/material/GameTable/DevTools/BotTool.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/DevToolsStyles.d.ts +58 -0
- package/dist/components/material/GameTable/DevTools/DevToolsStyles.js +706 -0
- package/dist/components/material/GameTable/DevTools/DevToolsStyles.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/GamePanel.d.ts +1 -0
- package/dist/components/material/GameTable/DevTools/GamePanel.js +7 -179
- package/dist/components/material/GameTable/DevTools/GamePanel.js.map +1 -1
- package/dist/components/material/GameTable/DevTools/NewGameTool.d.ts +9 -0
- package/dist/components/material/GameTable/DevTools/NewGameTool.js +64 -0
- package/dist/components/material/GameTable/DevTools/NewGameTool.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/SwitchPlayerTool.d.ts +8 -0
- package/dist/components/material/GameTable/DevTools/SwitchPlayerTool.js +9 -0
- package/dist/components/material/GameTable/DevTools/SwitchPlayerTool.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/TutorialTool.d.ts +8 -0
- package/dist/components/material/GameTable/DevTools/TutorialTool.js +4 -0
- package/dist/components/material/GameTable/DevTools/TutorialTool.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/UndoTool.d.ts +8 -0
- package/dist/components/material/GameTable/DevTools/UndoTool.js +9 -0
- package/dist/components/material/GameTable/DevTools/UndoTool.js.map +1 -0
- package/dist/components/material/GameTable/DevTools/devtools.css.d.ts +24 -0
- package/dist/components/material/GameTable/DevTools/devtools.css.js +183 -0
- package/dist/components/material/GameTable/DevTools/devtools.css.js.map +1 -0
- package/dist/components/material/GameTable/DevToolsHub.d.ts +4 -21
- package/dist/components/material/GameTable/DevToolsHub.js +24 -830
- package/dist/components/material/GameTable/DevToolsHub.js.map +1 -1
- package/dist/components/material/GameTable/DevToolsStyles.d.ts +67 -0
- package/dist/components/material/GameTable/DevToolsStyles.js +752 -0
- package/dist/components/material/GameTable/DevToolsStyles.js.map +1 -0
- package/dist/components/material/GameTable/JsonHighlighter.d.ts +3 -0
- package/dist/components/material/GameTable/JsonHighlighter.js +37 -0
- package/dist/components/material/GameTable/JsonHighlighter.js.map +1 -0
- package/dist/components/material/sound/bellSound.d.ts +1 -0
- package/dist/components/material/sound/bellSound.js +2 -0
- package/dist/components/material/sound/bellSound.js.map +1 -0
- package/dist/components/material/sound/useYourTurnSound.d.ts +4 -0
- package/dist/components/material/sound/useYourTurnSound.js +34 -0
- package/dist/components/material/sound/useYourTurnSound.js.map +1 -0
- package/dist/css/backgroundCss.js +3 -3
- package/dist/css/cursorCss.js +6 -6
- package/dist/css/fadeIn.js +6 -6
- package/dist/css/shineEffect.js +28 -28
- package/dist/css/transformCss.js +4 -4
- package/dist/hooks/LogHistoryContext.d.ts +6 -0
- package/dist/hooks/LogHistoryContext.js +4 -0
- package/dist/hooks/LogHistoryContext.js.map +1 -0
- package/dist/hooks/flatHistoryEngine.d.ts +37 -0
- package/dist/hooks/flatHistoryEngine.js +101 -0
- package/dist/hooks/flatHistoryEngine.js.map +1 -0
- package/dist/hooks/useBackgroundTabHandler.d.ts +1 -0
- package/dist/hooks/useBackgroundTabHandler.js +38 -0
- package/dist/hooks/useBackgroundTabHandler.js.map +1 -0
- package/dist/hooks/useFastAnimationsOnReturn.d.ts +1 -0
- package/dist/hooks/useFastAnimationsOnReturn.js +38 -0
- package/dist/hooks/useFastAnimationsOnReturn.js.map +1 -0
- package/dist/hooks/useFlatHistory.js +120 -44
- package/dist/hooks/useFlatHistory.js.map +1 -1
- package/dist/locators/PileLocator.d.ts +5 -0
- package/dist/locators/PileLocator.js +9 -1
- package/dist/locators/PileLocator.js.map +1 -1
- package/package.json +80 -79
- package/dist/components/material/Wheel/WheelContent.d.ts +0 -13
- package/dist/components/material/Wheel/WheelContent.js +0 -37
- package/dist/components/material/Wheel/WheelContent.js.map +0 -1
- package/dist/hooks/useFailures.d.ts +0 -1
- package/dist/hooks/useFailures.js +0 -11
- package/dist/hooks/useFailures.js.map +0 -1
- package/dist/hooks/useWebP.d.ts +0 -1
- package/dist/hooks/useWebP.js +0 -13
- package/dist/hooks/useWebP.js.map +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export const CHECKPOINT_INTERVAL = 50;
|
|
2
|
+
/**
|
|
3
|
+
* Replays moves from the nearest checkpoint to produce the game state at a given move index.
|
|
4
|
+
*/
|
|
5
|
+
export const replayFromCheckpoint = (targetMoveIndex, checkpoints, allPlayedMoves, RulesClass, setup, gameOver, player, getAction) => {
|
|
6
|
+
let nearest;
|
|
7
|
+
for (let i = checkpoints.length - 1; i >= 0; i--) {
|
|
8
|
+
if (checkpoints[i].moveIndex <= targetMoveIndex) {
|
|
9
|
+
nearest = checkpoints[i];
|
|
10
|
+
break;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const startState = nearest ? nearest.gameState : setup;
|
|
14
|
+
const startIndex = nearest ? nearest.moveIndex : 0;
|
|
15
|
+
const tempRules = new RulesClass(JSON.parse(JSON.stringify(startState)), gameOver ? undefined : { player });
|
|
16
|
+
for (let i = startIndex; i < targetMoveIndex; i++) {
|
|
17
|
+
try {
|
|
18
|
+
const action = getAction(allPlayedMoves[i].actionId);
|
|
19
|
+
tempRules.play(JSON.parse(JSON.stringify(allPlayedMoves[i].move)), { local: action?.local });
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error('Error replaying move for lazy game state', error);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return JSON.parse(JSON.stringify(tempRules.game));
|
|
26
|
+
};
|
|
27
|
+
export const saveCheckpointIfNeeded = (engine, moveIndex) => {
|
|
28
|
+
if (moveIndex > 0 && moveIndex % CHECKPOINT_INTERVAL === 0) {
|
|
29
|
+
engine.checkpoints.push({
|
|
30
|
+
moveIndex,
|
|
31
|
+
gameState: JSON.parse(JSON.stringify(engine.rules.game))
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
export const playMoveOnEngine = (engine, move, getAction) => {
|
|
36
|
+
try {
|
|
37
|
+
const action = getAction(move.actionId);
|
|
38
|
+
engine.rules.play(JSON.parse(JSON.stringify(move.move)), { local: action?.local });
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error('Error while playing a move in useFlatHistory', engine.rules.game, move, error);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
export const buildActionMap = (actions) => {
|
|
45
|
+
const map = new Map();
|
|
46
|
+
if (actions) {
|
|
47
|
+
for (const action of actions) {
|
|
48
|
+
if (action.id)
|
|
49
|
+
map.set(action.id, action);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return map;
|
|
53
|
+
};
|
|
54
|
+
export const getMoveEntry = (playedMove, moveIndex, engine, allPlayedMoves, ctx) => {
|
|
55
|
+
const { move, consequenceIndex } = playedMove;
|
|
56
|
+
const action = ctx.getAction(playedMove.actionId);
|
|
57
|
+
if (!action)
|
|
58
|
+
return undefined;
|
|
59
|
+
let cachedGame = undefined;
|
|
60
|
+
const moveComponentContext = {
|
|
61
|
+
move, consequenceIndex, action,
|
|
62
|
+
get game() {
|
|
63
|
+
if (cachedGame === undefined) {
|
|
64
|
+
cachedGame = JSON.parse(JSON.stringify(engine.rules.game));
|
|
65
|
+
}
|
|
66
|
+
return cachedGame;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const description = ctx.logs?.getMovePlayedLogDescription(move, moveComponentContext);
|
|
70
|
+
if (!description?.Component)
|
|
71
|
+
return;
|
|
72
|
+
const capturedMoveIndex = moveIndex;
|
|
73
|
+
const capturedCheckpoints = [...engine.checkpoints];
|
|
74
|
+
return {
|
|
75
|
+
...description, move, consequenceIndex, action,
|
|
76
|
+
get game() {
|
|
77
|
+
if (cachedGame === undefined) {
|
|
78
|
+
cachedGame = replayFromCheckpoint(capturedMoveIndex, capturedCheckpoints, allPlayedMoves, ctx.RulesClass, ctx.setup, ctx.gameOver, ctx.player, ctx.getAction);
|
|
79
|
+
}
|
|
80
|
+
return cachedGame;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Processes a list of moves synchronously, returning history entries.
|
|
86
|
+
* This is the core logic extracted from the hook for testability.
|
|
87
|
+
*/
|
|
88
|
+
export const processMovesSync = (moves, startIndex, engine, allPlayedMoves, ctx) => {
|
|
89
|
+
const entries = [];
|
|
90
|
+
let moveIndex = startIndex;
|
|
91
|
+
for (const move of moves) {
|
|
92
|
+
const entry = getMoveEntry(move, moveIndex, engine, allPlayedMoves, ctx);
|
|
93
|
+
if (entry)
|
|
94
|
+
entries.push(entry);
|
|
95
|
+
playMoveOnEngine(engine, move, ctx.getAction);
|
|
96
|
+
saveCheckpointIfNeeded(engine, moveIndex + 1);
|
|
97
|
+
moveIndex++;
|
|
98
|
+
}
|
|
99
|
+
return entries;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=flatHistoryEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatHistoryEngine.js","sourceRoot":"","sources":["../../src/hooks/flatHistoryEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useBackgroundTabHandler: () => void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isActionToAnimate, setAnimationsSpeed, store } from '@gamepark/react-client';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
const SKIP_SPEED = 0;
|
|
4
|
+
export const useBackgroundTabHandler = () => {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
let speededUp = false;
|
|
7
|
+
const onVisibilityChange = () => {
|
|
8
|
+
if (document.visibilityState !== 'visible')
|
|
9
|
+
return;
|
|
10
|
+
const { actions } = store.getState();
|
|
11
|
+
if (!actions)
|
|
12
|
+
return;
|
|
13
|
+
const hasPendingAnimations = actions.some(a => a.animation || isActionToAnimate(a));
|
|
14
|
+
if (hasPendingAnimations) {
|
|
15
|
+
speededUp = true;
|
|
16
|
+
store.dispatch(setAnimationsSpeed(SKIP_SPEED));
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const unsubscribe = store.subscribe(() => {
|
|
20
|
+
if (!speededUp)
|
|
21
|
+
return;
|
|
22
|
+
const { actions } = store.getState();
|
|
23
|
+
if (!actions)
|
|
24
|
+
return;
|
|
25
|
+
const hasPendingAnimations = actions.some(a => a.animation || isActionToAnimate(a));
|
|
26
|
+
if (!hasPendingAnimations) {
|
|
27
|
+
speededUp = false;
|
|
28
|
+
store.dispatch(setAnimationsSpeed(1));
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
32
|
+
return () => {
|
|
33
|
+
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
34
|
+
unsubscribe();
|
|
35
|
+
};
|
|
36
|
+
}, []);
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=useBackgroundTabHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackgroundTabHandler.js","sourceRoot":"","sources":["../../src/hooks/useBackgroundTabHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,UAAU,GAAG,CAAC,CAAA;AAEpB,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QAErB,MAAM,kBAAkB,GAAG,GAAG,EAAE;YAC9B,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;gBAAE,OAAM;YAClD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YACpC,IAAI,CAAC,OAAO;gBAAE,OAAM;YAEpB,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;YACnF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,SAAS,GAAG,IAAI,CAAA;gBAChB,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,SAAS;gBAAE,OAAM;YACtB,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YACpC,IAAI,CAAC,OAAO;gBAAE,OAAM;YAEpB,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;YACnF,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,SAAS,GAAG,KAAK,CAAA;gBACjB,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACjE,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;YACpE,WAAW,EAAE,CAAA;QACf,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useFastAnimationsOnReturn: () => void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isActionToAnimate, setAnimationsSpeed, store } from '@gamepark/react-client';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
const SKIP_SPEED = 0;
|
|
4
|
+
export const useFastAnimationsOnReturn = () => {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
let speededUp = false;
|
|
7
|
+
const onVisibilityChange = () => {
|
|
8
|
+
if (document.visibilityState !== 'visible')
|
|
9
|
+
return;
|
|
10
|
+
const { actions } = store.getState();
|
|
11
|
+
if (!actions)
|
|
12
|
+
return;
|
|
13
|
+
const hasPendingAnimations = actions.some(a => a.animation || isActionToAnimate(a));
|
|
14
|
+
if (hasPendingAnimations) {
|
|
15
|
+
speededUp = true;
|
|
16
|
+
store.dispatch(setAnimationsSpeed(SKIP_SPEED));
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const unsubscribe = store.subscribe(() => {
|
|
20
|
+
if (!speededUp)
|
|
21
|
+
return;
|
|
22
|
+
const { actions } = store.getState();
|
|
23
|
+
if (!actions)
|
|
24
|
+
return;
|
|
25
|
+
const hasPendingAnimations = actions.some(a => a.animation || isActionToAnimate(a));
|
|
26
|
+
if (!hasPendingAnimations) {
|
|
27
|
+
speededUp = false;
|
|
28
|
+
store.dispatch(setAnimationsSpeed(1));
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
32
|
+
return () => {
|
|
33
|
+
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
34
|
+
unsubscribe();
|
|
35
|
+
};
|
|
36
|
+
}, []);
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=useFastAnimationsOnReturn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFastAnimationsOnReturn.js","sourceRoot":"","sources":["../../src/hooks/useFastAnimationsOnReturn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,UAAU,GAAG,CAAC,CAAA;AAEpB,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QAErB,MAAM,kBAAkB,GAAG,GAAG,EAAE;YAC9B,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;gBAAE,OAAM;YAClD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YACpC,IAAI,CAAC,OAAO;gBAAE,OAAM;YAEpB,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;YACnF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,SAAS,GAAG,IAAI,CAAA;gBAChB,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,SAAS;gBAAE,OAAM;YACtB,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YACpC,IAAI,CAAC,OAAO;gBAAE,OAAM;YAEpB,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;YACnF,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,SAAS,GAAG,KAAK,CAAA;gBACjB,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACjE,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;YACpE,WAAW,EAAE,CAAA;QACf,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { useGameSelector } from '@gamepark/react-client';
|
|
2
2
|
import { findLastIndex } from 'es-toolkit/compat';
|
|
3
|
-
import { useContext, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { gameContext } from '../components';
|
|
5
|
+
import { buildActionMap, getMoveEntry, playMoveOnEngine, processMovesSync, saveCheckpointIfNeeded } from './flatHistoryEngine';
|
|
5
6
|
import { usePlayerId } from './usePlayerId';
|
|
7
|
+
const BATCH_TIME_BUDGET_MS = 8; // stay under 1 frame (16ms), leave room for rendering
|
|
8
|
+
// Polyfill for Safari
|
|
9
|
+
const scheduleIdle = typeof requestIdleCallback === 'function'
|
|
10
|
+
? requestIdleCallback
|
|
11
|
+
: (cb) => setTimeout(() => cb({ timeRemaining: () => BATCH_TIME_BUDGET_MS }), 1);
|
|
12
|
+
const cancelIdle = typeof cancelIdleCallback === 'function'
|
|
13
|
+
? cancelIdleCallback
|
|
14
|
+
: (id) => clearTimeout(id);
|
|
6
15
|
export const useFlatHistory = () => {
|
|
7
16
|
const context = useContext(gameContext);
|
|
8
17
|
const player = usePlayerId();
|
|
@@ -12,32 +21,67 @@ export const useFlatHistory = () => {
|
|
|
12
21
|
const playedMoves = useGameSelector((state) => state.playedMoves);
|
|
13
22
|
const gameOver = useGameSelector((state) => state.gameOver);
|
|
14
23
|
const actions = useGameSelector((state) => state.actions);
|
|
24
|
+
const actionMap = useMemo(() => buildActionMap(actions), [actions]);
|
|
25
|
+
const getAction = (actionId) => actionMap.get(actionId);
|
|
15
26
|
const moves = useRef([]);
|
|
16
|
-
const
|
|
27
|
+
const engine = useRef(null);
|
|
28
|
+
const playedMovesRef = useRef([]);
|
|
29
|
+
const idleCallbackId = useRef(null);
|
|
30
|
+
const processingIndex = useRef(0);
|
|
31
|
+
const pendingEntries = useRef([]);
|
|
32
|
+
const pendingMoves = useRef([]);
|
|
17
33
|
useEffect(() => {
|
|
18
|
-
if (!
|
|
19
|
-
|
|
34
|
+
if (!engine.current && setup) {
|
|
35
|
+
engine.current = {
|
|
36
|
+
rules: new context.Rules(JSON.parse(JSON.stringify(setup)), gameOver ? undefined : { player }),
|
|
37
|
+
checkpoints: [],
|
|
38
|
+
movesProcessed: 0
|
|
39
|
+
};
|
|
20
40
|
}
|
|
21
41
|
}, [setup]);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
42
|
+
const makeLogContext = () => ({
|
|
43
|
+
logs: context.logs,
|
|
44
|
+
RulesClass: context.Rules,
|
|
45
|
+
setup,
|
|
46
|
+
gameOver,
|
|
47
|
+
player,
|
|
48
|
+
getAction
|
|
49
|
+
});
|
|
50
|
+
const processBatch = (deadline) => {
|
|
51
|
+
if (!engine.current)
|
|
31
52
|
return;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
53
|
+
const movesToProcess = pendingMoves.current;
|
|
54
|
+
const ctx = makeLogContext();
|
|
55
|
+
let i = processingIndex.current;
|
|
56
|
+
while (i < movesToProcess.length && deadline.timeRemaining() > 1) {
|
|
57
|
+
const move = movesToProcess[i];
|
|
58
|
+
const entry = getMoveEntry(move, moves.current.length + i, engine.current, playedMovesRef.current, ctx);
|
|
59
|
+
if (entry)
|
|
60
|
+
pendingEntries.current.push(entry);
|
|
61
|
+
playMoveOnEngine(engine.current, move, getAction);
|
|
62
|
+
saveCheckpointIfNeeded(engine.current, moves.current.length + i + 1);
|
|
63
|
+
i++;
|
|
38
64
|
}
|
|
39
|
-
|
|
40
|
-
|
|
65
|
+
processingIndex.current = i;
|
|
66
|
+
if (i < movesToProcess.length) {
|
|
67
|
+
if (pendingEntries.current.length > 0) {
|
|
68
|
+
const entriesToFlush = pendingEntries.current;
|
|
69
|
+
pendingEntries.current = [];
|
|
70
|
+
setHistory((h) => h.concat(entriesToFlush));
|
|
71
|
+
}
|
|
72
|
+
idleCallbackId.current = scheduleIdle(processBatch);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
if (pendingEntries.current.length > 0) {
|
|
76
|
+
const entriesToFlush = pendingEntries.current;
|
|
77
|
+
pendingEntries.current = [];
|
|
78
|
+
setHistory((h) => h.concat(entriesToFlush));
|
|
79
|
+
}
|
|
80
|
+
const processedCount = movesToProcess.length;
|
|
81
|
+
moves.current = playedMovesRef.current.slice(0, moves.current.length + processedCount);
|
|
82
|
+
idleCallbackId.current = null;
|
|
83
|
+
pendingMoves.current = [];
|
|
84
|
+
processingIndex.current = 0;
|
|
41
85
|
}
|
|
42
86
|
};
|
|
43
87
|
useEffect(() => {
|
|
@@ -45,45 +89,77 @@ export const useFlatHistory = () => {
|
|
|
45
89
|
setLoaded(true);
|
|
46
90
|
}, [playedMoves]);
|
|
47
91
|
useEffect(() => {
|
|
48
|
-
if (!playedMoves)
|
|
92
|
+
if (!playedMoves || !engine.current)
|
|
49
93
|
return;
|
|
94
|
+
playedMovesRef.current = playedMoves;
|
|
50
95
|
const actualSize = moves.current.length;
|
|
96
|
+
const ctx = makeLogContext();
|
|
51
97
|
if (actualSize < playedMoves.length) {
|
|
98
|
+
if (idleCallbackId.current !== null) {
|
|
99
|
+
cancelIdle(idleCallbackId.current);
|
|
100
|
+
idleCallbackId.current = null;
|
|
101
|
+
}
|
|
52
102
|
const newMoves = playedMoves.slice(actualSize - playedMoves.length);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
103
|
+
if (newMoves.length <= 20) {
|
|
104
|
+
const entries = processMovesSync(newMoves, actualSize, engine.current, playedMovesRef.current, ctx);
|
|
105
|
+
setHistory((h) => h.concat(entries));
|
|
106
|
+
moves.current = playedMoves;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
pendingMoves.current = newMoves;
|
|
110
|
+
pendingEntries.current = [];
|
|
111
|
+
processingIndex.current = 0;
|
|
112
|
+
idleCallbackId.current = scheduleIdle(processBatch);
|
|
59
113
|
}
|
|
60
|
-
setHistory((h) => h.concat(entries));
|
|
61
114
|
}
|
|
62
115
|
else if (actualSize > playedMoves.length) {
|
|
116
|
+
if (idleCallbackId.current !== null) {
|
|
117
|
+
cancelIdle(idleCallbackId.current);
|
|
118
|
+
idleCallbackId.current = null;
|
|
119
|
+
}
|
|
63
120
|
const firstIndexChange = moves.current.findIndex((currentMove, index) => currentMove.actionId !== playedMoves[index]?.actionId);
|
|
64
121
|
const invalidatedMoves = moves.current.slice(firstIndexChange);
|
|
65
122
|
const lastValidHistoryIndex = findLastIndex(history, (moveHistory) => !invalidatedMoves.some((move) => move.actionId === moveHistory.action.id));
|
|
123
|
+
// Use the nearest checkpoint at or before the invalidation point instead of replaying from a history entry's game state
|
|
124
|
+
const validCheckpoints = engine.current.checkpoints.filter((cp) => cp.moveIndex <= firstIndexChange);
|
|
125
|
+
const nearestCheckpoint = validCheckpoints.length > 0 ? validCheckpoints[validCheckpoints.length - 1] : undefined;
|
|
126
|
+
const restartState = nearestCheckpoint ? nearestCheckpoint.gameState : setup;
|
|
127
|
+
const restartIndex = nearestCheckpoint ? nearestCheckpoint.moveIndex : 0;
|
|
128
|
+
engine.current.checkpoints = validCheckpoints;
|
|
129
|
+
engine.current.rules = new context.Rules(JSON.parse(JSON.stringify(restartState)), gameOver ? undefined : { player });
|
|
130
|
+
// Replay from checkpoint to the start of remaining moves
|
|
131
|
+
for (let i = restartIndex; i < firstIndexChange; i++) {
|
|
132
|
+
playMoveOnEngine(engine.current, playedMoves[i], getAction);
|
|
133
|
+
}
|
|
134
|
+
// Find the last valid history entry that's still in the new playedMoves
|
|
66
135
|
const lastValidHistory = lastValidHistoryIndex !== -1 ? history[lastValidHistoryIndex] : undefined;
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const move = movesToReplay.shift();
|
|
74
|
-
playMove(move);
|
|
136
|
+
const replayStartIndex = lastValidHistory
|
|
137
|
+
? findLastIndex(playedMoves, move => move.actionId === lastValidHistory.action.id && move.consequenceIndex === lastValidHistory.consequenceIndex)
|
|
138
|
+
: firstIndexChange;
|
|
139
|
+
// Replay moves between firstIndexChange and replayStartIndex (these have valid history entries already)
|
|
140
|
+
for (let i = firstIndexChange; i < replayStartIndex; i++) {
|
|
141
|
+
playMoveOnEngine(engine.current, playedMoves[i], getAction);
|
|
75
142
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (entry)
|
|
80
|
-
entries.push(entry);
|
|
81
|
-
playMove(move);
|
|
143
|
+
// Skip the last valid history move itself
|
|
144
|
+
if (lastValidHistory && replayStartIndex >= 0) {
|
|
145
|
+
playMoveOnEngine(engine.current, playedMoves[replayStartIndex], getAction);
|
|
82
146
|
}
|
|
147
|
+
// Process remaining moves for new entries
|
|
148
|
+
const newMovesStart = lastValidHistory ? replayStartIndex + 1 : firstIndexChange;
|
|
149
|
+
const movesToProcess = playedMoves.slice(newMovesStart);
|
|
150
|
+
const entries = processMovesSync(movesToProcess, newMovesStart, engine.current, playedMovesRef.current, ctx);
|
|
83
151
|
setHistory((h) => h.slice(0, lastValidHistoryIndex + 1).concat(entries));
|
|
152
|
+
moves.current = playedMoves;
|
|
84
153
|
}
|
|
85
|
-
moves.current = playedMoves;
|
|
86
154
|
}, [playedMoves]);
|
|
155
|
+
// Cleanup on unmount
|
|
156
|
+
useEffect(() => {
|
|
157
|
+
return () => {
|
|
158
|
+
if (idleCallbackId.current !== null) {
|
|
159
|
+
cancelIdle(idleCallbackId.current);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}, []);
|
|
87
163
|
return {
|
|
88
164
|
history,
|
|
89
165
|
isLoaded
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFlatHistory.js","sourceRoot":"","sources":["../../src/hooks/useFlatHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useFlatHistory.js","sourceRoot":"","sources":["../../src/hooks/useFlatHistory.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,11 @@ export declare class PileLocator<P extends number = number, M extends number = n
|
|
|
34
34
|
* @returns the maximum angle of rotation of the items
|
|
35
35
|
*/
|
|
36
36
|
getMaxAngle(_location: Location<P, L>, _context: MaterialContext<P, M, L, R, V>): number;
|
|
37
|
+
/**
|
|
38
|
+
* When true, the z-index is derived from the item's Y offset instead of the item index.
|
|
39
|
+
* Items with a higher Y appear on top, simulating depth perspective.
|
|
40
|
+
*/
|
|
41
|
+
zFromY: boolean;
|
|
37
42
|
minimumDistance: number;
|
|
38
43
|
/**
|
|
39
44
|
* Identifier of the pile. By default, distinct location areas (different player, id or parent) forms distinct piles.
|
|
@@ -40,6 +40,11 @@ export class PileLocator extends Locator {
|
|
|
40
40
|
getMaxAngle(_location, _context) {
|
|
41
41
|
return this.maxAngle;
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* When true, the z-index is derived from the item's Y offset instead of the item index.
|
|
45
|
+
* Items with a higher Y appear on top, simulating depth perspective.
|
|
46
|
+
*/
|
|
47
|
+
zFromY = false;
|
|
43
48
|
minimumDistance = 0;
|
|
44
49
|
/**
|
|
45
50
|
* Identifier of the pile. By default, distinct location areas (different player, id or parent) forms distinct piles.
|
|
@@ -72,7 +77,10 @@ export class PileLocator extends Locator {
|
|
|
72
77
|
}
|
|
73
78
|
}
|
|
74
79
|
const itemPosition = pilePositions.get(itemUniqueId);
|
|
75
|
-
|
|
80
|
+
const radius = this.getRadius(location, context);
|
|
81
|
+
const maxRadius = typeof radius === 'number' ? radius : radius.y;
|
|
82
|
+
const itemZ = this.zFromY ? (maxRadius > 0 ? (itemPosition.y + maxRadius) / (2 * maxRadius) : 0) : index * 0.05;
|
|
83
|
+
return { x: x + itemPosition.x, y: y + itemPosition.y, z: z + itemZ };
|
|
76
84
|
}
|
|
77
85
|
generateItemPosition(item, context) {
|
|
78
86
|
const distance = Math.random();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PileLocator.js","sourceRoot":"","sources":["../../src/locators/PileLocator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PileLocator.js","sourceRoot":"","sources":["../../src/locators/PileLocator.ts"],"names":[],"mappings":"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"}
|