Class: MtgCardMaker::SpriteSheetBuilder
- Inherits:
-
Object
- Object
- MtgCardMaker::SpriteSheetBuilder
- Defined in:
- lib/mtg_card_maker/sprite_sheet_builder.rb
Overview
Handles the core construction of sprite sheets from individual card files
Instance Attribute Summary collapse
- #cards_per_row ⇒ Object readonly
- #spacing ⇒ Object readonly
Instance Method Summary collapse
-
#create_sprite_builder(width, height, card_files, assets) ⇒ Object
Create the sprite sheet XML builder with assets and cards.
-
#initialize(cards_per_row: 5, spacing: 30) ⇒ SpriteSheetBuilder
constructor
A new instance of SpriteSheetBuilder.
-
#sprite_dimensions(card_count) ⇒ Object
Calculate sprite sheet dimensions.
-
#write_sprite_file(output_file, builder) ⇒ Object
Write the sprite sheet to file.
Constructor Details
#initialize(cards_per_row: 5, spacing: 30) ⇒ SpriteSheetBuilder
Returns a new instance of SpriteSheetBuilder.
10 11 12 13 |
# File 'lib/mtg_card_maker/sprite_sheet_builder.rb', line 10 def initialize(cards_per_row: 5, spacing: 30) @cards_per_row = cards_per_row @spacing = spacing end |
Instance Attribute Details
#cards_per_row ⇒ Object (readonly)
8 9 10 |
# File 'lib/mtg_card_maker/sprite_sheet_builder.rb', line 8 def cards_per_row @cards_per_row end |
#spacing ⇒ Object (readonly)
8 9 10 |
# File 'lib/mtg_card_maker/sprite_sheet_builder.rb', line 8 def spacing @spacing end |
Instance Method Details
#create_sprite_builder(width, height, card_files, assets) ⇒ Object
Create the sprite sheet XML builder with assets and cards
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/mtg_card_maker/sprite_sheet_builder.rb', line 29 def create_sprite_builder(width, height, card_files, assets) Nokogiri::XML::Builder.new do |xml| xml.svg(xmlns: 'http://www.w3.org/2000/svg', viewBox: "0 0 #{width} #{height}", width: width, height: height) do assets.add_assets_to_sprite(xml) add_cards_to_sprite(xml, card_files) end end end |
#sprite_dimensions(card_count) ⇒ Object
Calculate sprite sheet dimensions
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/mtg_card_maker/sprite_sheet_builder.rb', line 16 def sprite_dimensions(card_count) return [0, 0] if card_count.zero? cols = [card_count, @cards_per_row].min rows = (card_count.to_f / @cards_per_row).ceil width = (cols * CARD_WIDTH) + ((cols - 1) * @spacing) height = (rows * CARD_HEIGHT) + ((rows - 1) * @spacing) [width, height] end |
#write_sprite_file(output_file, builder) ⇒ Object
Write the sprite sheet to file
42 43 44 |
# File 'lib/mtg_card_maker/sprite_sheet_builder.rb', line 42 def write_sprite_file(output_file, builder) File.write(output_file, builder.to_xml) end |