pokie
Version:
A server-side video slot game logic framework for JavaScript and TypeScript.
33 lines (28 loc) • 1.2 kB
text/typescript
import {
PseudorandomNumberGenerator,
RandomNumberGenerating,
SymbolsCombination,
SymbolsCombinationDescribing,
SymbolsCombinationsGenerating,
VideoSlotConfigDescribing,
} from "pokie";
export class SymbolsCombinationsGenerator implements SymbolsCombinationsGenerating {
private readonly rng: RandomNumberGenerating;
private readonly config: VideoSlotConfigDescribing;
constructor(config: VideoSlotConfigDescribing, rng: RandomNumberGenerating = new PseudorandomNumberGenerator()) {
this.config = config;
this.rng = rng;
}
public generateSymbolsCombination(): SymbolsCombinationDescribing {
const arr: string[][] = new Array(this.config.getReelsNumber());
for (let i = 0; i < this.config.getReelsNumber(); i++) {
arr[i] = this.getRandomReelSymbols(i);
}
return new SymbolsCombination().fromMatrix(arr);
}
private getRandomReelSymbols(reelId: number): string[] {
const sequence = this.config.getSymbolsSequences()[reelId];
const random = this.rng.getRandomInt(0, sequence.getSize());
return sequence.getSymbols(random, this.config.getReelsSymbolsNumber());
}
}