Sha256: 1f68a38bd6be48448a45f87f2aab64253e38ac38f7c74d4a91c40a0b485dc136

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

module Gamebox
  # Pattern stolen from rspec for configuration
  class Configuration
    def self.add_setting(name, opts={})
      if opts[:alias]
        alias_method name, opts[:alias]
        alias_method "#{name}=", "#{opts[:alias]}="
        alias_method "#{name}?", "#{opts[:alias]}?"
      else
        define_method("#{name}=") {|val| settings[name] = val}
        define_method(name)       { settings.has_key?(name) ? settings[name] : opts[:default] }
        define_method("#{name}?") { send name }
      end
    end

    # add_setting :output, :alias => :output_stream
    add_setting :config_path
    add_setting :data_path
    add_setting :music_path
    add_setting :sound_path
    add_setting :gfx_path
    add_setting :fonts_path

    add_setting :gb_config_path
    add_setting :gb_data_path
    add_setting :gb_music_path
    add_setting :gb_sound_path
    add_setting :gb_gfx_path
    add_setting :gb_fonts_path
  
    add_setting :game_name, default: "Untitled Game"

    add_setting :stages, default: [:demo]

    def settings
      @settings ||= {}
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gamebox-0.4.0.rc4 lib/gamebox/core/configuration.rb
gamebox-0.4.0.rc3 lib/gamebox/core/configuration.rb
gamebox-0.4.0.rc2 lib/gamebox/core/configuration.rb
gamebox-0.4.0.rc1 lib/gamebox/core/configuration.rb