Sha256: 3ca362aefeda0ef71c3ec2b2b500c661a859e1e3e5c602e68c00ba382214e1a3

Contents?: true

Size: 1.22 KB

Versions: 8

Compression:

Stored size: 1.22 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 :needs_cursor, default: false

    add_setting :stages, default: [:demo]

    add_setting :default_font_size, default: 30
    add_setting :default_font_name, default: "Asimov.ttf"
    add_setting :default_font_color, default: [250,250,250,255]

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
gamebox-0.5.5 lib/gamebox/core/configuration.rb
gamebox-0.5.4 lib/gamebox/core/configuration.rb
gamebox-0.5.2 lib/gamebox/core/configuration.rb
gamebox-0.5.1 lib/gamebox/core/configuration.rb
gamebox-0.5.0 lib/gamebox/core/configuration.rb
gamebox-0.4.1 lib/gamebox/core/configuration.rb
gamebox-0.4.0 lib/gamebox/core/configuration.rb
gamebox-0.4.0.rc11 lib/gamebox/core/configuration.rb