diff --git a/lib/cyberarm_engine/ui/check_box.rb b/lib/cyberarm_engine/ui/check_box.rb index 214dc30..296ac2a 100644 --- a/lib/cyberarm_engine/ui/check_box.rb +++ b/lib/cyberarm_engine/ui/check_box.rb @@ -1,19 +1,20 @@ module CyberarmEngine class CheckBox < Flow def initialize(text, options, block = nil) - super(options = {}, block = nil) + super({}, block = nil) + options[:toggled] = options[:checked] @toggle_button = ToggleButton.new(options) @label = Label.new(text, options) + define_label_singletons + add(@toggle_button) add(@label) @width = @toggle_button.width + @label.width @height = @toggle_button.height + @label.height - @background_color = Gosu::Color::RED - recalculate end @@ -27,7 +28,35 @@ module CyberarmEngine end def clicked_left_mouse_button(sender, x, y) - @toggle_button.toggled = !@toggle_button.toggled + @toggle_button.clicked_left_mouse_button(sender, x, y) + end + + def define_label_singletons + @label.define_singleton_method(:_toggle_button) do |button| + @_toggle_button = button + end + + @label._toggle_button(@toggle_button) + + @label.define_singleton_method(:holding_left_mouse_button) do |sender, x, y| + @_toggle_button.holding_left_mouse_button(sender, x, y) + end + + @label.define_singleton_method(:released_left_mouse_button) do |sender, x, y| + @_toggle_button.released_left_mouse_button(sender, x, y) + end + + @label.define_singleton_method(:clicked_left_mouse_button) do |sender, x, y| + @_toggle_button.clicked_left_mouse_button(sender, x, y) + end + + @label.define_singleton_method(:enter) do |sender| + @_toggle_button.enter(sender) + end + + @label.define_singleton_method(:leave) do |sender| + @_toggle_button.leave(sender) + end end end end \ No newline at end of file