18cards/2022/11-setlist/deck.rb
2023-01-13 19:17:22 -05:00

58 lines
1.2 KiB
Ruby

require 'squib'
require 'game_icons'
module Icons
def self.getIcon(name, color = 'black')
return GameIcons.get(name).
recolor(fg: color, bg: 'white', fg_opacity: 1.0, bg_opacity: 0.0).
string
end
AUDIENCE = getIcon 'delapouite/person'
MUSIC = getIcon 'delapouite/musical-score'
LOVE = getIcon 'skoll/hearts'
ANGER = getIcon 'skoll/fist'
JOY = getIcon 'lorc/delighted'
SAD = getIcon 'lorc/tear-tracks'
end
VOLUMES = {
"ppp" => 1,
"pp" => 2,
"p" => 3,
"mp" => 4,
"mf" => 5,
"f" => 6,
"ff" => 7,
"fff" => 8,
}
data = Squib.yaml file: 'data.yml'
Squib::Deck.new(cards: 18) do
use_layout file: 'economy.yml'
use_layout file: 'layout.yml'
background color: 'white'
cut_zone
safe_zone
text layout: :title, str: data.name
svg layout: :art, data: MUSIC
rect layout: :description
text layout: :description, str: data.effect.zip(data.blurb).map { |e, b|
"#{e}#{b ? "\n<i>#{b}</i>" : nil}"
} do |embed|
embed.svg key: '{a}', width: 32, height: 32, data: AUDIENCE
end
text layout: :type, markup: true, str: data.volume.map { |v| "<b><i>#{v} (#{VOLUMES[v]})</i></b>" }
save format: :png
save_sheet prefix: "sheet",
columns: 5, rows: 4, trim: '0.125in', count_format: ''
end