Candidates now carry their own stacking strategy, inheriting the route's when absent, so the default tilt applies consistently. Drop the now redundant explicit tilt from the poker deck.
140 lines
3.5 KiB
Markdown
140 lines
3.5 KiB
Markdown
# Poker
|
||
|
||
A standard 52-card poker deck, laid out on a table with a draw pile and
|
||
community-card slots. Exercises the bgm loader's `$variants` expansion to
|
||
generate a full deck from a single part definition.
|
||
|
||
```yaml file=poker.yaml
|
||
role: package
|
||
id: poker
|
||
title: Poker
|
||
designer: Public Domain
|
||
players: 9
|
||
language: en
|
||
```
|
||
|
||
## Parts
|
||
|
||
A single `card` part expanded into 52 cards by the `$variants` CSV. Each row
|
||
picks a cell from the `13×4` face sheet (`cards-13x4.jpg`) — 13 ranks across,
|
||
4 suits down. All cards share the same back from the `4×1` back sheet
|
||
(`back-4x1.png`).
|
||
|
||
```yaml file=cards.yaml
|
||
role: part
|
||
type: card
|
||
face: ./cards-13x4.jpg
|
||
back: ./back-4x1.png
|
||
size: [63, 88, 0.3]
|
||
fillet: 2
|
||
$variants: ./cards.csv
|
||
```
|
||
|
||
```csv file=cards.csv
|
||
id,rank,suit,faceCrop,backCrop
|
||
string,string,string,[number;number;number;number],[number;number;number;number]
|
||
2s,2,spades,[0;0;13;4],[0;0;4;1]
|
||
3s,3,spades,[1;0;13;4],[0;0;4;1]
|
||
4s,4,spades,[2;0;13;4],[0;0;4;1]
|
||
5s,5,spades,[3;0;13;4],[0;0;4;1]
|
||
6s,6,spades,[4;0;13;4],[0;0;4;1]
|
||
7s,7,spades,[5;0;13;4],[0;0;4;1]
|
||
8s,8,spades,[6;0;13;4],[0;0;4;1]
|
||
9s,9,spades,[7;0;13;4],[0;0;4;1]
|
||
10s,10,spades,[8;0;13;4],[0;0;4;1]
|
||
js,J,spades,[9;0;13;4],[0;0;4;1]
|
||
qs,Q,spades,[10;0;13;4],[0;0;4;1]
|
||
ks,K,spades,[11;0;13;4],[0;0;4;1]
|
||
as,A,spades,[12;0;13;4],[0;0;4;1]
|
||
2h,2,hearts,[0;1;13;4],[0;0;4;1]
|
||
3h,3,hearts,[1;1;13;4],[0;0;4;1]
|
||
4h,4,hearts,[2;1;13;4],[0;0;4;1]
|
||
5h,5,hearts,[3;1;13;4],[0;0;4;1]
|
||
6h,6,hearts,[4;1;13;4],[0;0;4;1]
|
||
7h,7,hearts,[5;1;13;4],[0;0;4;1]
|
||
8h,8,hearts,[6;1;13;4],[0;0;4;1]
|
||
9h,9,hearts,[7;1;13;4],[0;0;4;1]
|
||
10h,10,hearts,[8;1;13;4],[0;0;4;1]
|
||
jh,J,hearts,[9;1;13;4],[0;0;4;1]
|
||
qh,Q,hearts,[10;1;13;4],[0;0;4;1]
|
||
kh,K,hearts,[11;1;13;4],[0;0;4;1]
|
||
ah,A,hearts,[12;1;13;4],[0;0;4;1]
|
||
2d,2,diamonds,[0;2;13;4],[0;0;4;1]
|
||
3d,3,diamonds,[1;2;13;4],[0;0;4;1]
|
||
4d,4,diamonds,[2;2;13;4],[0;0;4;1]
|
||
5d,5,diamonds,[3;2;13;4],[0;0;4;1]
|
||
6d,6,diamonds,[4;2;13;4],[0;0;4;1]
|
||
7d,7,diamonds,[5;2;13;4],[0;0;4;1]
|
||
8d,8,diamonds,[6;2;13;4],[0;0;4;1]
|
||
9d,9,diamonds,[7;2;13;4],[0;0;4;1]
|
||
10d,10,diamonds,[8;2;13;4],[0;0;4;1]
|
||
jd,J,diamonds,[9;2;13;4],[0;0;4;1]
|
||
qd,Q,diamonds,[10;2;13;4],[0;0;4;1]
|
||
kd,K,diamonds,[11;2;13;4],[0;0;4;1]
|
||
ad,A,diamonds,[12;2;13;4],[0;0;4;1]
|
||
2c,2,clubs,[0;3;13;4],[0;0;4;1]
|
||
3c,3,clubs,[1;3;13;4],[0;0;4;1]
|
||
4c,4,clubs,[2;3;13;4],[0;0;4;1]
|
||
5c,5,clubs,[3;3;13;4],[0;0;4;1]
|
||
6c,6,clubs,[4;3;13;4],[0;0;4;1]
|
||
7c,7,clubs,[5;3;13;4],[0;0;4;1]
|
||
8c,8,clubs,[6;3;13;4],[0;0;4;1]
|
||
9c,9,clubs,[7;3;13;4],[0;0;4;1]
|
||
10c,10,clubs,[8;3;13;4],[0;0;4;1]
|
||
jc,J,clubs,[9;3;13;4],[0;0;4;1]
|
||
qc,Q,clubs,[10;3;13;4],[0;0;4;1]
|
||
kc,K,clubs,[11;3;13;4],[0;0;4;1]
|
||
ac,A,clubs,[12;3;13;4],[0;0;4;1]
|
||
```
|
||
|
||
## Board
|
||
|
||
A table with a draw pile on the left and five community-card slots across the
|
||
middle. The deck pile fans its stacked cards along a curve.
|
||
|
||
```yaml file=board.yaml
|
||
type: board
|
||
id: poker
|
||
role: surface
|
||
size: [600, 400]
|
||
layout:
|
||
- route: /deck
|
||
x: -250
|
||
y: 0
|
||
rotation: 0
|
||
stacking:
|
||
align: center
|
||
zStart: 0
|
||
#zEnd: 100
|
||
curve: M -50 -200 C 50 -150 450 -150 550 -200
|
||
- route: /community/:slot
|
||
candidates:
|
||
$variants: ./community.csv
|
||
```
|
||
|
||
```csv file=community.csv
|
||
slot,x,y,rotation
|
||
string,number,number,number
|
||
0,-100,0,0
|
||
1,-50,0,0
|
||
2,0,0,0
|
||
3,50,0,0
|
||
4,100,0,0
|
||
```
|
||
|
||
## Setup
|
||
|
||
Deal the whole deck onto the draw pile (`poker:card` expands to every card of
|
||
that type), then flip a flop onto the community slots.
|
||
|
||
```yaml file=main.yaml
|
||
role: setup
|
||
type: game
|
||
id: main
|
||
setup:
|
||
/deck: poker:card
|
||
/community/0: poker:card#as
|
||
/community/1: poker:card#kh
|
||
/community/2: poker:card#7d
|
||
```
|