Class Rubygame::MediaBag
In: lib/rubygame/mediabag.rb
Parent: Object

NOTE: MediaBag is DEPRECATED and will be removed in Rubygame 3.0! Use the NamedResource functionality of Music, Sound, and Surface instead.

NOTE: you must require ‘rubygame/mediabag’ manually to gain access to Rubygame::MediaBag. It is not imported with Rubygame by default!

A Hash-like class which will load and retain media files (images and sounds), so that the file can be loaded once, but used many times.

The first time a file is requested with the #[] method,that file will be loaded into memory. All subsequent requests for the same file will return a reference to the already-loaded version. Ideally, objects should not have to know whether or not the image has been loaded or not.

Methods

[]   force_load   force_store   load   load_file   load_image   load_sound   new   store  

Public Class methods

[Source]

# File lib/rubygame/mediabag.rb, line 48
    def initialize()
      @media = Hash.new
    end

Public Instance methods

Return a reference to the stored value for key. If there is no value for key, automatically attempt to load key as a filename (guessing the file type based on its extension)

[Source]

# File lib/rubygame/mediabag.rb, line 56
    def [](key)
      @media[key] or load(key)
    rescue Rubygame::SDLError
      nil
    end

Forcibly (re)load the file, replacing the previous version in memory (if any).

[Source]

# File lib/rubygame/mediabag.rb, line 74
    def force_load(filename)
      force_store( filename, load_file(filename) )
    end

Forcibly store value as key, replacing the previous value (if any).

[Source]

# File lib/rubygame/mediabag.rb, line 79
    def force_store(key,value)
      @media[key] = value
    end

Load the file, but only if it has not been previously loaded.

[Source]

# File lib/rubygame/mediabag.rb, line 63
    def load(filename)
      @media[filename] or store( filename, load_file(filename) )
    end

[Source]

# File lib/rubygame/mediabag.rb, line 83
    def load_file(filename)
      case File::extname(filename).downcase[1..-1]
      when *(@@image_ext)
        return load_image(filename)
      when *(@@sound_ext)
        return load_sound(filename)
      else
        raise(ArgumentError,"Unrecognized file extension `%s': %s"%
              [File::extname(filename), filename])
      end
    end

[Source]

# File lib/rubygame/mediabag.rb, line 95
    def load_image(filename)
      return Rubygame::Surface.load_image(filename)
    end

[Source]

# File lib/rubygame/mediabag.rb, line 99
    def load_sound(filename)
      return Rubygame::Mixer::Sample.load_audio(filename)
    end

Store value as key, but only if there is no previous value.

[Source]

# File lib/rubygame/mediabag.rb, line 68
    def store(key,value)
      @media[key] ||= value
    end

[Validate]