@gamelearn/arcade-components 1.24.4 → 1.26.0
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/chained-image-click-puzzle-component/components/CurrentImagePuzzle.js +5 -2
- package/dist/components/dialog-component/components/DialogComponent.js +38 -25
- package/dist/components/hanged-puzzle-component/components/HangedPuzzleComponent.js +67 -19
- package/dist/components/url-component/components/UrlComponent.js +1 -1
- package/package.json +3 -3
package/dist/components/chained-image-click-puzzle-component/components/CurrentImagePuzzle.js
CHANGED
|
@@ -64,6 +64,7 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
64
64
|
index = _useState2[0],
|
|
65
65
|
setIndex = _useState2[1];
|
|
66
66
|
|
|
67
|
+
var resolvedItems = (0, _react.useRef)({});
|
|
67
68
|
var puzzleId = "chained-image-click-puzzle_".concat(index, "_").concat(nodeId);
|
|
68
69
|
|
|
69
70
|
var _soundActions = _slicedToArray(soundActions, 1),
|
|
@@ -152,7 +153,8 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
152
153
|
action: 'resolve',
|
|
153
154
|
payload: {
|
|
154
155
|
element: puzzleId,
|
|
155
|
-
rewards: info.resolve.rewards
|
|
156
|
+
rewards: info.resolve.rewards,
|
|
157
|
+
finish: index + 1 >= list.length
|
|
156
158
|
}
|
|
157
159
|
});
|
|
158
160
|
};
|
|
@@ -163,8 +165,9 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
163
165
|
}));
|
|
164
166
|
}, [info, setInfo, puzzleId]);
|
|
165
167
|
(0, _react.useEffect)(function () {
|
|
166
|
-
if (currentPuzzleStatus) {
|
|
168
|
+
if (currentPuzzleStatus && !resolvedItems.current[puzzleId]) {
|
|
167
169
|
onComplete([], true, true);
|
|
170
|
+
resolvedItems.current[puzzleId] = true;
|
|
168
171
|
}
|
|
169
172
|
}, [onComplete, puzzleId, currentPuzzleStatus]);
|
|
170
173
|
return /*#__PURE__*/_react.default.createElement(_imageClickWrapperComponent.default, _extends({
|
|
@@ -382,7 +382,36 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
}, [edges, isBranched, lines, mounted]);
|
|
385
|
+
}, [edges, isBranched, lines, mounted]);
|
|
386
|
+
|
|
387
|
+
var moveBubble = function moveBubble(element, target, showArrowTop) {
|
|
388
|
+
element.updateMatrix();
|
|
389
|
+
element.updateMatrixWorld();
|
|
390
|
+
var head = element.getObjectByName('Head_M');
|
|
391
|
+
head.updateMatrix();
|
|
392
|
+
head.updateMatrixWorld();
|
|
393
|
+
head.getWorldPosition(target.position);
|
|
394
|
+
target.applyQuaternion(camera.quaternion);
|
|
395
|
+
var distance = camera.position.distanceTo(target.position);
|
|
396
|
+
var staticDisplay = distance > 70 && !zoomInActor && !showArrowTop;
|
|
397
|
+
target.translateY(staticDisplay || showArrowTop ? 0 : 2); // Detectar posicion de personaje a izq o derecha de pantalla
|
|
398
|
+
|
|
399
|
+
var vector = new _three.Vector3();
|
|
400
|
+
vector.setFromMatrixPosition(head.matrixWorld);
|
|
401
|
+
var p = vector.project(defaultCamera);
|
|
402
|
+
target.translateX(headSize);
|
|
403
|
+
var isLeft = p.x < 0;
|
|
404
|
+
messagePosition.current = {
|
|
405
|
+
pos: target.position.toArray(),
|
|
406
|
+
child: head,
|
|
407
|
+
parent: element,
|
|
408
|
+
isLeft: isLeft
|
|
409
|
+
};
|
|
410
|
+
return {
|
|
411
|
+
distance: distance
|
|
412
|
+
};
|
|
413
|
+
}; // Position bubble over talking character/and switch emotions
|
|
414
|
+
|
|
386
415
|
|
|
387
416
|
(0, _react.useEffect)(function () {
|
|
388
417
|
if (isDecision) {
|
|
@@ -450,29 +479,8 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
450
479
|
setTimeout(function () {
|
|
451
480
|
if (talkingCharacter.uid === element.uid) {
|
|
452
481
|
var showArrowTop = talkingCharacter.text.length > maxCharacterToSwitch;
|
|
453
|
-
element.updateMatrix();
|
|
454
|
-
element.updateMatrixWorld();
|
|
455
|
-
var head = element.getObjectByName('Head_M');
|
|
456
482
|
var target = new _three.Object3D();
|
|
457
|
-
|
|
458
|
-
head.updateMatrixWorld();
|
|
459
|
-
head.getWorldPosition(target.position);
|
|
460
|
-
target.applyQuaternion(camera.quaternion);
|
|
461
|
-
var distance = camera.position.distanceTo(target.position);
|
|
462
|
-
var staticDisplay = distance > 70 && !zoomInActor && !showArrowTop;
|
|
463
|
-
target.translateY(staticDisplay || showArrowTop ? 0 : 3); // Detectar posicion de personaje a izq o derecha de pantalla
|
|
464
|
-
|
|
465
|
-
var vector = new _three.Vector3();
|
|
466
|
-
vector.setFromMatrixPosition(head.matrixWorld);
|
|
467
|
-
var p = vector.project(defaultCamera);
|
|
468
|
-
target.translateX(headSize);
|
|
469
|
-
var isLeft = p.x < 0;
|
|
470
|
-
messagePosition.current = {
|
|
471
|
-
pos: target.position.toArray(),
|
|
472
|
-
child: head,
|
|
473
|
-
parent: element,
|
|
474
|
-
isLeft: isLeft
|
|
475
|
-
};
|
|
483
|
+
moveBubble(element, target, showArrowTop);
|
|
476
484
|
|
|
477
485
|
if (zoomInActor) {
|
|
478
486
|
setAnimationRunning(true);
|
|
@@ -482,7 +490,9 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
482
490
|
setTimeout(function () {
|
|
483
491
|
var _talkingCharacter$cha;
|
|
484
492
|
|
|
485
|
-
|
|
493
|
+
var _moveBubble = moveBubble(element, target, showArrowTop),
|
|
494
|
+
distance = _moveBubble.distance;
|
|
495
|
+
|
|
486
496
|
setCurrentMessage({
|
|
487
497
|
text: talkingCharacter.text,
|
|
488
498
|
name: talkingCharacter.alias || ((_talkingCharacter$cha = talkingCharacter.character) === null || _talkingCharacter$cha === void 0 ? void 0 : _talkingCharacter$cha.name),
|
|
@@ -571,7 +581,9 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
571
581
|
var y = bubbleRect.y - bubbleRect.height;
|
|
572
582
|
|
|
573
583
|
if (!messagePosition.current.isLeft || (x < 0 || x > window.innerWidth) && currentMessage.inScene) {
|
|
574
|
-
var
|
|
584
|
+
var _messagePosition$curr = messagePosition.current,
|
|
585
|
+
child = _messagePosition$curr.child,
|
|
586
|
+
parent = _messagePosition$curr.parent;
|
|
575
587
|
|
|
576
588
|
if (child) {
|
|
577
589
|
var target = new _three.Object3D();
|
|
@@ -579,6 +591,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
579
591
|
target.applyQuaternion(camera.quaternion);
|
|
580
592
|
groupRef.current.position.copy(target.position);
|
|
581
593
|
groupRef.current.updateMatrixWorld();
|
|
594
|
+
moveBubble(parent, target, false);
|
|
582
595
|
var divider = isMobile ? 10 : 6;
|
|
583
596
|
var distanceX = bubbleRect.width + bubbleRect.width / divider;
|
|
584
597
|
bubbleRef.current.parentNode.style.transform = "translate3d(-".concat(distanceX, "px, -").concat(bubbleRect.height, "px, 0px)");
|
|
@@ -50,6 +50,7 @@ var MAX_EXTRA_LETTERS = 8;
|
|
|
50
50
|
|
|
51
51
|
var AnswerPanel = function AnswerPanel(_ref) {
|
|
52
52
|
var answer = _ref.answer,
|
|
53
|
+
flickerPosition = _ref.flickerPosition,
|
|
53
54
|
_ref$show = _ref.show,
|
|
54
55
|
show = _ref$show === void 0 ? false : _ref$show;
|
|
55
56
|
var words = [];
|
|
@@ -64,6 +65,8 @@ var AnswerPanel = function AnswerPanel(_ref) {
|
|
|
64
65
|
if (a.char === ' ') {
|
|
65
66
|
wordIndex += 1;
|
|
66
67
|
}
|
|
68
|
+
|
|
69
|
+
a.positionInitial = a.index;
|
|
67
70
|
});
|
|
68
71
|
return words.map(function (word, index) {
|
|
69
72
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -84,7 +87,7 @@ var AnswerPanel = function AnswerPanel(_ref) {
|
|
|
84
87
|
fixed = _ref3.fixed;
|
|
85
88
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
86
89
|
key: "".concat(char + i),
|
|
87
|
-
className: "puzzle--hanged__letter ".concat(!fixed ? 'active' : '')
|
|
90
|
+
className: "puzzle--hanged__letter ".concat(!fixed ? 'active' : '', " ").concat(word[i].positionInitial === flickerPosition ? 'fakeFocus' : '')
|
|
88
91
|
}, char);
|
|
89
92
|
}));
|
|
90
93
|
});
|
|
@@ -111,40 +114,50 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
111
114
|
|
|
112
115
|
var imgURL = ((_image$img = image.img) === null || _image$img === void 0 ? void 0 : _image$img.url) || defaultImage;
|
|
113
116
|
|
|
114
|
-
var _useState = (0, _react.useState)(
|
|
117
|
+
var _useState = (0, _react.useState)(0),
|
|
115
118
|
_useState2 = _slicedToArray(_useState, 2),
|
|
116
|
-
|
|
117
|
-
|
|
119
|
+
flickerPosition = _useState2[0],
|
|
120
|
+
setFlickerPosition = _useState2[1];
|
|
118
121
|
|
|
119
122
|
var _useState3 = (0, _react.useState)(false),
|
|
120
123
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
playerHasFailAtLeastOneTime = _useState4[0],
|
|
125
|
+
setPlayerHasFailAtLeastOneTime = _useState4[1];
|
|
123
126
|
|
|
124
127
|
var _useState5 = (0, _react.useState)([]),
|
|
125
128
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
poolLetters = _useState6[0],
|
|
130
|
+
setPoolLetters = _useState6[1];
|
|
128
131
|
|
|
129
|
-
var _useState7 = (0, _react.useState)(
|
|
132
|
+
var _useState7 = (0, _react.useState)(false),
|
|
130
133
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
mounted = _useState8[0],
|
|
135
|
+
setMounted = _useState8[1];
|
|
133
136
|
|
|
134
|
-
var _useState9 = (0, _react.useState)(
|
|
137
|
+
var _useState9 = (0, _react.useState)([]),
|
|
135
138
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
resolvedAnswer = _useState10[0],
|
|
140
|
+
setAnswer = _useState10[1];
|
|
138
141
|
|
|
139
|
-
var _useState11 = (0, _react.useState)(
|
|
142
|
+
var _useState11 = (0, _react.useState)(''),
|
|
140
143
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
resolvedClass = _useState12[0],
|
|
145
|
+
setResolveClass = _useState12[1];
|
|
143
146
|
|
|
144
147
|
var _useState13 = (0, _react.useState)(false),
|
|
145
148
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
disabled = _useState14[0],
|
|
150
|
+
setDisable = _useState14[1];
|
|
151
|
+
|
|
152
|
+
var _useState15 = (0, _react.useState)([]),
|
|
153
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
154
|
+
accRewards = _useState16[0],
|
|
155
|
+
setRewards = _useState16[1];
|
|
156
|
+
|
|
157
|
+
var _useState17 = (0, _react.useState)(false),
|
|
158
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
159
|
+
showCorrectSolution = _useState18[0],
|
|
160
|
+
setCorrectSolution = _useState18[1];
|
|
148
161
|
|
|
149
162
|
var translatedAnswer = answer.toUpperCase().split('');
|
|
150
163
|
var answerPanel = translatedAnswer.filter(function (char) {
|
|
@@ -258,6 +271,10 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
258
271
|
});
|
|
259
272
|
setPoolLetters(restoredPool);
|
|
260
273
|
setAnswer(newAnswer);
|
|
274
|
+
var newCursorPosition = newAnswer.find(function (el) {
|
|
275
|
+
return el.char === '';
|
|
276
|
+
});
|
|
277
|
+
setFlickerPosition(newCursorPosition.index);
|
|
261
278
|
};
|
|
262
279
|
|
|
263
280
|
var addCharacter = function addCharacter(character, index) {
|
|
@@ -280,12 +297,36 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
280
297
|
}).length;
|
|
281
298
|
setPoolLetters(newPool);
|
|
282
299
|
setAnswer(newAnswer);
|
|
300
|
+
getCursorPosition();
|
|
283
301
|
|
|
284
302
|
if (responsedChar === resolvedAnswer.length) {
|
|
285
303
|
resolvePuzzle(newAnswer, newPool);
|
|
286
304
|
}
|
|
287
305
|
};
|
|
288
306
|
|
|
307
|
+
var getCursorPosition = function getCursorPosition() {
|
|
308
|
+
if (!playerHasFailAtLeastOneTime) {
|
|
309
|
+
var _resolvedAnswer;
|
|
310
|
+
|
|
311
|
+
var cursorPosition = resolvedAnswer.find(function (el) {
|
|
312
|
+
return el.char === '';
|
|
313
|
+
});
|
|
314
|
+
setFlickerPosition(cursorPosition.index + 1);
|
|
315
|
+
|
|
316
|
+
if (((_resolvedAnswer = resolvedAnswer[cursorPosition.index + 1]) === null || _resolvedAnswer === void 0 ? void 0 : _resolvedAnswer.letter) === ' ') {
|
|
317
|
+
setFlickerPosition(cursorPosition.index + 2);
|
|
318
|
+
}
|
|
319
|
+
} else {
|
|
320
|
+
var _cursorPosition = resolvedAnswer.find(function (el) {
|
|
321
|
+
return el.index !== flickerPosition && el.letter !== ' ' && el.char === '' && el.poolIndex === false;
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
if (_cursorPosition) {
|
|
325
|
+
setFlickerPosition(_cursorPosition.index);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
|
|
289
330
|
var removeCharacter = function removeCharacter() {
|
|
290
331
|
playSound('click-ui');
|
|
291
332
|
var newCharacter = resolvedAnswer.map(function (letter, index) {
|
|
@@ -317,6 +358,7 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
317
358
|
});
|
|
318
359
|
setPoolLetters(newPool);
|
|
319
360
|
setAnswer(newAnswer);
|
|
361
|
+
setFlickerPosition(newCharacter.index);
|
|
320
362
|
}
|
|
321
363
|
};
|
|
322
364
|
|
|
@@ -352,6 +394,7 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
352
394
|
emitEvent({
|
|
353
395
|
type: 'failPuzzle'
|
|
354
396
|
});
|
|
397
|
+
setPlayerHasFailAtLeastOneTime(true);
|
|
355
398
|
};
|
|
356
399
|
|
|
357
400
|
var resolvePuzzle = function resolvePuzzle(newAnswer, newPool) {
|
|
@@ -403,6 +446,10 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
403
446
|
handleClose();
|
|
404
447
|
} else {
|
|
405
448
|
handleFail();
|
|
449
|
+
var cursorPosition = resolvedAnswer.find(function (el) {
|
|
450
|
+
return el.char === '';
|
|
451
|
+
});
|
|
452
|
+
setFlickerPosition(cursorPosition.index);
|
|
406
453
|
}
|
|
407
454
|
};
|
|
408
455
|
|
|
@@ -460,6 +507,7 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
|
|
|
460
507
|
answer: answer.split(''),
|
|
461
508
|
show: true
|
|
462
509
|
}) : /*#__PURE__*/_react.default.createElement(AnswerPanel, {
|
|
510
|
+
flickerPosition: flickerPosition,
|
|
463
511
|
answer: resolvedAnswer
|
|
464
512
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
465
513
|
className: "puzzle--hanged__keyboard"
|
|
@@ -74,7 +74,7 @@ var UrlComponent = function UrlComponent(_ref) {
|
|
|
74
74
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
75
75
|
className: "icon-close"
|
|
76
76
|
})) : null, /*#__PURE__*/_react.default.createElement("span", {
|
|
77
|
-
className: "popup--link__title
|
|
77
|
+
className: "popup--link__title"
|
|
78
78
|
}, name), /*#__PURE__*/_react.default.createElement("span", {
|
|
79
79
|
className: "popup--link__desc"
|
|
80
80
|
}, text), /*#__PURE__*/_react.default.createElement("a", {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@gamelearn/arcade-components",
|
|
3
3
|
"author": "Gamelearn",
|
|
4
4
|
"license": "unlicense",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.26.0",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"url": "https://github.com/gamelearn/arcade-components"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@gamelearn/arcade-styles": "0.
|
|
17
|
-
"@gamelearn/arcade-three-core": "1.
|
|
16
|
+
"@gamelearn/arcade-styles": "0.13.0",
|
|
17
|
+
"@gamelearn/arcade-three-core": "1.13.0",
|
|
18
18
|
"@react-three/drei": "9.4.3",
|
|
19
19
|
"@react-three/fiber": "8.0.10",
|
|
20
20
|
"@testing-library/jest-dom": "^5.16.4",
|