Module: Gamefic::Plot::SceneMount
- Defined in:
- lib/gamefic/plot/scene_mount.rb
Instance Method Summary collapse
-
#conclusion {|, | ... } ⇒ Object
Create a conclusion.
- #default_conclusion ⇒ Object
- #default_scene ⇒ Object
-
#introduce(player) ⇒ Object
Introduce a player to the game.
-
#introduction {|| ... } ⇒ Object
Add a block to be executed when a player is added to the game.
-
#multiple_choice(*choices) {|, | ... } ⇒ Object
Create a multiple-choice scene.
-
#multiple_scene(map) ⇒ Object
Choose a new scene based on a list of options.
-
#pause(prompt = nil) {|, | ... } ⇒ Object
Create a scene that pauses the game.
- #question(prompt = 'What is your answer?', &block) ⇒ Object
-
#scene(cls = Scene::Custom) {|The| ... } ⇒ Object
Create a custom scene.
-
#yes_or_no(prompt = nil) {|, "yes"| ... } ⇒ Object
Create a yes-or-no scene.
Instance Method Details
#conclusion {|, | ... } ⇒ Object
Create a conclusion. The game (or the character’s participation in it) will end after this scene is complete.
106 107 108 109 110 |
# File 'lib/gamefic/plot/scene_mount.rb', line 106 def conclusion &block s = Scene::Conclusion.new s.on_start &block s end |
#default_conclusion ⇒ Object
8 9 10 |
# File 'lib/gamefic/plot/scene_mount.rb', line 8 def default_conclusion @default_conclusion ||= Scene::Conclusion.new end |
#default_scene ⇒ Object
4 5 6 |
# File 'lib/gamefic/plot/scene_mount.rb', line 4 def default_scene @default_scene ||= Scene::Active.new(self) end |
#introduce(player) ⇒ Object
Introduce a player to the game. This method is typically called by the Engine that manages game execution.
28 29 30 31 32 33 |
# File 'lib/gamefic/plot/scene_mount.rb', line 28 def introduce(player) player.playbook = playbook player.cue default_scene p_players.push player @introduction.call(player) unless @introduction.nil? end |
#introduction {|| ... } ⇒ Object
Add a block to be executed when a player is added to the game. Each Plot can only have one introduction. Subsequent calls will overwrite the existing one.
22 23 24 |
# File 'lib/gamefic/plot/scene_mount.rb', line 22 def introduction (&proc) @introduction = proc end |
#multiple_choice(*choices) {|, | ... } ⇒ Object
Create a multiple-choice scene. The user will be required to make a valid choice to continue.
40 41 42 43 44 45 46 47 48 |
# File 'lib/gamefic/plot/scene_mount.rb', line 40 def multiple_choice *choices, &block s = Scene::MultipleChoice.new s.on_start do |actor, data| data..clear data..push *choices end s.on_finish &block s end |
#multiple_scene(map) ⇒ Object
Choose a new scene based on a list of options. This is a specialized type of multiple-choice scene that determines which scene to cue based on a Hash of choices and scene keys.
171 172 173 174 175 176 177 178 179 |
# File 'lib/gamefic/plot/scene_mount.rb', line 171 def multiple_scene map s = Scene::MultipleScene.new s.on_start do |actor, data| map.each { |k, v| data.map k, v } end s end |
#pause(prompt = nil) {|, | ... } ⇒ Object
Create a scene that pauses the game. This scene will execute the specified block and wait for input from the the user (e.g., pressing Enter) to continue.
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/gamefic/plot/scene_mount.rb', line 86 def pause prompt = nil, &block s = Scene::Pause.new s.on_start do |actor, data| data.prompt = prompt unless prompt.nil? block.call actor, data unless block.nil? end s.on_finish do |actor, data| #actor.cue :active if actor.scene == key and actor.next_scene.nil? actor.cue default_scene if actor.scene == s and actor.next_scene.nil? end s end |
#question(prompt = 'What is your answer?', &block) ⇒ Object
69 70 71 72 73 74 75 76 |
# File 'lib/gamefic/plot/scene_mount.rb', line 69 def question prompt = 'What is your answer?', &block s = Scene::Custom.new s.on_start do |actor, data| data.prompt = prompt end s.on_finish &block s end |
#scene(cls = Scene::Custom) {|The| ... } ⇒ Object
Create a custom scene.
Custom scenes should always specify the next scene to be cued or prepared. If not, the scene will get repeated on the next turn.
This method creates a Scene::Custom by default. You can customize other scene types by specifying the class to create.
147 148 149 150 151 |
# File 'lib/gamefic/plot/scene_mount.rb', line 147 def scene cls = Scene::Custom, &block s = cls.new yield s if block_given? s end |
#yes_or_no(prompt = nil) {|, "yes"| ... } ⇒ Object
Create a yes-or-no scene. The user will be required to answer Yes or No to continue.
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/gamefic/plot/scene_mount.rb', line 55 def yes_or_no prompt = nil, &block s = Scene::YesOrNo.new unless prompt.nil? s.on_start do |actor, data| data.prompt = prompt end end s.on_finish do |actor, data| block.call actor, data unless block.nil? actor.cue default_scene if actor.scene == s and actor.next_scene.nil? end s end |