R3EXS 1.1.0 → 1.1.1
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/.yardopts +2 -2
- data/CHANGELOG.md +5 -0
- data/ext/R3EXS/R3EXS.c +601 -0
- data/ext/R3EXS/extconf.rb +3 -0
- data/lib/R3EXS/RGSS3.rb +71 -49
- data/lib/R3EXS/RGSS3_R3EXS.rb +483 -267
- data/lib/R3EXS/ast.rb +33 -24
- data/lib/R3EXS/error.rb +95 -59
- data/lib/R3EXS/extract_strings.rb +0 -1
- data/lib/R3EXS/inject_strings.rb +0 -1
- data/lib/R3EXS/json_rvdata2.rb +0 -1
- data/lib/R3EXS/rvdata2_json.rb +2 -1
- data/lib/R3EXS/utils.rb +5 -2
- data/lib/R3EXS/version.rb +1 -1
- data/lib/R3EXS.rb +2 -1
- metadata +10 -11
- data/ext/rgss3a_rvdata2/extconf.rb +0 -3
- data/ext/rgss3a_rvdata2/rgss3a_rvdata2.c +0 -616
data/lib/R3EXS/RGSS3.rb
CHANGED
@@ -3,6 +3,26 @@
|
|
3
3
|
# RPG Maker VX Ace Color 类
|
4
4
|
class Color
|
5
5
|
|
6
|
+
# red 通道的值
|
7
|
+
#
|
8
|
+
# @return [Integer]
|
9
|
+
attr_reader :red
|
10
|
+
|
11
|
+
# green 通道的值
|
12
|
+
#
|
13
|
+
# @return [Integer]
|
14
|
+
attr_reader :green
|
15
|
+
|
16
|
+
# blue 通道的值
|
17
|
+
#
|
18
|
+
# @return [Integer]
|
19
|
+
attr_reader :blue
|
20
|
+
|
21
|
+
# alpha 通道的值
|
22
|
+
#
|
23
|
+
# @return [Integer]
|
24
|
+
attr_reader :alpha
|
25
|
+
|
6
26
|
# 初始化时接受以下几种参数情况:
|
7
27
|
# - 无参数时,默认 (0, 0, 0, 0)
|
8
28
|
# - 3 个参数时,默认为 (red, green, blue, 255)
|
@@ -13,6 +33,7 @@ class Color
|
|
13
33
|
# - green: 绿色通道的值 (0-255)
|
14
34
|
# - blue: 蓝色通道的值 (0-255)
|
15
35
|
# - alpha: 可选,透明度通道的值 (0-255),默认为 255
|
36
|
+
#
|
16
37
|
# @return [Color]
|
17
38
|
def initialize(*args)
|
18
39
|
case args.length
|
@@ -37,6 +58,7 @@ class Color
|
|
37
58
|
# - green: 绿色通道的值 (0-255)
|
38
59
|
# - blue: 蓝色通道的值 (0-255)
|
39
60
|
# - alpha: 可选,透明度通道的值 (0-255),默认为 255
|
61
|
+
#
|
40
62
|
# @return [void]
|
41
63
|
def set(*args)
|
42
64
|
case args.length
|
@@ -68,6 +90,7 @@ class Color
|
|
68
90
|
# 序列化 Color 对象
|
69
91
|
#
|
70
92
|
# @param level [Integer] 序列化的级别
|
93
|
+
#
|
71
94
|
# @return [String]
|
72
95
|
def _dump(level)
|
73
96
|
[@red, @green, @blue, @alpha].pack('D4')
|
@@ -76,6 +99,7 @@ class Color
|
|
76
99
|
# 反序列化 Color 对象
|
77
100
|
#
|
78
101
|
# @param obj [String] 序列化后的字符串
|
102
|
+
#
|
79
103
|
# @return [Color]
|
80
104
|
def Color._load(obj)
|
81
105
|
new(*obj.unpack('D4'))
|
@@ -84,6 +108,7 @@ class Color
|
|
84
108
|
# 设置 red 通道的值,限制在 0 到 255 之间
|
85
109
|
#
|
86
110
|
# @param value [Float] 新的 red 通道值
|
111
|
+
#
|
87
112
|
# @return [void]
|
88
113
|
def red=(value)
|
89
114
|
@red = [[value, 0.0].max, 255.0].min.to_i
|
@@ -92,6 +117,7 @@ class Color
|
|
92
117
|
# 设置 green 通道的值,限制在 0 到 255 之间
|
93
118
|
#
|
94
119
|
# @param value [Float] 新的 green 通道值
|
120
|
+
#
|
95
121
|
# @return [void]
|
96
122
|
def green=(value)
|
97
123
|
@green = [[value, 0.0].max, 255.0].min.to_i
|
@@ -100,6 +126,7 @@ class Color
|
|
100
126
|
# 设置 blue 通道的值,限制在 0 到 255 之间
|
101
127
|
#
|
102
128
|
# @param value [Float] 新的 blue 通道值
|
129
|
+
#
|
103
130
|
# @return [void]
|
104
131
|
def blue=(value)
|
105
132
|
@blue = [[value, 0.0].max, 255.0].min.to_i
|
@@ -108,10 +135,15 @@ class Color
|
|
108
135
|
# 设置 alpha 通道的值,限制在 0 到 255 之间
|
109
136
|
#
|
110
137
|
# @param value [Float] 新的 alpha 通道值
|
138
|
+
#
|
111
139
|
# @return [void]
|
112
140
|
def alpha=(value)
|
113
141
|
@alpha = [[value, 0.0].max, 255.0].min
|
114
142
|
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# RPG Maker VX Ace Tone 类
|
146
|
+
class Tone
|
115
147
|
|
116
148
|
# red 通道的值
|
117
149
|
#
|
@@ -128,14 +160,10 @@ class Color
|
|
128
160
|
# @return [Integer]
|
129
161
|
attr_reader :blue
|
130
162
|
|
131
|
-
#
|
163
|
+
# gray 通道的值
|
132
164
|
#
|
133
165
|
# @return [Integer]
|
134
|
-
attr_reader :
|
135
|
-
end
|
136
|
-
|
137
|
-
# RPG Maker VX Ace Tone 类
|
138
|
-
class Tone
|
166
|
+
attr_reader :gray
|
139
167
|
|
140
168
|
# 初始化时接受以下几种参数情况:
|
141
169
|
# - 无参数时,默认 (0, 0, 0, 0)
|
@@ -147,6 +175,7 @@ class Tone
|
|
147
175
|
# - green: 绿色通道的值 (-255-255)
|
148
176
|
# - blue: 蓝色通道的值 (-255-255)
|
149
177
|
# - gray: 可选,灰度通道的值 (0-255),默认为 0
|
178
|
+
#
|
150
179
|
# @return [Tone]
|
151
180
|
def initialize(*args)
|
152
181
|
case args.length
|
@@ -171,6 +200,7 @@ class Tone
|
|
171
200
|
# - green: 绿色通道的值 (-255-255)
|
172
201
|
# - blue: 蓝色通道的值 (-255-255)
|
173
202
|
# - gray: 可选,透明度通道的值 (0-255),默认为 0
|
203
|
+
#
|
174
204
|
# @return [void]
|
175
205
|
def set(*args)
|
176
206
|
case args.length
|
@@ -201,6 +231,7 @@ class Tone
|
|
201
231
|
# 序列化 Tone 对象
|
202
232
|
#
|
203
233
|
# @param level [Integer] 序列化的级别
|
234
|
+
#
|
204
235
|
# @return [String]
|
205
236
|
def _dump(level)
|
206
237
|
[@red, @green, @blue, @gray].pack('D4')
|
@@ -209,6 +240,7 @@ class Tone
|
|
209
240
|
# 反序列化 Tone 对象
|
210
241
|
#
|
211
242
|
# @param obj [String] 序列化后的字符串
|
243
|
+
#
|
212
244
|
# @return [Tone]
|
213
245
|
def Tone._load(obj)
|
214
246
|
new(*obj.unpack('D4'))
|
@@ -217,6 +249,7 @@ class Tone
|
|
217
249
|
# 设置 red 通道的值,限制在 -255 到 255 之间
|
218
250
|
#
|
219
251
|
# @param value [Float] 新的 red 通道值
|
252
|
+
#
|
220
253
|
# @return [void]
|
221
254
|
def red=(value)
|
222
255
|
@red = [[value, -255.0].max, 255.0].min.to_i
|
@@ -225,6 +258,7 @@ class Tone
|
|
225
258
|
# 设置 green 通道的值,限制在 -255 到 255 之间
|
226
259
|
#
|
227
260
|
# @param value [Float] 新的 green 通道值
|
261
|
+
#
|
228
262
|
# @return [void]
|
229
263
|
def green=(value)
|
230
264
|
@green = [[value, -255.0].max, 255.0].min.to_i
|
@@ -233,6 +267,7 @@ class Tone
|
|
233
267
|
# 设置 blue 通道的值,限制在 -255 到 255 之间
|
234
268
|
#
|
235
269
|
# @param value [Float] 新的 blue 通道值
|
270
|
+
#
|
236
271
|
# @return [void]
|
237
272
|
def blue=(value)
|
238
273
|
@blue = [[value, -255.0].max, 255.0].min.to_i
|
@@ -241,39 +276,44 @@ class Tone
|
|
241
276
|
# 设置 alpha 通道的值,限制在 0 到 255 之间
|
242
277
|
#
|
243
278
|
# @param value [Float] 新的 alpha 通道值
|
279
|
+
#
|
244
280
|
# @return [void]
|
245
281
|
def gray=(value)
|
246
282
|
@gray = [[value, 0.0].max, 255.0].min.to_i
|
247
283
|
end
|
284
|
+
end
|
248
285
|
|
249
|
-
|
286
|
+
# RPG Maker VX Ace Table 类
|
287
|
+
#
|
288
|
+
# Table 是一个多维数组,每个元素都是带符号的两字节整数(int16_t), 也就是 -32,768~32,767 之间的整数
|
289
|
+
#
|
290
|
+
# Ruby Array 类在处理大量信息时效率很差,因此使用了此类。
|
291
|
+
class Table
|
292
|
+
|
293
|
+
# 数据数组
|
250
294
|
#
|
251
|
-
# @return [Integer]
|
252
|
-
|
295
|
+
# @return [Array<Integer>]
|
296
|
+
attr_accessor :data
|
253
297
|
|
254
|
-
#
|
298
|
+
# 维度
|
255
299
|
#
|
256
300
|
# @return [Integer]
|
257
|
-
|
301
|
+
attr_accessor :dim
|
258
302
|
|
259
|
-
#
|
303
|
+
# 第一维的长度
|
260
304
|
#
|
261
305
|
# @return [Integer]
|
262
|
-
|
306
|
+
attr_accessor :xsize
|
263
307
|
|
264
|
-
#
|
308
|
+
# 第二维的长度
|
265
309
|
#
|
266
310
|
# @return [Integer]
|
267
|
-
|
268
|
-
|
269
|
-
end
|
311
|
+
attr_accessor :ysize
|
270
312
|
|
271
|
-
#
|
272
|
-
#
|
273
|
-
#
|
274
|
-
|
275
|
-
# Ruby Array 类在处理大量信息时效率很差,因此使用了此类。
|
276
|
-
class Table
|
313
|
+
# 第三维的长度
|
314
|
+
#
|
315
|
+
# @return [Integer]
|
316
|
+
attr_accessor :zsize
|
277
317
|
|
278
318
|
# 初始化 Table 对象,指定多维数组各维的长度。生成的数组可以是 1~3 维,甚至是没有元素的数组。
|
279
319
|
#
|
@@ -286,6 +326,7 @@ class Table
|
|
286
326
|
# @param xsize [Integer] 第一维的长度(必需)
|
287
327
|
# @param ysize [Integer, nil] 第二维的长度(可选,默认值为 nil)
|
288
328
|
# @param zsize [Integer, nil] 第三维的长度(可选,默认值为 nil)
|
329
|
+
#
|
289
330
|
# @return [Table]
|
290
331
|
def initialize(xsize, ysize = nil, zsize = nil)
|
291
332
|
init_attr(xsize, ysize, zsize)
|
@@ -296,6 +337,7 @@ class Table
|
|
296
337
|
# @param xsize [Integer] 第一维的长度
|
297
338
|
# @param ysize [Integer, nil] 第二维的长度(如果为 nil,则默认为 1)
|
298
339
|
# @param zsize [Integer, nil] 第三维的长度(如果为 nil,则默认为 1)
|
340
|
+
#
|
299
341
|
# @return [void]
|
300
342
|
def init_attr(xsize, ysize, zsize)
|
301
343
|
@dim = 1 + (ysize.nil? ? 0 : 1) + (zsize.nil? ? 0 : 1)
|
@@ -310,6 +352,7 @@ class Table
|
|
310
352
|
# @param x [Integer] 第一维的长度(必需)
|
311
353
|
# @param y [Integer] 第二维的长度(可选,默认值为 0)
|
312
354
|
# @param z [Integer] 第三维的长度(可选,默认值为 0)
|
355
|
+
#
|
313
356
|
# @return [Integer]
|
314
357
|
def [](x, y = 0, z = 0)
|
315
358
|
@data[x + y * @xsize + z * @xsize * @ysize]
|
@@ -322,6 +365,7 @@ class Table
|
|
322
365
|
# - y: 第二维的长度(可选,默认值为 nil)
|
323
366
|
# - z: 第三维的长度(可选,默认值为 nil)
|
324
367
|
# - v: 新的元素值
|
368
|
+
#
|
325
369
|
# @return [void]
|
326
370
|
def []=(*args)
|
327
371
|
v = args.pop
|
@@ -336,6 +380,7 @@ class Table
|
|
336
380
|
# @param xsize [Integer] 第一维的长度(必需)
|
337
381
|
# @param ysize [Integer, nil] 第二维的长度(可选,默认值为 nil)
|
338
382
|
# @param zsize [Integer, nil] 第三维的长度(可选,默认值为 nil)
|
383
|
+
#
|
339
384
|
# @return [void]
|
340
385
|
def resize(xsize, ysize = nil, zsize = nil)
|
341
386
|
old_data = @data.dup
|
@@ -353,6 +398,7 @@ class Table
|
|
353
398
|
# 序列化 Table 对象
|
354
399
|
#
|
355
400
|
# @param level [Integer] 序列化的级别
|
401
|
+
#
|
356
402
|
# @return [String]
|
357
403
|
def _dump(level)
|
358
404
|
s = [@dim, @xsize, @ysize, @zsize, @xsize * @ysize * @zsize].pack('LLLLL')
|
@@ -365,6 +411,7 @@ class Table
|
|
365
411
|
# 反序列化 Table 对象
|
366
412
|
#
|
367
413
|
# @param obj [String] 序列化后的字符串
|
414
|
+
#
|
368
415
|
# @return [Table]
|
369
416
|
def Table._load(obj)
|
370
417
|
# 从序列化字符串中解包维度信息
|
@@ -375,31 +422,6 @@ class Table
|
|
375
422
|
# 现在 @data 已经从序列化字符串中完整提取
|
376
423
|
table
|
377
424
|
end
|
378
|
-
|
379
|
-
# 数据数组
|
380
|
-
#
|
381
|
-
# @return [Array<Integer>]
|
382
|
-
attr_accessor :data
|
383
|
-
|
384
|
-
# 维度
|
385
|
-
#
|
386
|
-
# @return [Integer]
|
387
|
-
attr_accessor :dim
|
388
|
-
|
389
|
-
# 第一维的长度
|
390
|
-
#
|
391
|
-
# @return [Integer]
|
392
|
-
attr_accessor :xsize
|
393
|
-
|
394
|
-
# 第二维的长度
|
395
|
-
#
|
396
|
-
# @return [Integer]
|
397
|
-
attr_accessor :ysize
|
398
|
-
|
399
|
-
# 第三维的长度
|
400
|
-
#
|
401
|
-
# @return [Integer]
|
402
|
-
attr_accessor :zsize
|
403
425
|
end
|
404
426
|
|
405
427
|
# RPG Maker VX Ace 的RPG 模块
|
@@ -692,7 +714,7 @@ module RPG
|
|
692
714
|
acc_a = @exp_params[2].to_f
|
693
715
|
acc_b = @exp_params[3].to_f
|
694
716
|
return (basis * ((lv - 1) ** (0.9 + acc_a / 250)) * lv * (lv + 1) /
|
695
|
-
|
717
|
+
(6 + lv ** 2 / 50 / acc_b) + (lv - 1) * extra).round.to_i
|
696
718
|
end
|
697
719
|
|
698
720
|
attr_accessor :exp_params
|