2019-06-16 15:12:18 -04:00
|
|
|
class Merit
|
|
|
|
attr_accessor :name,
|
|
|
|
:prerequisites,
|
|
|
|
:adjectives,
|
|
|
|
:dot_ratings,
|
|
|
|
:rules_text,
|
|
|
|
:ranks,
|
2019-06-17 01:30:48 -04:00
|
|
|
:drawback,
|
2019-06-16 15:12:18 -04:00
|
|
|
:pdf
|
|
|
|
|
|
|
|
attr_accessor :authors
|
|
|
|
|
2019-06-17 01:30:48 -04:00
|
|
|
def initialize(name:, prerequisites: nil, adjectives: [], dot_ratings: [], rules_text:, ranks: nil, pdf:, drawback: nil)
|
2019-06-16 15:12:18 -04:00
|
|
|
@name = name
|
|
|
|
@prerequisites = prerequisites
|
|
|
|
@adjectives = adjectives
|
|
|
|
@dot_ratings = dot_ratings
|
|
|
|
@rules_text = rules_text
|
|
|
|
@ranks = ranks
|
|
|
|
@pdf = pdf
|
2019-06-17 01:30:48 -04:00
|
|
|
@drawback = drawback
|
2019-06-16 15:12:18 -04:00
|
|
|
|
|
|
|
|
|
|
|
@dot_ratings = @dot_ratings.arrayify
|
|
|
|
@prerequisites = @prerequisites.arrayify
|
|
|
|
@adjectives = @adjectives.arrayify
|
|
|
|
end
|
|
|
|
|
|
|
|
def render
|
|
|
|
merit_ary = [{:text => "#{name} (", :font => "Lilith", :color => "000000", :size => Awakened2069::FONT_SIZE_SUBSECTION}]
|
|
|
|
|
|
|
|
previous = false
|
|
|
|
|
|
|
|
dot_ratings.each do |dr|
|
|
|
|
merit_ary << {:text => ", ", :font => "Lilith", :color => "000000", :size => Awakened2069::FONT_SIZE_SUBSECTION} if previous
|
|
|
|
previous = true
|
|
|
|
if dr.class == Range
|
|
|
|
merit_ary << {:text => dr.min.to_dots, :color => "000000", :size => Awakened2069::FONT_SIZE_SUBSECTION, :character_spacing => -5}
|
|
|
|
if dr.max < Float::INFINITY
|
|
|
|
merit_ary << {:text => " to ", :color => "000000", :font => "Lilith", :size => Awakened2069::FONT_SIZE_SUBSECTION}
|
|
|
|
merit_ary << {:text => dr.max.to_dots, :color => "000000", :size => Awakened2069::FONT_SIZE_SUBSECTION, :character_spacing => -5}
|
|
|
|
else
|
|
|
|
merit_ary << {:text => "+", :color => "000000", :font => "Lilith", :size => Awakened2069::FONT_SIZE_SUBSECTION}
|
|
|
|
end
|
|
|
|
elsif dr.class == Integer
|
|
|
|
merit_ary << {:text => dr.to_dots, :color => "000000", :size => Awakened2069::FONT_SIZE_SUBSECTION, :character_spacing => -5}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
adjectives.each do |adj|
|
|
|
|
merit_ary << {:text => ", #{adj}", :color => "000000", :font => "Lilith", :size => Awakened2069::FONT_SIZE_SUBSECTION}
|
|
|
|
end
|
|
|
|
|
|
|
|
merit_ary << {:text => ")", :color => "000000", :font => "Lilith", :size => Awakened2069::FONT_SIZE_SUBSECTION}
|
|
|
|
|
|
|
|
pdf.group do |g|
|
|
|
|
g.font_size Awakened2069::FONT_SIZE_BODY
|
|
|
|
g.formatted_text merit_ary, :indent_paragraphs => Awakened2069::INDENT_SIZE
|
|
|
|
|
|
|
|
if prerequisites.size >= 1
|
|
|
|
prerequisites_text = prerequisites.join(", ")
|
|
|
|
g.text "<b>#{prerequisites.size == 1 ? "Prerequisite" : "Prerequisites"}:</b> #{prerequisites_text}", :inline_format => true, :indent_paragraphs => Awakened2069::INDENT_SIZE
|
|
|
|
end
|
|
|
|
|
|
|
|
g.text "<b>Effect:</b> #{rules_text}", :inline_format => true, :indent_paragraphs => Awakened2069::INDENT_SIZE
|
2019-06-17 01:30:48 -04:00
|
|
|
g.text "<b>Drawback:</b> #{drawback}", :inline_format => true, :indent_paragraphs => Awakened2069::INDENT_SIZE unless drawback.nil?
|
2019-06-16 15:12:18 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
self
|
|
|
|
end
|
|
|
|
end
|