Module: Gamefic::Scripting::Scenes
- Included in:
- Gamefic::Scripting
- Defined in:
- lib/gamefic/scripting/scenes.rb
Instance Method Summary collapse
- #default_conclusion ⇒ Scene::Conclusion
- #default_scene ⇒ Scene::Base
- #introductions ⇒ Array<Binding>
- #named_scenes ⇒ Hash
-
#prepare(name_or_class, actor, props, **context) ⇒ Scene::Base
Prepare a scene to be executed.
- #scene_class(name_or_class) ⇒ Scene::Base
- #scenes ⇒ Array<Scene::Base>
Instance Method Details
#default_conclusion ⇒ Scene::Conclusion
12 13 14 |
# File 'lib/gamefic/scripting/scenes.rb', line 12 def default_conclusion self.class.default_conclusion end |
#default_scene ⇒ Scene::Base
7 8 9 |
# File 'lib/gamefic/scripting/scenes.rb', line 7 def default_scene self.class.default_scene end |
#introductions ⇒ Array<Binding>
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_scenes ⇒ 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.
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
48 49 50 |
# File 'lib/gamefic/scripting/scenes.rb', line 48 def scene_class(name_or_class) scene_classes_map[name_or_class] end |
#scenes ⇒ Array<Scene::Base>
42 43 44 |
# File 'lib/gamefic/scripting/scenes.rb', line 42 def scenes self.class.scenes end |