pokie
Version:
A server-side video slot game logic framework for JavaScript and TypeScript.
91 lines • 3.75 kB
JavaScript
import { WinningLinesAnalyzer } from "pokie";
export class PlayUntilSymbolWinStrategy {
constructor(symbolId) {
this.minLinesNumber = 1;
this.onlySameSymbolId = false;
this.allowWilds = true;
this.symbolId = symbolId;
}
canPlayNextSimulationRound(session) {
const rgSession = session;
const symbolsCombination = rgSession.getSymbolsCombination();
const winningLines = rgSession.getWinningLines();
const winningLinesArray = Object.values(winningLines);
const winningScatters = rgSession.getWinningScatters();
let r;
if (!session.isSymbolScatter(this.getSymbolId())) {
r =
Object.keys(winningLines).length < this.getMinLinesNumber() ||
Object.keys(winningScatters).length > 0 ||
WinningLinesAnalyzer.getLinesWithWinningSymbol(winningLinesArray, this.getSymbolId()).length === 0 ||
(this.isOnlySameSymbolId() && !WinningLinesAnalyzer.allLinesHaveSameSymbolId(winningLinesArray)) ||
(!this.isAllowWilds() &&
WinningLinesAnalyzer.getLinesWithSymbol(winningLinesArray, symbolsCombination.toMatrix(), this.getWildSymbolId()).length > 0);
if (this.getMinNumberOfWinningSymbols() !== undefined &&
!Object.values(winningLines).some((line) => line.getSymbolsPositions().length >= this.getMinNumberOfWinningSymbols())) {
r = true;
}
if (this.getExactNumberOfWinningSymbols() !== undefined &&
!Object.values(winningLines).some((line) => line.getSymbolsPositions().length === this.getExactNumberOfWinningSymbols())) {
r = true;
}
}
else {
r =
Object.keys(winningScatters).length === 0 ||
Object.keys(winningLines).length > 0 ||
!Object.keys(winningScatters).includes(this.getSymbolId());
if (Object.keys(winningScatters).includes(this.getSymbolId())) {
if (this.getMinNumberOfWinningSymbols() !== undefined &&
winningScatters[this.getSymbolId()].getSymbolsPositions().length <
this.getMinNumberOfWinningSymbols()) {
r = true;
}
if (this.getExactNumberOfWinningSymbols() !== undefined &&
winningScatters[this.getSymbolId()].getSymbolsPositions().length !==
this.getExactNumberOfWinningSymbols()) {
r = true;
}
}
}
return r;
}
getSymbolId() {
return this.symbolId;
}
getMinLinesNumber() {
return this.minLinesNumber;
}
setMinLinesNumber(minLinesNumber) {
this.minLinesNumber = minLinesNumber;
}
isOnlySameSymbolId() {
return this.onlySameSymbolId;
}
setOnlySameSymbolId(onlySameSymbolId) {
this.onlySameSymbolId = onlySameSymbolId;
}
isAllowWilds() {
return this.allowWilds;
}
setAllowWilds(allowWilds, wildSymbolId) {
this.allowWilds = allowWilds;
this.wildSymbolId = wildSymbolId;
}
getWildSymbolId() {
return this.wildSymbolId;
}
setMinNumberOfWinningSymbols(value) {
this.minNumberOfWinningSymbols = value;
}
getMinNumberOfWinningSymbols() {
return this.minNumberOfWinningSymbols;
}
setExactNumberOfWinningSymbols(value) {
this.exactNumberOfWinningSymbols = value;
}
getExactNumberOfWinningSymbols() {
return this.exactNumberOfWinningSymbols;
}
}
//# sourceMappingURL=PlayUntilSymbolWinStrategy.js.map