pixi-rainman-game-engine 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/frame/AbstractColumnsContainer.d.ts +1 -1
- package/dist/components/frame/AbstractColumnsContainer.js +2 -2
- package/dist/components/messageBox/MessageBox.js +1 -0
- package/dist/components/symbols/AbstractSymbolBase.d.ts +2 -2
- package/dist/components/symbols/AbstractSymbolBase.js +3 -2
- package/dist/components/symbols/AbstractSymbolsColumn.d.ts +5 -3
- package/dist/components/symbols/AbstractSymbolsColumn.js +10 -4
- package/dist/connectivity/transformation.d.ts +6 -1
- package/dist/constants/transformation.d.ts +1 -0
- package/dist/constants/transformation.js +2 -1
- package/dist/controllers/UiController.js +0 -2
- package/package.json +1 -1
|
@@ -68,7 +68,7 @@ export declare abstract class AbstractColumnsContainer extends Container impleme
|
|
|
68
68
|
abstract getColumnAtPosition(column: number): AbstractSymbolsColumn;
|
|
69
69
|
stopPlayingSymbolsInColumns(): void;
|
|
70
70
|
setInteractivityForSymbols(flag: boolean): void;
|
|
71
|
-
handleDestroyTransformations(transformations: DropTransformationDetails[], skipAnimations?: boolean, isStandalone?: boolean): Promise<void>;
|
|
71
|
+
handleDestroyTransformations(transformations: DropTransformationDetails[], skipAnimations?: boolean, isStandalone?: boolean, allowSoundInSymbolsColumn?: boolean): Promise<void>;
|
|
72
72
|
protected createMask(): Graphics;
|
|
73
73
|
fixSymbolsColumnsPosition(): void;
|
|
74
74
|
protected prepareConfiguringReelsEnd(finalSymbolReels: SymbolReels): PlayableAction[];
|
|
@@ -188,12 +188,12 @@ export class AbstractColumnsContainer extends Container {
|
|
|
188
188
|
setInteractivityForSymbols(flag) {
|
|
189
189
|
this.allColumns.forEach((column) => column.setAllSymbolsInteractiveFlag(flag));
|
|
190
190
|
}
|
|
191
|
-
async handleDestroyTransformations(transformations, skipAnimations = false, isStandalone = false) {
|
|
191
|
+
async handleDestroyTransformations(transformations, skipAnimations = false, isStandalone = false, allowSoundInSymbolsColumn = true) {
|
|
192
192
|
if (transformations.length === 0) {
|
|
193
193
|
return Promise.resolve();
|
|
194
194
|
}
|
|
195
195
|
const column = this.getColumnAtPosition(transformations[0].coordinates.x);
|
|
196
|
-
await column.handleMultipleSymbolDropping(transformations, skipAnimations, isStandalone);
|
|
196
|
+
await column.handleMultipleSymbolDropping(transformations, skipAnimations, isStandalone, allowSoundInSymbolsColumn);
|
|
197
197
|
}
|
|
198
198
|
createMask() {
|
|
199
199
|
const mask = new Graphics();
|
|
@@ -125,6 +125,7 @@ export class MessageBox extends Container {
|
|
|
125
125
|
if (RainMan.settingsStore.isFreeSpinsPlayEnabled && RainMan.config.disableFreeSpinText)
|
|
126
126
|
return;
|
|
127
127
|
this.hideIncentiveText();
|
|
128
|
+
this.hidePossibleWinText();
|
|
128
129
|
if (this.currentWinShown)
|
|
129
130
|
return;
|
|
130
131
|
this.currentWinShown = true;
|
|
@@ -19,7 +19,7 @@ export declare abstract class AbstractSymbolBase extends Container {
|
|
|
19
19
|
protected animationSpeedMultiplier: number;
|
|
20
20
|
private endOfMultiplierAnimationPromise;
|
|
21
21
|
protected endOfSymbolAnimationPromise: ((value: void | PromiseLike<void>) => void) | undefined;
|
|
22
|
-
|
|
22
|
+
protected popSymbolAnimationPromise: ((value: void | PromiseLike<void>) => void) | undefined;
|
|
23
23
|
protected abstract paytableIgnoredSymbols: SymbolId[];
|
|
24
24
|
private _id;
|
|
25
25
|
protected constructor(parent: Container, symbolId: SymbolId, multiplierSpineName?: Nullable<string>);
|
|
@@ -34,7 +34,7 @@ export declare abstract class AbstractSymbolBase extends Container {
|
|
|
34
34
|
popSymbol(suffix?: string): Promise<void>;
|
|
35
35
|
swapSymbol(symbolId: SymbolId): void;
|
|
36
36
|
private setupClickListener;
|
|
37
|
-
protected setSymbol(symbolId: SymbolId): void;
|
|
37
|
+
protected setSymbol(symbolId: SymbolId, shouldSwitchSprite?: boolean): void;
|
|
38
38
|
protected resolveAndDestroyPlayingPromise(): void;
|
|
39
39
|
protected abstract getResourceForSymbolId(symbolId: SymbolId): LoadersSpineData;
|
|
40
40
|
protected abstract getAnimationNameForSymbol(symbolId: SymbolId, suffix?: string): string;
|
|
@@ -141,9 +141,10 @@ export class AbstractSymbolBase extends Container {
|
|
|
141
141
|
togglePaytable();
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
setSymbol(symbolId) {
|
|
144
|
+
setSymbol(symbolId, shouldSwitchSprite = true) {
|
|
145
145
|
this._id = symbolId;
|
|
146
|
-
|
|
146
|
+
if (shouldSwitchSprite)
|
|
147
|
+
this.switchSymbolBaseDisplayedObject("sprite");
|
|
147
148
|
}
|
|
148
149
|
resolveAndDestroyPlayingPromise() {
|
|
149
150
|
if (this.endOfMultiplierAnimationPromise) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Container } from "pixi.js";
|
|
2
2
|
import { SpeedAdapterInterface, SpeedLevel, SymbolId } from "../../application";
|
|
3
3
|
import { DropTransformationDetails, SymbolReel } from "../../connectivity";
|
|
4
|
+
import { Nullable } from "../../utils";
|
|
4
5
|
import { AbstractColumnsContainer, AbstractFrame } from "../frame";
|
|
5
6
|
import { AbstractSymbolBase } from "./AbstractSymbolBase";
|
|
6
7
|
import { AnimationTimeSettings } from "./types";
|
|
7
8
|
/**
|
|
8
9
|
* Class represent single column in ColumnsContainer
|
|
9
|
-
* @date 12/04/2024 - 13:34:42
|
|
10
10
|
*
|
|
11
11
|
* @export
|
|
12
12
|
* @abstract
|
|
@@ -40,7 +40,8 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
40
40
|
private triggerNextColumnPromise;
|
|
41
41
|
private spinEndPromise;
|
|
42
42
|
skipHidingMysteryFx: boolean;
|
|
43
|
-
protected bonusSymbol: SymbolId
|
|
43
|
+
protected bonusSymbol: Nullable<SymbolId>;
|
|
44
|
+
protected frozenSymbol: Nullable<AbstractSymbolBase>;
|
|
44
45
|
private readonly _id;
|
|
45
46
|
protected constructor(id: string, columnsContainer: AbstractColumnsContainer, allSymbols: SymbolId[]);
|
|
46
47
|
protected abstract get tileHeight(): number;
|
|
@@ -62,7 +63,7 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
62
63
|
getSymbolAtPosition(position: number): AbstractSymbolBase;
|
|
63
64
|
findSymbols(symbolId: SymbolId): Array<AbstractSymbolBase>;
|
|
64
65
|
playSymbolAtPosition(position: number, playSymbol: boolean, multiplier?: number, suffix?: string): Promise<void>;
|
|
65
|
-
handleMultipleSymbolDropping(transformations: DropTransformationDetails[], skipAnimation?: boolean, isStandalone?: boolean): Promise<void>;
|
|
66
|
+
handleMultipleSymbolDropping(transformations: DropTransformationDetails[], skipAnimation?: boolean, isStandalone?: boolean, allowSoundInSymbolsColumn?: boolean): Promise<void>;
|
|
66
67
|
private changePhase;
|
|
67
68
|
private moveToTop;
|
|
68
69
|
protected shouldPlaySpecialRollStopSound(): boolean;
|
|
@@ -84,5 +85,6 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
|
|
|
84
85
|
fixStationaryPositions(): void;
|
|
85
86
|
private initStopTween;
|
|
86
87
|
protected sortSymbols(): void;
|
|
88
|
+
protected areAnyFrozenTiles(): boolean;
|
|
87
89
|
private ensureIsRightEnding;
|
|
88
90
|
}
|
|
@@ -9,7 +9,6 @@ import { droppableSymbolsFactory } from "./DroppableSymbolsColumn";
|
|
|
9
9
|
import { Phase, Speed } from "./types";
|
|
10
10
|
/**
|
|
11
11
|
* Class represent single column in ColumnsContainer
|
|
12
|
-
* @date 12/04/2024 - 13:34:42
|
|
13
12
|
*
|
|
14
13
|
* @export
|
|
15
14
|
* @abstract
|
|
@@ -44,6 +43,7 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
44
43
|
spinEndPromise = null;
|
|
45
44
|
skipHidingMysteryFx = false;
|
|
46
45
|
bonusSymbol = null;
|
|
46
|
+
frozenSymbol = null;
|
|
47
47
|
_id;
|
|
48
48
|
constructor(id, columnsContainer, allSymbols) {
|
|
49
49
|
super();
|
|
@@ -203,7 +203,7 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
203
203
|
}
|
|
204
204
|
symbolToPlay.switchSymbolBaseDisplayedObject("sprite");
|
|
205
205
|
}
|
|
206
|
-
async handleMultipleSymbolDropping(transformations, skipAnimation = false, isStandalone = false) {
|
|
206
|
+
async handleMultipleSymbolDropping(transformations, skipAnimation = false, isStandalone = false, allowSoundInSymbolsColumn = true) {
|
|
207
207
|
this.changePhase(Phase.DROPPING);
|
|
208
208
|
const symbols = this.getSymbolsSortedByYPosition();
|
|
209
209
|
const height = RainMan.config.numberOfRows;
|
|
@@ -215,7 +215,8 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
215
215
|
droppableSymbolsInColumns.calculateSymbolsMovementInTransformation();
|
|
216
216
|
if (!skipAnimation)
|
|
217
217
|
await droppableSymbolsInColumns.playAnimations();
|
|
218
|
-
|
|
218
|
+
if (allowSoundInSymbolsColumn)
|
|
219
|
+
SoundManager.play(isStandalone ? SoundTracks.standaloneBoom : SoundTracks.boom);
|
|
219
220
|
await droppableSymbolsInColumns.destroyAnimations(isStandalone);
|
|
220
221
|
droppableSymbolsInColumns.moveDestroyedSymbolsToTop(this.tileHeight);
|
|
221
222
|
droppableSymbolsInColumns.swapDestroyedSymbols();
|
|
@@ -320,7 +321,9 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
320
321
|
if (!this.topMostSymbol || this.phase === Phase.END)
|
|
321
322
|
return;
|
|
322
323
|
if (this.topMostSymbol.y >= this.tileHeight / 2) {
|
|
323
|
-
if (!this.columnsContainer.quickReelsStop &&
|
|
324
|
+
if (!this.columnsContainer.quickReelsStop &&
|
|
325
|
+
RainMan.settingsStore.currentSpeed !== SPEED_LEVELS.fast &&
|
|
326
|
+
!this.areAnyFrozenTiles())
|
|
324
327
|
SoundManager.play(this.shouldPlaySpecialRollStopSound() ? SoundTracks.specialSymbolOnReel : SoundTracks.rollStop);
|
|
325
328
|
this.fixStationaryPositions();
|
|
326
329
|
this.doStop();
|
|
@@ -444,6 +447,9 @@ export class AbstractSymbolsColumn extends Container {
|
|
|
444
447
|
sortSymbols() {
|
|
445
448
|
this.symbols = this.getSymbolsSortedByYPosition();
|
|
446
449
|
}
|
|
450
|
+
areAnyFrozenTiles() {
|
|
451
|
+
return !!this.frozenSymbol;
|
|
452
|
+
}
|
|
447
453
|
ensureIsRightEnding() {
|
|
448
454
|
let position = 0;
|
|
449
455
|
for (const symbol of this.symbols) {
|
|
@@ -34,7 +34,12 @@ export type SpinAndFreezeTransformationDetails = {
|
|
|
34
34
|
symbolsOnReels: SymbolReels;
|
|
35
35
|
coordinates: Point[];
|
|
36
36
|
};
|
|
37
|
-
export type
|
|
37
|
+
export type SwapTransformationDetails = {
|
|
38
|
+
type: typeof transformationTypes.swap;
|
|
39
|
+
coordinates: Point;
|
|
40
|
+
symbolId: SymbolId;
|
|
41
|
+
};
|
|
42
|
+
export type TransformationDetails = DropTransformationDetails | VerticalTransformationDetails | ReplaceTransformationDetails | SpinTransformationDetails | FreezeTransformationDetails | SwapTransformationDetails;
|
|
38
43
|
export type RawVerticalTransformationDetails = {
|
|
39
44
|
coordinates: Point;
|
|
40
45
|
};
|
package/package.json
CHANGED