Class: AdventureRL::Button

Inherits:
Textbox show all
Defined in:
lib/AdventureRL/Button.rb

Constant Summary collapse

DEFAULT_SETTINGS =
Settings.new(
  active_color:      0xff_cc8822,
  hover_colow:       0xff_888888,
  pressable:         false,
  click_on_mouse_up: false
)

Constants included from Helpers::Error

Helpers::Error::PADDING, Helpers::Error::STACK_TRACE_PADDING, Helpers::Error::STACK_TRACE_SIZE

Constants inherited from Mask

Mask::MASKS

Constants inherited from Point

Point::POINTS

Instance Method Summary collapse

Methods inherited from Textbox

#draw, #get_text, #preload_font_sizes, #set_font_size, #set_text

Methods inherited from Rectangle

#draw, #get_color, #reset_color, #set_color, #set_temporary_color

Methods included from Helpers::Error

directory_exists?, error, error_no_directory, error_no_file, file_exists?

Methods inherited from Mask

#assign_to, #assigned_to?, #collides_with?, #collides_with_hash?, #collides_with_mask?, #collides_with_point?, #get_assigned, #get_center, #get_corner, #get_layer, #get_mask, #get_origin, #get_real_center, #get_real_corner, #get_real_side, #get_real_sides, #get_side, #get_sides, #get_size, #has_layer?, #has_mask?, #set_layer, #set_size

Methods inherited from Point

#assign_to, #assigned_to?, #collides_with?, #collides_with_hash?, #collides_with_mask?, #collides_with_point?, #get_assigned, #get_layer, #get_point, #get_position, #get_real_point, #get_real_position, #has_layer?, #has_point?, #keys, #move_by, #set_layer, #set_position, #values, #x, #y

Constructor Details

#initialize(settings = {}) ⇒ Button

Returns a new instance of Button.



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/AdventureRL/Button.rb', line 10

def initialize settings = {}
  @settings = DEFAULT_SETTINGS.merge settings
  super @settings
  @colors = {
    active: @settings.get(:active_color),
    hover:  @settings.get(:hover_colow),
  }
  @pressable         ||= @settings.get :pressable
  @click_on_mouse_up ||= @settings.get :click_on_mouse_up
  @click_on_mouse_up ||= false  if (@pressable)
end

Instance Method Details

#get_menuObject



22
23
24
25
26
# File 'lib/AdventureRL/Button.rb', line 22

def get_menu
  layer = get_layer
  return layer  if (layer.is_a? Menu)
  return nil
end

#on_mouse_downObject



28
29
30
31
32
# File 'lib/AdventureRL/Button.rb', line 28

def on_mouse_down
  return  if (is_pressable?)
  set_color @colors[:active]
  click  if (!@click_on_mouse_up && methods.include?(:click))
end

#on_mouse_pressObject



40
41
42
43
# File 'lib/AdventureRL/Button.rb', line 40

def on_mouse_press
  return  unless (is_pressable?)
  set_temporary_color @colors[:active]
end

#on_mouse_upObject



34
35
36
37
38
# File 'lib/AdventureRL/Button.rb', line 34

def on_mouse_up
  return  if (is_pressable?)
  reset_color
  click  if (@click_on_mouse_up && methods.include?(:click))
end