diff --git a/2022/11-setlist/data.csv b/2022/11-setlist/data.csv
new file mode 100644
index 0000000..3d63f28
--- /dev/null
+++ b/2022/11-setlist/data.csv
@@ -0,0 +1,19 @@
+name,volume,traits,audience,effect,blurb
+Opener,mp,,2,+3 {a} if the first song in your set,
+Intermission,ppp,,0,,
+Love Ballad,f,l,4,,
+Rage Against The Man,fff,a,4,,
+Everything Is Awesome,mf,j,4,,
+Tears in the Rain,p,s,4,,
+Breakup Song,ff,la,3,+3 {a} if another band played a {l} song,
+New Relationship,mf,lj,+4 {a} if the first {l} song in any band's setlist,
+Brokenhearted,p,ls,0,,
+Mixed Messages,f,aj,0,,
+Betrayed,f,as,2,+3 {a} if immediately following a {j} song in your setlist,
+Happy To Be Sad,f,js,0,+2 {a} for each {s} song already in your setlist,
+Indignant Love,f,laj,0,,
+Unrequited Love,f,las,0,,
+Butterflies In The Stomach,f,ljs,0,,
+Rampage,f,ajs,0,,
+Everything At Once,f,lajs,0,,
+Wildcard,f,lajs,0,,
\ No newline at end of file
diff --git a/2022/11-setlist/data.yml b/2022/11-setlist/data.yml
index afbfe36..bbc4afc 100644
--- a/2022/11-setlist/data.yml
+++ b/2022/11-setlist/data.yml
@@ -1,56 +1,74 @@
- name: Opener
volume: p
effect: +5 {a} if the first song in your set.
+ traits:
- name: "Entr'acte"
volume: p
effect: +3 {a} if not the first or last song in your set.
+ traits:
- name: Reprise
volume: f
effect: +3 {a} if in the second half in your set.
+ traits:
- name: Breakup Song
volume: ff
effect: +3 {a}. +2 additional {a} if any band has played a Love Song
blurb: You may hate yourself for loving it, but you oughta know that these songs pack a punch.
+ traits:
- name: Love Song
volume: mp
effect: +2 {a}. +3 additional {a} if Love Song is the loudest song in your set.
blurb: I forgot how this goes, but it's all coming back to me now.
+ traits:
- name: Power Ballad
volume: ff
effect: +3 {a}
+ traits:
- name: Call and Response
volume: f
effect: +2 {a} for each song before this one.
+ traits:
- name: Heavy Hitter
volume: fff
effect: +4 {a}.
+ traits:
- name: Protest Song
volume: ff
effect: +1 {a}. +3 {a} if the loudest song this round.
+ traits:
- name: Signature Song
volume: f
effect: +5 {a}.
+ traits:
- name: Buildup
volume: pp
effect: Add +2 {a} to the next song in your set.
+ traits:
- name: Breakdown
volume: mf
effect: +2 {a} for each quieter song played this round.
+ traits:
- name: Sleazy
volume: mf
effect: +4 {a} if not the loudest song this round.
+ traits:
- name: Showstopper
volume: fff
effect: +5 {a} if the last song in your set.
+ traits:
- name: Remix
volume: f
effect: Repeat the effect of the song immediately before this in your set.
+ traits:
- name: Acoustic Cover
volume: mp
effect: Copy the effect of a song in another band's setlist.
+ traits:
- name: Heavy Cover
volume: f
effect: Copy the effect of a song in another band's setlist.
+ traits:
- name: Encore
volume: mf
- effect: +5 {a} if the last song in your set.
\ No newline at end of file
+ effect: +5 {a} if the last song in your set.
+ traits:
\ No newline at end of file
diff --git a/2022/11-setlist/deck.rb b/2022/11-setlist/deck.rb
index 07c8102..3d392fb 100644
--- a/2022/11-setlist/deck.rb
+++ b/2022/11-setlist/deck.rb
@@ -29,9 +29,9 @@ VOLUMES = {
"fff" => 8,
}
-data = Squib.yaml file: 'data.yml'
+data = Squib.csv file: 'data.csv'
-Squib::Deck.new(cards: 18) do
+Squib::Deck.new(cards: data.nrows) do
use_layout file: 'economy.yml'
use_layout file: 'layout.yml'
background color: 'white'
@@ -40,13 +40,23 @@ Squib::Deck.new(cards: 18) do
text layout: :title, str: data.name
- svg layout: :art, data: Icons::MUSIC
+ # svg layout: :art, data: Icons::MUSIC
+ text layout: :art, align: :center, valign: :middle, str: data.traits do |embed|
+ embed.svg key: 'l', width: 128, height: 128, data: Icons::LOVE
+ embed.svg key: 'a', width: 128, height: 128, data: Icons::ANGER
+ embed.svg key: 'j', width: 128, height: 128, data: Icons::JOY
+ embed.svg key: 's', width: 128, height: 128, data: Icons::SAD
+ end
rect layout: :description
text layout: :description, str: data.effect.zip(data.blurb).map { |e, b|
"#{e}#{b ? "\n#{b}" : nil}"
} do |embed|
embed.svg key: '{a}', width: 32, height: 32, data: Icons::AUDIENCE
+ embed.svg key: '{l}', width: 32, height: 32, data: Icons::LOVE
+ embed.svg key: '{a}', width: 32, height: 32, data: Icons::ANGER
+ embed.svg key: '{j}', width: 32, height: 32, data: Icons::JOY
+ embed.svg key: '{s}', width: 32, height: 32, data: Icons::SAD
end
text layout: :type, markup: true, str: data.volume.map { |v| "#{v} (#{VOLUMES[v]})" }