class AdventureRL::Animation

Constants

DEFAULT_SETTINGS

Public Class Methods

new(settings = {}) click to toggle source
Calls superclass method
# File lib/AdventureRL/Animation.rb, line 8
def initialize settings = {}
  @settings = DEFAULT_SETTINGS.merge settings
  image_settings = @settings.get
  image_settings[:dont_create_image] = true
  super image_settings
  @images              = get_images_from [@settings.get(:files)].flatten
  @animation_intervals = [@settings.get(:intervals)].flatten
  @timing_handler      = TimingHandler.new
  @timeout_id          = :next_image_timeout
  @current_image_index = -1
  next_image
end

Public Instance Methods

next_image() click to toggle source
# File lib/AdventureRL/Animation.rb, line 30
def next_image
  @current_image_index += 1
  @current_image_index  = 0  if (@current_image_index >= @images.size)
  @image = @images[@current_image_index]
  set_timeout
end
set_timeout() click to toggle source
# File lib/AdventureRL/Animation.rb, line 37
def set_timeout
  current_interval = get_current_interval
  @timing_handler.set_timeout(
    id:      @timeout_id,
    seconds: get_current_interval,
    method:  method(:next_image)
  )  if (current_interval)
end
update() click to toggle source

Call this (or update_animation) every frame, to ensure that the animation is playing.

# File lib/AdventureRL/Animation.rb, line 26
def update
  update_animation
end
update_animation() click to toggle source
# File lib/AdventureRL/Animation.rb, line 21
def update_animation
  @timing_handler.update
end

Private Instance Methods

get_current_interval() click to toggle source
# File lib/AdventureRL/Animation.rb, line 54
def get_current_interval
  intervals_size = @animation_intervals.size
  if (@current_image_index < intervals_size)
    return @animation_intervals[@current_image_index]
  else
    return @animation_intervals[@current_image_index - (intervals_size * (@current_image_index / intervals_size).floor)]
  end
end
get_images_from(files) click to toggle source
# File lib/AdventureRL/Animation.rb, line 48
def get_images_from files
  return files.map do |file|
    next get_image_from(file)
  end
end