class Fidgit::DialogState

A modal dialog. @abstract

Constants

DEFAULT_BACKGROUND_COLOR
DEFAULT_BORDER_COLOR
DEFAULT_SHADOW_COLOR
DEFAULT_SHADOW_OFFSET

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/fidgit/states/dialog_state.rb, line 11
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

Public Instance Methods

draw() click to toggle source
Calls superclass method
# File lib/fidgit/states/dialog_state.rb, line 28
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
hide() click to toggle source
# File lib/fidgit/states/dialog_state.rb, line 47
def hide
  $window.game_state_manager.pop(setup: false) if $window.game_state_manager.current == self
  nil
end
show() click to toggle source
# File lib/fidgit/states/dialog_state.rb, line 42
def show
  $window.game_state_manager.push(self, finalize: false) unless $window.game_state_manager.game_states.include? self
  nil
end