|
- class Merit
- attr_accessor :name,
- :prerequisites,
- :adjectives,
- :dot_ratings,
- :rules_text,
- :ranks,
- :drawback,
- :pdf
-
- attr_accessor :authors
-
- def initialize(name:, prerequisites: nil, adjectives: [], dot_ratings: [], rules_text:, ranks: nil, pdf:, drawback: nil)
- @name = name
- @prerequisites = prerequisites
- @adjectives = adjectives
- @dot_ratings = dot_ratings
- @rules_text = rules_text
- @ranks = ranks
- @pdf = pdf
- @drawback = drawback
-
-
- @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
- g.text "<b>Drawback:</b> #{drawback}", :inline_format => true, :indent_paragraphs => Awakened2069::INDENT_SIZE unless drawback.nil?
- end
-
- self
- end
- end
|