lib/squib/deck.rb in squib-0.3.0 vs lib/squib/deck.rb in squib-0.4.0

- old
+ new

@@ -28,16 +28,18 @@ # @api private attr_reader :cards # :nodoc: # @api private - attr_reader :text_hint + attr_reader :text_hint, :antialias # :nodoc: # @api private attr_reader :layout, :config + attr_reader :dir, :prefix, :count_format + # Squib's constructor that sets the immutable properties. # # This is the starting point for Squib. In providing a block to the constructor, you have access to all of Deck's instance methods. # The documented methods in Deck are the ones intended for use by most users. # If your game requires multiple different sizes or orientations, I recommend using multiple `Squib::Deck`s in your `deck.rb`. You can modify the internals of `Squib::Deck` (e.g. `@cards`), but that's not recommended. @@ -54,22 +56,27 @@ # @param config [String] the file used for global settings of this deck # @param layout [String, Array] load a YML file of custom layouts. Multiple files are merged sequentially, redefining collisons. See README and sample for details. # @param block [Block] the main body of the script. # @api public def initialize(width: 825, height: 1125, cards: 1, dpi: 300, config: 'config.yml', layout: nil, &block) + @antialias = CONFIG_DEFAULTS['antialias'] @dpi = dpi - @width = Args::UnitConversion.parse width, dpi - @height = Args::UnitConversion.parse height, dpi - @font = Squib::SYSTEM_DEFAULTS[:default_font] + @font = SYSTEM_DEFAULTS[:default_font] @cards = [] @custom_colors = {} @img_dir = '.' - @progress_bar = Squib::Progress.new(false) + @progress_bar = Progress.new(false) @text_hint = :off - cards.times{ @cards << Squib::Card.new(self, @width, @height) } + @backend = :memory + @dir = SYSTEM_DEFAULTS[:dir] + @prefix = SYSTEM_DEFAULTS[:prefix] + @count_format = SYSTEM_DEFAULTS[:count_format] show_info(config, layout) load_config(config) + @width = Args::UnitConversion.parse width, dpi + @height = Args::UnitConversion.parse height, dpi + cards.times{ |i| @cards << Squib::Card.new(self, @width, @height, @backend, i) } @layout = LayoutParser.load_layout(layout) if block_given? instance_eval(&block) # here we go. wheeeee! end end @@ -91,24 +98,30 @@ # Load the configuration file, if exists, overriding hardcoded defaults # @api private def load_config(file) if File.exists?(file) && config = YAML.load_file(file) Squib::logger.info { " using config: #{file}" } - config = Squib::CONFIG_DEFAULTS.merge(config) - @dpi = config['dpi'].to_i - @text_hint = config['text_hint'] + config = CONFIG_DEFAULTS.merge(config) + @dpi = config['dpi'].to_i + @text_hint = config['text_hint'] @progress_bar.enabled = config['progress_bars'] - @custom_colors = config['custom_colors'] - @img_dir = config['img_dir'] + @custom_colors = config['custom_colors'] + @img_dir = config['img_dir'] + @backend = (config['backend'].to_s.downcase.strip == 'svg') ? :svg : :memory + @dir = config['dir'] + @prefix = config['prefix'] + @count_format = config['count_format'] + @antialias = config['antialias'] end end # Use Logger to show more detail on the run # :nodoc: # @api private def show_info(config, layout) Squib::logger.info "Squib v#{Squib::VERSION}" Squib::logger.info " building #{@cards.size} #{@width}x#{@height} cards" + Squib::logger.info " using #{@backend}" end ################## ### PUBLIC API ### ##################