cyberarm_engine 0.16.0 → 0.17.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/cyberarm_engine.gemspec +2 -2
- data/lib/cyberarm_engine/ui/element.rb +16 -0
- data/lib/cyberarm_engine/ui/elements/container.rb +42 -12
- data/lib/cyberarm_engine/ui/elements/edit_line.rb +6 -0
- data/lib/cyberarm_engine/ui/gui_state.rb +4 -1
- data/lib/cyberarm_engine/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f56e0894e554ea377926ea847706be912da3b8728e4f599270ea2e031ef2dece
|
4
|
+
data.tar.gz: 7e04146fad95f4bb551a131064cdb35e6c6ea2176568570198cf12d44055512a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4be426b99a485bdfb11c5a405c298f9967d25a90cdf947ebc922016945da6aebeb713caa96e16e44c7dd0247db38e1e5435d7f01a8dd9f4b6271c0316d70e1e
|
7
|
+
data.tar.gz: aa497324a9fa4c1678a9c2e8a8ed65c938a7b01f9da4079e3579ebd1f271d1bd1e9b6c9c8c1bfece05821f39843b18ee546dbfe6ef0b54a806e6e593345cefb3
|
data/cyberarm_engine.gemspec
CHANGED
@@ -29,11 +29,11 @@ Gem::Specification.new do |spec|
|
|
29
29
|
|
30
30
|
spec.add_dependency "clipboard", "~> 1.3.5"
|
31
31
|
spec.add_dependency "excon", "~> 0.78.0"
|
32
|
-
spec.add_dependency "gosu", "~> 1.
|
32
|
+
spec.add_dependency "gosu", "~> 1.1"
|
33
33
|
spec.add_dependency "gosu_more_drawables", "~> 0.3"
|
34
34
|
# spec.add_dependency "ffi", :platforms => [:mswin, :mingw] # Required by Clipboard on Windows
|
35
35
|
|
36
|
-
spec.add_development_dependency "bundler", "~>
|
36
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
37
37
|
spec.add_development_dependency "minitest", "~> 5.0"
|
38
38
|
spec.add_development_dependency "rake", "~> 13.0"
|
39
39
|
end
|
@@ -226,6 +226,22 @@ module CyberarmEngine
|
|
226
226
|
(@style.border_thickness_top + @style.padding_top) + (@style.padding_bottom + @style.border_thickness_bottom)
|
227
227
|
end
|
228
228
|
|
229
|
+
def scroll_width
|
230
|
+
@children.sum { |c| c.width } + noncontent_width
|
231
|
+
end
|
232
|
+
|
233
|
+
def scroll_height
|
234
|
+
@children.sum { |c| c.height } + noncontent_height
|
235
|
+
end
|
236
|
+
|
237
|
+
def max_scroll_width
|
238
|
+
scroll_width - width
|
239
|
+
end
|
240
|
+
|
241
|
+
def max_scroll_height
|
242
|
+
scroll_height - height
|
243
|
+
end
|
244
|
+
|
229
245
|
def dimensional_size(size, dimension)
|
230
246
|
raise "dimension must be either :width or :height" unless %i[width height].include?(dimension)
|
231
247
|
|
@@ -4,19 +4,20 @@ module CyberarmEngine
|
|
4
4
|
include Common
|
5
5
|
|
6
6
|
attr_accessor :stroke_color, :fill_color
|
7
|
-
attr_reader :children, :gui_state, :
|
7
|
+
attr_reader :children, :gui_state, :scroll_position
|
8
8
|
|
9
9
|
def initialize(options = {}, block = nil)
|
10
10
|
@gui_state = options.delete(:gui_state)
|
11
11
|
super
|
12
12
|
|
13
|
-
@
|
14
|
-
@
|
15
|
-
@scroll_speed = 10
|
13
|
+
@scroll_position = Vector.new(0, 0)
|
14
|
+
@scroll_speed = 40
|
16
15
|
|
17
16
|
@text_color = options[:color]
|
18
17
|
|
19
18
|
@children = []
|
19
|
+
|
20
|
+
event(:window_size_changed)
|
20
21
|
end
|
21
22
|
|
22
23
|
def build
|
@@ -44,6 +45,17 @@ module CyberarmEngine
|
|
44
45
|
root.gui_state.request_recalculate
|
45
46
|
end
|
46
47
|
|
48
|
+
def apend(&block)
|
49
|
+
old_container = $__current_container__
|
50
|
+
|
51
|
+
$__current_container__ = self
|
52
|
+
block.call(self) if block
|
53
|
+
|
54
|
+
$__current_container__ = old_container
|
55
|
+
|
56
|
+
root.gui_state.request_recalculate
|
57
|
+
end
|
58
|
+
|
47
59
|
def render
|
48
60
|
Gosu.clip_to(@x, @y, width, height) do
|
49
61
|
@children.each(&:draw)
|
@@ -98,6 +110,8 @@ module CyberarmEngine
|
|
98
110
|
|
99
111
|
def recalculate
|
100
112
|
@current_position = Vector.new(@style.margin_left + @style.padding_left, @style.margin_top + @style.padding_top)
|
113
|
+
@current_position += @scroll_position
|
114
|
+
|
101
115
|
return unless visible?
|
102
116
|
|
103
117
|
Stats.increment(:gui_recalculations_last_frame, 1)
|
@@ -189,15 +203,31 @@ module CyberarmEngine
|
|
189
203
|
@current_position.y += element.outer_height
|
190
204
|
end
|
191
205
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
206
|
+
def mouse_wheel_up(sender, x, y)
|
207
|
+
return unless @style.scroll
|
208
|
+
return if height < max_scroll_height
|
209
|
+
|
210
|
+
if @scroll_position.y < 0
|
211
|
+
@scroll_position.y += @scroll_speed
|
212
|
+
@scroll_position.y = 0 if @scroll_position.y > 0
|
213
|
+
recalculate
|
214
|
+
|
215
|
+
return :handled
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
def mouse_wheel_down(sender, x, y)
|
220
|
+
return unless @style.scroll
|
221
|
+
return if height < max_scroll_height
|
222
|
+
|
223
|
+
if @scroll_position.y.abs < max_scroll_height
|
224
|
+
@scroll_position.y -= @scroll_speed
|
225
|
+
@scroll_position.y = -max_scroll_height if @scroll_position.y.abs > max_scroll_height
|
226
|
+
recalculate
|
196
227
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
# end
|
228
|
+
return :handled
|
229
|
+
end
|
230
|
+
end
|
201
231
|
|
202
232
|
def value
|
203
233
|
@children.map { |c| c.class }.join(", ")
|
@@ -67,6 +67,8 @@ module CyberarmEngine
|
|
67
67
|
|
68
68
|
if @last_text_value != value
|
69
69
|
@last_text_value = value
|
70
|
+
@show_caret = true
|
71
|
+
@caret_last_interval = Gosu.milliseconds
|
70
72
|
|
71
73
|
publish(:changed, value)
|
72
74
|
end
|
@@ -251,6 +253,10 @@ module CyberarmEngine
|
|
251
253
|
def value
|
252
254
|
@text_input.text
|
253
255
|
end
|
256
|
+
|
257
|
+
def value=(string)
|
258
|
+
@text_input.text = string
|
259
|
+
end
|
254
260
|
end
|
255
261
|
end
|
256
262
|
end
|
@@ -105,7 +105,10 @@ module CyberarmEngine
|
|
105
105
|
@last_mouse_pos = Vector.new(window.mouse_x, window.mouse_y)
|
106
106
|
@mouse_pos = @last_mouse_pos.clone
|
107
107
|
|
108
|
-
|
108
|
+
if @active_width != window.width || @active_height != window.height
|
109
|
+
request_recalculate
|
110
|
+
@root_container.publish(:window_size_changed)
|
111
|
+
end
|
109
112
|
|
110
113
|
@active_width = window.width
|
111
114
|
@active_height = window.height
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cyberarm_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyberarm
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: '1.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: '1.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: gosu_more_drawables
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '2.2'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '2.2'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|