Sha256: e233fedb5d214be128632d522fca1a778187781efa9ea6df17b2d9ceee39b571

Contents?: true

Size: 1.45 KB

Versions: 10

Compression:

Stored size: 1.45 KB

Contents

module Fidgit
  # A modal dialog.
  # @abstract
  class DialogState < GuiState
    DEFAULT_BACKGROUND_COLOR = Gosu::Color.rgb(75, 75, 75)
    DEFAULT_BORDER_COLOR = Gosu::Color.rgb(255, 255, 255)

    DEFAULT_SHADOW_COLOR = Gosu::Color.rgba(0, 0, 0, 100)
    DEFAULT_SHADOW_OFFSET = 8

    def initialize(options = {})
      # @option options [Gosu::Color] :shadow_color (transparent black) Color of the shadow.
      # @option options [Gosu::Color] :shadow_offset (8) Distance shadow is offset to bottom and left.
      # @option options [Gosu::Color] :shadow_full (false) Shadow fills whole screen. Ignores :shadow_offset option if true.
      options = {
        shadow_color: DEFAULT_SHADOW_COLOR,
        shadow_offset: DEFAULT_SHADOW_OFFSET,
        shadow_full: false,
      }.merge! options

      @shadow_color = options[:shadow_color].dup
      @shadow_offset = options[:shadow_offset]
      @shadow_full = options[:shadow_full]

      super()
    end

    def draw
      $window.game_state_manager.previous_game_state.draw # Keep the underlying state being shown.
      $window.flush

      if @shadow_full
        draw_rect 0, 0, $window.width, $window.height, -Float::INFINITY, @shadow_color
      elsif @shadow_offset > 0
        dialog = container[0]
        draw_rect dialog.x + @shadow_offset, dialog.y + @shadow_offset, dialog.width, dialog.height, -Float::INFINITY, @shadow_color
      end

      super
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
fidgit-0.1.4 lib/fidgit/states/dialog_state.rb
fidgit-0.1.3 lib/fidgit/states/dialog_state.rb
fidgit-0.1.2 lib/fidgit/states/dialog_state.rb
fidgit-0.1.1 lib/fidgit/states/dialog_state.rb
fidgit-0.1.0 lib/fidgit/states/dialog_state.rb
fidgit-0.0.6alpha lib/fidgit/states/dialog_state.rb
fidgit-0.0.5alpha lib/fidgit/states/dialog_state.rb
fidgit-0.0.4alpha lib/fidgit/states/dialog_state.rb
fidgit-0.0.3alpha lib/fidgit/states/dialog_state.rb
fidgit-0.0.2alpha lib/fidgit/states/dialog_state.rb