pixi-rainman-game-engine 0.2.11 β 0.2.13
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/ComponentRegistry/ComponentRegistry.d.ts +16 -16
- package/dist/ComponentRegistry/ComponentRegistry.js +16 -16
- package/dist/Rainman/Rainman.js +1 -0
- package/dist/Rainman/types.d.ts +1 -0
- package/dist/SettingsUI/components/AutoplaySettings/index.jsx +6 -2
- package/dist/application/ButtonsEventManager/ButtonsEventManager.js +1 -1
- package/dist/application/SoundManager/types.d.ts +2 -0
- package/dist/application/SoundManager/types.js +2 -0
- package/dist/application/SpeedState/SpeedLevelHandler.d.ts +3 -0
- package/dist/application/SpeedState/SpeedLevelHandler.js +5 -0
- package/dist/components/symbols/AbstractSymbolsColumn.d.ts +7 -5
- package/dist/components/symbols/AbstractSymbolsColumn.js +17 -1
- package/dist/controllers/AbstractController.js +21 -3
- package/dist/controllers/QuickStopController.d.ts +0 -2
- package/dist/controllers/QuickStopController.js +1 -3
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ export declare class ComponentRegistry {
|
|
|
14
14
|
/**
|
|
15
15
|
* Method for changing temporarily speed for turbo spin
|
|
16
16
|
* @public
|
|
17
|
-
* @param {SpeedLevel} newSpeedLevel
|
|
17
|
+
* @param {SpeedLevel} newSpeedLevel - new speed level
|
|
18
18
|
*/
|
|
19
19
|
setTemporarySpeedLevel(newSpeedLevel: SpeedLevel): void;
|
|
20
20
|
/**
|
|
@@ -25,7 +25,7 @@ export declare class ComponentRegistry {
|
|
|
25
25
|
/**
|
|
26
26
|
* Setter fo speed level
|
|
27
27
|
* @public
|
|
28
|
-
* @param {SpeedLevel} newSpeedLevel
|
|
28
|
+
* @param {SpeedLevel} newSpeedLevel - new speed level
|
|
29
29
|
*/
|
|
30
30
|
setSpeedLevel(newSpeedLevel: SpeedLevel): void;
|
|
31
31
|
/**
|
|
@@ -36,7 +36,7 @@ export declare class ComponentRegistry {
|
|
|
36
36
|
/**
|
|
37
37
|
* Getter for current speed level
|
|
38
38
|
* @public
|
|
39
|
-
* @returns {SpeedLevel}
|
|
39
|
+
* @returns {SpeedLevel} speed of the game
|
|
40
40
|
*/
|
|
41
41
|
getSpeedLevel(): SpeedLevel;
|
|
42
42
|
/**
|
|
@@ -47,26 +47,26 @@ export declare class ComponentRegistry {
|
|
|
47
47
|
/**
|
|
48
48
|
* Function for adding components into ComponentRegistry
|
|
49
49
|
* @public
|
|
50
|
-
* @param {Container} component
|
|
50
|
+
* @param {Container} component component to be added
|
|
51
51
|
*/
|
|
52
52
|
add(component: Container): void;
|
|
53
53
|
/**
|
|
54
54
|
* Function for updating component that are in ComponentRegistry
|
|
55
55
|
* @public
|
|
56
|
-
* @param {Container} oldComponent
|
|
57
|
-
* @param {Container} newComponent
|
|
56
|
+
* @param {Container} oldComponent - old component
|
|
57
|
+
* @param {Container} newComponent - new component
|
|
58
58
|
*/
|
|
59
59
|
update(oldComponent: Container, newComponent: Container): void;
|
|
60
60
|
/**
|
|
61
61
|
* Function for removing components from Component Registry
|
|
62
62
|
* @public
|
|
63
|
-
* @param {Container} component
|
|
63
|
+
* @param {Container} component - component to be removed
|
|
64
64
|
*/
|
|
65
65
|
remove(component: Container): void;
|
|
66
66
|
/**
|
|
67
67
|
* Function that adapt speed of all components
|
|
68
68
|
* @public
|
|
69
|
-
* @param {SpeedLevel} speedLevel
|
|
69
|
+
* @param {SpeedLevel} speedLevel - speed lever for updating
|
|
70
70
|
*/
|
|
71
71
|
updateAllSpeedAdaptable(speedLevel: SpeedLevel): void;
|
|
72
72
|
/**
|
|
@@ -74,36 +74,36 @@ export declare class ComponentRegistry {
|
|
|
74
74
|
* Throws error if component is not present
|
|
75
75
|
* @public
|
|
76
76
|
* @template {keyof RegistryMap} T
|
|
77
|
-
* @param {T} componentName
|
|
78
|
-
* @returns {RegistryMap[T]}
|
|
77
|
+
* @param {T} componentName - name of the component
|
|
78
|
+
* @returns {RegistryMap[T]} - component from registry
|
|
79
79
|
*/
|
|
80
80
|
get<T extends keyof RegistryMap>(componentName: T): RegistryMap[T];
|
|
81
81
|
/**
|
|
82
82
|
* Getter for existing components that are in ComponentRegistry
|
|
83
83
|
* @public
|
|
84
84
|
* @template {keyof RegistryMap} T
|
|
85
|
-
* @param {T} componentName
|
|
86
|
-
* @returns {RegistryMap[T]}
|
|
85
|
+
* @param {T} componentName - component name
|
|
86
|
+
* @returns {RegistryMap[T]} - component from registry
|
|
87
87
|
*/
|
|
88
88
|
getIfExists<T extends keyof RegistryMap>(componentName: T): RegistryMap[T];
|
|
89
89
|
/**
|
|
90
90
|
* Helper function to check if the component is present in ComponentRegistry
|
|
91
91
|
* @public
|
|
92
92
|
* @template {keyof RegistryMap} T
|
|
93
|
-
* @param {T} componentName
|
|
94
|
-
* @returns {boolean}
|
|
93
|
+
* @param {T} componentName - component name
|
|
94
|
+
* @returns {boolean} - true if component is present
|
|
95
95
|
*/
|
|
96
96
|
has<T extends keyof RegistryMap>(componentName: T): boolean;
|
|
97
97
|
/**
|
|
98
98
|
* Function for adding components
|
|
99
99
|
* @public
|
|
100
|
-
* @param {Container[]} components
|
|
100
|
+
* @param {Container[]} components - components to be added
|
|
101
101
|
*/
|
|
102
102
|
addMany(components: Container[]): void;
|
|
103
103
|
/**
|
|
104
104
|
* Function for removing components
|
|
105
105
|
* @public
|
|
106
|
-
* @param {Container[]} components
|
|
106
|
+
* @param {Container[]} components - components to be removed
|
|
107
107
|
*/
|
|
108
108
|
removeMany(components: Container[]): void;
|
|
109
109
|
}
|
|
@@ -21,7 +21,7 @@ export class ComponentRegistry {
|
|
|
21
21
|
/**
|
|
22
22
|
* Method for changing temporarily speed for turbo spin
|
|
23
23
|
* @public
|
|
24
|
-
* @param {SpeedLevel} newSpeedLevel
|
|
24
|
+
* @param {SpeedLevel} newSpeedLevel - new speed level
|
|
25
25
|
*/
|
|
26
26
|
setTemporarySpeedLevel(newSpeedLevel) {
|
|
27
27
|
this.speedLevelHandler.setSpeed(newSpeedLevel);
|
|
@@ -38,7 +38,7 @@ export class ComponentRegistry {
|
|
|
38
38
|
/**
|
|
39
39
|
* Setter fo speed level
|
|
40
40
|
* @public
|
|
41
|
-
* @param {SpeedLevel} newSpeedLevel
|
|
41
|
+
* @param {SpeedLevel} newSpeedLevel - new speed level
|
|
42
42
|
*/
|
|
43
43
|
setSpeedLevel(newSpeedLevel) {
|
|
44
44
|
this.speedLevelHandler.setSpeed(newSpeedLevel);
|
|
@@ -59,7 +59,7 @@ export class ComponentRegistry {
|
|
|
59
59
|
/**
|
|
60
60
|
* Getter for current speed level
|
|
61
61
|
* @public
|
|
62
|
-
* @returns {SpeedLevel}
|
|
62
|
+
* @returns {SpeedLevel} speed of the game
|
|
63
63
|
*/
|
|
64
64
|
getSpeedLevel() {
|
|
65
65
|
return this.speedLevelHandler.currentSpeed;
|
|
@@ -74,7 +74,7 @@ export class ComponentRegistry {
|
|
|
74
74
|
/**
|
|
75
75
|
* Function for adding components into ComponentRegistry
|
|
76
76
|
* @public
|
|
77
|
-
* @param {Container} component
|
|
77
|
+
* @param {Container} component component to be added
|
|
78
78
|
*/
|
|
79
79
|
add(component) {
|
|
80
80
|
if (isSpeedAdapterInterface(component)) {
|
|
@@ -95,8 +95,8 @@ export class ComponentRegistry {
|
|
|
95
95
|
/**
|
|
96
96
|
* Function for updating component that are in ComponentRegistry
|
|
97
97
|
* @public
|
|
98
|
-
* @param {Container} oldComponent
|
|
99
|
-
* @param {Container} newComponent
|
|
98
|
+
* @param {Container} oldComponent - old component
|
|
99
|
+
* @param {Container} newComponent - new component
|
|
100
100
|
*/
|
|
101
101
|
update(oldComponent, newComponent) {
|
|
102
102
|
if (oldComponent.name !== newComponent.name) {
|
|
@@ -114,7 +114,7 @@ export class ComponentRegistry {
|
|
|
114
114
|
/**
|
|
115
115
|
* Function for removing components from Component Registry
|
|
116
116
|
* @public
|
|
117
|
-
* @param {Container} component
|
|
117
|
+
* @param {Container} component - component to be removed
|
|
118
118
|
*/
|
|
119
119
|
remove(component) {
|
|
120
120
|
if (component.name)
|
|
@@ -123,7 +123,7 @@ export class ComponentRegistry {
|
|
|
123
123
|
/**
|
|
124
124
|
* Function that adapt speed of all components
|
|
125
125
|
* @public
|
|
126
|
-
* @param {SpeedLevel} speedLevel
|
|
126
|
+
* @param {SpeedLevel} speedLevel - speed lever for updating
|
|
127
127
|
*/
|
|
128
128
|
updateAllSpeedAdaptable(speedLevel) {
|
|
129
129
|
this.speedAdaptableComponents.forEach((speedAdaptableComponent) => {
|
|
@@ -135,8 +135,8 @@ export class ComponentRegistry {
|
|
|
135
135
|
* Throws error if component is not present
|
|
136
136
|
* @public
|
|
137
137
|
* @template {keyof RegistryMap} T
|
|
138
|
-
* @param {T} componentName
|
|
139
|
-
* @returns {RegistryMap[T]}
|
|
138
|
+
* @param {T} componentName - name of the component
|
|
139
|
+
* @returns {RegistryMap[T]} - component from registry
|
|
140
140
|
*/
|
|
141
141
|
get(componentName) {
|
|
142
142
|
const componentToReturn = this.registry.get(componentName);
|
|
@@ -149,8 +149,8 @@ export class ComponentRegistry {
|
|
|
149
149
|
* Getter for existing components that are in ComponentRegistry
|
|
150
150
|
* @public
|
|
151
151
|
* @template {keyof RegistryMap} T
|
|
152
|
-
* @param {T} componentName
|
|
153
|
-
* @returns {RegistryMap[T]}
|
|
152
|
+
* @param {T} componentName - component name
|
|
153
|
+
* @returns {RegistryMap[T]} - component from registry
|
|
154
154
|
*/
|
|
155
155
|
getIfExists(componentName) {
|
|
156
156
|
const componentToReturn = this.registry.get(componentName);
|
|
@@ -160,8 +160,8 @@ export class ComponentRegistry {
|
|
|
160
160
|
* Helper function to check if the component is present in ComponentRegistry
|
|
161
161
|
* @public
|
|
162
162
|
* @template {keyof RegistryMap} T
|
|
163
|
-
* @param {T} componentName
|
|
164
|
-
* @returns {boolean}
|
|
163
|
+
* @param {T} componentName - component name
|
|
164
|
+
* @returns {boolean} - true if component is present
|
|
165
165
|
*/
|
|
166
166
|
has(componentName) {
|
|
167
167
|
return this.registry.has(componentName);
|
|
@@ -169,7 +169,7 @@ export class ComponentRegistry {
|
|
|
169
169
|
/**
|
|
170
170
|
* Function for adding components
|
|
171
171
|
* @public
|
|
172
|
-
* @param {Container[]} components
|
|
172
|
+
* @param {Container[]} components - components to be added
|
|
173
173
|
*/
|
|
174
174
|
addMany(components) {
|
|
175
175
|
for (const component of components) {
|
|
@@ -179,7 +179,7 @@ export class ComponentRegistry {
|
|
|
179
179
|
/**
|
|
180
180
|
* Function for removing components
|
|
181
181
|
* @public
|
|
182
|
-
* @param {Container[]} components
|
|
182
|
+
* @param {Container[]} components - components to be removed
|
|
183
183
|
*/
|
|
184
184
|
removeMany(components) {
|
|
185
185
|
for (const component of components) {
|
package/dist/Rainman/Rainman.js
CHANGED
package/dist/Rainman/types.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export type AppConfig = RequiredAppConfig & DeepPartial<OptionalAppConfig>;
|
|
|
66
66
|
*/
|
|
67
67
|
export interface Globals {
|
|
68
68
|
currency: Currency;
|
|
69
|
+
shouldShowModals: boolean;
|
|
69
70
|
actionsAfterClosureWebSocket?: () => void;
|
|
70
71
|
disableSpeedPopup?: (value: boolean) => void;
|
|
71
72
|
handleDisablingButtons?: (value?: boolean) => void;
|
|
@@ -49,7 +49,7 @@ export const AutoplaySettings = observer(() => {
|
|
|
49
49
|
useEffect(() => {
|
|
50
50
|
updateLimitsBounds(initialAutoSpinCount);
|
|
51
51
|
}, []);
|
|
52
|
-
const { singleWinExceeds, balancedIncreased, balancedDecreased, howManyAutoSpinsLeft, infinitySpinsEnabled, setSingleWinExceeds, setBalancedIncreased, setBalancedDecreased, setAutoSpinsCount, flipInfinitySpinsFlag, resetAutoplaySettings, } = settingStore;
|
|
52
|
+
const { singleWinExceeds, balancedIncreased, balancedDecreased, howManyAutoSpinsLeft, infinitySpinsEnabled, setSingleWinExceeds, setBalancedIncreased, setBalancedDecreased, setAutoSpinsCount, flipInfinitySpinsFlag, resetAutoplaySettings, isAutoplayEnabled, } = settingStore;
|
|
53
53
|
return (<div className="autoplay-settings">
|
|
54
54
|
<CloseModalButton layerId={UI_ITEMS.autoplay}/>
|
|
55
55
|
<div className="autoplay-settings__title">
|
|
@@ -110,7 +110,11 @@ export const AutoplaySettings = observer(() => {
|
|
|
110
110
|
}}>
|
|
111
111
|
<p>{i18next.t("cancel")}</p>
|
|
112
112
|
</button>
|
|
113
|
-
<button id={COMPONENTS.autoSpinConfirm} onClick={() =>
|
|
113
|
+
<button id={COMPONENTS.autoSpinConfirm} onClick={() => {
|
|
114
|
+
if (isAutoplayEnabled)
|
|
115
|
+
return;
|
|
116
|
+
settingStore.decreaseAutoSpinsCount();
|
|
117
|
+
}} className="autoplay-settings__confirmation-button">
|
|
114
118
|
<p>{i18next.t("confirm")}</p>
|
|
115
119
|
</button>
|
|
116
120
|
</div>
|
|
@@ -304,7 +304,7 @@ export class ButtonsEventManager {
|
|
|
304
304
|
* @param {string} layerName - name of layer
|
|
305
305
|
*/
|
|
306
306
|
handleModalInvocation(layerName) {
|
|
307
|
-
if (this.checkAnyLayerIsPresent(layerName))
|
|
307
|
+
if (this.checkAnyLayerIsPresent(layerName) && RainMan.globals.shouldShowModals)
|
|
308
308
|
return;
|
|
309
309
|
const layer = window.document.getElementById(layerName);
|
|
310
310
|
if (layer !== null) {
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
* @property {string} mediumWin - on medium win - this sound is played when win of all streaks is more than x1.1 * bet and less than x5 * bet
|
|
27
27
|
* @property {string} highWin - on high win - this sound is played when win of all streaks is more than x5.1 * bet and less than x15 * bet
|
|
28
28
|
* @property {string} veryHighWin - on very high win - this sound is played when win of all streaks is more than x15.1 * bet
|
|
29
|
+
* @property {string} mysterySymbol - on mystery symbol appearance on the screen
|
|
29
30
|
* @typedef {SoundTracks}
|
|
30
31
|
*/
|
|
31
32
|
export declare const SoundTracks: SoundTracks;
|
|
@@ -55,6 +56,7 @@ export interface SoundTracks {
|
|
|
55
56
|
specialSymbolOnReel: "specialSymbolOnReel";
|
|
56
57
|
start: "start";
|
|
57
58
|
symbol: "symbol";
|
|
59
|
+
mysterySymbol: "mysterySymbol";
|
|
58
60
|
}
|
|
59
61
|
export type SoundTrack = SoundTracks[keyof SoundTracks];
|
|
60
62
|
/**
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
* @property {string} mediumWin - on medium win - this sound is played when win of all streaks is more than x1.1 * bet and less than x5 * bet
|
|
27
27
|
* @property {string} highWin - on high win - this sound is played when win of all streaks is more than x5.1 * bet and less than x15 * bet
|
|
28
28
|
* @property {string} veryHighWin - on very high win - this sound is played when win of all streaks is more than x15.1 * bet
|
|
29
|
+
* @property {string} mysterySymbol - on mystery symbol appearance on the screen
|
|
29
30
|
* @typedef {SoundTracks}
|
|
30
31
|
*/
|
|
31
32
|
export const SoundTracks = {
|
|
@@ -54,4 +55,5 @@ export const SoundTracks = {
|
|
|
54
55
|
specialSymbolOnReel: "specialSymbolOnReel",
|
|
55
56
|
start: "start",
|
|
56
57
|
symbol: "symbol",
|
|
58
|
+
mysterySymbol: "mysterySymbol",
|
|
57
59
|
};
|
|
@@ -20,10 +20,13 @@ export declare class SpeedLevelHandler {
|
|
|
20
20
|
/**
|
|
21
21
|
* Setter for speed level
|
|
22
22
|
* @param {SpeedLevel} newSpeedLevel - new speed level
|
|
23
|
+
* @throws {Error} - if no matched speed level
|
|
23
24
|
*/
|
|
24
25
|
setSpeed(newSpeedLevel: SpeedLevel): void;
|
|
25
26
|
/**
|
|
26
27
|
* Function for setting next speed level
|
|
28
|
+
* This will after switching speed level check if the speed level is normal or fast
|
|
29
|
+
* and if so, it will disable the speed popup
|
|
27
30
|
*/
|
|
28
31
|
nextSpeed(): void;
|
|
29
32
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RainMan } from "../../Rainman";
|
|
1
2
|
import { DEFAULT_SPEED, SPEED_LEVELS } from "./SpeedLevel";
|
|
2
3
|
/**
|
|
3
4
|
* Class for handling speed levels
|
|
@@ -29,6 +30,7 @@ export class SpeedLevelHandler {
|
|
|
29
30
|
/**
|
|
30
31
|
* Setter for speed level
|
|
31
32
|
* @param {SpeedLevel} newSpeedLevel - new speed level
|
|
33
|
+
* @throws {Error} - if no matched speed level
|
|
32
34
|
*/
|
|
33
35
|
setSpeed(newSpeedLevel) {
|
|
34
36
|
switch (newSpeedLevel) {
|
|
@@ -47,8 +49,11 @@ export class SpeedLevelHandler {
|
|
|
47
49
|
}
|
|
48
50
|
/**
|
|
49
51
|
* Function for setting next speed level
|
|
52
|
+
* This will after switching speed level check if the speed level is normal or fast
|
|
53
|
+
* and if so, it will disable the speed popup
|
|
50
54
|
*/
|
|
51
55
|
nextSpeed() {
|
|
56
|
+
RainMan.globals.disableSpeedPopup?.(true);
|
|
52
57
|
if (this.shouldResetSpeedOptionsLoop()) {
|
|
53
58
|
this.chosenSpeedLevel = 0;
|
|
54
59
|
return;
|
|
@@ -4,7 +4,7 @@ import { DropTransformationDetails, SymbolReel } from "../../connectivity";
|
|
|
4
4
|
import { Nullable, VoidPromiseResolver } from "../../utils";
|
|
5
5
|
import { AbstractColumnsContainer, AbstractFrame } from "../frame";
|
|
6
6
|
import { AbstractSymbolBase } from "./AbstractSymbolBase";
|
|
7
|
-
import { AnimationTimeSettings } from "./types";
|
|
7
|
+
import { AnimationTimeSettings, Phase } from "./types";
|
|
8
8
|
/**
|
|
9
9
|
* Class represent single column in {@link ColumnsContainer}. It contains array of {@link AbstractSymbolBase}
|
|
10
10
|
* @abstract
|
|
@@ -18,12 +18,12 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
18
18
|
allSymbols: SymbolId[];
|
|
19
19
|
spinning: boolean;
|
|
20
20
|
speedLevelMapper: import("../../application").SpeedLevelDirectory<number>;
|
|
21
|
-
|
|
21
|
+
symbols: Array<AbstractSymbolBase>;
|
|
22
22
|
private velocity;
|
|
23
23
|
protected velocityMultiplier: number;
|
|
24
24
|
private previousVelocityMultiplier;
|
|
25
25
|
private spritesCount;
|
|
26
|
-
|
|
26
|
+
protected phase: Phase;
|
|
27
27
|
private ending;
|
|
28
28
|
private lastEnding;
|
|
29
29
|
private tween;
|
|
@@ -34,11 +34,12 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
34
34
|
private droppingTweens;
|
|
35
35
|
private movingDownSymbols;
|
|
36
36
|
private droppingDownSymbols;
|
|
37
|
-
|
|
37
|
+
protected topMostSymbol: Nullable<AbstractSymbolBase>;
|
|
38
38
|
private triggerNextColumn;
|
|
39
39
|
private triggerNextColumnPromise;
|
|
40
40
|
private spinEndPromise;
|
|
41
41
|
skipHidingMysteryFx: boolean;
|
|
42
|
+
protected mysterySymbol: Nullable<SymbolId>;
|
|
42
43
|
protected bonusSymbol: Nullable<SymbolId>;
|
|
43
44
|
protected frozenSymbol: Nullable<AbstractSymbolBase>;
|
|
44
45
|
private readonly _id;
|
|
@@ -68,6 +69,7 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
68
69
|
private changePhase;
|
|
69
70
|
private moveToTop;
|
|
70
71
|
protected shouldPlaySpecialRollStopSound(): boolean;
|
|
72
|
+
private shouldPlayMysteryStopSound;
|
|
71
73
|
handleStopping(): void;
|
|
72
74
|
protected abstract createNewSymbol(): AbstractSymbolBase;
|
|
73
75
|
private initSymbolSprites;
|
|
@@ -77,7 +79,7 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
77
79
|
private ensureTopOffset;
|
|
78
80
|
private swapSymbolFace;
|
|
79
81
|
private fixZOrder;
|
|
80
|
-
|
|
82
|
+
protected doStop(): Promise<void>;
|
|
81
83
|
private stopSymbols;
|
|
82
84
|
protected getSymbolsSortedByYPosition(): AbstractSymbolBase[];
|
|
83
85
|
/**
|
|
@@ -41,6 +41,7 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
41
41
|
triggerNextColumnPromise = null;
|
|
42
42
|
spinEndPromise = null;
|
|
43
43
|
skipHidingMysteryFx = false;
|
|
44
|
+
mysterySymbol = null;
|
|
44
45
|
bonusSymbol = null;
|
|
45
46
|
frozenSymbol = null;
|
|
46
47
|
_id;
|
|
@@ -344,14 +345,29 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
344
345
|
.flat()
|
|
345
346
|
.filter((symbol) => symbol && symbol.id === this.bonusSymbol).length >= 1);
|
|
346
347
|
}
|
|
348
|
+
shouldPlayMysteryStopSound() {
|
|
349
|
+
return (Array.from({ length: RainMan.config.numberOfColumns }, (_, i) => i)
|
|
350
|
+
.map((i) => {
|
|
351
|
+
const column = this.columnsContainer.getColumnAtPosition(i);
|
|
352
|
+
if (column !== this)
|
|
353
|
+
return null;
|
|
354
|
+
return column.symbols.slice(0, RainMan.config.numberOfRows);
|
|
355
|
+
})
|
|
356
|
+
.flat()
|
|
357
|
+
.filter((symbol) => symbol && symbol.id === this.mysterySymbol).length >= 1);
|
|
358
|
+
}
|
|
347
359
|
handleStopping() {
|
|
348
360
|
if (!this.topMostSymbol || this.phase === Phase.END)
|
|
349
361
|
return;
|
|
350
362
|
if (this.topMostSymbol.y >= this.tileHeight / 2) {
|
|
351
363
|
if (!this.columnsContainer.quickReelsStop &&
|
|
352
364
|
RainMan.settingsStore.currentSpeed !== SPEED_LEVELS.fast &&
|
|
353
|
-
!this.areAnyFrozenTiles())
|
|
365
|
+
!this.areAnyFrozenTiles()) {
|
|
354
366
|
SoundManager.play(this.shouldPlaySpecialRollStopSound() ? SoundTracks.specialSymbolOnReel : SoundTracks.rollStop);
|
|
367
|
+
if (this.shouldPlayMysteryStopSound()) {
|
|
368
|
+
SoundManager.play(SoundTracks.mysterySymbol);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
355
371
|
this.fixStationaryPositions();
|
|
356
372
|
this.doStop();
|
|
357
373
|
return;
|
|
@@ -276,6 +276,12 @@ export class AbstractController {
|
|
|
276
276
|
changeGamePhase(newPhase) {
|
|
277
277
|
logInfo(`ππΌππΌππΌππΌ ${this.gamePhase} --> ${newPhase}`);
|
|
278
278
|
this.gamePhase = newPhase;
|
|
279
|
+
if (this.gamePhase === gamePhases.HANDLING_ACTIONS ||
|
|
280
|
+
this.gamePhase === gamePhases.STOPPING_HANDLING_ACTIONS ||
|
|
281
|
+
this.gamePhase === gamePhases.SPINNING ||
|
|
282
|
+
this.gamePhase === gamePhases.GAME_SUMMARY) {
|
|
283
|
+
RainMan.globals.shouldShowModals = false;
|
|
284
|
+
}
|
|
279
285
|
this.handleDisablingButtons(true);
|
|
280
286
|
this.setMessageBoxBasedOnPhase(newPhase);
|
|
281
287
|
this.setRefreshButtonBasedOnPhase(newPhase);
|
|
@@ -366,6 +372,7 @@ export class AbstractController {
|
|
|
366
372
|
*/
|
|
367
373
|
handleSpinLogic() {
|
|
368
374
|
this.handleDisablingButtons(true);
|
|
375
|
+
RainMan.globals.shouldShowModals = false;
|
|
369
376
|
if (this.mainContainer.freeSpinPlate) {
|
|
370
377
|
if (this.mainContainer.freeSpinPlate.shownAt === null ||
|
|
371
378
|
performance.now() - this.mainContainer.freeSpinPlate.shownAt <
|
|
@@ -421,6 +428,7 @@ export class AbstractController {
|
|
|
421
428
|
*/
|
|
422
429
|
throttledSpin() {
|
|
423
430
|
this.handleDisablingButtons(true);
|
|
431
|
+
RainMan.globals.shouldShowModals = false;
|
|
424
432
|
const elementsToSkipHide = [];
|
|
425
433
|
if (performance.now() - this.buttonsEventManager.speedPopupShownAt <
|
|
426
434
|
RainMan.config.durationOfActions.speedPopupVisibleTime) {
|
|
@@ -473,6 +481,7 @@ export class AbstractController {
|
|
|
473
481
|
* @returns {void} promise
|
|
474
482
|
*/
|
|
475
483
|
autoplaySpin() {
|
|
484
|
+
RainMan.globals.shouldShowModals = false;
|
|
476
485
|
if (!RainMan.settingsStore.howManyAutoSpinsLeft)
|
|
477
486
|
return;
|
|
478
487
|
if (!RainMan.settingsStore.infinitySpinsEnabled) {
|
|
@@ -480,6 +489,7 @@ export class AbstractController {
|
|
|
480
489
|
}
|
|
481
490
|
if (RainMan.settingsStore.howManyAutoSpinsLeft === 0) {
|
|
482
491
|
this.uiController.messageBox.showIncentiveText();
|
|
492
|
+
RainMan.globals.shouldShowModals = false;
|
|
483
493
|
this.disableAutoplay();
|
|
484
494
|
}
|
|
485
495
|
this.changeGamePhase(gamePhases.IDLE);
|
|
@@ -498,9 +508,10 @@ export class AbstractController {
|
|
|
498
508
|
disableAutoplay() {
|
|
499
509
|
RainMan.componentRegistry.get(AutoplayButton.registryName).activate(false);
|
|
500
510
|
RainMan.componentRegistry.get(MessageBox.registryName).hideAutoSpinText();
|
|
501
|
-
RainMan.settingsStore.resetAutoplaySettings();
|
|
502
511
|
RainMan.componentRegistry.get(BUTTONS.plus).flipDisabledFlag(false);
|
|
503
512
|
RainMan.componentRegistry.get(BUTTONS.neg).flipDisabledFlag(false);
|
|
513
|
+
RainMan.settingsStore.resetAutoplaySettings();
|
|
514
|
+
RainMan.globals.shouldShowModals = false;
|
|
504
515
|
}
|
|
505
516
|
/**
|
|
506
517
|
* This function is responsible for actions while fetching data
|
|
@@ -573,10 +584,15 @@ export class AbstractController {
|
|
|
573
584
|
* @returns {Promise<void>}
|
|
574
585
|
*/
|
|
575
586
|
async spin() {
|
|
576
|
-
|
|
587
|
+
RainMan.globals.shouldShowModals = false;
|
|
588
|
+
if (this.uiController.currentBalance < RainMan.settingsStore.bet &&
|
|
589
|
+
!RainMan.settingsStore.isFreeSpinsPlayEnabled) {
|
|
577
590
|
try {
|
|
578
|
-
|
|
591
|
+
if (RainMan.settingsStore.isAutoplayEnabled) {
|
|
592
|
+
this.disableAutoplay();
|
|
593
|
+
}
|
|
579
594
|
this.handleDisablingButtons(false);
|
|
595
|
+
return;
|
|
580
596
|
}
|
|
581
597
|
catch (e) {
|
|
582
598
|
RainMan.componentRegistry.get(AutoplayButton.registryName).flipDisabledFlag(true);
|
|
@@ -695,6 +711,7 @@ export class AbstractController {
|
|
|
695
711
|
this.handleDisablingButtons();
|
|
696
712
|
RainMan.settingsStore.setModalsAvailability(true);
|
|
697
713
|
await this.performActionsAfterSpin();
|
|
714
|
+
RainMan.globals.shouldShowModals = true;
|
|
698
715
|
}
|
|
699
716
|
/**
|
|
700
717
|
* Function for invoking free spin plate, invoked in mainContainer
|
|
@@ -732,6 +749,7 @@ export class AbstractController {
|
|
|
732
749
|
this.invokeFreeSpinSummaryPlateAfterWin = false;
|
|
733
750
|
}
|
|
734
751
|
handleAutoplayLogic() {
|
|
752
|
+
RainMan.globals.shouldShowModals = false;
|
|
735
753
|
this.autoSpinBalance += this.uiController.recentWin;
|
|
736
754
|
const { balancedIncreased, balancedDecreased, singleWinExceeds } = RainMan.settingsStore;
|
|
737
755
|
if (balancedIncreased > 0) {
|
|
@@ -3,8 +3,6 @@ import { ButtonsEventManager } from "../application";
|
|
|
3
3
|
* This controller is used to show the speed popup and handle quick stops
|
|
4
4
|
* After 4 quick stops, the speed popup will be shown.
|
|
5
5
|
* Number of quick spin can be adjusted in {@link MAX_QUICK_STOPS}
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
6
|
*/
|
|
9
7
|
export declare class QuickStopController {
|
|
10
8
|
private buttonsEventManager;
|
|
@@ -5,8 +5,6 @@ const MAX_QUICK_STOPS = 4;
|
|
|
5
5
|
* This controller is used to show the speed popup and handle quick stops
|
|
6
6
|
* After 4 quick stops, the speed popup will be shown.
|
|
7
7
|
* Number of quick spin can be adjusted in {@link MAX_QUICK_STOPS}
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
8
|
*/
|
|
11
9
|
export class QuickStopController {
|
|
12
10
|
buttonsEventManager;
|
|
@@ -16,7 +14,7 @@ export class QuickStopController {
|
|
|
16
14
|
speedPopupDisabled = false;
|
|
17
15
|
constructor(buttonsEventManager) {
|
|
18
16
|
this.buttonsEventManager = buttonsEventManager;
|
|
19
|
-
RainMan.globals.disableSpeedPopup = this.
|
|
17
|
+
RainMan.globals.disableSpeedPopup = this.setSpeedPopupDisabled.bind(this);
|
|
20
18
|
}
|
|
21
19
|
handleInvokingSpeedPopup() {
|
|
22
20
|
if (!this.quickStopCounterLock &&
|
package/package.json
CHANGED