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:



10
11
12
# File 'lib/gamefic/scripting/scenes.rb', line 10

def default_conclusion
  self.class.default_conclusion
end

#default_sceneScene::Base

Returns:



5
6
7
# File 'lib/gamefic/scripting/scenes.rb', line 5

def default_scene
  self.class.default_scene
end

#introductionsArray<Binding>

Returns:



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_scenesHash

Returns:

  • (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.

Parameters:

Returns:



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

Parameters:

Returns:



46
47
48
# File 'lib/gamefic/scripting/scenes.rb', line 46

def scene_class(name_or_class)
  scene_classes_map[name_or_class]
end

#scenesArray<Scene::Base>

Returns:



40
41
42
# File 'lib/gamefic/scripting/scenes.rb', line 40

def scenes
  self.class.scenes
end