@gamepark/react-game 6.31.3 → 6.31.4

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.
@@ -29,7 +29,7 @@ var useFlatHistory = function () {
29
29
  var setup = (_a = (0, react_redux_1.useSelector)(function (state) { return state.setup; })) !== null && _a !== void 0 ? _a : {};
30
30
  var playedMoves = (0, react_redux_1.useSelector)(function (state) { return state.playedMoves; });
31
31
  var gameOver = (0, react_redux_1.useSelector)(function (state) { return state.gameOver; });
32
- var movesCount = (0, react_1.useRef)(0);
32
+ var moves = (0, react_1.useRef)([]);
33
33
  var rules = (0, react_1.useRef)();
34
34
  (0, react_1.useEffect)(function () {
35
35
  if (!rules.current && setup) {
@@ -51,9 +51,9 @@ var useFlatHistory = function () {
51
51
  }, [playedMoves]);
52
52
  (0, react_1.useEffect)(function () {
53
53
  var _a;
54
- var actualSize = movesCount.current;
55
54
  if (!playedMoves)
56
55
  return;
56
+ var actualSize = moves.current.length;
57
57
  if (actualSize < playedMoves.length) {
58
58
  var newMoves = playedMoves.slice(actualSize - playedMoves.length);
59
59
  var entries_1 = [];
@@ -67,18 +67,21 @@ var useFlatHistory = function () {
67
67
  setHistory(function (h) { return h.concat(entries_1); });
68
68
  }
69
69
  else if (actualSize > playedMoves.length) {
70
- var newPlayedMoveActionId_1 = new Set(playedMoves.map(function (m) { return m.action.id; }));
71
- var firstDeletedActionIndex_1 = history.findIndex(function (m) { return !newPlayedMoveActionId_1.has(m.action.id); });
72
- if (firstDeletedActionIndex_1 === -1)
73
- return; // The action which was undone did not generate any history entry
74
- var previousHistoryEntry_1 = firstDeletedActionIndex_1 > 0 ? history[firstDeletedActionIndex_1 - 1] : undefined;
75
- var previousGameState = previousHistoryEntry_1 ? previousHistoryEntry_1.game : setup;
76
- rules.current = new context.Rules(previousGameState);
77
- var movesToReplay = previousHistoryEntry_1 ?
78
- playedMoves.slice(1 + (0, findLastIndex_1.default)(playedMoves, function (move) {
79
- return move.action.id === previousHistoryEntry_1.action.id && move.consequenceIndex === previousHistoryEntry_1.consequenceIndex;
70
+ var firstIndexChange = moves.current.findIndex(function (currentMove, index) { var _a; return currentMove.action.id !== ((_a = playedMoves[index]) === null || _a === void 0 ? void 0 : _a.action.id); });
71
+ var invalidatedMoves_1 = moves.current.slice(firstIndexChange);
72
+ var lastValidHistoryIndex_1 = (0, findLastIndex_1.default)(history, function (moveHistory) { return !invalidatedMoves_1.some(function (move) { return move.action.id === moveHistory.action.id; }); });
73
+ var lastValidHistory_1 = lastValidHistoryIndex_1 !== -1 ? history[lastValidHistoryIndex_1] : undefined;
74
+ var previousGameState = lastValidHistory_1 ? lastValidHistory_1.game : setup;
75
+ rules.current = new context.Rules(JSON.parse(JSON.stringify(previousGameState)));
76
+ var movesToReplay = lastValidHistory_1 ?
77
+ playedMoves.slice((0, findLastIndex_1.default)(playedMoves, function (move) {
78
+ return move.action.id === lastValidHistory_1.action.id && move.consequenceIndex === lastValidHistory_1.consequenceIndex;
80
79
  }))
81
80
  : playedMoves;
81
+ if (lastValidHistory_1) {
82
+ var move = movesToReplay.shift();
83
+ rules.current.play(move.move, { local: move.action.local });
84
+ }
82
85
  var entries_2 = [];
83
86
  for (var _b = 0, movesToReplay_1 = movesToReplay; _b < movesToReplay_1.length; _b++) {
84
87
  var move = movesToReplay_1[_b];
@@ -87,9 +90,9 @@ var useFlatHistory = function () {
87
90
  entries_2.push(entry);
88
91
  rules.current.play(move.move, { local: move.action.local });
89
92
  }
90
- setHistory(function (h) { return h.slice(0, firstDeletedActionIndex_1).concat(entries_2); });
93
+ setHistory(function (h) { return h.slice(0, lastValidHistoryIndex_1 + 1).concat(entries_2); });
91
94
  }
92
- movesCount.current = playedMoves.length;
95
+ moves.current = playedMoves;
93
96
  }, [playedMoves]);
94
97
  return {
95
98
  history: history,
@@ -1 +1 @@
1
- {"version":3,"file":"useFlatHistory.js","sourceRoot":"","sources":["../../src/hooks/useFlatHistory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFlatHistory.js","sourceRoot":"","sources":["../../src/hooks/useFlatHistory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/react-game",
3
- "version": "6.31.3",
3
+ "version": "6.31.4",
4
4
  "description": "React components & tools to create a Board Game user interface for Game Park",
5
5
  "author": "Romain Fromi <romain@game-park.com> (https://game-park.com/)",
6
6
  "license": "ISC",