pixi-rainman-game-engine 0.1.23 → 0.1.25
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/SettingsUI/components/AutoplaySettings/autoplaySettings.css +40 -50
- package/dist/SettingsUI/components/AutoplaySettings/index.jsx +13 -16
- package/dist/SettingsUI/components/Bet/BetControls.jsx +10 -2
- package/dist/SettingsUI/components/Bet/bet.css +1 -1
- package/dist/SettingsUI/components/CloseModalButton/closeModalButton.css +3 -2
- package/dist/SettingsUI/components/CloseModalButton/index.jsx +4 -0
- package/dist/SettingsUI/index.css +15 -0
- package/dist/application/ButtonsEventManager/ButtonsEventManager.js +7 -12
- package/dist/components/common/AnimatedBackground.js +0 -1
- package/dist/connectivity/ConnectionWrapper.js +1 -1
- package/dist/connectivity/serverConnection.d.ts +1 -1
- package/dist/connectivity/serverData.d.ts +1 -0
- package/dist/connectivity/wins.d.ts +4 -1
- package/dist/controllers/AbstractController.d.ts +1 -0
- package/dist/controllers/AbstractController.js +4 -1
- package/dist/stores/SettingsStore.d.ts +4 -0
- package/dist/stores/SettingsStore.js +11 -0
- package/dist/utils/common/functions.js +1 -1
- package/package.json +1 -1
|
@@ -59,18 +59,17 @@
|
|
|
59
59
|
|
|
60
60
|
.autoplay-settings__stop-limits {
|
|
61
61
|
display: flex;
|
|
62
|
-
|
|
62
|
+
justify-content: center;
|
|
63
63
|
width: 100%;
|
|
64
64
|
height: 50px;
|
|
65
|
-
justify-content: center;
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
.autoplay-settings__limit {
|
|
69
|
-
width: 40px;
|
|
70
|
-
border: solid 2px white;
|
|
71
68
|
display: flex;
|
|
72
69
|
align-items: center;
|
|
73
70
|
justify-content: center;
|
|
71
|
+
width: 40px;
|
|
72
|
+
border: solid 2px white;
|
|
74
73
|
font-size: 20px;
|
|
75
74
|
font-weight: bolder;
|
|
76
75
|
margin: 0px 5px;
|
|
@@ -95,10 +94,14 @@
|
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
.left {
|
|
97
|
+
background-color: #00000000;
|
|
98
|
+
text-align: center;
|
|
98
99
|
border-radius: 34px 0px 0px 34px;
|
|
99
100
|
}
|
|
100
101
|
|
|
101
102
|
.right {
|
|
103
|
+
background-color: #00000000;
|
|
104
|
+
text-align: center;
|
|
102
105
|
border-radius: 0px 34px 34px 0px;
|
|
103
106
|
}
|
|
104
107
|
|
|
@@ -109,6 +112,7 @@
|
|
|
109
112
|
}
|
|
110
113
|
|
|
111
114
|
.circle {
|
|
115
|
+
background-color: #00000000;
|
|
112
116
|
border-radius: 34px;
|
|
113
117
|
font-size: 40px;
|
|
114
118
|
}
|
|
@@ -164,10 +168,6 @@
|
|
|
164
168
|
width: 90%;
|
|
165
169
|
}
|
|
166
170
|
|
|
167
|
-
.autoplay-settings__column {
|
|
168
|
-
flex-direction: column-reverse;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
171
|
.autoplay-settings__switches {
|
|
172
172
|
width: 100%;
|
|
173
173
|
flex-direction: column;
|
|
@@ -179,46 +179,66 @@
|
|
|
179
179
|
margin: 5px 0px;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
.
|
|
183
|
-
|
|
184
|
-
|
|
182
|
+
.autoplay-settings__limit {
|
|
183
|
+
align-items: center;
|
|
184
|
+
justify-content: center;
|
|
185
|
+
text-align: center;
|
|
186
|
+
margin: 0px;
|
|
187
|
+
padding: 0px;
|
|
185
188
|
}
|
|
186
189
|
|
|
187
190
|
.right {
|
|
188
|
-
width:
|
|
191
|
+
width: 34px;
|
|
192
|
+
height: 34px;
|
|
193
|
+
font-size: 12px;
|
|
194
|
+
background-color: #00000000;
|
|
189
195
|
border-radius: 0px 34px 34px 0px;
|
|
190
196
|
}
|
|
191
197
|
|
|
192
198
|
.middle {
|
|
193
|
-
width:
|
|
199
|
+
width: 34px;
|
|
200
|
+
height: 34px;
|
|
194
201
|
font-size: 12px;
|
|
202
|
+
background-color: #00000000;
|
|
195
203
|
border-radius: 0px 0px 0px 0px;
|
|
196
204
|
}
|
|
197
205
|
|
|
206
|
+
.left {
|
|
207
|
+
width: 34px;
|
|
208
|
+
height: 34px;
|
|
209
|
+
background-color: #00000000;
|
|
210
|
+
font-size: 12px;
|
|
211
|
+
border-radius: 34px 0px 0px 34px;
|
|
212
|
+
}
|
|
213
|
+
|
|
198
214
|
.circle {
|
|
199
215
|
border-radius: 34px;
|
|
200
|
-
|
|
201
|
-
|
|
216
|
+
width: 34px;
|
|
217
|
+
height: 34px;
|
|
218
|
+
font-size: 20px;
|
|
219
|
+
background-color: #00000000;
|
|
202
220
|
}
|
|
203
221
|
|
|
204
222
|
.autoplay-settings__stop-limits {
|
|
205
|
-
|
|
223
|
+
width: 100%;
|
|
224
|
+
flex-wrap: wrap;
|
|
225
|
+
height: fit-content;
|
|
226
|
+
overflow: hidden;
|
|
206
227
|
}
|
|
207
228
|
|
|
208
229
|
.autoplay-settings__limit.circle p {
|
|
209
230
|
position: relative;
|
|
210
|
-
top: -4px;
|
|
211
|
-
font-size: 20px;
|
|
212
231
|
}
|
|
213
232
|
|
|
214
233
|
.autoplay-settings__limit.left p {
|
|
215
234
|
position: relative;
|
|
216
|
-
|
|
235
|
+
text-align: center;
|
|
217
236
|
}
|
|
218
237
|
|
|
219
238
|
.autoplay-settings__limit.right p {
|
|
220
239
|
position: relative;
|
|
221
|
-
|
|
240
|
+
text-align: center;
|
|
241
|
+
margin: 0px;
|
|
222
242
|
}
|
|
223
243
|
|
|
224
244
|
.autoplay-settings__confirmation {
|
|
@@ -230,36 +250,6 @@
|
|
|
230
250
|
margin-top: 0px;
|
|
231
251
|
}
|
|
232
252
|
|
|
233
|
-
.left {
|
|
234
|
-
border-radius: 34px 0px 0px 34px;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
.right {
|
|
238
|
-
border-radius: 0px 34px 34px 0px;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
.middle {
|
|
242
|
-
width: 60px;
|
|
243
|
-
border-radius: 0px 0px 0px 0px;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.circle {
|
|
247
|
-
border-radius: 34px;
|
|
248
|
-
font-size: 40px;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
.autoplay-settings__limit.circle p {
|
|
252
|
-
top: -2px;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
.autoplay-settings__limit.left p {
|
|
256
|
-
top: -2px;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
.autoplay-settings__limit.right p {
|
|
260
|
-
top: -2px;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
253
|
.autoplay-settings__exit {
|
|
264
254
|
right: -10px;
|
|
265
255
|
top: 10px;
|
|
@@ -56,7 +56,7 @@ export const AutoplaySettings = observer(() => {
|
|
|
56
56
|
<h2>{i18next.t("autoPlay")}</h2>
|
|
57
57
|
</div>
|
|
58
58
|
<div className="autoplay-settings__stop-limits">
|
|
59
|
-
<
|
|
59
|
+
<button className={`autoplay-settings__limit left ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} onClick={() => {
|
|
60
60
|
let indexOfSelectedSpinsLimit = availableAutoSpinLimits.findIndex((limitCount) => limitCount === howManyAutoSpinsLeft);
|
|
61
61
|
indexOfSelectedSpinsLimit -= 1;
|
|
62
62
|
if (indexOfSelectedSpinsLimit === -1) {
|
|
@@ -65,13 +65,11 @@ export const AutoplaySettings = observer(() => {
|
|
|
65
65
|
updateLimitsBounds(availableAutoSpinLimits[indexOfSelectedSpinsLimit]);
|
|
66
66
|
}}>
|
|
67
67
|
<p>-</p>
|
|
68
|
-
</
|
|
69
|
-
{limit_numbers.map((limiter, index) => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
})}
|
|
74
|
-
<div className={`autoplay-settings__limit right ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} onClick={() => {
|
|
68
|
+
</button>
|
|
69
|
+
{limit_numbers.map((limiter, index) => (<button key={`${limiter}${index}`} value={limiter} className={`autoplay-settings__limit ${limiter === howManyAutoSpinsLeft ? "autoplay-settings__limit--active" : ""} middle ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} disabled={settingStore.infinitySpinsEnabled} onClick={(event) => updateLimitsBounds(Number(event.currentTarget.value))}>
|
|
70
|
+
<p>{limiter}</p>
|
|
71
|
+
</button>))}
|
|
72
|
+
<button className={`autoplay-settings__limit right ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} onClick={() => {
|
|
75
73
|
let indexOfSelectedSpinsLimit = availableAutoSpinLimits.findIndex((limitCount) => limitCount === howManyAutoSpinsLeft);
|
|
76
74
|
indexOfSelectedSpinsLimit += 1;
|
|
77
75
|
if (indexOfSelectedSpinsLimit === availableAutoSpinLimits.length) {
|
|
@@ -81,12 +79,11 @@ export const AutoplaySettings = observer(() => {
|
|
|
81
79
|
updateLimitsBounds(newAutoSpinsLimitNumber);
|
|
82
80
|
}}>
|
|
83
81
|
<p>+</p>
|
|
84
|
-
</
|
|
85
|
-
<
|
|
82
|
+
</button>
|
|
83
|
+
<button className={`autoplay-settings__limit circle ${infinitySpinsEnabled ? "autoplay-settings__limit--active" : ""}`} onClick={() => flipInfinitySpinsFlag()}>
|
|
86
84
|
<p>∞</p>
|
|
87
|
-
</
|
|
85
|
+
</button>
|
|
88
86
|
</div>
|
|
89
|
-
|
|
90
87
|
<div className="autoplay-settings__title">
|
|
91
88
|
<h2>{i18next.t("stopAutoPlay")}</h2>
|
|
92
89
|
</div>
|
|
@@ -106,16 +103,16 @@ export const AutoplaySettings = observer(() => {
|
|
|
106
103
|
</div>
|
|
107
104
|
|
|
108
105
|
<div className="autoplay-settings__confirmation">
|
|
109
|
-
<
|
|
106
|
+
<button className="autoplay-settings__confirmation-button" onClick={() => {
|
|
110
107
|
resetAutoplaySettings();
|
|
111
108
|
updateLimitsBounds(initialAutoSpinCount);
|
|
112
109
|
settingStore.handleModalInvocation?.(UI_ITEMS.autoplay);
|
|
113
110
|
}}>
|
|
114
111
|
<p>{i18next.t("cancel")}</p>
|
|
115
|
-
</
|
|
116
|
-
<
|
|
112
|
+
</button>
|
|
113
|
+
<button id={COMPONENTS.autoSpinConfirm} className="autoplay-settings__confirmation-button">
|
|
117
114
|
<p>{i18next.t("confirm")}</p>
|
|
118
|
-
</
|
|
115
|
+
</button>
|
|
119
116
|
</div>
|
|
120
117
|
</div>);
|
|
121
118
|
});
|
|
@@ -5,16 +5,24 @@ import React from "react";
|
|
|
5
5
|
import { useStores } from "../../hooks";
|
|
6
6
|
export const BetControls = observer(() => {
|
|
7
7
|
const { settingStore } = useStores();
|
|
8
|
+
const onClick = (type) => {
|
|
9
|
+
if (type === "increase") {
|
|
10
|
+
settingStore.increaseBet?.();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
settingStore.decreaseBet?.();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
8
16
|
return (<div className="bet-container">
|
|
9
17
|
<h2>{i18next.t("totalBet")}</h2>
|
|
10
18
|
<div className="bet-container__controls">
|
|
11
|
-
<button name="bet-minus" className="bet-container__button">
|
|
19
|
+
<button name="bet-minus" className="bet-container__button" onClick={() => onClick("decrease")}>
|
|
12
20
|
-
|
|
13
21
|
</button>
|
|
14
22
|
<div className="bet-container__value">
|
|
15
23
|
<p>{settingStore.betText}</p>
|
|
16
24
|
</div>
|
|
17
|
-
<button name="bet-plus" className="bet-container__button">
|
|
25
|
+
<button name="bet-plus" className="bet-container__button" onClick={() => onClick("increase")}>
|
|
18
26
|
+
|
|
19
27
|
</button>
|
|
20
28
|
</div>
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import "./closeModalButton.css";
|
|
2
2
|
import React from "react";
|
|
3
|
+
import { UI_ITEMS } from "../../../utils";
|
|
3
4
|
import { useStores } from "../../hooks";
|
|
4
5
|
export const CloseModalButton = ({ layerId, afterClose }) => {
|
|
5
6
|
const { settingStore } = useStores();
|
|
6
7
|
const onClose = () => {
|
|
7
8
|
settingStore.handleModalInvocation?.(layerId);
|
|
9
|
+
if (layerId === UI_ITEMS.speedSettings) {
|
|
10
|
+
settingStore.setSpeedPopupVisibility?.("none");
|
|
11
|
+
}
|
|
8
12
|
afterClose?.();
|
|
9
13
|
};
|
|
10
14
|
return (<button className="close-modal-button" onClick={onClose}>
|
|
@@ -131,6 +131,15 @@ body {
|
|
|
131
131
|
background: rgba(173, 216, 230, 0.5);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
.ios-nonInteractive {
|
|
135
|
+
pointer-events: none;
|
|
136
|
+
opacity: 0 !important;
|
|
137
|
+
}
|
|
138
|
+
.ios-interactive {
|
|
139
|
+
pointer-events: auto;
|
|
140
|
+
opacity: 1 !important;
|
|
141
|
+
}
|
|
142
|
+
|
|
134
143
|
.ios-scroller-animation {
|
|
135
144
|
position: fixed;
|
|
136
145
|
width: 100%;
|
|
@@ -152,3 +161,9 @@ html.is-locked .ios-scroller-animation {
|
|
|
152
161
|
opacity: 0;
|
|
153
162
|
z-index: -9999;
|
|
154
163
|
}
|
|
164
|
+
|
|
165
|
+
@media (orientation: landscape) {
|
|
166
|
+
.modal-style {
|
|
167
|
+
overflow-y: auto;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -29,6 +29,7 @@ export class ButtonsEventManager {
|
|
|
29
29
|
disableButtons = this.setButtonAvailability(true);
|
|
30
30
|
constructor() {
|
|
31
31
|
RainMan.settingsStore.handleModalInvocation = this.handleModalInvocation.bind(this);
|
|
32
|
+
RainMan.settingsStore.setSpeedPopupVisibility = this.setSpeedPopupVisibility.bind(this);
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
35
|
* Method for initializing events in Settings UI
|
|
@@ -245,6 +246,7 @@ export class ButtonsEventManager {
|
|
|
245
246
|
const confirmAutoplayButton = window.document.getElementById(COMPONENTS.autoSpinConfirm);
|
|
246
247
|
if (confirmAutoplayButton !== null) {
|
|
247
248
|
confirmAutoplayButton.addEventListener("click", () => {
|
|
249
|
+
RainMan.settingsStore.handleModalInvocation?.(UI_ITEMS.autoplay);
|
|
248
250
|
confirmAutoplayButtonCallback();
|
|
249
251
|
});
|
|
250
252
|
}
|
|
@@ -284,23 +286,16 @@ export class ButtonsEventManager {
|
|
|
284
286
|
* @param {string} layerName
|
|
285
287
|
*/
|
|
286
288
|
handleModalInvocation(layerName) {
|
|
287
|
-
const alreadyInvokedLayer = this.getInvokedSettingItem();
|
|
288
|
-
if (alreadyInvokedLayer !== null) {
|
|
289
|
-
if (alreadyInvokedLayer.style.display === "flex") {
|
|
290
|
-
alreadyInvokedLayer.style.display = "none";
|
|
291
|
-
this.enableButtons();
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
this.lastLayerInvoked = "";
|
|
296
|
-
}
|
|
297
289
|
const layer = window.document.getElementById(layerName);
|
|
298
290
|
if (layer !== null) {
|
|
299
|
-
if (layer.style.display !== "flex"
|
|
300
|
-
this.lastLayerInvoked = layerName;
|
|
291
|
+
if (layer.style.display !== "flex") {
|
|
301
292
|
layer.style.display = "flex";
|
|
302
293
|
this.disableButtons();
|
|
303
294
|
}
|
|
295
|
+
else {
|
|
296
|
+
layer.style.display = "none";
|
|
297
|
+
this.enableButtons();
|
|
298
|
+
}
|
|
304
299
|
}
|
|
305
300
|
}
|
|
306
301
|
}
|
|
@@ -25,7 +25,6 @@ export class AnimatedBackground extends ResumableContainer {
|
|
|
25
25
|
this.mobileSpineName = mobileSpineName;
|
|
26
26
|
this.name = AnimatedBackground.registryName;
|
|
27
27
|
this.parentLayer = BackgroundLayer;
|
|
28
|
-
RainMan.settingsStore.containersWithSpines.push(this);
|
|
29
28
|
}
|
|
30
29
|
resize() {
|
|
31
30
|
this.changeSpineForOrientation();
|
|
@@ -70,7 +70,7 @@ export class ConnectionWrapper {
|
|
|
70
70
|
landscape: true,
|
|
71
71
|
matched_ratio: "16:9",
|
|
72
72
|
},
|
|
73
|
-
|
|
73
|
+
language_code: i18next.language,
|
|
74
74
|
vendor_id: RainMan.config.gameInitVendorId,
|
|
75
75
|
}));
|
|
76
76
|
RainMan.globals.currency = Currencies[this._initData.currency];
|
|
@@ -53,7 +53,10 @@ export type RouletteWin = BaseWin & {
|
|
|
53
53
|
export type JackpotWin = BaseWin & {
|
|
54
54
|
type: typeof PossibleWins.jackpotMini | typeof PossibleWins.jackpotMinor | typeof PossibleWins.jackpotMajor | typeof PossibleWins.jackpotGrand;
|
|
55
55
|
};
|
|
56
|
-
export type
|
|
56
|
+
export type CoinWin = BaseWin & {
|
|
57
|
+
type: typeof PossibleWins.coin;
|
|
58
|
+
};
|
|
59
|
+
export type Win = StreakWin | FreeSpinWin | GambleWin | MysteryWin | EggWin | GoldWin | BigWin | BonusWin | SuperBonusWin | ScatterWin | RouletteWin | JackpotWin | CoinWin;
|
|
57
60
|
/**
|
|
58
61
|
* Type represents data that come from backend
|
|
59
62
|
*
|
|
@@ -36,6 +36,7 @@ export declare abstract class AbstractController<T> {
|
|
|
36
36
|
protected mysteryFxSymbolMustFormWinningLine: boolean;
|
|
37
37
|
protected mysteryWinSymbol: Nullable<SymbolId>;
|
|
38
38
|
private componentRegistry;
|
|
39
|
+
protected skipFreeSpinSummary: boolean;
|
|
39
40
|
protected _lastWinAmount: number;
|
|
40
41
|
protected constructor(buttonsEventManager: ButtonsEventManager, mainContainer: AbstractMainContainer, connection: SubscribableConnectionWrapper);
|
|
41
42
|
init(): void;
|
|
@@ -35,6 +35,7 @@ export class AbstractController {
|
|
|
35
35
|
mysteryFxSymbolMustFormWinningLine = false;
|
|
36
36
|
mysteryWinSymbol = null;
|
|
37
37
|
componentRegistry;
|
|
38
|
+
skipFreeSpinSummary = false;
|
|
38
39
|
_lastWinAmount = 0;
|
|
39
40
|
constructor(buttonsEventManager, mainContainer, connection) {
|
|
40
41
|
this.buttonsEventManager = buttonsEventManager;
|
|
@@ -47,6 +48,8 @@ export class AbstractController {
|
|
|
47
48
|
this.componentRegistry = RainMan.componentRegistry;
|
|
48
49
|
this.setupSpaceOrEnterListener();
|
|
49
50
|
RainMan.settingsStore.showSuperBonusWin = this.showSuperBonusWin.bind(this);
|
|
51
|
+
RainMan.settingsStore.increaseBet = () => this.uiController.updateBet("increase");
|
|
52
|
+
RainMan.settingsStore.decreaseBet = () => this.uiController.updateBet("decrease");
|
|
50
53
|
}
|
|
51
54
|
init() {
|
|
52
55
|
const initData = this.connection.initData();
|
|
@@ -520,7 +523,7 @@ export class AbstractController {
|
|
|
520
523
|
this.uiController.updateShownFreeSpinAmount(freeSpinAward, isAdditionalFreeSpins);
|
|
521
524
|
this.uiController.messageBox.showFreeSpinText();
|
|
522
525
|
}
|
|
523
|
-
if (this.invokeFreeSpinSummaryPlateAfterWin) {
|
|
526
|
+
if (this.invokeFreeSpinSummaryPlateAfterWin && !this.skipFreeSpinSummary) {
|
|
524
527
|
await this.handleFreeSpinSummaryPlateInvocation();
|
|
525
528
|
}
|
|
526
529
|
if (RainMan.settingsStore.isAutoplayEnabled) {
|
|
@@ -36,6 +36,7 @@ export declare class SettingsStore {
|
|
|
36
36
|
howManyFreeSpinsLeft: number;
|
|
37
37
|
howManyAutoSpinsLeft: number;
|
|
38
38
|
volumeLevel: number;
|
|
39
|
+
setSpeedPopupVisibility?: (visibility: "flex" | "none") => void;
|
|
39
40
|
popupPaytablePosition?: Point;
|
|
40
41
|
popupPaytableData?: PaytableData[];
|
|
41
42
|
currentSpeed: SpeedLevel;
|
|
@@ -43,6 +44,8 @@ export declare class SettingsStore {
|
|
|
43
44
|
updateVolumeButtonTexture?: () => void;
|
|
44
45
|
handleModalInvocation?: (layerId: string) => void;
|
|
45
46
|
showSuperBonusWin?: (callback: Promise<void>) => void;
|
|
47
|
+
increaseBet?: () => void;
|
|
48
|
+
decreaseBet?: () => void;
|
|
46
49
|
private readonly initialAutoplaySettingsState;
|
|
47
50
|
private modalsAvailable;
|
|
48
51
|
private paytableMap;
|
|
@@ -51,6 +54,7 @@ export declare class SettingsStore {
|
|
|
51
54
|
get indexOfSpeedLevel(): number;
|
|
52
55
|
get isFreeSpinsPlayEnabled(): boolean;
|
|
53
56
|
addCumulativeWinAmount(amount: number): void;
|
|
57
|
+
isIosScrollerInteractive(flag: boolean): void;
|
|
54
58
|
resetCumulativeWinAmount(): void;
|
|
55
59
|
updateBet(newBet: number): void;
|
|
56
60
|
setBatteryFlag(flag: boolean): void;
|
|
@@ -42,6 +42,7 @@ export class SettingsStore {
|
|
|
42
42
|
howManyFreeSpinsLeft = 0;
|
|
43
43
|
howManyAutoSpinsLeft = INITIAL_AUTO_SPIN_COUNT;
|
|
44
44
|
volumeLevel = getFromLocalStorage(LOCAL_STORAGE.volumeLevel, 100);
|
|
45
|
+
setSpeedPopupVisibility;
|
|
45
46
|
popupPaytablePosition;
|
|
46
47
|
popupPaytableData;
|
|
47
48
|
currentSpeed = "slow";
|
|
@@ -49,6 +50,8 @@ export class SettingsStore {
|
|
|
49
50
|
updateVolumeButtonTexture;
|
|
50
51
|
handleModalInvocation;
|
|
51
52
|
showSuperBonusWin;
|
|
53
|
+
increaseBet;
|
|
54
|
+
decreaseBet;
|
|
52
55
|
initialAutoplaySettingsState = {
|
|
53
56
|
infinitySpinsEnabled: false,
|
|
54
57
|
onAnyWin: false,
|
|
@@ -110,6 +113,14 @@ export class SettingsStore {
|
|
|
110
113
|
addCumulativeWinAmount(amount) {
|
|
111
114
|
this.cumulativeWinAmount = this.cumulativeWinAmount + amount;
|
|
112
115
|
}
|
|
116
|
+
isIosScrollerInteractive(flag) {
|
|
117
|
+
const scroller = document.querySelector(".ios-scroller");
|
|
118
|
+
const animation = document.querySelector(".ios-scroller-animation");
|
|
119
|
+
scroller?.classList.add(flag ? "ios-interactive" : "ios-nonInteractive");
|
|
120
|
+
animation?.classList.add(flag ? "ios-interactive" : "ios-nonInteractive");
|
|
121
|
+
scroller?.classList.remove(flag ? "ios-nonInteractive" : "ios-interactive");
|
|
122
|
+
animation?.classList.remove(flag ? "ios-nonInteractive" : "ios-interactive");
|
|
123
|
+
}
|
|
113
124
|
resetCumulativeWinAmount() {
|
|
114
125
|
this.cumulativeWinAmount = 0;
|
|
115
126
|
}
|
|
@@ -64,7 +64,7 @@ export const setTimeScale = (spine, flag) => {
|
|
|
64
64
|
spine.state.timeScale = spine.state.originalTimeScale;
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
|
-
spine.state.
|
|
67
|
+
spine.state.timeScale = 0;
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
70
|
export const changeResolution = (high) => {
|
package/package.json
CHANGED