cyberarm_engine 0.21.0 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/shaders/fragment/g_buffer.glsl +30 -0
- data/assets/shaders/fragment/lighting.glsl +63 -0
- data/assets/shaders/include/light_struct.glsl +11 -0
- data/assets/shaders/vertex/g_buffer.glsl +28 -0
- data/assets/shaders/vertex/lighting.glsl +17 -0
- data/cyberarm_engine.gemspec +0 -1
- data/lib/cyberarm_engine/background_image.rb +1 -1
- data/lib/cyberarm_engine/builtin/intro_state.rb +2 -2
- data/lib/cyberarm_engine/common.rb +17 -2
- data/lib/cyberarm_engine/game_state.rb +4 -0
- data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +1 -0
- data/lib/cyberarm_engine/opengl.rb +13 -1
- data/lib/cyberarm_engine/text.rb +97 -37
- data/lib/cyberarm_engine/ui/border_canvas.rb +2 -2
- data/lib/cyberarm_engine/ui/element.rb +51 -26
- data/lib/cyberarm_engine/ui/elements/container.rb +43 -10
- data/lib/cyberarm_engine/ui/elements/edit_line.rb +59 -25
- data/lib/cyberarm_engine/ui/elements/image.rb +2 -2
- data/lib/cyberarm_engine/ui/elements/list_box.rb +3 -1
- data/lib/cyberarm_engine/ui/elements/progress.rb +5 -0
- data/lib/cyberarm_engine/ui/elements/slider.rb +5 -3
- data/lib/cyberarm_engine/ui/elements/text_block.rb +23 -1
- data/lib/cyberarm_engine/ui/elements/toggle_button.rb +1 -1
- data/lib/cyberarm_engine/ui/gui_state.rb +33 -11
- data/lib/cyberarm_engine/ui/theme.rb +7 -1
- data/lib/cyberarm_engine/version.rb +1 -1
- data/lib/cyberarm_engine/window.rb +5 -6
- data/lib/cyberarm_engine.rb +0 -1
- metadata +8 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c883f949982d339928785f9dbcbe710a7df483ba698ce6e3e95d38d300cf4e03
|
4
|
+
data.tar.gz: 17364dddce1f68533a01b9b69d591792bf4c9495341fc3a9726d77e70fa8246f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd9fdd1da003de3a01e1d56ba1cedff869ef702ed0f070725f8a234f5a4686bd7798bc1239a0f346d0191fd2709e2c91816a461a20bb7c862fdff940ca3968c6
|
7
|
+
data.tar.gz: 7d6afa770c285bd0c841607eda82d1bc36f1b70b15f5c6864db837822855f54243d5a44c64395ae6bf161c74d424ac9a529b5241161c520f481844df06ef1b5d
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# version 330 core
|
2
|
+
|
3
|
+
layout(location = 0) out vec3 fragPosition;
|
4
|
+
layout (location = 1) out vec4 fragColor;
|
5
|
+
layout (location = 2) out vec3 fragNormal;
|
6
|
+
layout (location = 3) out vec3 fragUV;
|
7
|
+
|
8
|
+
in vec3 outPosition, outColor, outNormal, outUV, outFragPos, outCameraPos;
|
9
|
+
out vec4 outputFragColor;
|
10
|
+
flat in int outHasTexture;
|
11
|
+
|
12
|
+
uniform sampler2D diffuse_texture;
|
13
|
+
|
14
|
+
void main() {
|
15
|
+
vec3 result;
|
16
|
+
|
17
|
+
if (outHasTexture == 0) {
|
18
|
+
result = outColor;
|
19
|
+
} else {
|
20
|
+
result = texture(diffuse_texture, outUV.xy).xyz + 0.25;
|
21
|
+
}
|
22
|
+
|
23
|
+
fragPosition = outPosition;
|
24
|
+
fragColor = vec4(result, 1.0);
|
25
|
+
fragNormal = outNormal;
|
26
|
+
fragUV = outUV;
|
27
|
+
|
28
|
+
float gamma = 2.2;
|
29
|
+
outputFragColor.rgb = pow(fragColor.rgb, vec3(1.0 / gamma));
|
30
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#version 330 core
|
2
|
+
out vec4 FragColor;
|
3
|
+
|
4
|
+
@include "light_struct"
|
5
|
+
const int DIRECTIONAL = 0;
|
6
|
+
const int POINT = 1;
|
7
|
+
const int SPOT = 2;
|
8
|
+
|
9
|
+
in vec2 outTexCoords;
|
10
|
+
flat in Light outLight[1];
|
11
|
+
|
12
|
+
uniform sampler2D diffuse, position, texcoord, normal, depth;
|
13
|
+
|
14
|
+
vec4 directionalLight(Light light) {
|
15
|
+
vec3 norm = normalize(texture(normal, outTexCoords).rgb);
|
16
|
+
vec3 diffuse_color = texture(diffuse, outTexCoords).rgb;
|
17
|
+
vec3 fragPos = texture(position, outTexCoords).rgb;
|
18
|
+
|
19
|
+
vec3 lightDir = normalize(light.position - fragPos);
|
20
|
+
float diff = max(dot(norm, lightDir), 0);
|
21
|
+
|
22
|
+
vec3 _ambient = light.ambient;
|
23
|
+
vec3 _diffuse = light.diffuse * diff;
|
24
|
+
vec3 _specular = light.specular;
|
25
|
+
|
26
|
+
return vec4(_diffuse + _ambient + _specular, 1.0);
|
27
|
+
}
|
28
|
+
|
29
|
+
vec4 pointLight(Light light) {
|
30
|
+
return vec4(0.25, 0.25, 0.25, 1);
|
31
|
+
}
|
32
|
+
|
33
|
+
vec4 spotLight(Light light) {
|
34
|
+
return vec4(0.5, 0.5, 0.5, 1);
|
35
|
+
}
|
36
|
+
|
37
|
+
vec4 calculateLighting(Light light) {
|
38
|
+
vec4 result;
|
39
|
+
|
40
|
+
// switch(light.type) {
|
41
|
+
// case DIRECTIONAL: {
|
42
|
+
// result = directionalLight(light);
|
43
|
+
// }
|
44
|
+
// case SPOT: {
|
45
|
+
// result = spotLight(light);
|
46
|
+
// }
|
47
|
+
// default: {
|
48
|
+
// result = pointLight(light);
|
49
|
+
// }
|
50
|
+
// }
|
51
|
+
|
52
|
+
if (light.type == DIRECTIONAL) {
|
53
|
+
result = directionalLight(light);
|
54
|
+
} else {
|
55
|
+
result = pointLight(light);
|
56
|
+
}
|
57
|
+
|
58
|
+
return result;
|
59
|
+
}
|
60
|
+
|
61
|
+
void main() {
|
62
|
+
FragColor = texture(diffuse, outTexCoords) * calculateLighting(outLight[0]);
|
63
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# version 330 core
|
2
|
+
|
3
|
+
layout(location = 0) in vec3 inPosition;
|
4
|
+
layout(location = 1) in vec3 inColor;
|
5
|
+
layout(location = 2) in vec3 inNormal;
|
6
|
+
layout(location = 3) in vec3 inUV;
|
7
|
+
|
8
|
+
uniform mat4 projection, view, model;
|
9
|
+
uniform int hasTexture;
|
10
|
+
uniform vec3 cameraPos;
|
11
|
+
|
12
|
+
out vec3 outPosition, outColor, outNormal, outUV;
|
13
|
+
out vec3 outFragPos, outViewPos, outCameraPos;
|
14
|
+
flat out int outHasTexture;
|
15
|
+
|
16
|
+
void main() {
|
17
|
+
// projection * view * model * position
|
18
|
+
outPosition = inPosition;
|
19
|
+
outColor = inColor;
|
20
|
+
outNormal= normalize(transpose(inverse(mat3(model))) * inNormal);
|
21
|
+
outUV = inUV;
|
22
|
+
outHasTexture = hasTexture;
|
23
|
+
outCameraPos = cameraPos;
|
24
|
+
|
25
|
+
outFragPos = vec3(model * vec4(inPosition, 1.0));
|
26
|
+
|
27
|
+
gl_Position = projection * view * model * vec4(inPosition, 1.0);
|
28
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#version 330 core
|
2
|
+
@include "light_struct"
|
3
|
+
|
4
|
+
layout (location = 0) in vec3 inPosition;
|
5
|
+
layout (location = 1) in vec2 inTexCoords;
|
6
|
+
|
7
|
+
uniform sampler2D diffuse, position, texcoord, normal, depth;
|
8
|
+
uniform Light light[1];
|
9
|
+
|
10
|
+
out vec2 outTexCoords;
|
11
|
+
flat out Light outLight[1];
|
12
|
+
|
13
|
+
void main() {
|
14
|
+
gl_Position = vec4(inPosition.x, inPosition.y, inPosition.z, 1.0);
|
15
|
+
outTexCoords = inTexCoords;
|
16
|
+
outLight = light;
|
17
|
+
}
|
data/cyberarm_engine.gemspec
CHANGED
@@ -27,7 +27,6 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = %w[lib assets]
|
29
29
|
|
30
|
-
spec.add_dependency "clipboard", "~> 1.3"
|
31
30
|
spec.add_dependency "excon", "~> 0.88"
|
32
31
|
spec.add_dependency "gosu", "~> 1.1"
|
33
32
|
spec.add_dependency "gosu_more_drawables", "~> 0.3"
|
@@ -7,8 +7,8 @@ module CyberarmEngine
|
|
7
7
|
@title_size = 56
|
8
8
|
@caption_size = 24
|
9
9
|
|
10
|
-
@title = CyberarmEngine::Text.new("", size: @title_size, shadow_color: 0xaa_222222)
|
11
|
-
@caption = CyberarmEngine::Text.new("", size: @caption_size, shadow_color: 0xaa_222222)
|
10
|
+
@title = CyberarmEngine::Text.new("", size: @title_size, shadow_color: 0xaa_222222, static: true)
|
11
|
+
@caption = CyberarmEngine::Text.new("", size: @caption_size, shadow_color: 0xaa_222222, static: true)
|
12
12
|
|
13
13
|
@spacer_width = 256
|
14
14
|
@spacer_height = 6
|
@@ -8,8 +8,11 @@ module CyberarmEngine
|
|
8
8
|
window.current_state
|
9
9
|
end
|
10
10
|
|
11
|
-
def previous_state
|
12
|
-
|
11
|
+
def previous_state(state = nil)
|
12
|
+
raise "Only available for CyberarmEngine::GameState and subclasses" unless is_a?(CyberarmEngine::GameState) || state.is_a?(CyberarmEngine::GameState)
|
13
|
+
|
14
|
+
i = window.states.index(state || self)
|
15
|
+
window.states[i - 1] unless (i - 1).negative?
|
13
16
|
end
|
14
17
|
|
15
18
|
def pop_state
|
@@ -28,6 +31,18 @@ module CyberarmEngine
|
|
28
31
|
window.show_cursor = boolean
|
29
32
|
end
|
30
33
|
|
34
|
+
def find_element_by_tag(container, tag, list = [])
|
35
|
+
return unless container
|
36
|
+
|
37
|
+
container.children.each do |child|
|
38
|
+
list << child if child.style.tag == tag
|
39
|
+
|
40
|
+
find_element_by_tag(child, tag, list) if child.is_a?(CyberarmEngine::Element::Container)
|
41
|
+
end
|
42
|
+
|
43
|
+
list.first
|
44
|
+
end
|
45
|
+
|
31
46
|
def draw_rect(x, y, width, height, color, z = 0, mode = :default)
|
32
47
|
Gosu.draw_rect(x, y, width, height, color, z, mode)
|
33
48
|
end
|
@@ -11,7 +11,19 @@ module CyberarmEngine
|
|
11
11
|
if e != GL_NO_ERROR
|
12
12
|
warn "OpenGL error detected by handler at: #{caller[0]}"
|
13
13
|
warn " #{gluErrorString(e)} (#{e})\n"
|
14
|
-
exit if
|
14
|
+
exit if Window.instance&.exit_on_opengl_error?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def preload_default_shaders
|
19
|
+
shaders = %w[g_buffer lighting]
|
20
|
+
shaders.each do |shader|
|
21
|
+
Shader.new(
|
22
|
+
name: shader,
|
23
|
+
includes_dir: "#{CYBERARM_ENGINE_ROOT_PATH}/assets/shaders/include",
|
24
|
+
vertex: "#{CYBERARM_ENGINE_ROOT_PATH}/assets/shaders/vertex/#{shader}.glsl",
|
25
|
+
fragment: "#{CYBERARM_ENGINE_ROOT_PATH}/assets/shaders/fragment/#{shader}.glsl"
|
26
|
+
)
|
15
27
|
end
|
16
28
|
end
|
17
29
|
end
|
data/lib/cyberarm_engine/text.rb
CHANGED
@@ -22,19 +22,21 @@ module CyberarmEngine
|
|
22
22
|
else
|
23
23
|
@color = Gosu::Color::WHITE
|
24
24
|
end
|
25
|
-
@mode
|
25
|
+
@mode = options[:mode] || :default
|
26
26
|
@alignment = options[:alignment] || nil
|
27
27
|
|
28
28
|
@border = options[:border]
|
29
29
|
@border = true if options[:border].nil?
|
30
30
|
@border_size = options[:border_size] || 1
|
31
31
|
@border_alpha = options[:border_alpha] || 30
|
32
|
-
@border_color = options[:border_color]
|
32
|
+
@border_color = options[:border_color] || Gosu::Color::BLACK
|
33
33
|
|
34
34
|
@shadow = options[:shadow]
|
35
35
|
@shadow_size = options[:shadow_size] || 2
|
36
36
|
@shadow_alpha = options[:shadow_alpha] || 30
|
37
|
-
@shadow_color = options[:shadow_color]
|
37
|
+
@shadow_color = options[:shadow_color] || Gosu::Color::BLACK
|
38
|
+
|
39
|
+
@static = options[:static] || (options[:static].nil? || options[:static] == false ? false : true)
|
38
40
|
|
39
41
|
@textobject = check_cache(@size, @font)
|
40
42
|
|
@@ -84,46 +86,49 @@ module CyberarmEngine
|
|
84
86
|
end
|
85
87
|
|
86
88
|
def text=(string)
|
87
|
-
@
|
89
|
+
invalidate_cache! if @text != string
|
88
90
|
@text = string
|
89
91
|
end
|
90
92
|
|
91
93
|
def factor_x=(n)
|
92
|
-
@
|
94
|
+
invalidate_cache! if @factor_x != n
|
93
95
|
@factor_x = n
|
94
96
|
end
|
95
97
|
|
96
98
|
def factor_y=(n)
|
97
|
-
@
|
99
|
+
invalidate_cache! if @factor_y != n
|
98
100
|
@factor_y = n
|
99
101
|
end
|
100
102
|
|
101
103
|
def color=(color)
|
102
|
-
|
104
|
+
old_color = @color
|
105
|
+
|
103
106
|
if color
|
104
107
|
@color = color.is_a?(Gosu::Color) ? color : Gosu::Color.new(color)
|
105
108
|
else
|
106
109
|
raise "color cannot be nil"
|
107
110
|
end
|
111
|
+
|
112
|
+
invalidate_cache! if old_color != color
|
108
113
|
end
|
109
114
|
|
110
115
|
def border=(boolean)
|
111
|
-
@
|
116
|
+
invalidate_cache! if @border != boolean
|
112
117
|
@border = boolean
|
113
118
|
end
|
114
119
|
|
115
120
|
def border_size=(n)
|
116
|
-
@
|
121
|
+
invalidate_cache! if @border_size != n
|
117
122
|
@border_size = n
|
118
123
|
end
|
119
124
|
|
120
125
|
def border_alpha=(n)
|
121
|
-
@
|
126
|
+
invalidate_cache! if @border_alpha != n
|
122
127
|
@border_alpha = n
|
123
128
|
end
|
124
129
|
|
125
130
|
def border_color=(n)
|
126
|
-
@
|
131
|
+
invalidate_cache! if @border_color != n
|
127
132
|
@border_color = n
|
128
133
|
end
|
129
134
|
|
@@ -132,11 +137,27 @@ module CyberarmEngine
|
|
132
137
|
end
|
133
138
|
|
134
139
|
def text_width(text = @text)
|
135
|
-
|
140
|
+
spacing = 0
|
141
|
+
spacing += @border_size if @border
|
142
|
+
spacing += @shadow_size if @shadow
|
143
|
+
|
144
|
+
if text == @text && @static && @gosu_cached_text_image
|
145
|
+
@gosu_cached_text_image&.width + spacing
|
146
|
+
else
|
147
|
+
textobject.text_width(text) + spacing
|
148
|
+
end
|
136
149
|
end
|
137
150
|
|
138
151
|
def markup_width(text = @text)
|
139
|
-
|
152
|
+
spacing = 0
|
153
|
+
spacing += @border_size if @border
|
154
|
+
spacing += @shadow_size if @shadow
|
155
|
+
|
156
|
+
if text == @text && @static && @gosu_cached_text_image
|
157
|
+
@gosu_cached_text_image&.width + spacing
|
158
|
+
else
|
159
|
+
textobject.markup_width(text) + spacing
|
160
|
+
end
|
140
161
|
end
|
141
162
|
|
142
163
|
def height(text = @text)
|
@@ -148,39 +169,72 @@ module CyberarmEngine
|
|
148
169
|
end
|
149
170
|
|
150
171
|
def draw(method = :draw_markup)
|
151
|
-
if @
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
172
|
+
if @static
|
173
|
+
if @border && !@cached_text_border_image
|
174
|
+
_x = @border_size
|
175
|
+
_y = @border_size
|
176
|
+
_width = method == :draw_markup ? text_width : markup_width
|
177
|
+
img = Gosu::Image.send(:"from_#{method.to_s.split("_").last}", @text, @size, font: @font)
|
178
|
+
|
179
|
+
@cached_text_border_image = Gosu.render((_width + (@border_size * 2)).ceil, (height + (@border_size * 2)).ceil) do
|
180
|
+
img.draw(-_x, 0, @z, @factor_x, @factor_y, @border_color, @mode)
|
181
|
+
img.draw(-_x, -_y, @z, @factor_x, @factor_y, @border_color, @mode)
|
182
|
+
|
183
|
+
img.draw(0, -_y, @z, @factor_x, @factor_y, @border_color, @mode)
|
184
|
+
img.draw(_x, -_y, @z, @factor_x, @factor_y, @border_color, @mode)
|
185
|
+
|
186
|
+
img.draw(_x, 0, @z, @factor_x, @factor_y, @border_color, @mode)
|
187
|
+
img.draw(_x, _y, @z, @factor_x, @factor_y, @border_color, @mode)
|
188
|
+
|
189
|
+
img.draw(0, _y, @z, @factor_x, @factor_y, @border_color, @mode)
|
190
|
+
img.draw(-_x, _y, @z, @factor_x, @factor_y, @border_color, @mode)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
@cached_text_shadow_image ||= Gosu::Image.send(:"from_#{method.to_s.split("_").last}", @text, @size, font: @font) if @shadow
|
156
195
|
|
157
|
-
|
158
|
-
_y = @border_size
|
159
|
-
_width = method == :draw_markup ? text_width : markup_width
|
196
|
+
@gosu_cached_text_image ||= Gosu::Image.send(:"from_#{method.to_s.split("_").last}", @text, @size, font: @font)
|
160
197
|
|
161
|
-
@
|
162
|
-
@textobject.send(method, @text, _x - @border_size, _y, @z, @factor_x, @factor_y, white, @mode)
|
163
|
-
@textobject.send(method, @text, _x - @border_size, _y - @border_size, @z, @factor_x, @factor_y, white, @mode)
|
198
|
+
@cached_text_border_image.draw(@x, @y, @z, @factor_x, @factor_y, @border_color, @mode) if @border
|
164
199
|
|
165
|
-
|
166
|
-
@textobject.send(method, @text, _x + @border_size, _y - @border_size, @z, @factor_x, @factor_y, white, @mode)
|
200
|
+
@cached_text_shadow_image.draw(@x + @shadow_size, @y + @shadow_size, @z, @factor_x, @factor_y, @shadow_color, @mode) if @shadow
|
167
201
|
|
168
|
-
|
169
|
-
|
202
|
+
@gosu_cached_text_image.draw(@x, @y, @z, @factor_x, @factor_y, @color, @mode)
|
203
|
+
else
|
204
|
+
if @border && !ARGV.join.include?("--no-border")
|
205
|
+
border_alpha = @color.alpha <= 30 ? @color.alpha : @border_alpha
|
206
|
+
border_color = @border_color || Gosu::Color.rgba(@color.red, @color.green, @color.blue,
|
207
|
+
border_alpha)
|
208
|
+
white = Gosu::Color::WHITE
|
209
|
+
|
210
|
+
_x = @border_size
|
211
|
+
_y = @border_size
|
212
|
+
_width = method == :draw_markup ? text_width : markup_width
|
213
|
+
|
214
|
+
@cached_text_border_image ||= Gosu.render((_width + (border_size * 2)).ceil, (height + (@border_size * 2)).ceil) do
|
215
|
+
@textobject.send(method, @text, _x - @border_size, _y, @z, @factor_x, @factor_y, white, @mode)
|
216
|
+
@textobject.send(method, @text, _x - @border_size, _y - @border_size, @z, @factor_x, @factor_y, white, @mode)
|
217
|
+
|
218
|
+
@textobject.send(method, @text, _x, _y - @border_size, @z, @factor_x, @factor_y, white, @mode)
|
219
|
+
@textobject.send(method, @text, _x + @border_size, _y - @border_size, @z, @factor_x, @factor_y, white, @mode)
|
220
|
+
|
221
|
+
@textobject.send(method, @text, _x, _y + @border_size, @z, @factor_x, @factor_y, white, @mode)
|
222
|
+
@textobject.send(method, @text, _x - @border_size, _y + @border_size, @z, @factor_x, @factor_y, white, @mode)
|
223
|
+
|
224
|
+
@textobject.send(method, @text, _x + @border_size, _y, @z, @factor_x, @factor_y, white, @mode)
|
225
|
+
@textobject.send(method, @text, _x + @border_size, _y + @border_size, @z, @factor_x, @factor_y, white, @mode)
|
226
|
+
end
|
170
227
|
|
171
|
-
@
|
172
|
-
@textobject.send(method, @text, _x + @border_size, _y + @border_size, @z, @factor_x, @factor_y, white, @mode)
|
228
|
+
@cached_text_border_image.draw(@x - @border_size, @y - @border_size, @z, @factor_x, @factor_y, border_color)
|
173
229
|
end
|
174
230
|
|
175
|
-
|
176
|
-
|
231
|
+
if @shadow
|
232
|
+
shadow_color = @shadow_color || Gosu::Color.rgba(@color.red, @color.green, @color.blue, @shadow_alpha)
|
233
|
+
@textobject.send(method, @text, @x + @shadow_size, @y + @shadow_size, @z, @factor_x, @factor_y, shadow_color, @mode)
|
234
|
+
end
|
177
235
|
|
178
|
-
|
179
|
-
shadow_color = @shadow_color || Gosu::Color.rgba(@color.red, @color.green, @color.blue, @shadow_alpha)
|
180
|
-
@textobject.send(method, @text, @x + @shadow_size, @y + @shadow_size, @z, @factor_x, @factor_y, shadow_color, @mode)
|
236
|
+
@textobject.send(method, @text, @x, @y, @z, @factor_x, @factor_y, @color, @mode)
|
181
237
|
end
|
182
|
-
|
183
|
-
@textobject.send(method, @text, @x, @y, @z, @factor_x, @factor_y, @color, @mode)
|
184
238
|
end
|
185
239
|
|
186
240
|
def alpha=(n)
|
@@ -193,5 +247,11 @@ module CyberarmEngine
|
|
193
247
|
|
194
248
|
def update
|
195
249
|
end
|
250
|
+
|
251
|
+
def invalidate_cache!
|
252
|
+
@cached_text_border_image = nil
|
253
|
+
@cached_text_shadow_image = nil
|
254
|
+
@gosu_cached_text_image = nil
|
255
|
+
end
|
196
256
|
end
|
197
257
|
end
|
@@ -62,11 +62,11 @@ module CyberarmEngine
|
|
62
62
|
|
63
63
|
def update
|
64
64
|
# TOP
|
65
|
-
@top.x = @element.x
|
65
|
+
@top.x = @element.x + @element.style.border_thickness_left
|
66
66
|
@top.y = @element.y
|
67
67
|
@top.z = @element.z
|
68
68
|
|
69
|
-
@top.width = @element.width
|
69
|
+
@top.width = @element.width - @element.style.border_thickness_left
|
70
70
|
@top.height = @element.style.border_thickness_top
|
71
71
|
|
72
72
|
# RIGHT
|