pixi-rainman-game-engine 0.2.18 → 0.2.20
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/Rainman/appConfig.js +1 -0
- package/dist/Rainman/types.d.ts +1 -0
- package/dist/SettingsUI/components/CloseModalButton/index.d.ts +3 -1
- package/dist/SettingsUI/components/CloseModalButton/index.jsx +8 -2
- package/dist/application/ApiConfig/ApiConfig.js +1 -1
- package/dist/application/ButtonsEventManager/ButtonsEventManager.js +8 -2
- 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 +5 -6
- 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/AbstractSymbolsColumn.js +3 -3
- package/dist/components/updatable/UpdatableTextComponent.js +1 -1
- package/dist/components/updatable/UpdatableValueComponent.d.ts +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.js +13 -11
- package/dist/loading/SpriteLoadingContainer.js +1 -1
- package/dist/localStorage/localStorage.js +1 -1
- package/dist/stores/SettingsStore.d.ts +7 -1
- package/dist/stores/SettingsStore.js +14 -5
- package/dist/winComponents/BaseWinContainer.d.ts +48 -0
- package/dist/winComponents/BaseWinContainer.js +133 -0
- package/dist/winComponents/BigWinContainer.d.ts +15 -0
- package/dist/winComponents/BigWinContainer.js +12 -0
- package/dist/winComponents/MysteryWinContainer.d.ts +15 -0
- package/dist/winComponents/MysteryWinContainer.js +12 -0
- package/dist/winComponents/TexturedText.d.ts +9 -0
- package/dist/winComponents/TexturedText.js +31 -0
- package/dist/winComponents/index.d.ts +2 -0
- package/dist/winComponents/index.js +2 -0
- package/dist/winComponents/winFactory.d.ts +26 -0
- package/dist/winComponents/winFactory.js +50 -2
- 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
package/dist/Rainman/types.d.ts
CHANGED
|
@@ -48,6 +48,7 @@ export type OptionalAppConfig = {
|
|
|
48
48
|
mysteryWinMinimumTime: number;
|
|
49
49
|
bigWinMinimumTime: number;
|
|
50
50
|
bigWinPhaseTimeout: number;
|
|
51
|
+
mysteryPhaseTimeout: number;
|
|
51
52
|
bonusWinPhaseTimeout: number;
|
|
52
53
|
bonusWinMinimumTime: number;
|
|
53
54
|
superBonusWinPhaseTimeout: number;
|
|
@@ -4,4 +4,6 @@ export type CloseModalButtonProps = {
|
|
|
4
4
|
layerId: string;
|
|
5
5
|
afterClose?: () => void;
|
|
6
6
|
};
|
|
7
|
-
export declare const CloseModalButton: ({ layerId, afterClose }: CloseModalButtonProps) => JSX.Element
|
|
7
|
+
export declare const CloseModalButton: (({ layerId, afterClose }: CloseModalButtonProps) => JSX.Element) & {
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import "./closeModalButton.css";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
2
3
|
import React from "react";
|
|
3
4
|
import { UI_ITEMS } from "../../../utils";
|
|
4
5
|
import { useStores } from "../../hooks";
|
|
5
|
-
export const CloseModalButton = ({ layerId, afterClose }) => {
|
|
6
|
+
export const CloseModalButton = observer(({ layerId, afterClose }) => {
|
|
6
7
|
const { settingStore } = useStores();
|
|
8
|
+
const { isFreeSpinsPlayEnabled, isFreeSpinsBought, betChangeDisabled } = settingStore;
|
|
9
|
+
const isBetDisabled = isFreeSpinsPlayEnabled || betChangeDisabled || isFreeSpinsBought;
|
|
7
10
|
const onClose = () => {
|
|
8
11
|
settingStore.handleModalInvocation?.(layerId);
|
|
9
12
|
if (layerId === UI_ITEMS.speedSettings) {
|
|
10
13
|
settingStore.setSpeedPopupVisibility?.("none");
|
|
11
14
|
}
|
|
15
|
+
if (isBetDisabled) {
|
|
16
|
+
settingStore.enableButtons?.();
|
|
17
|
+
}
|
|
12
18
|
afterClose?.();
|
|
13
19
|
};
|
|
14
20
|
return (<button className="close-modal-button" onClick={onClose}>
|
|
15
21
|
x
|
|
16
22
|
</button>);
|
|
17
|
-
};
|
|
23
|
+
});
|
|
@@ -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";
|
|
@@ -44,7 +44,12 @@ export class ButtonsEventManager {
|
|
|
44
44
|
* @returns {() => void} function for enabling/disabling buttons
|
|
45
45
|
*/
|
|
46
46
|
setButtonAvailability = (makeDisabled) => () => {
|
|
47
|
-
const
|
|
47
|
+
const isDisabled = RainMan.settingsStore.isFreeSpinsPlayEnabled ||
|
|
48
|
+
RainMan.settingsStore.isFreeSpinsBought ||
|
|
49
|
+
RainMan.settingsStore.betChangeDisabled;
|
|
50
|
+
const buttonsToDisable = isDisabled
|
|
51
|
+
? [SpeedControlButton.registryName]
|
|
52
|
+
: [SpeedControlButton.registryName, BUTTONS.neg, BUTTONS.plus];
|
|
48
53
|
buttonsToDisable.forEach((buttonRegistryName) => RainMan.componentRegistry.get(buttonRegistryName).flipDisabledFlag(makeDisabled));
|
|
49
54
|
RainMan.componentRegistry.get(VolumeButton.registryName).changeTextureDependOnVolume();
|
|
50
55
|
};
|
|
@@ -53,6 +58,7 @@ export class ButtonsEventManager {
|
|
|
53
58
|
constructor() {
|
|
54
59
|
RainMan.settingsStore.handleModalInvocation = this.handleModalInvocation.bind(this);
|
|
55
60
|
RainMan.settingsStore.setSpeedPopupVisibility = this.setSpeedPopupVisibility.bind(this);
|
|
61
|
+
RainMan.settingsStore.enableButtons = this.enableButtons.bind(this);
|
|
56
62
|
}
|
|
57
63
|
/**
|
|
58
64
|
* Method for initializing events in Settings UI
|
|
@@ -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 { 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,8 +32,8 @@ 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
|
|
36
|
-
protected mysteryWinContainer: Nullable<UpdatableSpineContainer
|
|
35
|
+
protected bigWinContainer: Nullable<UpdatableSpineContainer> | BigWinContainer;
|
|
36
|
+
protected mysteryWinContainer: Nullable<UpdatableSpineContainer> | MysteryWinContainer;
|
|
37
37
|
protected bonusWinContainer: Nullable<UpdatableSpineContainer>;
|
|
38
38
|
protected superBonusWinContainer: Nullable<UpdatableSpineContainer>;
|
|
39
39
|
protected overlay: Nullable<Graphics>;
|
|
@@ -88,7 +88,7 @@ export declare abstract class AbstractMainContainer extends Container {
|
|
|
88
88
|
* Function for creating mystery win container
|
|
89
89
|
* @returns {Nullable<UpdatableSpineContainer>} The container for the mystery win animation, or null.
|
|
90
90
|
*/
|
|
91
|
-
protected createMysteryWinContainer(): Nullable<UpdatableSpineContainer
|
|
91
|
+
protected createMysteryWinContainer(): Nullable<UpdatableSpineContainer> | MysteryWinContainer;
|
|
92
92
|
/**
|
|
93
93
|
* Function for specifying the container for the free spin summary
|
|
94
94
|
* This needs to be implemented in each game
|
|
@@ -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,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
|
}
|
|
@@ -14,7 +14,7 @@ import { UpdatableMode } from "./types";
|
|
|
14
14
|
export declare abstract class UpdatableValueComponent extends Container implements SpeedAdapterInterface<number> {
|
|
15
15
|
private mode;
|
|
16
16
|
private updateCallback?;
|
|
17
|
-
|
|
17
|
+
protected updatableValue: number;
|
|
18
18
|
protected finalValue: number;
|
|
19
19
|
protected readonly baseTextComponent: Text;
|
|
20
20
|
protected readonly valueTextComponent: Text;
|