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
10 11 12 |
# File 'lib/gamefic/scripting/scenes.rb', line 10 def default_conclusion self.class.default_conclusion end |
#default_scene ⇒ Scene::Base
5 6 7 |
# File 'lib/gamefic/scripting/scenes.rb', line 5 def default_scene self.class.default_scene end |
#introductions ⇒ Array<Binding>
15 16 17 18 19 |
# File 'lib/gamefic/scripting/scenes.rb', line 15 def introductions included_scripts.reverse .flat_map(&:introductions) .map { |blk| Binding.new(self, blk) } end |
#named_scenes ⇒ Hash
22 23 24 |
# File 'lib/gamefic/scripting/scenes.rb', line 22 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.
33 34 35 36 37 |
# File 'lib/gamefic/scripting/scenes.rb', line 33 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
46 47 48 |
# File 'lib/gamefic/scripting/scenes.rb', line 46 def scene_class(name_or_class) scene_classes_map[name_or_class] end |
#scenes ⇒ Array<Scene::Base>
40 41 42 |
# File 'lib/gamefic/scripting/scenes.rb', line 40 def scenes self.class.scenes end |