Parent

ResourceManager

Public Class Methods

new() click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 8
  def initialize
    @loaded_images = {}
    @loaded_fonts = {}
    @loaded_svgs = {}
  end

Public Instance Methods

load_actor_image(actor) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 14
  def load_actor_image(actor)
    # use pngs only for now
    actor_name = Inflector.underscore(actor.class)
    return load_image("#{actor_name}.png")
  end
load_animation_set(actor, action) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 20
  def load_animation_set(actor, action)
    actor_dir = Inflector.underscore(actor.class)
    using_tileset = File.exist?("#{GFX_PATH}#{actor_dir}/#{action}.png")
    if using_tileset
      load_tile_set(actor, action)
    else
      load_frame_set(actor, action)
    end
  end
load_config(name) click to toggle source

TODO make this path include that app name?

# File lib/gamebox/resource_manager.rb, line 161
  def load_config(name)
    conf = YAML::load_file(CONFIG_PATH + name + ".yml")
    user_file = "#{ENV['HOME']}/.gamebox/#{name}.yml"
    if File.exist? user_file
      user_conf = YAML::load_file user_file
      conf = conf.merge user_conf
    end
    conf
  end
load_font(name, size) click to toggle source

loads TTF fonts from the fonts dir and caches them for later

# File lib/gamebox/resource_manager.rb, line 134
  def load_font(name, size)
    @loaded_fonts[name] ||= {}
    return @loaded_fonts[name][size] if @loaded_fonts[name][size]
    begin
      unless @ttf_loaded
        TTF.setup
        @ttf_loaded = true
      end
      #full_name = File.expand_path(FONTS_PATH + name)
      full_name = FONTS_PATH + name
      begin
        font = TTF.new(full_name, size)
        @loaded_fonts[name][size] = font
      rescue Exception => ex
        #full_name = File.expand_path(GAMEBOX_FONTS_PATH + name)
        full_name = GAMEBOX_FONTS_PATH + name
        font = TTF.new(full_name, size)
        @loaded_fonts[name][size] = font
      end
      return font
    rescue Exception => ex
      puts "Cannot load font #{full_name}:#{ex}"
    end
    return nil
  end
load_frame_set(actor, action) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 84
  def load_frame_set(actor, action)
    # use pngs only for now
    actor_dir = Inflector.underscore(actor.class)
    frames = Dir.glob("#{GFX_PATH}#{actor_dir}/#{action}/*.png")
    action_imgs = []

    frames = frames.sort_by {|f| File.basename(f).to_i }

    for frame in frames
      rel_path = frame.slice(GFX_PATH.size,frame.size)
      action_imgs << load_image(rel_path)
    end
    action_imgs
  end
load_image(file_name) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 99
  def load_image(file_name)
    cached_img = @loaded_images[file_name]
    if cached_img.nil?
      begin
        #cached_img = Rubygame::Surface.load(File.expand_path(GFX_PATH + file_name))
        cached_img = Rubygame::Surface.load(GFX_PATH + file_name)
      rescue Exception => ex
        #check global gamebox location
        #cached_img = Rubygame::Surface.load(File.expand_path(GAMEBOX_GFX_PATH + file_name))
        cached_img = Rubygame::Surface.load(GAMEBOX_GFX_PATH + file_name)
      end
      @loaded_images[file_name] = cached_img
    end
    cached_img
  end
load_music(full_name) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 115
  def load_music(full_name)
    begin
      sound = Rubygame::Music.load(full_name)
      return sound
    rescue Rubygame::SDLError => ex
      puts "Cannot load music " + full_name + " : " + ex
    end
  end
load_sound(full_name) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 124
  def load_sound(full_name)
    begin
      sound = Rubygame::Sound.load(full_name)
      return sound
    rescue Rubygame::SDLError => ex
      puts "Cannot load sound " + full_name + " : " + ex
    end
  end
load_svg(file_name) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 180
  def load_svg(file_name)
    # TODO create LEVEL_PATH in environment
    cached_svg = @loaded_svgs[file_name]
    if cached_svg.nil?
      #cached_svg = SvgDocument.new(File.open(File.expand_path(DATA_PATH + "levels/" + file_name + ".svg")))
      cached_svg = SvgDocument.new(File.open(DATA_PATH + "levels/" + file_name + ".svg"))
      @loaded_svgs[file_name] = cached_svg
    end
    cached_svg
  end
load_tile_set(actor, action) click to toggle source
        --------------- image from @path --------------

:right | [frame1][frame2][frame3][frame4][frame5]|

        -----------------------------------------------

:down —image—-

      | [frame#1] |
      | [frame#2] |
      | [frame#3] |
      | [frame#4] |
      | [frame#5] |
      -------------
# File lib/gamebox/resource_manager.rb, line 43
  def load_tile_set(actor, action)
    actor_dir = Inflector.underscore(actor.class)
    tileset = load_image "#{actor_dir}/#{action}.png"

    action_imgs = []
    w,h = *tileset.size
    color = tileset.get_at 0, 0

    if h > w
      # down
      num_frames = h/w
      clip_from = Rubygame::Rect.new(0, 0, w, w)
      clip_to = Rubygame::Rect.new(0, 0, w, w)
      num_frames.times do
        surface = Rubygame::Surface.new(clip_to.size)
        surface.fill color
        tileset.blit surface, clip_to, clip_from
        surface.set_colorkey color
        surface = surface.to_display_alpha
        action_imgs << surface
        clip_from.y += w
      end
    else
      # right
      num_frames = w/h
      clip_from = Rubygame::Rect.new(0, 0, h, h)
      clip_to = Rubygame::Rect.new(0, 0, h, h)
      num_frames.times do
        surface = Rubygame::Surface.new(clip_to.size)
        surface.fill color
        tileset.blit surface, clip_to, clip_from
        surface.set_colorkey color
        surface = surface.to_display_alpha
        action_imgs << surface
        clip_from.x += h
      end
    end

    action_imgs
  end
save_settings(name, settings) click to toggle source

(Not documented)

# File lib/gamebox/resource_manager.rb, line 171
  def save_settings(name, settings)
    user_gamebox_dir = "#{ENV['HOME']}/.gamebox"
    FileUtils.mkdir_p user_gamebox_dir
    user_file = "#{ENV['HOME']}/.gamebox/#{name}.yml"
    File.open user_file, "w" do |f|
      f.write settings.to_yaml
    end
  end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.