class Gamefic::Rulebook::Scenes
The scene manager for rulebooks.
Attributes
introductions[R]
Public Class Methods
new()
click to toggle source
# File lib/gamefic/rulebook/scenes.rb, line 10 def initialize @scene_map = {} @introductions = [] end
Public Instance Methods
[](name)
click to toggle source
@return [Scene, nil]
# File lib/gamefic/rulebook/scenes.rb, line 36 def [](name) @scene_map[name] end
add(scene)
click to toggle source
Add a scene to the scenebook.
@param [Scene]
# File lib/gamefic/rulebook/scenes.rb, line 25 def add scene raise ArgumentError, "A scene named `#{scene.name} already exists" if @scene_map.key?(scene.name) @scene_map[scene.name] = scene end
all()
click to toggle source
@return [Array<Scene>]
# File lib/gamefic/rulebook/scenes.rb, line 46 def all @scene_map.values end
empty?()
click to toggle source
# File lib/gamefic/rulebook/scenes.rb, line 63 def empty? @scene_map.empty? && introductions.empty? end
freeze()
click to toggle source
Calls superclass method
# File lib/gamefic/rulebook/scenes.rb, line 15 def freeze super @scene_map.freeze @introductions.freeze self end
introduction(scene)
click to toggle source
# File lib/gamefic/rulebook/scenes.rb, line 50 def introduction scene introductions.push scene end
maybe_add(name, klass, narrative)
click to toggle source
# File lib/gamefic/rulebook/scenes.rb, line 59 def maybe_add name, klass, narrative add klass.new(name, narrative) unless names.include?(name) end
names()
click to toggle source
@return [Array<Symbol>]
# File lib/gamefic/rulebook/scenes.rb, line 41 def names @scene_map.keys end
scene?(name)
click to toggle source
# File lib/gamefic/rulebook/scenes.rb, line 31 def scene? name @scene_map.key? name end
with_defaults(narrative)
click to toggle source
# File lib/gamefic/rulebook/scenes.rb, line 54 def with_defaults narrative maybe_add :default_scene, Scene::Activity, narrative maybe_add :default_conclusion, Scene::Conclusion, narrative end