pixi-rainman-game-engine 0.2.19 → 0.2.21-b
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.js +1 -1
- package/dist/Rainman/Rainman.js +1 -1
- package/dist/application/ApiConfig/ApiConfig.js +1 -1
- package/dist/application/ButtonsEventManager/ButtonsEventManager.js +6 -4
- package/dist/application/SoundManager/SoundManager.js +3 -3
- package/dist/application/SpinLogic/SpinLogicDTO.js +1 -1
- package/dist/application/SpinLogic/WinScenarios.d.ts +0 -2
- package/dist/application/SpinLogic/WinScenarios.js +0 -2
- package/dist/components/AbstractMainContainer/AbstractMainContainer.d.ts +3 -4
- package/dist/components/AbstractMainContainer/AbstractMainContainer.js +1 -2
- package/dist/components/GambleGame/GambleGame.js +1 -1
- package/dist/components/buttons/buttonGroups/LeftButtons.js +1 -1
- package/dist/components/buttons/buttonGroups/MiddleButtons.js +1 -1
- package/dist/components/buttons/buttonGroups/RightButtons.js +2 -2
- package/dist/components/buttons/buttonGroups/RightButtonsLandscape.js +2 -2
- package/dist/components/buttons/default/AutoplayButton.js +3 -3
- package/dist/components/buttons/default/BlackButton.js +1 -1
- package/dist/components/buttons/default/CollectButton.js +1 -1
- package/dist/components/buttons/default/InfoButton.js +2 -2
- package/dist/components/buttons/default/MoreButton.js +2 -2
- package/dist/components/buttons/default/NegButton.js +1 -1
- package/dist/components/buttons/default/PlusButton.js +2 -2
- package/dist/components/buttons/default/RedButton.js +1 -1
- package/dist/components/buttons/default/RefreshButton.js +4 -4
- package/dist/components/buttons/default/SpeedControlButton.js +2 -2
- package/dist/components/buttons/default/SpinConfirmationButton.js +1 -1
- package/dist/components/buttons/default/VolumeButton.js +2 -2
- package/dist/components/frame/AbstractColumnsContainer.js +1 -1
- package/dist/components/frame/AbstractFrame.js +3 -3
- package/dist/components/frame/WinLineAnimation.js +1 -1
- package/dist/components/messageBox/MessageBox.js +3 -3
- package/dist/components/symbols/AbstractSymbolBase.d.ts +4 -2
- package/dist/components/symbols/AbstractSymbolBase.js +8 -6
- package/dist/components/symbols/AbstractSymbolsColumn.js +3 -3
- package/dist/components/updatable/UpdatableTextComponent.js +1 -1
- package/dist/components/updatable/UpdatableValueComponent.js +1 -1
- package/dist/connectivity/ConnectionWrapper.js +6 -6
- package/dist/connectivity/LocalConnectionWrapper.js +2 -2
- package/dist/controllers/AbstractController.d.ts +4 -0
- package/dist/controllers/AbstractController.js +20 -11
- package/dist/loading/SpriteLoadingContainer.js +1 -1
- package/dist/localStorage/localStorage.js +1 -1
- package/dist/stores/SettingsStore.d.ts +8 -1
- package/dist/stores/SettingsStore.js +17 -5
- package/dist/winComponents/BaseWinContainer.d.ts +51 -0
- package/dist/winComponents/BaseWinContainer.js +142 -0
- package/dist/winComponents/BigWinContainer.d.ts +15 -0
- package/dist/winComponents/BigWinContainer.js +13 -0
- package/dist/winComponents/MysteryWinContainer.d.ts +7 -24
- package/dist/winComponents/MysteryWinContainer.js +4 -126
- package/dist/winComponents/TexturedText.d.ts +2 -1
- package/dist/winComponents/TexturedText.js +8 -2
- package/dist/winComponents/index.d.ts +1 -0
- package/dist/winComponents/index.js +1 -0
- package/dist/winComponents/winFactory.d.ts +6 -9
- package/dist/winComponents/winFactory.js +35 -13
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isIncentiveComponentInterface, isSpeedAdapterInterface, SpeedLevelHandler, TimedIncentiveController
|
|
1
|
+
import { isIncentiveComponentInterface, isSpeedAdapterInterface, SpeedLevelHandler, TimedIncentiveController } from "../application";
|
|
2
2
|
import { SpeedControlButton } from "../components";
|
|
3
3
|
import { RainMan } from "../Rainman";
|
|
4
4
|
import { openFullscreen } from "../utils";
|
package/dist/Rainman/Rainman.js
CHANGED
|
@@ -49,7 +49,7 @@ export class ApiConfig {
|
|
|
49
49
|
symbolsOnReels: blindsConfiguredByResponse,
|
|
50
50
|
finalBlindsConfiguration: finalSpinPositionOnReels,
|
|
51
51
|
winAmountTotal: spinLogicResponse.win_amount_total,
|
|
52
|
-
extraData: spinLogicResponse.extra_data || {}
|
|
52
|
+
extraData: spinLogicResponse.extra_data || {}
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import i18n from "i18next";
|
|
2
2
|
import { sample } from "lodash";
|
|
3
3
|
import { SoundManager } from "../../application";
|
|
4
|
-
import { AutoplayButton, Background, BUTTONS, COMPONENTS, FreeSpinButton, MessageBox, SpeedControlButton, VolumeButton
|
|
4
|
+
import { AutoplayButton, Background, BUTTONS, COMPONENTS, FreeSpinButton, MessageBox, SpeedControlButton, VolumeButton } from "../../components";
|
|
5
5
|
import { RainMan } from "../../Rainman";
|
|
6
6
|
import { allUiItems, hideLayerIfPresent, UI_ITEMS, wait } from "../../utils";
|
|
7
7
|
import { SPEED_LEVELS } from "../SpeedState";
|
|
@@ -232,6 +232,9 @@ export class ButtonsEventManager {
|
|
|
232
232
|
*/
|
|
233
233
|
initAutoplayButtonEvent() {
|
|
234
234
|
RainMan.componentRegistry.get(AutoplayButton.registryName).setOnClick(() => {
|
|
235
|
+
if (!RainMan.settingsStore.isModalsAvailable() || RainMan.settingsStore.isPlayingAnyAction) {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
235
238
|
if (RainMan.settingsStore.isAutoplayEnabled) {
|
|
236
239
|
RainMan.settingsStore.resetAutoplaySettings();
|
|
237
240
|
RainMan.componentRegistry.get(MessageBox.registryName).hideAutoSpinText();
|
|
@@ -240,9 +243,6 @@ export class ButtonsEventManager {
|
|
|
240
243
|
RainMan.componentRegistry.get(BUTTONS.neg).flipDisabledFlag(false);
|
|
241
244
|
return;
|
|
242
245
|
}
|
|
243
|
-
if (!RainMan.settingsStore.isModalsAvailable()) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
246
|
this.handleModalInvocation(UI_ITEMS.autoplay);
|
|
247
247
|
});
|
|
248
248
|
}
|
|
@@ -282,6 +282,8 @@ export class ButtonsEventManager {
|
|
|
282
282
|
const confirmAutoplayButton = window.document.getElementById(COMPONENTS.autoSpinConfirm);
|
|
283
283
|
if (confirmAutoplayButton !== null) {
|
|
284
284
|
confirmAutoplayButton.addEventListener("click", () => {
|
|
285
|
+
if (RainMan.settingsStore.isPlayingAnyAction)
|
|
286
|
+
return;
|
|
285
287
|
RainMan.settingsStore.handleModalInvocation?.(UI_ITEMS.autoplay);
|
|
286
288
|
confirmAutoplayButtonCallback();
|
|
287
289
|
wait(1).then(() => RainMan.settingsStore.decreaseAutoSpinsCount());
|
|
@@ -21,7 +21,7 @@ export class SoundManagerInstance {
|
|
|
21
21
|
speedLevelMapper = {
|
|
22
22
|
fast: {},
|
|
23
23
|
normal: {},
|
|
24
|
-
slow: {}
|
|
24
|
+
slow: {}
|
|
25
25
|
};
|
|
26
26
|
musicCatalogue = new Map();
|
|
27
27
|
constructor() {
|
|
@@ -41,7 +41,7 @@ export class SoundManagerInstance {
|
|
|
41
41
|
url,
|
|
42
42
|
autoPlay: false,
|
|
43
43
|
preload: true,
|
|
44
|
-
loaded: () => resolve()
|
|
44
|
+
loaded: () => resolve()
|
|
45
45
|
});
|
|
46
46
|
sound.name = soundName;
|
|
47
47
|
this.musicCatalogue.set(soundName, sound);
|
|
@@ -99,7 +99,7 @@ export class SoundManagerInstance {
|
|
|
99
99
|
sound.play({
|
|
100
100
|
loop: soundsToLoop.includes(soundName),
|
|
101
101
|
singleInstance: true,
|
|
102
|
-
volume: soundName === "music" ? 0.5 : 1
|
|
102
|
+
volume: soundName === "music" ? 0.5 : 1
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
@@ -74,7 +74,7 @@ export class SpinLogicDTO {
|
|
|
74
74
|
quantity: singleWin.quantity,
|
|
75
75
|
multiplier: singleWin.multiplier,
|
|
76
76
|
winIndex: singleWin.winIndex,
|
|
77
|
-
typeId: singleWin.typeId
|
|
77
|
+
typeId: singleWin.typeId
|
|
78
78
|
};
|
|
79
79
|
if (rawWin.type === PossibleWins.freeSpins) {
|
|
80
80
|
const remainingFreeSpins = Math.max(RainMan.settingsStore.howManyFreeSpinsLeft - 1, 0);
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { TransformationDetails, Win } from "../../connectivity";
|
|
2
2
|
/**
|
|
3
3
|
* This class represents win and transformation scenarios described in {@link transformationTypes} and {@link PossibleWins}
|
|
4
|
-
*
|
|
5
|
-
* {WinScenarios}
|
|
6
4
|
*/
|
|
7
5
|
export declare class WinScenarios {
|
|
8
6
|
private readonly _wins;
|
|
@@ -3,7 +3,7 @@ import { ButtonsEventManager } from "../../application";
|
|
|
3
3
|
import { AbstractController } from "../../controllers";
|
|
4
4
|
import { RainMan } from "../../Rainman";
|
|
5
5
|
import { Nullable } from "../../utils";
|
|
6
|
-
import { MysteryWinContainer, UpdatableSpineContainer } from "../../winComponents";
|
|
6
|
+
import { BigWinContainer, MysteryWinContainer, UpdatableSpineContainer } from "../../winComponents";
|
|
7
7
|
import { AbstractFreeSpinContainer } from "../AbstractFreeSpinContainer";
|
|
8
8
|
import { LeftButtons, LeftButtonsLandscape, LeftButtonsMobile, MiddleButtons, RightButtons, RightButtonsLandscape, RightButtonsMobile } from "../buttons";
|
|
9
9
|
import { FreeSpinButton, Logo, ResponsiveContainer } from "../common";
|
|
@@ -32,7 +32,7 @@ import { MessageBox } from "../messageBox";
|
|
|
32
32
|
export declare abstract class AbstractMainContainer extends Container {
|
|
33
33
|
static readonly registryName = "mainContainer";
|
|
34
34
|
messageBox: MessageBox;
|
|
35
|
-
protected bigWinContainer: Nullable<UpdatableSpineContainer
|
|
35
|
+
protected bigWinContainer: Nullable<UpdatableSpineContainer> | BigWinContainer;
|
|
36
36
|
protected mysteryWinContainer: Nullable<UpdatableSpineContainer> | MysteryWinContainer;
|
|
37
37
|
protected bonusWinContainer: Nullable<UpdatableSpineContainer>;
|
|
38
38
|
protected superBonusWinContainer: Nullable<UpdatableSpineContainer>;
|
|
@@ -130,7 +130,7 @@ export declare abstract class AbstractMainContainer extends Container {
|
|
|
130
130
|
get mysteryWinVisibleFor(): number;
|
|
131
131
|
get bonusWinVisibleFor(): number;
|
|
132
132
|
get superBonusWinVisibleFor(): number;
|
|
133
|
-
protected abstract createBigWinContainer(): UpdatableSpineContainer;
|
|
133
|
+
protected abstract createBigWinContainer(): UpdatableSpineContainer | MysteryWinContainer;
|
|
134
134
|
/**
|
|
135
135
|
* Function for invoking big win animation, using `this.createBigWinContainer()` abstract function.
|
|
136
136
|
*
|
|
@@ -143,7 +143,6 @@ export declare abstract class AbstractMainContainer extends Container {
|
|
|
143
143
|
invokeSuperBonusWin(): void;
|
|
144
144
|
/**
|
|
145
145
|
* Function for invoking big win animation, using `this.createBonusWinContainer()` abstract function.
|
|
146
|
-
*
|
|
147
146
|
*/
|
|
148
147
|
invokeBonusWin(): void;
|
|
149
148
|
invokeMysteryWin(): void;
|
|
@@ -3,7 +3,7 @@ import { ButtonsEventManager, SoundManager, SoundTracks } from "../../applicatio
|
|
|
3
3
|
import { AnimationLayer, BackgroundLayer, FrameLayer, UXLayer } from "../../layers";
|
|
4
4
|
import { RainMan } from "../../Rainman";
|
|
5
5
|
import { getDeviceOrientation, globalMinRatio } from "../../utils";
|
|
6
|
-
import { BUTTONS, LeftButtons, LeftButtonsLandscape, LeftButtonsMobile, MiddleButtons, RefreshButton, RightButtons, RightButtonsLandscape, RightButtonsMobile
|
|
6
|
+
import { BUTTONS, LeftButtons, LeftButtonsLandscape, LeftButtonsMobile, MiddleButtons, RefreshButton, RightButtons, RightButtonsLandscape, RightButtonsMobile } from "../buttons";
|
|
7
7
|
import { GambleGame } from "../GambleGame";
|
|
8
8
|
import { MessageBox } from "../messageBox";
|
|
9
9
|
/**
|
|
@@ -255,7 +255,6 @@ export class AbstractMainContainer extends Container {
|
|
|
255
255
|
}
|
|
256
256
|
/**
|
|
257
257
|
* Function for invoking big win animation, using `this.createBonusWinContainer()` abstract function.
|
|
258
|
-
*
|
|
259
258
|
*/
|
|
260
259
|
invokeBonusWin() {
|
|
261
260
|
if (this.bonusWinContainer !== null) {
|
|
@@ -27,7 +27,7 @@ export class RightButtons extends ResponsiveContainer {
|
|
|
27
27
|
this.plusButton,
|
|
28
28
|
this.refreshButton,
|
|
29
29
|
this.speedControlButton,
|
|
30
|
-
this.autoplayButton
|
|
30
|
+
this.autoplayButton
|
|
31
31
|
]);
|
|
32
32
|
this.resize();
|
|
33
33
|
}
|
|
@@ -37,7 +37,7 @@ export class RightButtons extends ResponsiveContainer {
|
|
|
37
37
|
this.negButton,
|
|
38
38
|
this.plusButton,
|
|
39
39
|
this.refreshButton,
|
|
40
|
-
this.speedControlButton
|
|
40
|
+
this.speedControlButton
|
|
41
41
|
]);
|
|
42
42
|
}
|
|
43
43
|
reposition() {
|
|
@@ -30,7 +30,7 @@ export class RightButtonsLandscape extends ResponsiveContainer {
|
|
|
30
30
|
this.volumeButton,
|
|
31
31
|
this.infoButton,
|
|
32
32
|
this.negButton,
|
|
33
|
-
this.speedControlButton
|
|
33
|
+
this.speedControlButton
|
|
34
34
|
]);
|
|
35
35
|
this.resize();
|
|
36
36
|
}
|
|
@@ -40,7 +40,7 @@ export class RightButtonsLandscape extends ResponsiveContainer {
|
|
|
40
40
|
this.volumeButton,
|
|
41
41
|
this.infoButton,
|
|
42
42
|
this.negButton,
|
|
43
|
-
this.speedControlButton
|
|
43
|
+
this.speedControlButton
|
|
44
44
|
]);
|
|
45
45
|
}
|
|
46
46
|
reposition() {
|
|
@@ -25,7 +25,7 @@ export class AutoplayButton extends BaseButton {
|
|
|
25
25
|
[ButtonStates.NORMAL]: getTexture("mobile/autoplay.png"),
|
|
26
26
|
[ButtonStates.CLICKED]: getTexture("mobile/clicked/autoplay.png"),
|
|
27
27
|
[ButtonStates.ACTIVE]: getTextureSafely("mobile/autoplay-on.png"),
|
|
28
|
-
[ButtonStates.ACTIVE_CLICKED]: getTextureSafely("mobile/clicked/autoplay-on.png")
|
|
28
|
+
[ButtonStates.ACTIVE_CLICKED]: getTextureSafely("mobile/clicked/autoplay-on.png")
|
|
29
29
|
}
|
|
30
30
|
: {
|
|
31
31
|
[ButtonStates.NORMAL]: getTexture("normal/autoplay.png"),
|
|
@@ -33,7 +33,7 @@ export class AutoplayButton extends BaseButton {
|
|
|
33
33
|
[ButtonStates.CLICKED]: getTexture("clicked/autoplay.png"),
|
|
34
34
|
[ButtonStates.ACTIVE]: getTexture("normal/autoplay-on.png"),
|
|
35
35
|
[ButtonStates.ACTIVE_OVER]: getTexture("hover/autoplay-on.png"),
|
|
36
|
-
[ButtonStates.ACTIVE_CLICKED]: getTexture("clicked/autoplay-on.png")
|
|
36
|
+
[ButtonStates.ACTIVE_CLICKED]: getTexture("clicked/autoplay-on.png")
|
|
37
37
|
};
|
|
38
38
|
super(AutoplayButton.registryName, textureMap);
|
|
39
39
|
this.mobile = mobile;
|
|
@@ -47,7 +47,7 @@ export class AutoplayButton extends BaseButton {
|
|
|
47
47
|
state === ButtonStates.ACTIVE_OVER ||
|
|
48
48
|
state === ButtonStates.ACTIVE_CLICKED) {
|
|
49
49
|
this.filters = [
|
|
50
|
-
new GlowFilter({ distance: 20, outerStrength: 2, color: RainMan.config.autoplayGlowColor })
|
|
50
|
+
new GlowFilter({ distance: 20, outerStrength: 2, color: RainMan.config.autoplayGlowColor })
|
|
51
51
|
];
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
@@ -14,7 +14,7 @@ export class BlackButton extends BaseButton {
|
|
|
14
14
|
const textureMap = {
|
|
15
15
|
[ButtonStates.NORMAL]: Texture.from("black-n.png"),
|
|
16
16
|
[ButtonStates.CLICKED]: Texture.from("black-c.png"),
|
|
17
|
-
[ButtonStates.OVER]: Texture.from("black-h.png")
|
|
17
|
+
[ButtonStates.OVER]: Texture.from("black-h.png")
|
|
18
18
|
};
|
|
19
19
|
super(BlackButton.registryName, textureMap);
|
|
20
20
|
}
|
|
@@ -15,7 +15,7 @@ export class CollectButton extends BaseButton {
|
|
|
15
15
|
const textureMap = {
|
|
16
16
|
[ButtonStates.NORMAL]: Texture.from("collect-button-n.png"),
|
|
17
17
|
[ButtonStates.CLICKED]: Texture.from("collect-button-c.png"),
|
|
18
|
-
[ButtonStates.OVER]: Texture.from("collect-button-h.png")
|
|
18
|
+
[ButtonStates.OVER]: Texture.from("collect-button-h.png")
|
|
19
19
|
};
|
|
20
20
|
super(CollectButton.registryName, textureMap);
|
|
21
21
|
}
|
|
@@ -17,12 +17,12 @@ export class InfoButton extends BaseButton {
|
|
|
17
17
|
const textureMap = mobile
|
|
18
18
|
? {
|
|
19
19
|
[ButtonStates.NORMAL]: getTexture("mobile/info.png"),
|
|
20
|
-
[ButtonStates.CLICKED]: getTexture("mobile/clicked/info.png")
|
|
20
|
+
[ButtonStates.CLICKED]: getTexture("mobile/clicked/info.png")
|
|
21
21
|
}
|
|
22
22
|
: {
|
|
23
23
|
[ButtonStates.NORMAL]: getTexture("normal/info.png"),
|
|
24
24
|
[ButtonStates.OVER]: getTexture("hover/info.png"),
|
|
25
|
-
[ButtonStates.CLICKED]: getTexture("clicked/info.png")
|
|
25
|
+
[ButtonStates.CLICKED]: getTexture("clicked/info.png")
|
|
26
26
|
};
|
|
27
27
|
super(InfoButton.registryName, textureMap);
|
|
28
28
|
}
|
|
@@ -17,12 +17,12 @@ export class MoreButton extends BaseButton {
|
|
|
17
17
|
const textureMap = mobile
|
|
18
18
|
? {
|
|
19
19
|
[ButtonStates.NORMAL]: getTexture("mobile/menu.png"),
|
|
20
|
-
[ButtonStates.CLICKED]: getTexture("mobile/clicked/menu.png")
|
|
20
|
+
[ButtonStates.CLICKED]: getTexture("mobile/clicked/menu.png")
|
|
21
21
|
}
|
|
22
22
|
: {
|
|
23
23
|
[ButtonStates.NORMAL]: getTexture("normal/menu.png"),
|
|
24
24
|
[ButtonStates.OVER]: getTexture("hover/menu.png"),
|
|
25
|
-
[ButtonStates.CLICKED]: getTexture("clicked/menu.png")
|
|
25
|
+
[ButtonStates.CLICKED]: getTexture("clicked/menu.png")
|
|
26
26
|
};
|
|
27
27
|
super(MoreButton.registryName, textureMap);
|
|
28
28
|
}
|
|
@@ -16,7 +16,7 @@ export class NegButton extends BaseButton {
|
|
|
16
16
|
const textureMap = {
|
|
17
17
|
[ButtonStates.NORMAL]: getTexture("normal/minus.png"),
|
|
18
18
|
[ButtonStates.OVER]: getTexture("hover/minus.png"),
|
|
19
|
-
[ButtonStates.CLICKED]: getTexture("clicked/minus.png")
|
|
19
|
+
[ButtonStates.CLICKED]: getTexture("clicked/minus.png")
|
|
20
20
|
};
|
|
21
21
|
super(NegButton.registryName, textureMap);
|
|
22
22
|
this.clickSound = SoundTracks.reductionRate;
|
|
@@ -18,12 +18,12 @@ export class PlusButton extends BaseButton {
|
|
|
18
18
|
const textureMap = mobile
|
|
19
19
|
? {
|
|
20
20
|
[ButtonStates.NORMAL]: getTexture("mobile/bet.png"),
|
|
21
|
-
[ButtonStates.CLICKED]: getTexture("mobile/clicked/bet.png")
|
|
21
|
+
[ButtonStates.CLICKED]: getTexture("mobile/clicked/bet.png")
|
|
22
22
|
}
|
|
23
23
|
: {
|
|
24
24
|
[ButtonStates.NORMAL]: getTexture("normal/plus.png"),
|
|
25
25
|
[ButtonStates.OVER]: getTexture("hover/plus.png"),
|
|
26
|
-
[ButtonStates.CLICKED]: getTexture("clicked/plus.png")
|
|
26
|
+
[ButtonStates.CLICKED]: getTexture("clicked/plus.png")
|
|
27
27
|
};
|
|
28
28
|
super(PlusButton.registryName, textureMap);
|
|
29
29
|
this.clickSound = SoundTracks.increaseRate;
|
|
@@ -15,7 +15,7 @@ export class RedButton extends BaseButton {
|
|
|
15
15
|
const textureMap = {
|
|
16
16
|
[ButtonStates.NORMAL]: Texture.from("red-n.png"),
|
|
17
17
|
[ButtonStates.CLICKED]: Texture.from("red-c.png"),
|
|
18
|
-
[ButtonStates.OVER]: Texture.from("red-h.png")
|
|
18
|
+
[ButtonStates.OVER]: Texture.from("red-h.png")
|
|
19
19
|
};
|
|
20
20
|
super(RedButton.registryName, textureMap);
|
|
21
21
|
}
|
|
@@ -33,7 +33,7 @@ export class RefreshButton extends BaseButton {
|
|
|
33
33
|
[ButtonStates.NORMAL]: getTexture("mobile/refresh.png"),
|
|
34
34
|
[ButtonStates.CLICKED]: getTexture("mobile/clicked/refresh.png"),
|
|
35
35
|
[ButtonStates.ACTIVE]: getTexture("mobile/stop.png"),
|
|
36
|
-
[ButtonStates.ACTIVE_CLICKED]: getTexture("mobile/clicked/stop.png")
|
|
36
|
+
[ButtonStates.ACTIVE_CLICKED]: getTexture("mobile/clicked/stop.png")
|
|
37
37
|
}
|
|
38
38
|
: {
|
|
39
39
|
[ButtonStates.NORMAL]: getTexture("normal/auto-start.png"),
|
|
@@ -41,7 +41,7 @@ export class RefreshButton extends BaseButton {
|
|
|
41
41
|
[ButtonStates.CLICKED]: getTexture("clicked/auto-start.png"),
|
|
42
42
|
[ButtonStates.ACTIVE]: getTextureSafely("normal/auto-start-on.png"),
|
|
43
43
|
[ButtonStates.ACTIVE_OVER]: getTextureSafely("hover/auto-start-on.png"),
|
|
44
|
-
[ButtonStates.ACTIVE_CLICKED]: getTextureSafely("clicked/auto-start-on.png")
|
|
44
|
+
[ButtonStates.ACTIVE_CLICKED]: getTextureSafely("clicked/auto-start-on.png")
|
|
45
45
|
};
|
|
46
46
|
super(RefreshButton.registryName, textureMap);
|
|
47
47
|
this.name = RefreshButton.registryName;
|
|
@@ -72,7 +72,7 @@ export class RefreshButton extends BaseButton {
|
|
|
72
72
|
initIncentiveAction(incentiveJobFlag, afterAllDoneCallback) {
|
|
73
73
|
const fullRotation = (2 * (360 * Math.PI)) / 180;
|
|
74
74
|
this.spinTween = new TWEEN.Tween({
|
|
75
|
-
rotation: this.arrowsSprite ? this.arrowsSprite.rotation : this.rotation
|
|
75
|
+
rotation: this.arrowsSprite ? this.arrowsSprite.rotation : this.rotation
|
|
76
76
|
})
|
|
77
77
|
.onUpdate(({ rotation }) => {
|
|
78
78
|
if (this.arrowsSprite)
|
|
@@ -81,7 +81,7 @@ export class RefreshButton extends BaseButton {
|
|
|
81
81
|
this.rotation = rotation;
|
|
82
82
|
})
|
|
83
83
|
.to({
|
|
84
|
-
rotation: fullRotation
|
|
84
|
+
rotation: fullRotation
|
|
85
85
|
}, 3000)
|
|
86
86
|
.easing(TWEEN.Easing.Back.InOut)
|
|
87
87
|
.start()
|
|
@@ -4,7 +4,7 @@ const createTextureMap = (speedLevel) => {
|
|
|
4
4
|
return {
|
|
5
5
|
[ButtonStates.NORMAL]: getTexture(`normal/speed-${speedLevel}.png`),
|
|
6
6
|
[ButtonStates.OVER]: getTexture(`hover/speed-${speedLevel}.png`),
|
|
7
|
-
[ButtonStates.CLICKED]: getTexture(`clicked/speed-${speedLevel}.png`)
|
|
7
|
+
[ButtonStates.CLICKED]: getTexture(`clicked/speed-${speedLevel}.png`)
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
@@ -23,7 +23,7 @@ export class SpeedControlButton extends BaseButton {
|
|
|
23
23
|
this.speedLevelMapper = {
|
|
24
24
|
slow: createTextureMap("turtle"),
|
|
25
25
|
normal: createTextureMap("rabbit"),
|
|
26
|
-
fast: createTextureMap("cheetah")
|
|
26
|
+
fast: createTextureMap("cheetah")
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
@@ -14,7 +14,7 @@ export class SpinConfirmationButton extends BaseButton {
|
|
|
14
14
|
const textureMap = {
|
|
15
15
|
[ButtonStates.NORMAL]: getTexture("freeSpin_confirm_normal.png"),
|
|
16
16
|
[ButtonStates.OVER]: getTexture("freeSpin_confirm_hover.png"),
|
|
17
|
-
[ButtonStates.CLICKED]: getTexture("freeSpin_confirm_clicked.png")
|
|
17
|
+
[ButtonStates.CLICKED]: getTexture("freeSpin_confirm_clicked.png")
|
|
18
18
|
};
|
|
19
19
|
super(SpinConfirmationButton.registryName, textureMap);
|
|
20
20
|
}
|
|
@@ -21,12 +21,12 @@ export class VolumeButton extends BaseButton {
|
|
|
21
21
|
const normalTextureMap = {
|
|
22
22
|
[ButtonStates.NORMAL]: getTexture("normal/sound.png"),
|
|
23
23
|
[ButtonStates.OVER]: getTexture("hover/sound.png"),
|
|
24
|
-
[ButtonStates.CLICKED]: getTexture("clicked/sound.png")
|
|
24
|
+
[ButtonStates.CLICKED]: getTexture("clicked/sound.png")
|
|
25
25
|
};
|
|
26
26
|
const muteTextureMap = {
|
|
27
27
|
[ButtonStates.NORMAL]: getTexture("mute.png"),
|
|
28
28
|
[ButtonStates.OVER]: getTexture("mute-h.png"),
|
|
29
|
-
[ButtonStates.CLICKED]: getTexture("mute-c.png")
|
|
29
|
+
[ButtonStates.CLICKED]: getTexture("mute-c.png")
|
|
30
30
|
};
|
|
31
31
|
super(VolumeButton.registryName, RainMan.settingsStore.isSoundEnabled() ? normalTextureMap : muteTextureMap);
|
|
32
32
|
this.normalTextureMap = normalTextureMap;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Container, Graphics, Ticker } from "pixi.js";
|
|
2
|
-
import { defaultSpeedConfig, SoundManager, SoundTracks, SPEED_LEVELS, spinSpeedLevels
|
|
2
|
+
import { defaultSpeedConfig, SoundManager, SoundTracks, SPEED_LEVELS, spinSpeedLevels } from "../../application";
|
|
3
3
|
import { FrameLayer } from "../../layers";
|
|
4
4
|
import { RainMan } from "../../Rainman";
|
|
5
5
|
import { Speed } from "../symbols";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Spine } from "pixi-spine";
|
|
2
|
-
import { defaultSpeedConfig, SoundManager, SoundTracks
|
|
2
|
+
import { defaultSpeedConfig, SoundManager, SoundTracks } from "../../application";
|
|
3
3
|
import { FrameLayer } from "../../layers";
|
|
4
4
|
import { RainMan } from "../../Rainman";
|
|
5
5
|
import { getDeviceOrientation, getSpineData, logError, scaleToParent } from "../../utils";
|
|
@@ -55,7 +55,7 @@ export class AbstractFrame extends ResumableContainer {
|
|
|
55
55
|
SoundManager.play(SoundTracks.mysteryFxLoop);
|
|
56
56
|
this.mysteryFxHighlight.state.setAnimation(0, this.mysteryFxConfig.startAnimationName || this.mysteryFxConfig.loopAnimationName, false);
|
|
57
57
|
this.mysteryFxHighlight.state.addListener({
|
|
58
|
-
complete: () => this.mysteryFxHighlight?.state.setAnimation(0, this.mysteryFxConfig.loopAnimationName, true)
|
|
58
|
+
complete: () => this.mysteryFxHighlight?.state.setAnimation(0, this.mysteryFxConfig.loopAnimationName, true)
|
|
59
59
|
});
|
|
60
60
|
this.addChild(this.mysteryFxHighlight);
|
|
61
61
|
}
|
|
@@ -136,7 +136,7 @@ export class AbstractFrame extends ResumableContainer {
|
|
|
136
136
|
this.changeFrameForOrientation();
|
|
137
137
|
const expectedScreenDimensions = {
|
|
138
138
|
width: this.transformedWidth(),
|
|
139
|
-
height: this.transformedHeight()
|
|
139
|
+
height: this.transformedHeight()
|
|
140
140
|
};
|
|
141
141
|
this.removeChild(this.innerFrame);
|
|
142
142
|
const dimensions = scaleToParent(this.width, this.height, expectedScreenDimensions.width, expectedScreenDimensions.height);
|
|
@@ -27,7 +27,7 @@ export class WinLineAnimation extends Spine {
|
|
|
27
27
|
this.state.timeScale = this.velocityMultiplier;
|
|
28
28
|
this.parentLayer = AnimationLayer;
|
|
29
29
|
this.state.addListener({
|
|
30
|
-
complete: () => this.resolvePlayingPromise()
|
|
30
|
+
complete: () => this.resolvePlayingPromise()
|
|
31
31
|
});
|
|
32
32
|
});
|
|
33
33
|
}
|
|
@@ -56,7 +56,7 @@ export class MessageBox extends Container {
|
|
|
56
56
|
fontSize,
|
|
57
57
|
fill: 0xffffff,
|
|
58
58
|
align: "center",
|
|
59
|
-
wordWrap: false
|
|
59
|
+
wordWrap: false
|
|
60
60
|
});
|
|
61
61
|
this.incentiveText.y = -25;
|
|
62
62
|
this.currentWinText.y = -25;
|
|
@@ -67,7 +67,7 @@ export class MessageBox extends Container {
|
|
|
67
67
|
this.currentWinText,
|
|
68
68
|
this.autoSpinText,
|
|
69
69
|
this.freeSpinText,
|
|
70
|
-
this.possibleWinText
|
|
70
|
+
this.possibleWinText
|
|
71
71
|
]);
|
|
72
72
|
}
|
|
73
73
|
updateIncentiveText(newText) {
|
|
@@ -192,7 +192,7 @@ export class MessageBox extends Container {
|
|
|
192
192
|
align: "center",
|
|
193
193
|
wordWrap: false,
|
|
194
194
|
padding: 5,
|
|
195
|
-
...winLineTextStyleOverrides
|
|
195
|
+
...winLineTextStyleOverrides
|
|
196
196
|
};
|
|
197
197
|
this.winLineIndicator = new WinLineIndicator(winLineTextStyle, getImageForSymbolId, message, symbolIds);
|
|
198
198
|
this.winLineIndicator.y = -this.currentWinText.y + this.winLineIndicator.height / 2;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Container, Sprite } from "pixi.js";
|
|
2
2
|
import { Spine } from "pixi-spine";
|
|
3
|
-
import { SymbolId } from "../../application";
|
|
3
|
+
import { SpeedAdapterInterface, SpeedLevel, SymbolId } from "../../application";
|
|
4
4
|
import { LoadersSpineData, Nullable } from "../../utils";
|
|
5
5
|
/**
|
|
6
6
|
* Class represents symbol which is displayed in columns
|
|
@@ -9,10 +9,11 @@ import { LoadersSpineData, Nullable } from "../../utils";
|
|
|
9
9
|
* @typedef {AbstractSymbolBase}
|
|
10
10
|
* @augments {Container}
|
|
11
11
|
*/
|
|
12
|
-
export declare abstract class AbstractSymbolBase extends Container {
|
|
12
|
+
export declare abstract class AbstractSymbolBase extends Container implements SpeedAdapterInterface<number> {
|
|
13
13
|
private multiplierSpineName;
|
|
14
14
|
symbolImage: Sprite;
|
|
15
15
|
spine: Spine;
|
|
16
|
+
speedLevelMapper: import("../../application").SpeedLevelDirectory<number>;
|
|
16
17
|
protected destroySuffix: string;
|
|
17
18
|
protected animationSpeedMultiplier: number;
|
|
18
19
|
private endOfMultiplierAnimationPromise;
|
|
@@ -22,6 +23,7 @@ export declare abstract class AbstractSymbolBase extends Container {
|
|
|
22
23
|
protected abstract paytableIgnoredSymbols: SymbolId[];
|
|
23
24
|
private _id;
|
|
24
25
|
protected constructor(parent: Container, symbolId: SymbolId, multiplierSpineName?: Nullable<string>);
|
|
26
|
+
adaptToSpeed(speedLevel: SpeedLevel): void;
|
|
25
27
|
get id(): SymbolId;
|
|
26
28
|
setInteractiveFlag(flag: boolean): void;
|
|
27
29
|
updateTimeScaleOfSpine(scale?: number): void;
|
|
@@ -15,6 +15,7 @@ export class AbstractSymbolBase extends Container {
|
|
|
15
15
|
multiplierSpineName;
|
|
16
16
|
symbolImage;
|
|
17
17
|
spine;
|
|
18
|
+
speedLevelMapper = animationsSpeedLevels;
|
|
18
19
|
destroySuffix = "destroy";
|
|
19
20
|
animationSpeedMultiplier = defaultSpeedConfig.animationDefaultSpeedScale;
|
|
20
21
|
endOfMultiplierAnimationPromise;
|
|
@@ -39,6 +40,9 @@ export class AbstractSymbolBase extends Container {
|
|
|
39
40
|
this.hitArea = new Rectangle(-symbolRadius, -symbolRadius, 2 * symbolRadius, 2 * symbolRadius);
|
|
40
41
|
this.setupClickListener();
|
|
41
42
|
}
|
|
43
|
+
adaptToSpeed(speedLevel) {
|
|
44
|
+
this.updateTimeScaleOfSpine(this.speedLevelMapper[speedLevel]);
|
|
45
|
+
}
|
|
42
46
|
get id() {
|
|
43
47
|
return this._id;
|
|
44
48
|
}
|
|
@@ -79,9 +83,7 @@ export class AbstractSymbolBase extends Container {
|
|
|
79
83
|
this.spine.scale.set(spineScale);
|
|
80
84
|
this.addChild(this.spine);
|
|
81
85
|
this.spine.state.addListener({
|
|
82
|
-
complete: () =>
|
|
83
|
-
resolve();
|
|
84
|
-
},
|
|
86
|
+
complete: () => resolve()
|
|
85
87
|
});
|
|
86
88
|
});
|
|
87
89
|
};
|
|
@@ -122,7 +124,7 @@ export class AbstractSymbolBase extends Container {
|
|
|
122
124
|
symbolMultiplier.state.setAnimation(0, `x${multiplier}`, false);
|
|
123
125
|
this.endOfMultiplierAnimationPromise = resolve;
|
|
124
126
|
symbolMultiplier.state.addListener({
|
|
125
|
-
complete: () => resolve()
|
|
127
|
+
complete: () => resolve()
|
|
126
128
|
});
|
|
127
129
|
});
|
|
128
130
|
this.removeChild(symbolMultiplier);
|
|
@@ -136,7 +138,7 @@ export class AbstractSymbolBase extends Container {
|
|
|
136
138
|
this.spine.state.timeScale = this.animationSpeedMultiplier;
|
|
137
139
|
this.spine.state.setAnimation(0, animationName, false);
|
|
138
140
|
this.spine.state.addListener({
|
|
139
|
-
complete: () => resolve()
|
|
141
|
+
complete: () => resolve()
|
|
140
142
|
});
|
|
141
143
|
});
|
|
142
144
|
}
|
|
@@ -157,7 +159,7 @@ export class AbstractSymbolBase extends Container {
|
|
|
157
159
|
this.spine.state.timeScale = this.animationSpeedMultiplier;
|
|
158
160
|
this.spine.state.setAnimation(0, animationName, false);
|
|
159
161
|
this.spine.state.addListener({
|
|
160
|
-
complete: () => resolve()
|
|
162
|
+
complete: () => resolve()
|
|
161
163
|
});
|
|
162
164
|
});
|
|
163
165
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as TWEEN from "@tweenjs/tween.js";
|
|
2
2
|
import { sample } from "lodash";
|
|
3
3
|
import { Container } from "pixi.js";
|
|
4
|
-
import { animationsSpeedLevels, defaultSpeedConfig, SoundManager, SoundTracks, SPEED_LEVELS
|
|
4
|
+
import { animationsSpeedLevels, defaultSpeedConfig, SoundManager, SoundTracks, SPEED_LEVELS } from "../../application";
|
|
5
5
|
import { FrameLayer } from "../../layers";
|
|
6
6
|
import { RainMan } from "../../Rainman";
|
|
7
7
|
import { getDeviceOrientation, logInfo } from "../../utils";
|
|
@@ -72,7 +72,7 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
72
72
|
wiggleTweenDuration: RainMan.config.durationOfActions.wiggleTweenDuration /
|
|
73
73
|
(this.phase === Phase.BOUNCE ? this.previousVelocityMultiplier : this.velocityMultiplier),
|
|
74
74
|
symbolDropDownTime: RainMan.config.durationOfActions.symbolDropDownTime / this.velocityMultiplier,
|
|
75
|
-
timeToSetResults: RainMan.config.durationOfActions.timeToSetResults / this.velocityMultiplier
|
|
75
|
+
timeToSetResults: RainMan.config.durationOfActions.timeToSetResults / this.velocityMultiplier
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
adaptToSpeed(speedLevel) {
|
|
@@ -301,7 +301,7 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
301
301
|
.easing(TWEEN.Easing.Bounce.Out)
|
|
302
302
|
.to({
|
|
303
303
|
y: firstSymbolToDrop.symbol.y +
|
|
304
|
-
this.tileHeight * droppableSymbolsInColumns.numberToBeDropped
|
|
304
|
+
this.tileHeight * droppableSymbolsInColumns.numberToBeDropped
|
|
305
305
|
}, this.componentsTimingSettings.symbolDropDownTime)
|
|
306
306
|
.onComplete(() => {
|
|
307
307
|
// when completed - sort symbols in array using their y position
|
|
@@ -21,7 +21,7 @@ export class UpdatableTextComponent extends UpdatableValueComponent {
|
|
|
21
21
|
fontSize,
|
|
22
22
|
fill: fontColor,
|
|
23
23
|
align: "center",
|
|
24
|
-
padding: 2
|
|
24
|
+
padding: 2
|
|
25
25
|
};
|
|
26
26
|
super(registryName, baseText, textStyle, { ...textStyle, fill: 0xffffff }, mode, updateCallback);
|
|
27
27
|
}
|