Compare commits

..

2 Commits

Author SHA1 Message Date
68cc57cc27 Start CSV cards 2023-01-14 15:44:16 -05:00
624109beda Fix icon import 2023-01-13 20:24:33 -05:00
3 changed files with 52 additions and 5 deletions

19
2022/11-setlist/data.csv Normal file
View File

@ -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,,
1 name,volume,traits,audience,effect,blurb
2 Opener,mp,,2,+3 {a} if the first song in your set,
3 Intermission,ppp,,0,,
4 Love Ballad,f,l,4,,
5 Rage Against The Man,fff,a,4,,
6 Everything Is Awesome,mf,j,4,,
7 Tears in the Rain,p,s,4,,
8 Breakup Song,ff,la,3,+3 {a} if another band played a {l} song,
9 New Relationship,mf,lj,+4 {a} if the first {l} song in any band's setlist,
10 Brokenhearted,p,ls,0,,
11 Mixed Messages,f,aj,0,,
12 Betrayed,f,as,2,+3 {a} if immediately following a {j} song in your setlist,
13 Happy To Be Sad,f,js,0,+2 {a} for each {s} song already in your setlist,
14 Indignant Love,f,laj,0,,
15 Unrequited Love,f,las,0,,
16 Butterflies In The Stomach,f,ljs,0,,
17 Rampage,f,ajs,0,,
18 Everything At Once,f,lajs,0,,
19 Wildcard,f,lajs,0,,

View File

@ -1,56 +1,74 @@
- name: Opener - name: Opener
volume: p volume: p
effect: +5 {a} if the first song in your set. effect: +5 {a} if the first song in your set.
traits:
- name: "Entr'acte" - name: "Entr'acte"
volume: p volume: p
effect: +3 {a} if not the first or last song in your set. effect: +3 {a} if not the first or last song in your set.
traits:
- name: Reprise - name: Reprise
volume: f volume: f
effect: +3 {a} if in the second half in your set. effect: +3 {a} if in the second half in your set.
traits:
- name: Breakup Song - name: Breakup Song
volume: ff volume: ff
effect: +3 {a}. +2 additional {a} if any band has played a <b>Love Song</b> effect: +3 {a}. +2 additional {a} if any band has played a <b>Love Song</b>
blurb: You may hate yourself for loving it, but you oughta know that these songs pack a punch. blurb: You may hate yourself for loving it, but you oughta know that these songs pack a punch.
traits:
- name: Love Song - name: Love Song
volume: mp volume: mp
effect: +2 {a}. +3 additional {a} if Love Song is the loudest song in your set. 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. blurb: I forgot how this goes, but it's all coming back to me now.
traits:
- name: Power Ballad - name: Power Ballad
volume: ff volume: ff
effect: +3 {a} effect: +3 {a}
traits:
- name: Call and Response - name: Call and Response
volume: f volume: f
effect: +2 {a} for each song before this one. effect: +2 {a} for each song before this one.
traits:
- name: Heavy Hitter - name: Heavy Hitter
volume: fff volume: fff
effect: +4 {a}. effect: +4 {a}.
traits:
- name: Protest Song - name: Protest Song
volume: ff volume: ff
effect: +1 {a}. +3 {a} if the loudest song this round. effect: +1 {a}. +3 {a} if the loudest song this round.
traits:
- name: Signature Song - name: Signature Song
volume: f volume: f
effect: +5 {a}. effect: +5 {a}.
traits:
- name: Buildup - name: Buildup
volume: pp volume: pp
effect: Add +2 {a} to the next song in your set. effect: Add +2 {a} to the next song in your set.
traits:
- name: Breakdown - name: Breakdown
volume: mf volume: mf
effect: +2 {a} for each quieter song played this round. effect: +2 {a} for each quieter song played this round.
traits:
- name: Sleazy - name: Sleazy
volume: mf volume: mf
effect: +4 {a} if not the loudest song this round. effect: +4 {a} if not the loudest song this round.
traits:
- name: Showstopper - name: Showstopper
volume: fff volume: fff
effect: +5 {a} if the last song in your set. effect: +5 {a} if the last song in your set.
traits:
- name: Remix - name: Remix
volume: f volume: f
effect: Repeat the effect of the song immediately before this in your set. effect: Repeat the effect of the song immediately before this in your set.
traits:
- name: Acoustic Cover - name: Acoustic Cover
volume: mp volume: mp
effect: Copy the effect of a song in another band's setlist. effect: Copy the effect of a song in another band's setlist.
traits:
- name: Heavy Cover - name: Heavy Cover
volume: f volume: f
effect: Copy the effect of a song in another band's setlist. effect: Copy the effect of a song in another band's setlist.
traits:
- name: Encore - name: Encore
volume: mf volume: mf
effect: +5 {a} if the last song in your set. effect: +5 {a} if the last song in your set.
traits:

View File

@ -29,9 +29,9 @@ VOLUMES = {
"fff" => 8, "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: 'economy.yml'
use_layout file: 'layout.yml' use_layout file: 'layout.yml'
background color: 'white' background color: 'white'
@ -40,13 +40,23 @@ Squib::Deck.new(cards: 18) do
text layout: :title, str: data.name text layout: :title, str: data.name
svg layout: :art, data: 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 rect layout: :description
text layout: :description, str: data.effect.zip(data.blurb).map { |e, b| text layout: :description, str: data.effect.zip(data.blurb).map { |e, b|
"#{e}#{b ? "\n<i>#{b}</i>" : nil}" "#{e}#{b ? "\n<i>#{b}</i>" : nil}"
} do |embed| } do |embed|
embed.svg key: '{a}', width: 32, height: 32, data: AUDIENCE 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 end
text layout: :type, markup: true, str: data.volume.map { |v| "<b><i>#{v} (#{VOLUMES[v]})</i></b>" } text layout: :type, markup: true, str: data.volume.map { |v| "<b><i>#{v} (#{VOLUMES[v]})</i></b>" }