holywyvern/carbuncle

View on GitHub
gems/carbuncle-gui/mrblib/button.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Carbuncle
  class GUI
    class Button < GUI::Widget
      attr_accessor :label, :align
      attr_reader :texture

      def initialize(parent, label = '')
        super(parent)
        self.label = label
        self.align = Style::Align::MIDDLE|Style::Align::CENTERED
        self.texture = nil
      end

      def texture=(value)
        @texture = value
        rect.set(0, 0, value.width, value.height) if value.present?
      end

      def update(_dt)
        events.call('click') if update_button
      end

      private

      def update_button
        return update_image_button if texture.present?

        gui.button(label)
      end

      def update_image_button
        return gui.image_button(texture, rect, label, align) if label.present?

        gui.image_button(texture, rect)
      end
    end
  end
end