-
-
Notifications
You must be signed in to change notification settings - Fork 32
/
major-arcana.ts
37 lines (29 loc) · 930 Bytes
/
major-arcana.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { Deck } from './_deck';
import { Card } from '../cards';
import { RandomGenerator } from '../shuffle';
import { majorArcana } from '../suits';
import { majorArcana as ma } from '../ranks';
export interface MajorArcanaDeckOpts {
rng?: RandomGenerator;
}
const arcanaRanks = [
ma.arcana0, ma.arcana1, ma.arcana2, ma.arcana3, ma.arcana4, ma.arcana5, ma.arcana6, ma.arcana7,
ma.arcana8, ma.arcana9, ma.arcana10, ma.arcana11, ma.arcana12, ma.arcana13, ma.arcana14,
ma.arcana15, ma.arcana16, ma.arcana17, ma.arcana18, ma.arcana19, ma.arcana20, ma.arcana21
];
export class MajorArcanaDeck extends Deck {
constructor(opts: MajorArcanaDeckOpts = { }) {
const cards = MajorArcanaDeck.generateCards();
super({
cards,
rng: opts.rng
});
}
private static generateCards() {
const cards: Card[] = [ ];
arcanaRanks.forEach((rank) => {
cards.push(new Card(majorArcana, rank));
});
return cards;
}
}