rgss3 0.1.2 → 0.1.3
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/lib/rgss3/bitmap.rb +28 -45
- data/lib/rgss3/game_window.rb +5 -1
- data/lib/rgss3/graphics.rb +23 -21
- data/lib/rgss3/input.rb +2 -1
- data/lib/rgss3/plane.rb +1 -1
- data/lib/rgss3/sprite.rb +3 -6
- data/lib/rgss3/sprite_container.rb +5 -0
- data/lib/rgss3/tilemap.rb +27 -25
- data/lib/rgss3/version.rb +1 -1
- data/lib/rgss3/viewport.rb +6 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 823503b6d2d5eda418635f118dff31c22a704ec0
|
4
|
+
data.tar.gz: cbb6b1f25914822ee084ca80ae2e808fa93ec97e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5562562ffd51b8634689611588b551b76aea4c6a374f1a047facc666a5996a6368c2591571d7202408f98b10b533e7ecbb9bcb0c8775725eb522b9c110379af9
|
7
|
+
data.tar.gz: e2d0b5925f05edac8c30c542cd019ff8d1ccb0151c93957b5549495c2e8b5cb1c86e2e6551ad41ba93af4bb2984f5f644d212b1219456021e37379903a14b6df
|
data/lib/rgss3/bitmap.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
class Bitmap
|
3
3
|
|
4
|
-
attr_reader :rect
|
4
|
+
attr_reader :rect
|
5
5
|
attr_accessor :font
|
6
6
|
|
7
7
|
def initialize(*args)
|
@@ -29,11 +29,13 @@ class Bitmap
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def init_other_attr
|
32
|
-
@rect = Rect.new(0, 0,
|
32
|
+
@rect = Rect.new(0, 0, gosu_image.width, gosu_image.height)
|
33
33
|
@font = Font.new
|
34
34
|
end
|
35
35
|
|
36
36
|
def dispose
|
37
|
+
@gosu_image = nil
|
38
|
+
@rmagick_image = nil
|
37
39
|
@disposed = true
|
38
40
|
end
|
39
41
|
|
@@ -42,27 +44,25 @@ class Bitmap
|
|
42
44
|
end
|
43
45
|
|
44
46
|
def width
|
45
|
-
|
47
|
+
gosu_image.width
|
46
48
|
end
|
47
49
|
|
48
50
|
def height
|
49
|
-
|
51
|
+
gosu_image.height
|
50
52
|
end
|
51
53
|
|
52
|
-
# untested
|
53
54
|
def blt(x, y, src_bitmap, src_rect, opacity = 255)
|
54
55
|
# opacity is not supported
|
55
56
|
im2 = src_bitmap.gosu_image.subimage(*src_rect)
|
56
|
-
|
57
|
+
gosu_image.insert(im2, x, y)
|
57
58
|
set_dirty
|
58
59
|
end
|
59
60
|
|
60
|
-
# untested
|
61
61
|
def stretch_blt(dest_rect, src_bitmap, src_rect, opacity = 255)
|
62
62
|
im2 = src_bitmap.gosu_image.subimage(*src_rect)
|
63
63
|
im2 = Bitmap.gosu_to_rmagick(gosu_to_rmagick)
|
64
64
|
im2.resize!(dest_rect.width, dest_rect.height)
|
65
|
-
|
65
|
+
gosu_image.insert(im2, dest_rect.x, dest_rect.y)
|
66
66
|
set_dirty
|
67
67
|
end
|
68
68
|
|
@@ -79,7 +79,7 @@ class Bitmap
|
|
79
79
|
raise ArgumentError
|
80
80
|
end
|
81
81
|
img = Magick::Image.new(width, height) { self.background_color = color.to_rmagick_color }
|
82
|
-
|
82
|
+
gosu_image.insert(img, x, y)
|
83
83
|
set_dirty
|
84
84
|
end
|
85
85
|
|
@@ -107,7 +107,7 @@ class Bitmap
|
|
107
107
|
fill = Magick::GradientFill.new(0, 0, x2, y2, start_color, end_color)
|
108
108
|
|
109
109
|
img = Magick::Image.new(width, height, fill)
|
110
|
-
|
110
|
+
gosu_image.insert(img, x, y)
|
111
111
|
set_dirty
|
112
112
|
end
|
113
113
|
|
@@ -116,19 +116,7 @@ class Bitmap
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def clear_rect(*args)
|
119
|
-
|
120
|
-
when 1, 4
|
121
|
-
if args[0].is_a?(Rect)
|
122
|
-
x, y, width, height = *args[0].to_a
|
123
|
-
else
|
124
|
-
x, y, width, height = *args
|
125
|
-
end
|
126
|
-
else
|
127
|
-
raise ArgumentError
|
128
|
-
end
|
129
|
-
f = Magick::Image.new(width, height) { self.background_color = 'none' }
|
130
|
-
@gosu_image.insert(f, x, y)
|
131
|
-
set_dirty
|
119
|
+
fill_rect(*args, Color.new)
|
132
120
|
end
|
133
121
|
|
134
122
|
def get_pixel(x, y)
|
@@ -139,7 +127,6 @@ class Bitmap
|
|
139
127
|
fill_rect(x, y, 1, 1, color)
|
140
128
|
end
|
141
129
|
|
142
|
-
# Untested
|
143
130
|
def hue_change(hue)
|
144
131
|
image = rmagick_image
|
145
132
|
Bitmap.pixel_map!(rmagick_image) do |pixel|
|
@@ -151,7 +138,6 @@ class Bitmap
|
|
151
138
|
end
|
152
139
|
|
153
140
|
def blur
|
154
|
-
# self.rmagick_image = rmagick_image.blur_image
|
155
141
|
end
|
156
142
|
|
157
143
|
def radial_blur(angle, division)
|
@@ -180,7 +166,7 @@ class Bitmap
|
|
180
166
|
end
|
181
167
|
text_image = Gosu::Image.from_text(string, @font.size, font: @font.first_existant_name)
|
182
168
|
x += (width - text_image.width) * (align || 0) / 2
|
183
|
-
y += (height - text_image.height)
|
169
|
+
y += (height - text_image.height) / 2
|
184
170
|
text_image = Bitmap.gosu_to_rmagick(text_image)
|
185
171
|
image = text_image.dup
|
186
172
|
font_pixel = @font.color.to_pixel
|
@@ -214,12 +200,10 @@ class Bitmap
|
|
214
200
|
end
|
215
201
|
|
216
202
|
def text_size(string)
|
217
|
-
f = Gosu::Font.new(@font.size,
|
218
|
-
Rect.new(0, 0, f.text_width(string.to_s, f.height)
|
203
|
+
f = Gosu::Font.new(@font.size, name: @font.first_existant_name)
|
204
|
+
Rect.new(0, 0, f.text_width(string.to_s), f.height)
|
219
205
|
end
|
220
206
|
|
221
|
-
# NEW
|
222
|
-
|
223
207
|
def self.from_gosu(img)
|
224
208
|
bitmap = allocate
|
225
209
|
bitmap.initialize_with_gosu_image(img)
|
@@ -228,7 +212,7 @@ class Bitmap
|
|
228
212
|
|
229
213
|
def self.from_rmagick(img)
|
230
214
|
bitmap = allocate
|
231
|
-
bitmap.
|
215
|
+
bitmap.initialize_with_rmagick_image(img)
|
232
216
|
bitmap
|
233
217
|
end
|
234
218
|
|
@@ -253,6 +237,7 @@ class Bitmap
|
|
253
237
|
# If you want to change it, call set_dirty or bitmap.rmagick_image = image
|
254
238
|
# after the change.
|
255
239
|
def rmagick_image
|
240
|
+
check_disposed
|
256
241
|
if @dirty
|
257
242
|
@dirty = false
|
258
243
|
@rmagick_image = Bitmap.gosu_to_rmagick(@gosu_image)
|
@@ -261,26 +246,24 @@ class Bitmap
|
|
261
246
|
end
|
262
247
|
end
|
263
248
|
|
264
|
-
def change_image
|
265
|
-
@dirty = true
|
266
|
-
end
|
267
|
-
|
268
|
-
def check_disposed
|
269
|
-
raise RGSSError, "Disposed Bitmap" if @disposed
|
270
|
-
end
|
271
|
-
|
272
|
-
def dispose!
|
273
|
-
@gosu_image = nil
|
274
|
-
@rmagick_image = nil
|
275
|
-
@disposed = true
|
276
|
-
end
|
277
|
-
|
278
249
|
def rmagick_image=(image)
|
250
|
+
check_disposed
|
279
251
|
@rmagick_image = image
|
280
252
|
@gosu_image = Gosu::Image.new(@rmagick_image)
|
281
253
|
end
|
282
254
|
|
255
|
+
def gosu_image
|
256
|
+
check_disposed
|
257
|
+
@gosu_image
|
258
|
+
end
|
259
|
+
|
283
260
|
def set_dirty
|
284
261
|
@dirty = true
|
285
262
|
end
|
263
|
+
|
264
|
+
private
|
265
|
+
|
266
|
+
def check_disposed
|
267
|
+
raise RGSSError, "Disposed Bitmap" if @disposed
|
268
|
+
end
|
286
269
|
end
|
data/lib/rgss3/game_window.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'fiber'
|
3
3
|
module RGSS3
|
4
4
|
class GameWindow < Gosu::Window
|
5
|
-
attr_reader :frame_rate
|
5
|
+
attr_reader :frame_rate, :title
|
6
6
|
def initialize(width: 544, height: 416, full_screen: false, frame_rate: 60, title: "Game", rtp: nil)
|
7
7
|
@frame_rate = frame_rate
|
8
8
|
RTP.path = rtp if rtp
|
@@ -20,5 +20,9 @@ module RGSS3
|
|
20
20
|
def draw
|
21
21
|
Graphics.draw
|
22
22
|
end
|
23
|
+
|
24
|
+
def needs_redraw?
|
25
|
+
Graphics.needs_redraw
|
26
|
+
end
|
23
27
|
end
|
24
28
|
end
|
data/lib/rgss3/graphics.rb
CHANGED
@@ -7,6 +7,7 @@ module Graphics
|
|
7
7
|
attr_accessor :frame_count
|
8
8
|
attr_reader :gosu_window
|
9
9
|
attr_reader :brightness, :frame_rate
|
10
|
+
attr_reader :needs_redraw
|
10
11
|
|
11
12
|
def gosu_window
|
12
13
|
RGSS3.window
|
@@ -31,17 +32,20 @@ module Graphics
|
|
31
32
|
@frame_count = 0
|
32
33
|
@frozen = false
|
33
34
|
@draw_color = Gosu::Color.rgba(255, 255, 255, 0)
|
34
|
-
# @draw_color.saturation = 0
|
35
|
-
# @draw_color.alpha = 0
|
36
35
|
@containers = Set.new
|
37
36
|
|
38
37
|
def self.update
|
39
|
-
window = RGSS3.window
|
40
|
-
@current = window.record(window.width, window.height) do
|
41
|
-
|
42
|
-
end
|
38
|
+
# window = RGSS3.window
|
39
|
+
# @current = window.record(window.width, window.height) do
|
40
|
+
# @containers.each(&:draw)
|
41
|
+
# end
|
43
42
|
@frame_count += 1
|
44
|
-
|
43
|
+
|
44
|
+
unless @frozen
|
45
|
+
@needs_redraw = true
|
46
|
+
# @latest = @current
|
47
|
+
end
|
48
|
+
|
45
49
|
Fiber.yield
|
46
50
|
end
|
47
51
|
|
@@ -50,6 +54,7 @@ module Graphics
|
|
50
54
|
end
|
51
55
|
|
52
56
|
def self.fadeout(duration)
|
57
|
+
@brightness = 0
|
53
58
|
# Thread.new {
|
54
59
|
# rate = @brightness / duration.to_f
|
55
60
|
# until @brightness <= 0
|
@@ -61,6 +66,7 @@ module Graphics
|
|
61
66
|
end
|
62
67
|
|
63
68
|
def self.fadein(duration)
|
69
|
+
@brightness = 255
|
64
70
|
# Thread.new {
|
65
71
|
# rate = 255 / duration.to_f
|
66
72
|
# until @brightness >= 255
|
@@ -77,15 +83,15 @@ module Graphics
|
|
77
83
|
|
78
84
|
def self.transition(duration = 10, filename = "", vague = 40)
|
79
85
|
@frozen = false
|
80
|
-
|
86
|
+
@brightness = 255
|
81
87
|
end
|
82
88
|
|
83
89
|
def self.snap_to_bitmap
|
84
|
-
Bitmap.
|
90
|
+
Bitmap.new(width, height)
|
85
91
|
end
|
86
92
|
|
87
93
|
def self.frame_reset
|
88
|
-
|
94
|
+
Fiber.yield
|
89
95
|
end
|
90
96
|
|
91
97
|
def self.width
|
@@ -97,11 +103,10 @@ module Graphics
|
|
97
103
|
end
|
98
104
|
|
99
105
|
def self.resize_screen(w, h)
|
100
|
-
reform_window(w, h, fullscreen?, RGSS3.update_interval)
|
106
|
+
reform_window(w, h, RGSS3.window.fullscreen?, RGSS3.update_interval)
|
101
107
|
end
|
102
108
|
|
103
109
|
def self.play_movie(filename)
|
104
|
-
# LIKELY TO REMAIN UNINTEGRATED
|
105
110
|
end
|
106
111
|
|
107
112
|
def self.add_container(container)
|
@@ -112,13 +117,10 @@ module Graphics
|
|
112
117
|
@containers.delete(container)
|
113
118
|
end
|
114
119
|
|
115
|
-
def self.fullscreen?
|
116
|
-
RGSS3.window.fullscreen?
|
117
|
-
end
|
118
|
-
|
119
120
|
def self.draw
|
120
|
-
|
121
|
-
|
121
|
+
@needs_redraw = false
|
122
|
+
@containers.each(&:draw)
|
123
|
+
if @brightness < 255
|
122
124
|
c = @draw_color
|
123
125
|
RGSS3.window.draw_quad(0, 0, c, 0, height, c, width, 0, c, width, height, c, 1)
|
124
126
|
end
|
@@ -130,8 +132,8 @@ module Graphics
|
|
130
132
|
# end
|
131
133
|
|
132
134
|
def self.reform_window(w, h, f, update_interval)
|
133
|
-
|
134
|
-
|
135
|
-
|
135
|
+
Graphics.gosu_window.close
|
136
|
+
Graphics.gosu_window = GosuGame.new(w, h, f, update_interval)
|
137
|
+
Graphics.gosu_window.show
|
136
138
|
end
|
137
139
|
end
|
data/lib/rgss3/input.rb
CHANGED
data/lib/rgss3/plane.rb
CHANGED
@@ -3,7 +3,7 @@ require_relative 'sprite_container'
|
|
3
3
|
class Plane
|
4
4
|
include RGSS3::SpriteContainer
|
5
5
|
def draw
|
6
|
-
return if !@visible || @opacity == 0 || @bitmap
|
6
|
+
return if !@visible || @opacity == 0 || @bitmap.nil? && @bitmap.disposed?
|
7
7
|
@bitmap.gosu_image.draw(-@ox, -@oy, @z, 1, 1, 0xff_ffffff, BLEND[@blend_type])
|
8
8
|
end
|
9
9
|
end
|
data/lib/rgss3/sprite.rb
CHANGED
@@ -24,13 +24,9 @@ class Sprite
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def flash(color, duration)
|
27
|
-
@flash_color = color || Color.new(0, 0, 0, 0)
|
28
|
-
@duration = duration
|
29
27
|
end
|
30
28
|
|
31
29
|
def update
|
32
|
-
@duration = [@duration - 1, 0].max
|
33
|
-
@flash_color = nil if @duration == 0
|
34
30
|
end
|
35
31
|
|
36
32
|
def width
|
@@ -51,7 +47,8 @@ class Sprite
|
|
51
47
|
end
|
52
48
|
|
53
49
|
def draw
|
54
|
-
return if !@visible || @opacity == 0 || @bitmap
|
55
|
-
@bitmap.gosu_image.
|
50
|
+
return if !@visible || @opacity == 0 || @bitmap.nil? || @bitmap.disposed?
|
51
|
+
image = @bitmap.gosu_image.subimage(*@src_rect) || @bitmap.gosu_image
|
52
|
+
image.draw_rot(@x, @y, @z, @angle, ox.fdiv(width), oy.fdiv(height), @zoom_x * (@mirror ? -1 : 1), @zoom_y, 0xffffffff, BLEND[@blend_type])
|
56
53
|
end
|
57
54
|
end
|
data/lib/rgss3/tilemap.rb
CHANGED
@@ -30,6 +30,31 @@ class Tilemap
|
|
30
30
|
@layers[2].viewport = @viewport
|
31
31
|
end
|
32
32
|
|
33
|
+
def map_data=(data)
|
34
|
+
return if @map_data == data
|
35
|
+
@map_data = data
|
36
|
+
refresh
|
37
|
+
end
|
38
|
+
|
39
|
+
def flags=(data)
|
40
|
+
@flags = data
|
41
|
+
refresh
|
42
|
+
end
|
43
|
+
|
44
|
+
def ox=(value)
|
45
|
+
@ox = value
|
46
|
+
for layer in @layers
|
47
|
+
layer.ox = @ox
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def oy=(value)
|
52
|
+
@oy = value
|
53
|
+
for layer in @layers
|
54
|
+
layer.oy = @oy
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
33
58
|
def dispose
|
34
59
|
for layer in @layers
|
35
60
|
layer.bitmap.dispose
|
@@ -50,6 +75,8 @@ class Tilemap
|
|
50
75
|
@layers[0].bitmap = @animated_layer[@anim_count/30]
|
51
76
|
end
|
52
77
|
|
78
|
+
private
|
79
|
+
|
53
80
|
def refresh
|
54
81
|
return if @map_data.nil? || @flags.nil?
|
55
82
|
for layer in @layers
|
@@ -283,29 +310,4 @@ class Tilemap
|
|
283
310
|
end
|
284
311
|
end
|
285
312
|
end
|
286
|
-
|
287
|
-
def map_data=(data)
|
288
|
-
return if @map_data == data
|
289
|
-
@map_data = data
|
290
|
-
refresh
|
291
|
-
end
|
292
|
-
|
293
|
-
def flags=(data)
|
294
|
-
@flags = data
|
295
|
-
refresh
|
296
|
-
end
|
297
|
-
|
298
|
-
def ox=(value)
|
299
|
-
@ox = value
|
300
|
-
for layer in @layers
|
301
|
-
layer.ox = @ox
|
302
|
-
end
|
303
|
-
end
|
304
|
-
|
305
|
-
def oy=(value)
|
306
|
-
@oy = value
|
307
|
-
for layer in @layers
|
308
|
-
layer.oy = @oy
|
309
|
-
end
|
310
|
-
end
|
311
313
|
end
|
data/lib/rgss3/version.rb
CHANGED
data/lib/rgss3/viewport.rb
CHANGED
@@ -22,6 +22,8 @@ class Viewport
|
|
22
22
|
@z = 0
|
23
23
|
@ox = 0
|
24
24
|
@oy = 0
|
25
|
+
@color = Color.new
|
26
|
+
@tone = Tone.new
|
25
27
|
end
|
26
28
|
|
27
29
|
def dispose
|
@@ -33,12 +35,12 @@ class Viewport
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def flash(color, duration)
|
36
|
-
@flash_color = color || Color.new(0, 0, 0, 0)
|
37
|
-
@flash_duration = duration
|
38
|
+
# @flash_color = color || Color.new(0, 0, 0, 0)
|
39
|
+
# @flash_duration = duration
|
38
40
|
end
|
39
41
|
|
40
42
|
def update
|
41
|
-
@flash_duration = [@flash_duration - 1, 0].max
|
42
|
-
@flash_color = nil if @flash_duration == 0
|
43
|
+
# @flash_duration = [@flash_duration - 1, 0].max
|
44
|
+
# @flash_color = nil if @flash_duration == 0
|
43
45
|
end
|
44
46
|
end
|