rgss3 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -2
- data/lib/rgss3/bitmap.rb +24 -8
- data/lib/rgss3/container.rb +23 -6
- data/lib/rgss3/game_window.rb +3 -3
- data/lib/rgss3/graphics.rb +130 -139
- data/lib/rgss3/kernel_ext.rb +2 -1
- data/lib/rgss3/plane.rb +3 -4
- data/lib/rgss3/sprite.rb +32 -7
- data/lib/rgss3/version.rb +1 -1
- data/lib/rgss3/viewport.rb +46 -46
- data/lib/rgss3/window.rb +110 -27
- metadata +1 -2
- data/lib/rgss3/sprite_container.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 270c6dc805cba951ea8ba997927604c1f3750677
|
4
|
+
data.tar.gz: 94c70bf2f2f7cc6006fe1190d73ea5410826065f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a15e21a2a1916cfa00d67b72a6b21c69103d2d927519e5bbd9dc5389891860a26cb614cd177dd875ebe74dcd73aaf52d2fbe95213b3df838b90c593b7d45e461
|
7
|
+
data.tar.gz: 34b9e551db4ff2a53f01b19afeed541648fc3b2e8f7f56363adf449a911bfda20fb7419b561b2bdf2822452b4c02412403dc099fed84d8915d3d3f9f774c811f
|
data/README.md
CHANGED
@@ -30,8 +30,7 @@ end
|
|
30
30
|
Or with more options:
|
31
31
|
```ruby
|
32
32
|
require 'rgss3'
|
33
|
-
RGSS3
|
34
|
-
RGSS3.run(width: 544, height: 416, frame_rate: 60, title: 'Game', rtp: 'path/to/rtp') do
|
33
|
+
RGSS3.run(width: 544, height: 416, frame_rate: 60, fullscreen: false, title: 'Game', rtp: 'path/to/rtp') do
|
35
34
|
# TODO: Add your code here
|
36
35
|
# loop { Graphics.update }
|
37
36
|
end
|
data/lib/rgss3/bitmap.rb
CHANGED
@@ -52,17 +52,33 @@ class Bitmap
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def blt(x, y, src_bitmap, src_rect, opacity = 255)
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
return if opacity == 0
|
56
|
+
src = src_bitmap.gosu_image.subimage(*src_rect)
|
57
|
+
if opacity != 255
|
58
|
+
src = Bitmap.gosu_to_rmagick(src)
|
59
|
+
ratio = opacity / 255.0
|
60
|
+
Bitmap.pixel_map!(src) do |pixel|
|
61
|
+
pixel.opacity *= ratio
|
62
|
+
pixel
|
63
|
+
end
|
64
|
+
end
|
65
|
+
gosu_image.insert(src, x, y)
|
58
66
|
set_dirty
|
59
67
|
end
|
60
68
|
|
61
69
|
def stretch_blt(dest_rect, src_bitmap, src_rect, opacity = 255)
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
70
|
+
return if opacity == 0
|
71
|
+
src = src_bitmap.gosu_image.subimage(*src_rect)
|
72
|
+
src = Bitmap.gosu_to_rmagick(gosu_to_rmagick)
|
73
|
+
src.resize!(dest_rect.width, dest_rect.height)
|
74
|
+
if opacity != 255
|
75
|
+
ratio = opacity / 255.0
|
76
|
+
Bitmap.pixel_map!(src) do |pixel|
|
77
|
+
pixel.opacity *= ratio
|
78
|
+
pixel
|
79
|
+
end
|
80
|
+
end
|
81
|
+
gosu_image.insert(src, dest_rect.x, dest_rect.y)
|
66
82
|
set_dirty
|
67
83
|
end
|
68
84
|
|
@@ -112,7 +128,7 @@ class Bitmap
|
|
112
128
|
end
|
113
129
|
|
114
130
|
def clear
|
115
|
-
self.rmagick_image = Magick::Image.new(width, height)
|
131
|
+
self.rmagick_image = Magick::Image.new(width, height) { self.background_color = 'none' }
|
116
132
|
end
|
117
133
|
|
118
134
|
def clear_rect(*args)
|
data/lib/rgss3/container.rb
CHANGED
@@ -1,20 +1,29 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module RGSS3
|
3
|
-
# common methods for Plane, Sprite
|
3
|
+
# common methods for Plane, Sprite
|
4
4
|
module Container
|
5
5
|
|
6
|
-
attr_reader :opacity
|
7
6
|
attr_accessor :z, :ox, :oy
|
8
7
|
attr_accessor :viewport, :visible
|
9
8
|
attr_accessor :tone
|
9
|
+
attr_accessor :zoom_x, :zoom_y
|
10
|
+
attr_accessor :bitmap
|
11
|
+
attr_accessor :color, :blend_type
|
12
|
+
attr_reader :opacity
|
10
13
|
|
11
|
-
|
14
|
+
BLEND = {0 => :default, 1 => :additive, 2 => :subtractive}
|
15
|
+
|
16
|
+
def initialize(viewport = nil)
|
12
17
|
@visible = true
|
13
18
|
@z = 0
|
14
19
|
@ox = 0
|
15
20
|
@oy = 0
|
16
|
-
@opacity = 255
|
17
21
|
@tone = Tone.new
|
22
|
+
@viewport = viewport
|
23
|
+
@zoom_x = @zoom_y = 1.0
|
24
|
+
@blend_type = 0
|
25
|
+
@color = Color.new
|
26
|
+
@opacity = 255
|
18
27
|
Graphics.add_container(self)
|
19
28
|
end
|
20
29
|
|
@@ -26,6 +35,7 @@ module RGSS3
|
|
26
35
|
|
27
36
|
def dispose
|
28
37
|
@disposed = true
|
38
|
+
@bitmap = nil
|
29
39
|
Graphics.remove_container(self)
|
30
40
|
end
|
31
41
|
|
@@ -33,11 +43,18 @@ module RGSS3
|
|
33
43
|
@disposed
|
34
44
|
end
|
35
45
|
|
36
|
-
def opacity=(
|
37
|
-
@opacity = [[
|
46
|
+
def opacity=(value)
|
47
|
+
@opacity = [[value, 0].max, 255].min
|
38
48
|
end
|
39
49
|
|
50
|
+
# overwrite
|
40
51
|
def draw
|
41
52
|
end
|
53
|
+
|
54
|
+
# this method is used internally by Graphics
|
55
|
+
def do_draw
|
56
|
+
return if !@visible || @opacity == 0 || @bitmap.nil? || @bitmap.disposed?
|
57
|
+
draw
|
58
|
+
end
|
42
59
|
end
|
43
60
|
end
|
data/lib/rgss3/game_window.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
require 'fiber'
|
3
3
|
module RGSS3
|
4
4
|
class GameWindow < Gosu::Window
|
5
|
-
attr_reader :frame_rate
|
6
|
-
def initialize(width: 544, height: 416,
|
5
|
+
attr_reader :frame_rate
|
6
|
+
def initialize(width: 544, height: 416, fullscreen: false, frame_rate: 60, title: "Game", rtp: nil)
|
7
7
|
@frame_rate = frame_rate
|
8
8
|
RTP.path = rtp if rtp
|
9
|
-
super(width, height,
|
9
|
+
super(width, height, fullscreen, 1000.0 / frame_rate)
|
10
10
|
self.caption = title
|
11
11
|
end
|
12
12
|
|
data/lib/rgss3/graphics.rb
CHANGED
@@ -1,139 +1,130 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'set'
|
3
|
-
module Graphics
|
4
|
-
|
5
|
-
class << self
|
6
|
-
|
7
|
-
|
8
|
-
attr_reader :
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
def self.
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
# reform_window(width, height, bool, gosu_window.update_interval)
|
132
|
-
# end
|
133
|
-
|
134
|
-
def self.reform_window(w, h, f, update_interval)
|
135
|
-
Graphics.gosu_window.close
|
136
|
-
Graphics.gosu_window = GosuGame.new(w, h, f, update_interval)
|
137
|
-
Graphics.gosu_window.show
|
138
|
-
end
|
139
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'set'
|
3
|
+
module Graphics
|
4
|
+
|
5
|
+
class << self
|
6
|
+
attr_accessor :frame_count
|
7
|
+
attr_reader :brightness, :frame_rate
|
8
|
+
attr_reader :needs_redraw
|
9
|
+
end
|
10
|
+
|
11
|
+
@brightness = 255
|
12
|
+
@frame_count = 0
|
13
|
+
@frozen = false
|
14
|
+
@draw_color = Gosu::Color.rgba(0, 0, 0, 0)
|
15
|
+
@containers = Set.new
|
16
|
+
|
17
|
+
def self.update
|
18
|
+
@needs_redraw = true unless @frozen
|
19
|
+
@frame_count += 1
|
20
|
+
Fiber.yield
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.wait(duration)
|
24
|
+
@needs_redraw = true unless @frozen
|
25
|
+
# no need to redraw during wait
|
26
|
+
duration.times do
|
27
|
+
@frame_count += 1
|
28
|
+
Fiber.yield
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.fadeout(duration)
|
33
|
+
@brightness = 0
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.fadein(duration)
|
37
|
+
@brightness = 255
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.freeze
|
41
|
+
@frozen = true
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.transition(duration = 10, filename = "", vague = 40)
|
45
|
+
@frozen = false
|
46
|
+
@brightness = 255
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.snap_to_bitmap
|
50
|
+
Bitmap.new(width, height)
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.frame_reset
|
54
|
+
Fiber.yield
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.width
|
58
|
+
RGSS3.window.width
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.height
|
62
|
+
RGSS3.window.height
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.resize_screen(width, height)
|
66
|
+
reform_window(width: width, height: height)
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.gosu_window
|
70
|
+
RGSS3.window
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.frame_rate
|
74
|
+
RGSS3.window.frame_rate
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.brightness=(value)
|
78
|
+
@brightness = [[255, value].min, 0].max
|
79
|
+
@draw_color.alpha = 255 - @brightness
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.frame_rate=(value)
|
83
|
+
@frame_rate = [[120, value].min, 10].max
|
84
|
+
reform_window(
|
85
|
+
width: width,
|
86
|
+
height: height,
|
87
|
+
fullscreen: RGSS3.window.fullscreen?,
|
88
|
+
frame_rate: @frame_rate,
|
89
|
+
title: RGSS3.window.caption)
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.play_movie(filename)
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.add_container(container)
|
96
|
+
@containers.add(container)
|
97
|
+
end
|
98
|
+
|
99
|
+
def self.remove_container(container)
|
100
|
+
@containers.delete(container)
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.draw
|
104
|
+
@needs_redraw = false
|
105
|
+
@containers.each(&:do_draw)
|
106
|
+
if @brightness < 255
|
107
|
+
c = @draw_color
|
108
|
+
RGSS3.window.draw_quad(0, 0, c, 0, height, c, width, 0, c, width, height, c, 1)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.reform_window(
|
113
|
+
width: RGSS3.window.width,
|
114
|
+
height: RGSS3.window.height,
|
115
|
+
full_screen: RGSS3.window.fullscreen?,
|
116
|
+
frame_rate: @frame_rate,
|
117
|
+
title: RGSS3.window.caption,
|
118
|
+
rtp: nil)
|
119
|
+
|
120
|
+
RGSS3.window.close
|
121
|
+
RGSS3.window = RGSS3::GameWindow.new(
|
122
|
+
width: width,
|
123
|
+
height: height,
|
124
|
+
fullscreen: fullscreen,
|
125
|
+
frame_rate: frame_rate,
|
126
|
+
title: title,
|
127
|
+
rtp: rtp)
|
128
|
+
RGSS3.window.show
|
129
|
+
end
|
130
|
+
end
|
data/lib/rgss3/kernel_ext.rb
CHANGED
data/lib/rgss3/plane.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative '
|
2
|
+
require_relative 'container'
|
3
3
|
class Plane
|
4
|
-
include RGSS3::
|
4
|
+
include RGSS3::Container
|
5
5
|
def draw
|
6
|
-
|
7
|
-
@bitmap.gosu_image.draw(-@ox, -@oy, @z, 1, 1, 0xff_ffffff, BLEND[@blend_type])
|
6
|
+
bitmap.gosu_image.draw(-@ox, -@oy, @z, 1, 1, 0xff_ffffff, BLEND[@blend_type])
|
8
7
|
end
|
9
8
|
end
|
data/lib/rgss3/sprite.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative '
|
2
|
+
require_relative 'container'
|
3
3
|
class Sprite
|
4
4
|
|
5
|
-
include RGSS3::
|
5
|
+
include RGSS3::Container
|
6
6
|
|
7
7
|
attr_reader :bush_opacity
|
8
8
|
attr_accessor :x, :y
|
@@ -19,8 +19,8 @@ class Sprite
|
|
19
19
|
@bush_depth = 0
|
20
20
|
@bush_opacity = 128
|
21
21
|
@wave_speed = 360
|
22
|
-
@src_rect = Rect.new
|
23
|
-
super
|
22
|
+
@src_rect = Rect.new
|
23
|
+
super
|
24
24
|
end
|
25
25
|
|
26
26
|
def flash(color, duration)
|
@@ -47,8 +47,33 @@ class Sprite
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def draw
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
if viewport
|
51
|
+
x = @x + viewport.rect.x
|
52
|
+
y = @y + viewport.rect.y
|
53
|
+
w = [width - viewport.ox, viewport.rect.x + viewport.rect.width - x].min
|
54
|
+
h = [height - viewport.oy, viewport.rect.y + viewport.rect.height - y].min
|
55
|
+
return if w <= 0 || h <= 0
|
56
|
+
z = @z + (viewport.z << 12)
|
57
|
+
src_x = @src_rect.x + viewport.ox
|
58
|
+
src_y = @src_rect.y + viewport.oy
|
59
|
+
else
|
60
|
+
x = @x
|
61
|
+
y = @y
|
62
|
+
z = @z
|
63
|
+
src_x, src_y, w, h = *@src_rect
|
64
|
+
end
|
65
|
+
image = bitmap.gosu_image.subimage(src_x, src_y, w, h)
|
66
|
+
return unless image
|
67
|
+
image.draw_rot(
|
68
|
+
x,
|
69
|
+
y,
|
70
|
+
z,
|
71
|
+
@angle,
|
72
|
+
ox.fdiv(width),
|
73
|
+
oy.fdiv(height),
|
74
|
+
@zoom_x * (@mirror ? -1 : 1),
|
75
|
+
@zoom_y,
|
76
|
+
0xff_ffffff,
|
77
|
+
BLEND[@blend_type])
|
53
78
|
end
|
54
79
|
end
|
data/lib/rgss3/version.rb
CHANGED
data/lib/rgss3/viewport.rb
CHANGED
@@ -1,46 +1,46 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class Viewport
|
3
|
-
|
4
|
-
attr_accessor :color, :tone, :rect, :visible, :z, :ox, :oy
|
5
|
-
|
6
|
-
def initialize(*args)
|
7
|
-
case args.size
|
8
|
-
when 0
|
9
|
-
@rect = Rect.new(0, 0, Graphics.width, Graphics.height)
|
10
|
-
when 1
|
11
|
-
if args[0].is_a?(Rect)
|
12
|
-
@rect = args[0]
|
13
|
-
else
|
14
|
-
raise ArgumentError
|
15
|
-
end
|
16
|
-
when 4
|
17
|
-
@rect = Rect.new(*args)
|
18
|
-
else
|
19
|
-
raise ArgumentError
|
20
|
-
end
|
21
|
-
@visible = true
|
22
|
-
@z = 0
|
23
|
-
@ox = 0
|
24
|
-
@oy = 0
|
25
|
-
@color = Color.new
|
26
|
-
@tone = Tone.new
|
27
|
-
end
|
28
|
-
|
29
|
-
def dispose
|
30
|
-
@disposed = true
|
31
|
-
end
|
32
|
-
|
33
|
-
def disposed?
|
34
|
-
@disposed
|
35
|
-
end
|
36
|
-
|
37
|
-
def flash(color, duration)
|
38
|
-
# @flash_color = color || Color.new(0, 0, 0, 0)
|
39
|
-
# @flash_duration = duration
|
40
|
-
end
|
41
|
-
|
42
|
-
def update
|
43
|
-
# @flash_duration = [@flash_duration - 1, 0].max
|
44
|
-
# @flash_color = nil if @flash_duration == 0
|
45
|
-
end
|
46
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Viewport
|
3
|
+
|
4
|
+
attr_accessor :color, :tone, :rect, :visible, :z, :ox, :oy
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
case args.size
|
8
|
+
when 0
|
9
|
+
@rect = Rect.new(0, 0, Graphics.width, Graphics.height)
|
10
|
+
when 1
|
11
|
+
if args[0].is_a?(Rect)
|
12
|
+
@rect = args[0]
|
13
|
+
else
|
14
|
+
raise ArgumentError
|
15
|
+
end
|
16
|
+
when 4
|
17
|
+
@rect = Rect.new(*args)
|
18
|
+
else
|
19
|
+
raise ArgumentError
|
20
|
+
end
|
21
|
+
@visible = true
|
22
|
+
@z = 0
|
23
|
+
@ox = 0
|
24
|
+
@oy = 0
|
25
|
+
@color = Color.new
|
26
|
+
@tone = Tone.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def dispose
|
30
|
+
@disposed = true
|
31
|
+
end
|
32
|
+
|
33
|
+
def disposed?
|
34
|
+
@disposed
|
35
|
+
end
|
36
|
+
|
37
|
+
def flash(color, duration)
|
38
|
+
# @flash_color = color || Color.new(0, 0, 0, 0)
|
39
|
+
# @flash_duration = duration
|
40
|
+
end
|
41
|
+
|
42
|
+
def update
|
43
|
+
# @flash_duration = [@flash_duration - 1, 0].max
|
44
|
+
# @flash_color = nil if @flash_duration == 0
|
45
|
+
end
|
46
|
+
end
|
data/lib/rgss3/window.rb
CHANGED
@@ -1,58 +1,71 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require_relative 'container'
|
3
2
|
class Window
|
4
3
|
|
5
|
-
|
6
|
-
|
4
|
+
attr_reader :z, :ox, :oy
|
5
|
+
attr_reader :viewport
|
6
|
+
attr_accessor :visible
|
7
|
+
attr_accessor :tone
|
7
8
|
attr_accessor :windowskin
|
8
|
-
|
9
|
+
attr_reader :contents
|
9
10
|
attr_accessor :cursor_rect
|
10
11
|
attr_accessor :active
|
11
|
-
|
12
|
+
attr_reader :visible
|
12
13
|
attr_accessor :arrows_visible
|
13
14
|
attr_accessor :pause
|
14
|
-
|
15
|
-
|
15
|
+
attr_reader :x
|
16
|
+
attr_reader :y
|
16
17
|
attr_accessor :width
|
17
18
|
attr_accessor :height
|
18
|
-
|
19
|
+
attr_reader :padding
|
19
20
|
attr_accessor :padding_bottom
|
20
|
-
|
21
|
-
|
22
|
-
attr_accessor :contents_opacity
|
21
|
+
attr_reader :back_opacity
|
22
|
+
attr_reader :contents_opacity
|
23
23
|
attr_reader :openness
|
24
|
+
attr_reader :opacity
|
24
25
|
|
25
26
|
def initialize(*args)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
@y = 0
|
30
|
-
@width = 0
|
31
|
-
@height = 0
|
32
|
-
when 4
|
33
|
-
@x, @y, @width, @height = args
|
34
|
-
end
|
35
|
-
@contents = Bitmap.new(1, 1)
|
27
|
+
@contents_sprite = Sprite.new
|
28
|
+
self.contents = Bitmap.new(1, 1)
|
29
|
+
@opacity = 255
|
36
30
|
@cursor_rect = Rect.new
|
37
|
-
@padding =
|
31
|
+
@padding = 8
|
38
32
|
@padding_bottom = 8
|
39
33
|
@pause = false
|
40
34
|
@arrows_visible = true
|
41
35
|
@active = true
|
42
36
|
@openness = 255
|
43
|
-
|
37
|
+
@visible = true
|
38
|
+
@z = 100
|
39
|
+
@ox = 0
|
40
|
+
@oy = 0
|
41
|
+
@tone = Tone.new
|
42
|
+
@back_opacity = 192
|
43
|
+
@contents_opacity = 255
|
44
|
+
case args.size
|
45
|
+
when 0
|
46
|
+
self.x = 0
|
47
|
+
self.y = 0
|
48
|
+
@width = 0
|
49
|
+
@height = 0
|
50
|
+
when 4
|
51
|
+
self.x, self.y, @width, @height = args
|
52
|
+
end
|
44
53
|
end
|
45
54
|
|
46
55
|
def update
|
47
56
|
end
|
48
57
|
|
49
58
|
def move(x, y, width, height)
|
50
|
-
|
51
|
-
|
59
|
+
self.x = x
|
60
|
+
self.y = y
|
52
61
|
@width = width
|
53
62
|
@height = height
|
54
63
|
end
|
55
64
|
|
65
|
+
def padding=(value)
|
66
|
+
@padding = @padding_bottom = value
|
67
|
+
end
|
68
|
+
|
56
69
|
def open?
|
57
70
|
@openness == 255
|
58
71
|
end
|
@@ -63,9 +76,79 @@ class Window
|
|
63
76
|
|
64
77
|
def openness=(value)
|
65
78
|
@openness = [[value, 0].max, 255].min
|
79
|
+
update_contents_opacity
|
80
|
+
end
|
81
|
+
|
82
|
+
def opacity=(value)
|
83
|
+
@opacity = [[value, 0].max, 255].min
|
84
|
+
update_contents_opacity
|
85
|
+
end
|
86
|
+
|
87
|
+
def x=(value)
|
88
|
+
@contents_sprite.x = @padding + value
|
89
|
+
@x = value
|
90
|
+
end
|
91
|
+
|
92
|
+
def y=(value)
|
93
|
+
@contents_sprite.y = @padding + value
|
94
|
+
@y = value
|
95
|
+
end
|
96
|
+
|
97
|
+
def z=(value)
|
98
|
+
each_internal_sprite { |s| s.z = value }
|
99
|
+
@z = value
|
100
|
+
end
|
101
|
+
|
102
|
+
def ox=(value)
|
103
|
+
each_internal_sprite { |s| s.ox = value }
|
104
|
+
@ox = value
|
105
|
+
end
|
106
|
+
|
107
|
+
def oy=(value)
|
108
|
+
each_internal_sprite { |s| s.oy = value }
|
109
|
+
@oy = value
|
110
|
+
end
|
111
|
+
|
112
|
+
def visible=(value)
|
113
|
+
each_internal_sprite { |s| s.visible = value }
|
114
|
+
@visible = value
|
115
|
+
end
|
116
|
+
|
117
|
+
def back_opacity=(value)
|
118
|
+
@back_opacity = [[value, 0].max, 255].min
|
119
|
+
end
|
120
|
+
|
121
|
+
def contents_opacity=(value)
|
122
|
+
@contents_opacity = [[value, 0].max, 255].min
|
123
|
+
update_contents_opacity
|
124
|
+
end
|
125
|
+
|
126
|
+
def viewport=(value)
|
127
|
+
each_internal_sprite { |s| s.viewport = value }
|
128
|
+
@viewport = value
|
129
|
+
end
|
130
|
+
|
131
|
+
def contents=(value)
|
132
|
+
@contents = value
|
133
|
+
@contents_sprite.bitmap = value
|
134
|
+
end
|
135
|
+
|
136
|
+
def dispose
|
137
|
+
each_internal_sprite(&:dispose)
|
138
|
+
@disposed = true
|
139
|
+
end
|
140
|
+
|
141
|
+
def disposed?
|
142
|
+
@disposed
|
143
|
+
end
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
def update_contents_opacity
|
148
|
+
@contents_sprite.opacity = @contents_opacity * @opacity * @openness / 255 / 255
|
66
149
|
end
|
67
150
|
|
68
|
-
def
|
69
|
-
|
151
|
+
def each_internal_sprite
|
152
|
+
yield @contents_sprite
|
70
153
|
end
|
71
154
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgss3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- taroxd
|
@@ -98,7 +98,6 @@ files:
|
|
98
98
|
- lib/rgss3/rpg.rb
|
99
99
|
- lib/rgss3/rtp.rb
|
100
100
|
- lib/rgss3/sprite.rb
|
101
|
-
- lib/rgss3/sprite_container.rb
|
102
101
|
- lib/rgss3/table.rb
|
103
102
|
- lib/rgss3/tilemap.rb
|
104
103
|
- lib/rgss3/tone.rb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require_relative 'container'
|
3
|
-
module RGSS3
|
4
|
-
# common methods for Plane and Sprite
|
5
|
-
module SpriteContainer
|
6
|
-
include Container
|
7
|
-
|
8
|
-
attr_accessor :zoom_x, :zoom_y
|
9
|
-
attr_accessor :bitmap
|
10
|
-
attr_accessor :color, :blend_type
|
11
|
-
|
12
|
-
BLEND = {0 => :default, 1 => :additive, 2 => :subtractive}
|
13
|
-
|
14
|
-
def initialize(viewport = nil)
|
15
|
-
@viewport = viewport
|
16
|
-
@zoom_x = @zoom_y = 1.0
|
17
|
-
@blend_type = 0
|
18
|
-
@color = Color.new
|
19
|
-
super()
|
20
|
-
end
|
21
|
-
|
22
|
-
def dispose
|
23
|
-
@bitmap = nil
|
24
|
-
super
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|