gamefic 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/gamefic/active/messaging.rb +2 -0
- data/lib/gamefic/active/take.rb +0 -2
- data/lib/gamefic/active.rb +3 -1
- data/lib/gamefic/composer.rb +2 -0
- data/lib/gamefic/props/default.rb +2 -4
- data/lib/gamefic/props/output.rb +57 -32
- data/lib/gamefic/props/pause.rb +2 -0
- data/lib/gamefic/scanner.rb +2 -0
- data/lib/gamefic/scriptable/proxy.rb +2 -0
- data/lib/gamefic/vault.rb +2 -0
- data/lib/gamefic/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac4f50caef9bd101bf90447e3ab289b05a29470e8f722ad391f7f0c9d8c4a921
|
4
|
+
data.tar.gz: 926b7d40dc87036e3759a1a464d3db3c82187da4f829731d0d82b053ac5e52a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a4b426b4703a29717dbcc59bfee2e3f5d3b1b2ceeb6121741f52111e5fe2d8165e0946f8c3a085f1a3c4094edab11e2966f751dbc3cfc1541809ebc3a9ad970
|
7
|
+
data.tar.gz: ba3f3e82bd772ae392ffb23b056b62de2c1b5bebb0e810fea81bd59449d3e64c8c848f748803ac36f155ad3a2891b0e42d76ca48e4e74239a776670f19fdcc0e
|
data/CHANGELOG.md
CHANGED
data/lib/gamefic/active/take.rb
CHANGED
@@ -31,7 +31,6 @@ module Gamefic
|
|
31
31
|
|
32
32
|
# @return [Props::Default]
|
33
33
|
def start
|
34
|
-
props.output[:scene] = scene.to_hash
|
35
34
|
scene.run_start_blocks actor, props
|
36
35
|
scene.start actor, props
|
37
36
|
# @todo See if this can be handled better
|
@@ -47,7 +46,6 @@ module Gamefic
|
|
47
46
|
def finish
|
48
47
|
actor.flush
|
49
48
|
scene.finish(actor, props)
|
50
|
-
props.output.replace(last_prompt: props.prompt, last_input: props.input)
|
51
49
|
scene.run_finish_blocks actor, props
|
52
50
|
end
|
53
51
|
|
data/lib/gamefic/active.rb
CHANGED
@@ -164,6 +164,8 @@ module Gamefic
|
|
164
164
|
cue :default_scene
|
165
165
|
@props = Take.start(self, @last_cue)
|
166
166
|
@last_output = self.output
|
167
|
+
@props.output[:last_prompt] = @last_output.prompt
|
168
|
+
@props.output[:last_input] = @last_input
|
167
169
|
@output = @props.output.dup.freeze
|
168
170
|
end
|
169
171
|
|
@@ -203,7 +205,7 @@ module Gamefic
|
|
203
205
|
# True if the actor is ready to leave the game.
|
204
206
|
#
|
205
207
|
def concluding?
|
206
|
-
epic.empty? || @props&.scene&.type == 'Conclusion'
|
208
|
+
epic.empty? || @props&.scene&.fetch(:type) == 'Conclusion'
|
207
209
|
end
|
208
210
|
|
209
211
|
def accessible?
|
data/lib/gamefic/composer.rb
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
module Gamefic
|
4
4
|
module Props
|
5
|
-
SceneData = Struct.new(:name, :type)
|
6
|
-
|
7
5
|
# A collection of data related to a scene. Scenes define which Props class
|
8
6
|
# they use. Props can be accessed in a scene's on_start and on_finish
|
9
7
|
# callbacks.
|
@@ -27,13 +25,13 @@ module Gamefic
|
|
27
25
|
attr_reader :context
|
28
26
|
alias data context
|
29
27
|
|
30
|
-
# @return [
|
28
|
+
# @return [Hash]
|
31
29
|
attr_reader :scene
|
32
30
|
|
33
31
|
# @param scene [Scene]
|
34
32
|
# @param context [Hash]
|
35
33
|
def initialize scene, **context
|
36
|
-
@scene =
|
34
|
+
@scene = { name: scene.name, type: scene.type }
|
37
35
|
@context = context
|
38
36
|
end
|
39
37
|
|
data/lib/gamefic/props/output.rb
CHANGED
@@ -6,11 +6,10 @@ module Gamefic
|
|
6
6
|
# data.
|
7
7
|
#
|
8
8
|
class Output
|
9
|
-
|
10
|
-
|
9
|
+
READER_METHODS = %i[messages options queue scene prompt last_prompt last_input].freeze
|
10
|
+
WRITER_METHODS = %i[messages= prompt= last_prompt= last_input=].freeze
|
11
11
|
|
12
|
-
|
13
|
-
attr_reader :last_prompt
|
12
|
+
attr_reader :raw_data
|
14
13
|
|
15
14
|
def initialize **data
|
16
15
|
@raw_data = {
|
@@ -23,36 +22,49 @@ module Gamefic
|
|
23
22
|
merge! data
|
24
23
|
end
|
25
24
|
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
#
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
#
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
#
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
25
|
+
# @!attribute [rw] messages
|
26
|
+
# A text message to be displayed at the start of a scene.
|
27
|
+
#
|
28
|
+
# @return [String]
|
29
|
+
|
30
|
+
# @!attribute [rw] options
|
31
|
+
# An array of options to be presented to the player, e.g., in a
|
32
|
+
# MultipleChoice scene.
|
33
|
+
#
|
34
|
+
# @return [Array<String>]
|
35
|
+
|
36
|
+
# @!attribute [rw] queue
|
37
|
+
# An array of commands waiting to be executed.
|
38
|
+
#
|
39
|
+
# @return [Array<String>]
|
40
|
+
|
41
|
+
# @!attribute [rw] scene
|
42
|
+
# A hash containing the scene's :name and :type.
|
43
|
+
#
|
44
|
+
# @return [Hash]
|
45
|
+
|
46
|
+
# @!attribute [rw] [prompt]
|
47
|
+
# The input prompt to be displayed to the player.
|
48
|
+
#
|
49
|
+
# @return [String]
|
50
|
+
|
51
|
+
# @!attribute [rw] last_input
|
52
|
+
# The input received from the player in the previous scene.
|
53
|
+
#
|
54
|
+
# @return [String, nil]
|
55
|
+
|
56
|
+
# @!attribute [rw] last_prompt
|
57
|
+
# The input prompt from the previous scene.
|
58
|
+
#
|
59
|
+
# @return [String, nil]
|
60
|
+
|
61
|
+
# @param key [Symbol]
|
52
62
|
def [] key
|
53
63
|
raw_data[key]
|
54
64
|
end
|
55
65
|
|
66
|
+
# @param key [Symbol]
|
67
|
+
# @param value [Object]
|
56
68
|
def []= key, value
|
57
69
|
raw_data[key] = value
|
58
70
|
end
|
@@ -74,9 +86,22 @@ module Gamefic
|
|
74
86
|
raw_data.replace data
|
75
87
|
end
|
76
88
|
|
77
|
-
|
89
|
+
def freeze
|
90
|
+
raw_data.freeze
|
91
|
+
super
|
92
|
+
end
|
78
93
|
|
79
|
-
|
94
|
+
def method_missing method, *args
|
95
|
+
return raw_data[method] if READER_METHODS.include?(method)
|
96
|
+
|
97
|
+
return raw_data[method.to_s[0..-2].to_sym] = args.first if WRITER_METHODS.include?(method)
|
98
|
+
|
99
|
+
super
|
100
|
+
end
|
101
|
+
|
102
|
+
def respond_to_missing?(method, _with_private = false)
|
103
|
+
READER_METHODS.include?(method) || WRITER_METHODS.include?(method)
|
104
|
+
end
|
80
105
|
end
|
81
106
|
end
|
82
107
|
end
|
data/lib/gamefic/props/pause.rb
CHANGED
data/lib/gamefic/scanner.rb
CHANGED
data/lib/gamefic/vault.rb
CHANGED
data/lib/gamefic/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gamefic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|