Style fixes, wip layout speed up work

This commit is contained in:
2025-12-01 10:03:45 -06:00
parent 1f57dfd38c
commit 498cf06916
3 changed files with 32 additions and 27 deletions

View File

@@ -1,7 +1,7 @@
PATH PATH
remote: . remote: .
specs: specs:
cyberarm_engine (0.24.4) cyberarm_engine (0.24.5)
gosu (~> 1.1) gosu (~> 1.1)
GEM GEM
@@ -13,6 +13,7 @@ GEM
PLATFORMS PLATFORMS
x64-mingw-ucrt x64-mingw-ucrt
x86_64-linux
DEPENDENCIES DEPENDENCIES
bundler (~> 2.2) bundler (~> 2.2)
@@ -21,4 +22,4 @@ DEPENDENCIES
rake (~> 13.0) rake (~> 13.0)
BUNDLED WITH BUNDLED WITH
2.5.3 2.6.8

View File

@@ -7,13 +7,13 @@ module CyberarmEngine
attr_reader :children, :gui_state, :scroll_position, :scroll_target_position attr_reader :children, :gui_state, :scroll_position, :scroll_target_position
def self.current_container def self.current_container
@@current_container @current_container
end end
def self.current_container=(container) def self.current_container=(container)
raise ArgumentError, "Expected container to an an instance of CyberarmEngine::Element::Container, got #{container.class}" unless container.is_a?(CyberarmEngine::Element::Container) raise ArgumentError, "Expected container to an an instance of CyberarmEngine::Element::Container, got #{container.class}" unless container.is_a?(CyberarmEngine::Element::Container)
@@current_container = container @current_container = container
end end
def initialize(options = {}, block = nil) def initialize(options = {}, block = nil)
@@ -26,6 +26,11 @@ module CyberarmEngine
@scroll_chunk = 120 @scroll_chunk = 120
@scroll_speed = 40 @scroll_speed = 40
if @gui_state
@width = window.width
@height = window.height
end
@text_color = options[:color] @text_color = options[:color]
@children = [] @children = []
@@ -34,7 +39,7 @@ module CyberarmEngine
end end
def build def build
@block.call(self) if @block @block&.call(self)
root.gui_state.request_recalculate_for(self) root.gui_state.request_recalculate_for(self)
end end
@@ -53,7 +58,7 @@ module CyberarmEngine
old_container = CyberarmEngine::Element::Container.current_container old_container = CyberarmEngine::Element::Container.current_container
CyberarmEngine::Element::Container.current_container = self CyberarmEngine::Element::Container.current_container = self
block.call(self) if block block&.call(self)
CyberarmEngine::Element::Container.current_container = old_container CyberarmEngine::Element::Container.current_container = old_container
@@ -66,7 +71,7 @@ module CyberarmEngine
old_container = CyberarmEngine::Element::Container.current_container old_container = CyberarmEngine::Element::Container.current_container
CyberarmEngine::Element::Container.current_container = self CyberarmEngine::Element::Container.current_container = self
block.call(self) if block block&.call(self)
CyberarmEngine::Element::Container.current_container = old_container CyberarmEngine::Element::Container.current_container = old_container
@@ -89,9 +94,7 @@ module CyberarmEngine
def debug_draw def debug_draw
super super
@children.each do |child| @children.each(&:debug_draw)
child.debug_draw
end
end end
def update def update
@@ -111,7 +114,7 @@ module CyberarmEngine
case child case child
when Container when Container
if element = child.hit_element?(child_x, child_y) if (element = child.hit_element?(child_x, child_y))
return element return element
end end
else else
@@ -207,7 +210,7 @@ module CyberarmEngine
end end
end end
# t = Gosu.milliseconds t = Gosu.milliseconds
# Move children to parent after positioning # Move children to parent after positioning
@children.each do |child| @children.each do |child|
child.x += (@x + @style.border_thickness_left) - style.margin_left child.x += (@x + @style.border_thickness_left) - style.margin_left
@@ -221,7 +224,7 @@ module CyberarmEngine
update_child_element_visibity(child) update_child_element_visibity(child)
end end
# puts "TOOK: #{Gosu.milliseconds - t}ms to recalculate #{self.class}:0x#{self.object_id.to_s(16)}'s #{@children.count} children" puts "TOOK: #{Gosu.milliseconds - t}ms to recalculate #{self.class}:0x#{object_id.to_s(16)}'s #{@children.count} children"
update_background update_background
@@ -299,15 +302,15 @@ module CyberarmEngine
return unless @style.scroll return unless @style.scroll
# Allow overscrolling UP, only if one can scroll DOWN # Allow overscrolling UP, only if one can scroll DOWN
if height < scroll_height return unless height < scroll_height
if @scroll_target_position.y > 0
@scroll_target_position.y = @scroll_chunk
else
@scroll_target_position.y += @scroll_chunk
end
return :handled if @scroll_target_position.y.positive?
@scroll_target_position.y = @scroll_chunk
else
@scroll_target_position.y += @scroll_chunk
end end
:handled
end end
def mouse_wheel_down(sender, x, y) def mouse_wheel_down(sender, x, y)
@@ -315,13 +318,13 @@ module CyberarmEngine
return unless height < scroll_height return unless height < scroll_height
if @scroll_target_position.y > 0 if @scroll_target_position.y.positive?
@scroll_target_position.y = -@scroll_chunk @scroll_target_position.y = -@scroll_chunk
else else
@scroll_target_position.y -= @scroll_chunk @scroll_target_position.y -= @scroll_chunk
end end
return :handled :handled
end end
def scroll_jump_to_top(sender, x, y) def scroll_jump_to_top(sender, x, y)
@@ -330,7 +333,7 @@ module CyberarmEngine
@scroll_position.y = 0 @scroll_position.y = 0
@scroll_target_position.y = 0 @scroll_target_position.y = 0
return :handled :handled
end end
def scroll_jump_to_end(sender, x, y) def scroll_jump_to_end(sender, x, y)
@@ -339,7 +342,7 @@ module CyberarmEngine
@scroll_position.y = -max_scroll_height @scroll_position.y = -max_scroll_height
@scroll_target_position.y = -max_scroll_height @scroll_target_position.y = -max_scroll_height
return :handled :handled
end end
def scroll_page_up(sender, x, y) def scroll_page_up(sender, x, y)
@@ -349,7 +352,7 @@ module CyberarmEngine
@scroll_position.y = 0 if @scroll_position.y > 0 @scroll_position.y = 0 if @scroll_position.y > 0
@scroll_target_position.y = @scroll_position.y @scroll_target_position.y = @scroll_position.y
return :handled :handled
end end
def scroll_page_down(sender, x, y) def scroll_page_down(sender, x, y)
@@ -359,7 +362,7 @@ module CyberarmEngine
@scroll_position.y = -max_scroll_height if @scroll_position.y < -max_scroll_height @scroll_position.y = -max_scroll_height if @scroll_position.y < -max_scroll_height
@scroll_target_position.y = @scroll_position.y @scroll_target_position.y = @scroll_position.y
return :handled :handled
end end
def scroll_top def scroll_top

View File

@@ -57,7 +57,8 @@ module CyberarmEngine
Stats.frame.start_timing(:gui_element_recalculate_requests) Stats.frame.start_timing(:gui_element_recalculate_requests)
# puts "PENDING REQUESTS: #{@pending_element_recalculate_requests.size}" if @pending_element_recalculate_requests.size.positive? # puts "PENDING REQUESTS: #{@pending_element_recalculate_requests.size}" if @pending_element_recalculate_requests.size.positive?
@pending_element_recalculate_requests.each(&:recalculate) @pending_recalculate_request = true if @pending_element_recalculate_requests.size.positive?
# @pending_element_recalculate_requests.each(&:recalculate)
@pending_element_recalculate_requests.clear @pending_element_recalculate_requests.clear
Stats.frame.end_timing(:gui_element_recalculate_requests) Stats.frame.end_timing(:gui_element_recalculate_requests)