cyberarm_engine 0.21.0 → 0.23.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.
@@ -27,6 +27,8 @@ module CyberarmEngine
27
27
  @pending_recalculate_request = false
28
28
  @pending_element_recalculate_requests = []
29
29
 
30
+ @needs_repaint = false
31
+
30
32
  @menu = nil
31
33
  @min_drag_distance = 0
32
34
  @mouse_pos = Vector.new
@@ -55,7 +57,7 @@ module CyberarmEngine
55
57
  @menu.draw
56
58
  end
57
59
 
58
- if @tip.value.length.positive?
60
+ if @tip && @tip.value.length.positive?
59
61
  Gosu.flush
60
62
 
61
63
  @tip.draw
@@ -66,6 +68,12 @@ module CyberarmEngine
66
68
 
67
69
  @root_container.debug_draw
68
70
  end
71
+
72
+ @needs_repaint = false
73
+ end
74
+
75
+ def needs_repaint?
76
+ @needs_repaint
69
77
  end
70
78
 
71
79
  def update
@@ -88,9 +96,19 @@ module CyberarmEngine
88
96
  end
89
97
 
90
98
  @menu&.update
99
+
91
100
  super
92
101
 
102
+ if @active_width != window.width || @active_height != window.height
103
+ request_recalculate
104
+ @root_container.publish(:window_size_changed)
105
+ end
106
+
107
+ @active_width = window.width
108
+ @active_height = window.height
109
+
93
110
  return unless window.has_focus?
111
+ return unless window.current_state == self
94
112
 
95
113
  new_mouse_over = @menu.hit_element?(window.mouse_x, window.mouse_y) if @menu
96
114
  new_mouse_over ||= @root_container.hit_element?(window.mouse_x, window.mouse_y)
@@ -127,14 +145,6 @@ module CyberarmEngine
127
145
 
128
146
  @last_mouse_pos = Vector.new(window.mouse_x, window.mouse_y)
129
147
  @mouse_pos = @last_mouse_pos.clone
130
-
131
- if @active_width != window.width || @active_height != window.height
132
- request_recalculate
133
- @root_container.publish(:window_size_changed)
134
- end
135
-
136
- @active_width = window.width
137
- @active_height = window.height
138
148
  end
139
149
 
140
150
  def button_down(id)
@@ -171,6 +181,9 @@ module CyberarmEngine
171
181
  end
172
182
 
173
183
  @focus.button_up(id) if @focus.respond_to?(:button_up)
184
+
185
+ # Prevents menu from popping back up if the listbox is clicked to hide it.
186
+ @hid_menu_for = nil
174
187
  end
175
188
 
176
189
  def tool_tip_delay
@@ -185,7 +198,7 @@ module CyberarmEngine
185
198
  @focus = nil
186
199
  end
187
200
 
188
- if @mouse_over
201
+ if @mouse_over && @hid_menu_for != @mouse_over
189
202
  @mouse_down_position[button] = Vector.new(window.mouse_x, window.mouse_y)
190
203
  @mouse_down_on[button] = @mouse_over
191
204
 
@@ -199,7 +212,7 @@ module CyberarmEngine
199
212
  def redirect_released_mouse_button(button)
200
213
  hide_menu if @menu && (@menu == @mouse_over) || (@mouse_over&.parent == @menu)
201
214
 
202
- if @mouse_over
215
+ if @mouse_over && @hid_menu_for != @mouse_over
203
216
  @mouse_over.publish(:"released_#{button}_mouse_button", window.mouse_x, window.mouse_y)
204
217
  if @mouse_over == @mouse_down_on[button]
205
218
  @mouse_over.publish(:"clicked_#{button}_mouse_button", window.mouse_x,
@@ -250,11 +263,20 @@ module CyberarmEngine
250
263
  @pending_focus_element = element
251
264
  end
252
265
 
266
+ def request_repaint
267
+ # puts caller[0..4]
268
+ # puts
269
+ @needs_repaint = true
270
+ end
271
+
253
272
  def show_menu(list_box)
254
273
  @menu = list_box
255
274
  end
256
275
 
257
276
  def hide_menu
277
+ return unless @menu
278
+
279
+ @hid_menu_for = @menu.parent
258
280
  @menu = nil
259
281
  end
260
282
 
@@ -76,6 +76,7 @@ module CyberarmEngine
76
76
  border_radius: 0,
77
77
  background: ["ffc75e61".to_i(16), "ffe26623".to_i(16)],
78
78
  text_align: :center,
79
+ text_v_align: :center,
79
80
  text_wrap: :none,
80
81
 
81
82
  hover: {
@@ -102,7 +103,12 @@ module CyberarmEngine
102
103
  caret_color: Gosu::Color::WHITE,
103
104
  caret_interval: 500,
104
105
  selection_color: Gosu::Color.rgba(255, 128, 50, 200),
105
- text_align: :left
106
+ text_align: :left,
107
+ text_static: false # static text causes issues correctly displaying caret position
108
+ },
109
+
110
+ EditBox: { # < EditLine
111
+ text_v_align: :top
106
112
  },
107
113
 
108
114
  Image: { # < Element
@@ -1,4 +1,4 @@
1
1
  module CyberarmEngine
2
2
  NAME = "InDev".freeze
3
- VERSION = "0.21.0".freeze
3
+ VERSION = "0.23.0".freeze
4
4
  end
@@ -41,6 +41,7 @@ module CyberarmEngine
41
41
 
42
42
  @states = []
43
43
  @exit_on_opengl_error = false
44
+ preload_default_shaders if respond_to?(:preload_default_shaders)
44
45
 
45
46
  setup if defined?(setup)
46
47
  end
@@ -139,18 +140,16 @@ module CyberarmEngine
139
140
  @states.last
140
141
  end
141
142
 
142
- def previous_state
143
- if @states.size > 1 && (state = @states[@states.size - 2])
144
- state
145
- end
146
- end
147
-
148
143
  def pop_state
149
144
  @states.pop
145
+
146
+ current_state.request_repaint if current_state&.is_a?(GuiState)
150
147
  end
151
148
 
152
149
  def shift_state
153
150
  @states.shift
151
+
152
+ current_state.request_repaint if current_state&.is_a?(GuiState)
154
153
  end
155
154
 
156
155
  def has_focus?
@@ -8,7 +8,6 @@ end
8
8
  require "json"
9
9
  require "excon"
10
10
  require "gosu_more_drawables"
11
- require "clipboard"
12
11
 
13
12
  require_relative "cyberarm_engine/version"
14
13
  require_relative "cyberarm_engine/stats"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyberarm_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyberarm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-05 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: clipboard
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: excon
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +108,11 @@ files:
122
108
  - LICENSE.txt
123
109
  - README.md
124
110
  - Rakefile
111
+ - assets/shaders/fragment/g_buffer.glsl
112
+ - assets/shaders/fragment/lighting.glsl
113
+ - assets/shaders/include/light_struct.glsl
114
+ - assets/shaders/vertex/g_buffer.glsl
115
+ - assets/shaders/vertex/lighting.glsl
125
116
  - assets/textures/default.png
126
117
  - assets/textures/logo.png
127
118
  - bin/console
@@ -211,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
202
  - !ruby/object:Gem::Version
212
203
  version: '0'
213
204
  requirements: []
214
- rubygems_version: 3.3.7
205
+ rubygems_version: 3.3.15
215
206
  signing_key:
216
207
  specification_version: 4
217
208
  summary: Make games quickly and easily with gosu