class Gosu::Spritesheet

Public Class Methods

new(tiles: [], animations: nil, duration: 0.2) click to toggle source
# File lib/gosu/spritesheet.rb, line 9
def initialize(tiles: [], animations: nil, duration: 0.2)
  @tiles = tiles
  @default_duration = duration
  setup_animations(animations)
end
version() click to toggle source
# File lib/gosu/spritesheet/version.rb, line 3
def self.version
  "0.1.0"
end

Public Instance Methods

animation(anim_key) click to toggle source
# File lib/gosu/spritesheet.rb, line 15
def animation(anim_key)
  @animations[anim_key.to_sym]
end

Private Instance Methods

animation_from_spec(spec) click to toggle source
# File lib/gosu/spritesheet.rb, line 35
def animation_from_spec(spec)
  frames_range = spec.fetch(:range, nil)
  duration = spec.fetch(:duration, nil)

  missing_keys = []
  missing_keys << ":range" if frames_range.nil?
  missing_keys << ":duration" if duration.nil?

  if not missing_keys.empty?
    message = "Missing #{missing_keys.join(' and ')} on block: #{spec}" 
    raise MissingAnimationKeys, message
  end

  Gosu::AnimationBlock.new(@tiles[frames_range.first], duration)
end
setup_animations(animations) click to toggle source
# File lib/gosu/spritesheet.rb, line 20
def setup_animations(animations)
  @animations = Hash.new

  if animations.nil?
    @animations[:default] = Gosu::AnimationBlock.new(
      @tiles, 
      @default_duration
    )
  else
    animations.each do |key, value|
      @animations[key] = animation_from_spec(value)
    end
  end
end