Module: Gamefic::Scripting::Scenes

Included in:
Gamefic::Scripting
Defined in:
lib/gamefic/scripting/scenes.rb

Instance Method Summary collapse

Instance Method Details

#default_conclusionScene::Conclusion

Returns:



12
13
14
# File 'lib/gamefic/scripting/scenes.rb', line 12

def default_conclusion
  self.class.default_conclusion
end

#default_sceneScene::Base

Returns:



7
8
9
# File 'lib/gamefic/scripting/scenes.rb', line 7

def default_scene
  self.class.default_scene
end

#introductionsArray<Binding>

Returns:



17
18
19
20
21
# File 'lib/gamefic/scripting/scenes.rb', line 17

def introductions
  included_scripts.reverse
                  .flat_map(&:introductions)
                  .map { |blk| Binding.new(self, blk) }
end

#named_scenesHash

Returns:

  • (Hash)


24
25
26
# File 'lib/gamefic/scripting/scenes.rb', line 24

def named_scenes
  {}.merge(*included_scripts.flat_map(&:named_scenes))
end

#prepare(name_or_class, actor, props, **context) ⇒ Scene::Base

Prepare a scene to be executed. Scenes can be accessed by their class or by a symbolic name if one has been defined in this narrative.

Parameters:

Returns:



35
36
37
38
39
# File 'lib/gamefic/scripting/scenes.rb', line 35

def prepare name_or_class, actor, props, **context
  scene_classes_map[name_or_class]&.new(actor, self, props, **context).tap do |scene|
    scene&.rename(name_or_class.to_s) if name_or_class.is_a?(Symbol)
  end
end

#scene_class(name_or_class) ⇒ Scene::Base

Parameters:

Returns:



48
49
50
# File 'lib/gamefic/scripting/scenes.rb', line 48

def scene_class(name_or_class)
  scene_classes_map[name_or_class]
end

#scenesArray<Scene::Base>

Returns:



42
43
44
# File 'lib/gamefic/scripting/scenes.rb', line 42

def scenes
  self.class.scenes
end