Sha256: 478f59e1683a84a648528f831aa2cf8b176744b05903fbfe2aa27aa884274ed6

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 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 :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

1 entries across 1 versions & 1 rubygems

Version Path
gamebox-0.4.0.rc5 lib/gamebox/core/configuration.rb