rvpacker-txt 1.0.0 → 1.1.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/bin/rvpacker-txt +9 -17
- data/lib/RGSS/BasicCoder.rb +9 -32
- data/lib/RGSS/serialize.rb +22 -19
- data/lib/RGSS.rb +63 -193
- data/lib/RPG.rb +0 -46
- data/rvpacker-txt.gemspec +1 -2
- data/sig/rgss.rbs +3 -3
- metadata +2 -17
- data/lib/rvpacker/version.rb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: af3cb24de9b95cae720c5577b90b49e3f3f817256841e8c877fa589db3e2255a
|
|
4
|
+
data.tar.gz: 857ae8378748e69e870fabd9ca7f0b148131250ed32fa932f2f002373eed43c2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dd9df69240e9b738836ed8059324ff1617c09f54b1b9f057e0c1a7ed6d6016331d29310fb1b96a79b4c95e45ee09207ecd6bb001689bd715ebbbb2742819d0a6
|
|
7
|
+
data.tar.gz: fc7d6ab0e470b9eca55a90835367d721d8b694f1e5e581c8c95e5025bc2f3ef1f189a2e493ab26a9555ffe1f4c34d30e2376bf759052b630a46b23a3dc9919f5
|
data/bin/rvpacker-txt
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
-
require
|
|
3
|
-
require
|
|
2
|
+
require 'RGSS'
|
|
3
|
+
require 'optparse'
|
|
4
4
|
|
|
5
|
+
$logging = false
|
|
5
6
|
opts = {}
|
|
6
7
|
OptionParser.new do |options|
|
|
7
8
|
options.banner = "This tool allows to parse RPG Maker project to .txt files and back.\n\nUsage: rvpacker-txt COMMAND [options]\n\nCOMMANDS:\n read - Parses RPG Maker game files to .txt\n write - Writes parsed files back to their initial form\nOPTIONS:\n"
|
|
@@ -13,7 +14,7 @@ OptionParser.new do |options|
|
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
options.on('-l', '--log', 'Log information while processing.') do
|
|
16
|
-
|
|
17
|
+
$logging = true
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
options.on('-s', '--shuffle NUMBER', 'At value 1: Shuffles all lines in strings, at value 2: shuffles all lines and words in strings.') do |number|
|
|
@@ -39,22 +40,21 @@ unless %w[read write].include?(opts[:action])
|
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
project_types = { 'vx' => :vx, 'ace' => :ace, 'xp' => :xp }
|
|
42
|
-
$logging = opts[:log]
|
|
43
43
|
|
|
44
44
|
directory = opts[:input_dir]
|
|
45
45
|
raise "#{directory} not found" unless File.exist?(directory)
|
|
46
46
|
|
|
47
47
|
data_folder = Dir.foreach(directory).find { |filename| filename.downcase == 'original' }
|
|
48
48
|
data_folder = Dir.foreach(directory).find { |filename| filename.downcase == 'data' } if data_folder.nil?
|
|
49
|
-
raise '"Data" directory not found within input directory.' if data_folder.nil?
|
|
49
|
+
raise '"Data" or "original" directory not found within input directory.' if data_folder.nil?
|
|
50
50
|
|
|
51
|
-
types = %
|
|
51
|
+
types = %w[vx ace xp]
|
|
52
52
|
|
|
53
53
|
type = types.find do |_type|
|
|
54
54
|
case _type
|
|
55
|
-
when 'vx'
|
|
56
|
-
break project_types[_type] if File.exist?(File.join(directory, data_folder, 'System.rxdata'))
|
|
57
55
|
when 'xp'
|
|
56
|
+
break project_types[_type] if File.exist?(File.join(directory, data_folder, 'System.rxdata'))
|
|
57
|
+
when 'vx'
|
|
58
58
|
break project_types[_type] if File.exist?(File.join(directory, data_folder, 'System.rvdata'))
|
|
59
59
|
when 'ace'
|
|
60
60
|
break project_types[_type] if File.exist?(File.join(directory, data_folder, 'System.rvdata2'))
|
|
@@ -65,12 +65,4 @@ end
|
|
|
65
65
|
|
|
66
66
|
raise 'Couldn\'t determine project engine.' if type.nil?
|
|
67
67
|
|
|
68
|
-
RGSS.serialize(
|
|
69
|
-
type,
|
|
70
|
-
opts[:action],
|
|
71
|
-
directory,
|
|
72
|
-
{
|
|
73
|
-
line_width: -1,
|
|
74
|
-
table_width: -1,
|
|
75
|
-
}
|
|
76
|
-
)
|
|
68
|
+
RGSS.serialize(type, opts[:action], directory)
|
data/lib/RGSS/BasicCoder.rb
CHANGED
|
@@ -1,51 +1,28 @@
|
|
|
1
1
|
module RGSS
|
|
2
2
|
module BasicCoder
|
|
3
|
-
def encode_with(coder)
|
|
4
|
-
ivars.each do |var|
|
|
5
|
-
name = var.to_s.sub(/^@/, '')
|
|
6
|
-
value = instance_variable_get(var)
|
|
7
|
-
coder[name] = encode(name, value)
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def encode(name, value)
|
|
12
|
-
return value
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def init_with(coder)
|
|
16
|
-
coder.map.each do |key, value|
|
|
17
|
-
sym = "@#{key}".to_sym
|
|
18
|
-
instance_variable_set(sym, decode(key, value))
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def decode(name, value)
|
|
23
|
-
return value
|
|
24
|
-
end
|
|
25
|
-
|
|
26
3
|
def ivars
|
|
27
|
-
|
|
4
|
+
instance_variables
|
|
28
5
|
end
|
|
29
6
|
|
|
30
7
|
INCLUDED_CLASSES = []
|
|
31
8
|
|
|
32
|
-
def self.included(
|
|
33
|
-
INCLUDED_CLASSES.push(
|
|
9
|
+
def self.included(module_)
|
|
10
|
+
INCLUDED_CLASSES.push(module_)
|
|
34
11
|
end
|
|
35
12
|
|
|
36
|
-
def self.
|
|
37
|
-
INCLUDED_CLASSES.each do |
|
|
13
|
+
def self.ivars_methods_set(version)
|
|
14
|
+
INCLUDED_CLASSES.each do |class_|
|
|
38
15
|
if version == :ace
|
|
39
16
|
RGSS.reset_method(
|
|
40
|
-
|
|
17
|
+
class_,
|
|
41
18
|
:ivars,
|
|
42
|
-
-> {
|
|
19
|
+
-> { instance_variables }
|
|
43
20
|
)
|
|
44
21
|
else
|
|
45
22
|
RGSS.reset_method(
|
|
46
|
-
|
|
23
|
+
class_,
|
|
47
24
|
:ivars,
|
|
48
|
-
-> {
|
|
25
|
+
-> { instance_variables.sort }
|
|
49
26
|
)
|
|
50
27
|
end
|
|
51
28
|
end
|
data/lib/RGSS/serialize.rb
CHANGED
|
@@ -68,13 +68,13 @@ module RGSS
|
|
|
68
68
|
nil
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
def parse_parameter(code, parameter)
|
|
71
|
+
def self.parse_parameter(code, parameter)
|
|
72
72
|
case code
|
|
73
73
|
when 401, 405
|
|
74
74
|
case $game_type
|
|
75
75
|
when "lisa"
|
|
76
|
-
match = parameter.
|
|
77
|
-
parameter = parameter
|
|
76
|
+
match = parameter.scan(/^\\et\[[0-9]+\]|\\nbt/)
|
|
77
|
+
parameter = parameter.slice(match[0].length) if match
|
|
78
78
|
else
|
|
79
79
|
nil
|
|
80
80
|
end
|
|
@@ -278,6 +278,12 @@ module RGSS
|
|
|
278
278
|
|
|
279
279
|
terms.instance_variables.each do |variable|
|
|
280
280
|
value = terms.instance_variable_get(variable)
|
|
281
|
+
|
|
282
|
+
if value.is_a?(String)
|
|
283
|
+
lines.add(value) unless value.empty?
|
|
284
|
+
next
|
|
285
|
+
end
|
|
286
|
+
|
|
281
287
|
value.each { |string| lines.add(string) unless string.is_a?(String) && string.empty? }
|
|
282
288
|
end
|
|
283
289
|
|
|
@@ -599,9 +605,14 @@ module RGSS
|
|
|
599
605
|
terms.instance_variables.each do |variable|
|
|
600
606
|
value = terms.instance_variable_get(variable)
|
|
601
607
|
|
|
602
|
-
value.
|
|
603
|
-
translated = system_translation_map[
|
|
604
|
-
value
|
|
608
|
+
if value.is_a?(String)
|
|
609
|
+
translated = system_translation_map[value]
|
|
610
|
+
value = translated unless translated.nil?
|
|
611
|
+
elsif value.is_a?(Array)
|
|
612
|
+
value.each_with_index do |string, i|
|
|
613
|
+
translated = system_translation_map[string]
|
|
614
|
+
value[i] = translated unless translated.nil?
|
|
615
|
+
end
|
|
605
616
|
end
|
|
606
617
|
|
|
607
618
|
terms.instance_variable_set(variable, value)
|
|
@@ -635,18 +646,10 @@ module RGSS
|
|
|
635
646
|
File.write("#{output_path}/#{File.basename(scripts_file)}", Marshal.dump(script_entries), mode: 'wb')
|
|
636
647
|
end
|
|
637
648
|
|
|
638
|
-
def self.serialize(
|
|
649
|
+
def self.serialize(engine, action, directory)
|
|
639
650
|
start_time = Time.now
|
|
640
651
|
|
|
641
|
-
setup_classes(
|
|
642
|
-
|
|
643
|
-
options = options.clone
|
|
644
|
-
options[:sort] = true if %i[vx xp].include?(version)
|
|
645
|
-
options[:flow_classes] = [Color, Tone, RPG::BGM, RPG::BGS, RPG::MoveCommand, RPG::SE].freeze
|
|
646
|
-
options[:line_width] ||= 130
|
|
647
|
-
|
|
648
|
-
table_width = options[:table_width]
|
|
649
|
-
RGSS.reset_const(Table, :MAX_ROW_LENGTH, table_width || 20)
|
|
652
|
+
setup_classes(engine)
|
|
650
653
|
|
|
651
654
|
absolute_path = File.realpath(directory)
|
|
652
655
|
|
|
@@ -665,14 +668,14 @@ module RGSS
|
|
|
665
668
|
files = (
|
|
666
669
|
Dir
|
|
667
670
|
.children(paths[:original_path])
|
|
668
|
-
.select { |filename| File.extname(filename) == extensions[
|
|
671
|
+
.select { |filename| File.extname(filename) == extensions[engine] }
|
|
669
672
|
.map { |filename| "#{paths[:original_path]}/#{filename}" }
|
|
670
673
|
)
|
|
671
674
|
|
|
672
675
|
maps_files = []
|
|
673
676
|
other_files = []
|
|
674
|
-
system_file = "#{paths[:original_path]}/System#{extensions[
|
|
675
|
-
scripts_file = "#{paths[:original_path]}/Scripts#{extensions[
|
|
677
|
+
system_file = "#{paths[:original_path]}/System#{extensions[engine]}"
|
|
678
|
+
scripts_file = "#{paths[:original_path]}/Scripts#{extensions[engine]}"
|
|
676
679
|
|
|
677
680
|
$game_type = get_game_type(system_file)
|
|
678
681
|
|
data/lib/RGSS.rb
CHANGED
|
@@ -17,63 +17,17 @@ FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TOR
|
|
|
17
17
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
18
18
|
DEALINGS IN THE SOFTWARE.
|
|
19
19
|
=end
|
|
20
|
-
|
|
21
|
-
require 'scanf'
|
|
22
|
-
|
|
23
20
|
class Table
|
|
24
21
|
def initialize(bytes)
|
|
25
22
|
@dim, @x, @y, @z, items, *@data = bytes.unpack('L5 S*')
|
|
26
|
-
unless items == @data.length
|
|
27
|
-
raise 'Size mismatch loading Table from data'
|
|
28
|
-
end
|
|
29
|
-
unless @x * @y * @z == items
|
|
30
|
-
raise 'Size mismatch loading Table from data'
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
23
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def encode_with(coder)
|
|
37
|
-
coder.style = Psych::Nodes::Mapping::BLOCK
|
|
38
|
-
|
|
39
|
-
coder['dim'] = @dim
|
|
40
|
-
coder['x'] = @x
|
|
41
|
-
coder['y'] = @y
|
|
42
|
-
coder['z'] = @z
|
|
43
|
-
|
|
44
|
-
if @x * @y * @z > 0
|
|
45
|
-
stride = @x < 2 ? (@y < 2 ? @z : @y) : @x
|
|
46
|
-
rows = @data.each_slice(stride).to_a
|
|
47
|
-
if MAX_ROW_LENGTH != -1 && stride > MAX_ROW_LENGTH
|
|
48
|
-
block_length = (stride + MAX_ROW_LENGTH - 1) / MAX_ROW_LENGTH
|
|
49
|
-
row_length = (stride + block_length - 1) / block_length
|
|
50
|
-
rows =
|
|
51
|
-
rows
|
|
52
|
-
.collect { |x| x.each_slice(row_length).to_a }
|
|
53
|
-
.flatten(1)
|
|
54
|
-
end
|
|
55
|
-
rows = rows.collect { |x| x.collect { |y| '%04x' % y }.join(' ') }
|
|
56
|
-
coder['data'] = rows
|
|
57
|
-
else
|
|
58
|
-
coder['data'] = []
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def init_with(coder)
|
|
63
|
-
@dim = coder['dim']
|
|
64
|
-
@x = coder['x']
|
|
65
|
-
@y = coder['y']
|
|
66
|
-
@z = coder['z']
|
|
67
|
-
@data =
|
|
68
|
-
coder['data'].collect { |x| x.split(' ').collect(&:hex) }.flatten
|
|
69
|
-
items = @x * @y * @z
|
|
70
|
-
unless items == @data.length
|
|
71
|
-
raise 'Size mismatch loading Table from YAML'
|
|
24
|
+
unless items == @data.length && @x * @y * @z == items
|
|
25
|
+
raise 'Size mismatch loading Table from data'
|
|
72
26
|
end
|
|
73
27
|
end
|
|
74
28
|
|
|
75
|
-
def _dump(*
|
|
76
|
-
|
|
29
|
+
def _dump(*_ignored)
|
|
30
|
+
[@dim, @x, @y, @z, @x * @y * @z, *@data].pack('L5 S*')
|
|
77
31
|
end
|
|
78
32
|
|
|
79
33
|
def self._load(bytes)
|
|
@@ -86,8 +40,8 @@ class Color
|
|
|
86
40
|
@r, @g, @b, @a = *bytes.unpack('D4')
|
|
87
41
|
end
|
|
88
42
|
|
|
89
|
-
def _dump(*
|
|
90
|
-
|
|
43
|
+
def _dump(*_ignored)
|
|
44
|
+
[@r, @g, @b, @a].pack('D4')
|
|
91
45
|
end
|
|
92
46
|
|
|
93
47
|
def self._load(bytes)
|
|
@@ -100,8 +54,8 @@ class Tone
|
|
|
100
54
|
@r, @g, @b, @a = *bytes.unpack('D4')
|
|
101
55
|
end
|
|
102
56
|
|
|
103
|
-
def _dump(*
|
|
104
|
-
|
|
57
|
+
def _dump(*_ignored)
|
|
58
|
+
[@r, @g, @b, @a].pack('D4')
|
|
105
59
|
end
|
|
106
60
|
|
|
107
61
|
def self._load(bytes)
|
|
@@ -114,8 +68,8 @@ class Rect
|
|
|
114
68
|
@x, @y, @width, @height = *bytes.unpack('i4')
|
|
115
69
|
end
|
|
116
70
|
|
|
117
|
-
def _dump(*
|
|
118
|
-
|
|
71
|
+
def _dump(*_ignored)
|
|
72
|
+
[@x, @y, @width, @height].pack('i4')
|
|
119
73
|
end
|
|
120
74
|
|
|
121
75
|
def self._load(bytes)
|
|
@@ -135,28 +89,31 @@ module RGSS
|
|
|
135
89
|
scope.send(:define_method, name, method)
|
|
136
90
|
end
|
|
137
91
|
|
|
138
|
-
def self.reset_const(scope,
|
|
139
|
-
scope.send(:remove_const,
|
|
140
|
-
scope.send(:const_set,
|
|
92
|
+
def self.reset_const(scope, symbol, value)
|
|
93
|
+
scope.send(:remove_const, symbol) if scope.const_defined?(symbol)
|
|
94
|
+
scope.send(:const_set, symbol, value)
|
|
141
95
|
end
|
|
142
96
|
|
|
143
|
-
def self.array_to_hash(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
97
|
+
def self.array_to_hash(array, &block)
|
|
98
|
+
hash = {}
|
|
99
|
+
|
|
100
|
+
array.each_with_index do |value, index|
|
|
101
|
+
r = block_given? ? block.call(value) : value
|
|
102
|
+
hash[index] = r unless r.nil?
|
|
148
103
|
end
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
104
|
+
|
|
105
|
+
unless array.empty?
|
|
106
|
+
last = array.length - 1
|
|
107
|
+
hash[last] = nil unless hash.has_key?(last)
|
|
152
108
|
end
|
|
153
|
-
|
|
109
|
+
|
|
110
|
+
hash
|
|
154
111
|
end
|
|
155
112
|
|
|
156
113
|
def self.hash_to_array(hash)
|
|
157
|
-
|
|
158
|
-
hash.each { |
|
|
159
|
-
|
|
114
|
+
array = []
|
|
115
|
+
hash.each { |key, value| array[key] = value }
|
|
116
|
+
array
|
|
160
117
|
end
|
|
161
118
|
|
|
162
119
|
require 'RGSS/BasicCoder'
|
|
@@ -164,7 +121,7 @@ module RGSS
|
|
|
164
121
|
|
|
165
122
|
# creates an empty class in a potentially nested scope
|
|
166
123
|
def self.process(root, name, *args)
|
|
167
|
-
if args.
|
|
124
|
+
if !args.empty?
|
|
168
125
|
process(root.const_get(name), *args)
|
|
169
126
|
else
|
|
170
127
|
unless root.const_defined?(name, false)
|
|
@@ -245,43 +202,35 @@ module RGSS
|
|
|
245
202
|
[:Game_Screen],
|
|
246
203
|
[:Game_Vehicle],
|
|
247
204
|
[:Interpreter]
|
|
248
|
-
].each { |
|
|
249
|
-
|
|
250
|
-
def self.
|
|
251
|
-
#
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
->(str) do
|
|
263
|
-
return nil if str.nil?
|
|
264
|
-
stripped = str.strip
|
|
265
|
-
return stripped.empty? ? nil : stripped
|
|
266
|
-
end
|
|
267
|
-
)
|
|
205
|
+
].each { |symbol_array| process(Object, *symbol_array) }
|
|
206
|
+
|
|
207
|
+
def self.setup_classes(version)
|
|
208
|
+
# change version_id to fixed number
|
|
209
|
+
reset_method(
|
|
210
|
+
RPG::System,
|
|
211
|
+
:reduce_string,
|
|
212
|
+
->(string) do
|
|
213
|
+
return nil if string.nil?
|
|
214
|
+
|
|
215
|
+
stripped = string.strip
|
|
216
|
+
stripped.empty? ? nil : stripped
|
|
217
|
+
end
|
|
218
|
+
)
|
|
268
219
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
end
|
|
220
|
+
# These magic numbers should be different. If they are the same, the saved version
|
|
221
|
+
# of the map in save files will be used instead of any updated version of the map
|
|
222
|
+
reset_method(
|
|
223
|
+
RPG::System,
|
|
224
|
+
:map_version,
|
|
225
|
+
->(_ignored) { 12_345_678 }
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
reset_method(
|
|
229
|
+
Game_System,
|
|
230
|
+
:map_version,
|
|
231
|
+
->(_ignored) { 87_654_321 }
|
|
232
|
+
)
|
|
283
233
|
|
|
284
|
-
def self.setup_interpreter(version)
|
|
285
234
|
# Game_Interpreter is marshalled differently in VX Ace
|
|
286
235
|
if version == :ace
|
|
287
236
|
reset_method(Game_Interpreter, :marshal_dump, -> { return @data })
|
|
@@ -294,115 +243,36 @@ module RGSS
|
|
|
294
243
|
remove_defined_method(Game_Interpreter, :marshal_dump)
|
|
295
244
|
remove_defined_method(Game_Interpreter, :marshal_load)
|
|
296
245
|
end
|
|
297
|
-
end
|
|
298
246
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
RPG::EventCommand,
|
|
306
|
-
:clean,
|
|
307
|
-
-> { @parameters[0].rstrip! if @code == 401 }
|
|
308
|
-
)
|
|
309
|
-
end
|
|
247
|
+
reset_method(
|
|
248
|
+
RPG::EventCommand,
|
|
249
|
+
:clean,
|
|
250
|
+
-> { @parameters[0].rstrip! if @code == 401 }
|
|
251
|
+
)
|
|
252
|
+
|
|
310
253
|
reset_const(
|
|
311
254
|
RPG::EventCommand,
|
|
312
255
|
:MOVE_LIST_CODE,
|
|
313
256
|
version == :xp ? 209 : 205
|
|
314
257
|
)
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
def self.setup_classes(version, options)
|
|
318
|
-
setup_system(version, options)
|
|
319
|
-
setup_interpreter(version)
|
|
320
|
-
setup_event_command(version, options)
|
|
321
|
-
BasicCoder.set_ivars_methods(version)
|
|
322
|
-
end
|
|
323
258
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
SCRIPTS_BASE = 'Scripts'
|
|
327
|
-
|
|
328
|
-
ACE_DATA_EXT = '.rvdata2'
|
|
329
|
-
VX_DATA_EXT = '.rvdata'
|
|
330
|
-
XP_DATA_EXT = '.rxdata'
|
|
331
|
-
YAML_EXT = '.yaml'
|
|
332
|
-
RUBY_EXT = '.rb'
|
|
333
|
-
|
|
334
|
-
def self.get_data_directory(base)
|
|
335
|
-
return File.join(base, 'Data')
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
def self.get_yaml_directory(base)
|
|
339
|
-
return File.join(base, 'YAML')
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
def self.get_script_directory(base)
|
|
343
|
-
return File.join(base, 'Scripts')
|
|
259
|
+
BasicCoder.ivars_methods_set(version)
|
|
344
260
|
end
|
|
345
261
|
|
|
346
262
|
class Game_Switches
|
|
347
263
|
include RGSS::BasicCoder
|
|
348
|
-
|
|
349
|
-
def encode(name, value)
|
|
350
|
-
return array_to_hash(value)
|
|
351
|
-
end
|
|
352
|
-
|
|
353
|
-
def decode(name, value)
|
|
354
|
-
return hash_to_array(value)
|
|
355
|
-
end
|
|
356
264
|
end
|
|
357
265
|
|
|
358
266
|
class Game_Variables
|
|
359
267
|
include RGSS::BasicCoder
|
|
360
|
-
|
|
361
|
-
def encode(name, value)
|
|
362
|
-
return array_to_hash(value)
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
def decode(name, value)
|
|
366
|
-
return hash_to_array(value)
|
|
367
|
-
end
|
|
368
268
|
end
|
|
369
269
|
|
|
370
270
|
class Game_SelfSwitches
|
|
371
271
|
include RGSS::BasicCoder
|
|
372
|
-
|
|
373
|
-
def encode(name, value)
|
|
374
|
-
return(
|
|
375
|
-
Hash[
|
|
376
|
-
value.collect do |pair|
|
|
377
|
-
key, value = pair
|
|
378
|
-
next ['%03d %03d %s' % key, value]
|
|
379
|
-
end
|
|
380
|
-
]
|
|
381
|
-
)
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
def decode(name, value)
|
|
385
|
-
return(
|
|
386
|
-
Hash[
|
|
387
|
-
value.collect do |pair|
|
|
388
|
-
key, value = pair
|
|
389
|
-
next [key.scanf('%d %d %s'), value]
|
|
390
|
-
end
|
|
391
|
-
]
|
|
392
|
-
)
|
|
393
|
-
end
|
|
394
272
|
end
|
|
395
273
|
|
|
396
274
|
class Game_System
|
|
397
275
|
include RGSS::BasicCoder
|
|
398
|
-
|
|
399
|
-
def encode(name, value)
|
|
400
|
-
if name == 'version_id'
|
|
401
|
-
return map_version(value)
|
|
402
|
-
else
|
|
403
|
-
return value
|
|
404
|
-
end
|
|
405
|
-
end
|
|
406
276
|
end
|
|
407
277
|
|
|
408
278
|
require 'RGSS/serialize'
|
data/lib/RPG.rb
CHANGED
|
@@ -2,54 +2,8 @@ require 'RGSS'
|
|
|
2
2
|
module RPG
|
|
3
3
|
class System
|
|
4
4
|
include RGSS::BasicCoder
|
|
5
|
-
HASHED_VARS = %w[variables switches]
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def self.array_to_hash(arr, &block)
|
|
9
|
-
h = {}
|
|
10
|
-
arr.each_with_index do |val, index|
|
|
11
|
-
r = block_given? ? block.call(val) : val
|
|
12
|
-
h[index] = r unless r.nil?
|
|
13
|
-
end
|
|
14
|
-
if arr.length > 0
|
|
15
|
-
last = arr.length - 1
|
|
16
|
-
h[last] = nil unless h.has_key?(last)
|
|
17
|
-
end
|
|
18
|
-
return h
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def encode(name, value)
|
|
22
|
-
if HASHED_VARS.include?(name)
|
|
23
|
-
return array_to_hash(value) { |val| reduce_string(val) }
|
|
24
|
-
elsif name == 'version_id'
|
|
25
|
-
return map_version(value)
|
|
26
|
-
else
|
|
27
|
-
return value
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def decode(name, value)
|
|
32
|
-
if HASHED_VARS.include?(name)
|
|
33
|
-
return hash_to_array(value)
|
|
34
|
-
else
|
|
35
|
-
return value
|
|
36
|
-
end
|
|
37
5
|
end
|
|
38
6
|
|
|
39
7
|
class EventCommand
|
|
40
|
-
def encode_with(coder)
|
|
41
|
-
case @code
|
|
42
|
-
when MOVE_LIST_CODE
|
|
43
|
-
# move list
|
|
44
|
-
coder.style = Psych::Nodes::Mapping::BLOCK
|
|
45
|
-
else
|
|
46
|
-
coder.style = Psych::Nodes::Mapping::FLOW
|
|
47
|
-
end
|
|
48
|
-
coder['i'], coder['c'], coder['p'] = @indent, @code, @parameters
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def init_with(coder)
|
|
52
|
-
@indent, @code, @parameters = coder['i'], coder['c'], coder['p']
|
|
53
|
-
end
|
|
54
8
|
end
|
|
55
9
|
end
|
data/rvpacker-txt.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |spec|
|
|
2
2
|
spec.name = 'rvpacker-txt'
|
|
3
|
-
spec.version = '1.
|
|
3
|
+
spec.version = '1.1.0'
|
|
4
4
|
spec.authors = ['Howard Jeng', 'Andrew Kesterson', 'Solistra', 'Darkness9724', 'savannstm']
|
|
5
5
|
spec.email = ['savannstm@gmail.com']
|
|
6
6
|
spec.summary = 'Reads or writes RPG Maker XP/VX/VXAce game text to .txt files'
|
|
@@ -15,5 +15,4 @@ Gem::Specification.new do |spec|
|
|
|
15
15
|
|
|
16
16
|
spec.add_development_dependency 'bundler', '>= 2.5.14'
|
|
17
17
|
spec.add_development_dependency 'rake', '>= 13.0.6'
|
|
18
|
-
spec.add_dependency 'scanf', '>= 1.0.0'
|
|
19
18
|
end
|
data/sig/rgss.rbs
CHANGED
|
@@ -21,11 +21,11 @@ module RGSS
|
|
|
21
21
|
|
|
22
22
|
def self.read_scripts: (String, String) -> void
|
|
23
23
|
|
|
24
|
-
def self.serialize: (Symbol,
|
|
24
|
+
def self.serialize: (Symbol, String, String) -> void
|
|
25
25
|
|
|
26
|
-
def self.write_map: (
|
|
26
|
+
def self.write_map: (Array[String], String, String) -> void
|
|
27
27
|
|
|
28
|
-
def self.write_other: (
|
|
28
|
+
def self.write_other: (Array[String], String, String) -> void
|
|
29
29
|
|
|
30
30
|
def self.write_system: (String, String, String) -> void
|
|
31
31
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rvpacker-txt
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Howard Jeng
|
|
@@ -12,7 +12,7 @@ authors:
|
|
|
12
12
|
autorequire:
|
|
13
13
|
bindir: bin
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date: 2024-07-
|
|
15
|
+
date: 2024-07-02 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
18
|
name: bundler
|
|
@@ -42,20 +42,6 @@ dependencies:
|
|
|
42
42
|
- - ">="
|
|
43
43
|
- !ruby/object:Gem::Version
|
|
44
44
|
version: 13.0.6
|
|
45
|
-
- !ruby/object:Gem::Dependency
|
|
46
|
-
name: scanf
|
|
47
|
-
requirement: !ruby/object:Gem::Requirement
|
|
48
|
-
requirements:
|
|
49
|
-
- - ">="
|
|
50
|
-
- !ruby/object:Gem::Version
|
|
51
|
-
version: 1.0.0
|
|
52
|
-
type: :runtime
|
|
53
|
-
prerelease: false
|
|
54
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
55
|
-
requirements:
|
|
56
|
-
- - ">="
|
|
57
|
-
- !ruby/object:Gem::Version
|
|
58
|
-
version: 1.0.0
|
|
59
45
|
description:
|
|
60
46
|
email:
|
|
61
47
|
- savannstm@gmail.com
|
|
@@ -73,7 +59,6 @@ files:
|
|
|
73
59
|
- lib/RGSS/BasicCoder.rb
|
|
74
60
|
- lib/RGSS/serialize.rb
|
|
75
61
|
- lib/RPG.rb
|
|
76
|
-
- lib/rvpacker/version.rb
|
|
77
62
|
- rvpacker-txt.gemspec
|
|
78
63
|
- sig/rgss.rbs
|
|
79
64
|
homepage: https://github.com/savannstm/rvpacker-txt
|
data/lib/rvpacker/version.rb
DELETED