Class: Gruff::Scene

Class | Gruff::Scene
In: | lib/gruff/scene.rb
Parent: | Gruff::Base

A scene is a non-linear graph that assembles layers together to tell a story. Layers are folders with appropriately named files (see below). You can group layers and control them together or just set their values individually.

Examples:

- A city scene that changes with the time of day and the weather conditions.
- A traffic map that shows red lines on streets that are crowded and green on free-flowing ones.

Usage:

     g = Gruff::Scene.new("500x100", "path/to/city_scene_directory")

     # Define order of layers, back to front
     g.layers = %w(background haze sky clouds)

     # Define groups that will be controlled by the same input
     g.weather_group = %w(clouds)
     g.time_group = %w(background sky)

     # Set values for the layers or groups
     g.weather = "cloudy"
     g.time = Time.now
     g.haze = true

     # Write the final graph to disk
     g.write "hazy_daytime_city_scene.png"

There are several rules that will magically select a layer when possible.

- Numbered files will be selected according to the closest value that is less than the input value.
- ‘true.png’ and ‘false.png’ will be used as booleans.
- Other named files will be used if the input matches the filename (without the filetype extension).
- If there is a file named ‘default.png’, it will be used unless other input values are set for the corresponding layer.

### Methods

draw layers= method_missing new

### Attributes

layers | [R] | An array listing the foldernames that will be rendered, from back to front.
     g.layers = %w(sky clouds buildings street people)

### Public Class methods

new(target_width, base_dir)

### Public Instance methods

draw()
layers=(ordered_list)
method_missing(method_name, *args)

Group layers to input values

     g.weather_group = ["sky", "sea", "clouds"]

Set input values

     g.weather = "cloudy"

[Validate]