Module: Gamefic::Scriptable::Scenes
- Included in:
- Gamefic::Scriptable
- Defined in:
- lib/gamefic/scriptable/scenes.rb
Instance Attribute Summary collapse
- #default_conclusion ⇒ Scene::Conclusion readonly
- #default_scene ⇒ Scene::Base readonly
Instance Method Summary collapse
-
#active_choice(name = nil, &block) ⇒ Class<Scene::ActiveChoice>
Create an active choice scene.
- #block(scene, name = nil) ⇒ Object (also: #scene)
-
#conclusion(name = nil) {|, | ... } ⇒ Class<Scene::Conclusion>
Create a conclusion.
-
#introduction {|, | ... } ⇒ Symbol
Add a block to be executed when a player is added to the game.
- #introductions ⇒ Array<Proc>
-
#multiple_choice(name = nil, &block) ⇒ Class<Scene::MultipleChoice>
Create a multiple-choice scene.
- #named_scenes ⇒ Object
-
#pause(name = nil) {|, | ... } ⇒ Class<Scene::Pause>
Create a pause.
- #scene_classes ⇒ Object
- #scene_classes_map ⇒ Object
- #scenes ⇒ Object
- #select_default_conclusion(klass) ⇒ Object
- #select_default_scene(klass) ⇒ Object
-
#yes_or_no(name = nil, &block) ⇒ Class<Scene::YesOrNo>
Create a yes-or-no scene.
Instance Attribute Details
#default_conclusion ⇒ Scene::Conclusion (readonly)
12 13 14 |
# File 'lib/gamefic/scriptable/scenes.rb', line 12 def default_conclusion @default_conclusion end |
#default_scene ⇒ Scene::Base (readonly)
9 10 11 |
# File 'lib/gamefic/scriptable/scenes.rb', line 9 def default_scene @default_scene end |
Instance Method Details
#active_choice(name = nil, &block) ⇒ Class<Scene::ActiveChoice>
Create an active choice scene.
123 124 125 |
# File 'lib/gamefic/scriptable/scenes.rb', line 123 def active_choice(name = nil, &block) block Class.new(Scene::ActiveChoice, &block), name end |
#block(scene, name = nil) ⇒ Object Also known as: scene
40 41 42 43 44 |
# File 'lib/gamefic/scriptable/scenes.rb', line 40 def block(scene, name = nil) named_scenes[name] = scene if name scene_classes.add scene scene end |
#conclusion(name = nil) {|, | ... } ⇒ Class<Scene::Conclusion>
Create a conclusion. The game (or the character’s participation in it) will end after this scene is complete.
154 155 156 157 158 |
# File 'lib/gamefic/scriptable/scenes.rb', line 154 def conclusion(name = nil, &block) block(Class.new(Scene::Conclusion) do on_start(&block) end, name) end |
#introduction {|, | ... } ⇒ Symbol
Add a block to be executed when a player is added to the game. Each Plot should only have one introduction.
65 66 67 |
# File 'lib/gamefic/scriptable/scenes.rb', line 65 def introduction(&start) introductions.push start end |
#introductions ⇒ Array<Proc>
48 49 50 |
# File 'lib/gamefic/scriptable/scenes.rb', line 48 def introductions @introductions ||= [] end |
#multiple_choice(name = nil, &block) ⇒ Class<Scene::MultipleChoice>
Create a multiple-choice scene. The user will be required to make a choice to continue. The scene will restart if the user input is not a valid choice.
90 91 92 |
# File 'lib/gamefic/scriptable/scenes.rb', line 90 def multiple_choice(name = nil, &block) block Class.new(Scene::MultipleChoice, &block), name end |
#named_scenes ⇒ Object
24 25 26 |
# File 'lib/gamefic/scriptable/scenes.rb', line 24 def named_scenes @named_scenes ||= {} end |
#pause(name = nil) {|, | ... } ⇒ Class<Scene::Pause>
Create a pause. The block will be executed at the start of the scene and the player will be prompted to press enter to continue.
135 136 137 138 139 |
# File 'lib/gamefic/scriptable/scenes.rb', line 135 def pause(name = nil, &block) block(Class.new(Scene::Pause) do on_start(&block) end, name) end |
#scene_classes ⇒ Object
28 29 30 |
# File 'lib/gamefic/scriptable/scenes.rb', line 28 def scene_classes @scene_classes ||= Set.new end |
#scene_classes_map ⇒ Object
32 33 34 |
# File 'lib/gamefic/scriptable/scenes.rb', line 32 def scene_classes_map scene_classes.each_with_object(named_scenes.clone) { |klass, hash| hash[klass] = klass } end |
#scenes ⇒ Object
36 37 38 |
# File 'lib/gamefic/scriptable/scenes.rb', line 36 def scenes scene_classes_map.values.uniq end |
#select_default_conclusion(klass) ⇒ Object
19 20 21 22 |
# File 'lib/gamefic/scriptable/scenes.rb', line 19 def select_default_conclusion(klass) scene_classes.add klass @default_conclusion = klass end |
#select_default_scene(klass) ⇒ Object
14 15 16 17 |
# File 'lib/gamefic/scriptable/scenes.rb', line 14 def select_default_scene(klass) scene_classes.add klass @default_scene = klass end |
#yes_or_no(name = nil, &block) ⇒ Class<Scene::YesOrNo>
Create a yes-or-no scene. The user will be required to answer Yes or No to continue. The scene will restart if the user input is not a valid choice.
115 116 117 |
# File 'lib/gamefic/scriptable/scenes.rb', line 115 def yes_or_no(name = nil, &block) block Class.new(Scene::YesOrNo, &block), name end |