From 68cc57cc2739e1d7892f6b1c92ff1304ab2098af Mon Sep 17 00:00:00 2001 From: Matt Soucy Date: Sat, 14 Jan 2023 15:44:16 -0500 Subject: [PATCH] Start CSV cards --- 2022/11-setlist/data.csv | 19 +++++++++++++++++++ 2022/11-setlist/data.yml | 20 +++++++++++++++++++- 2022/11-setlist/deck.rb | 16 +++++++++++++--- 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 2022/11-setlist/data.csv 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]})" }