Module: Okami::Mouse

Defined in:
lib/okami/mouse.rb

Constant Summary collapse

DefaultKeySymbols =
{
  Gosu::MsLeft      => :left,
  Gosu::MsRight     => :right,
  Gosu::MsMiddle    => :middle,
  Gosu::MsWheelUp   => :wheel_up,
  Gosu::MsWheelDown => :wheel_down
}.freeze
@@key_symbols =
DefaultKeySymbols.dup
@@key_down_listeners =
{}
@@key_up_listeners =
{}

Class Method Summary collapse

Class Method Details

.add_key_down_listener(listener_method) ⇒ Object



38
# File 'lib/okami/mouse.rb', line 38

def add_key_down_listener listener_method; @@key_down_listeners[ listener_method.receiver ] = listener_method end

.add_key_up_listener(listener_method) ⇒ Object



39
# File 'lib/okami/mouse.rb', line 39

def add_key_up_listener   listener_method; @@key_up_listeners[   listener_method.receiver ] = listener_method end

.any_key_down?(*key_symbols) ⇒ Boolean Also known as: any_of_keys_down?

Returns true if one of the key_symbols is down

Returns:

  • (Boolean)


72
73
74
75
76
77
78
79
# File 'lib/okami/mouse.rb', line 72

def any_key_down? *key_symbols
  key_symbols << :any_key if key_symbols.empty?
  key_symbols.each do |key_symbol|
    return true if key_down? key_symbol
  end
  return nil if key_symbols.empty?
  return false
end

.button_down(id) ⇒ Object



82
83
84
85
# File 'lib/okami/mouse.rb', line 82

def button_down id
  key = @@key_symbols[id]
  @@key_down_listeners.each { |listener, method| method.call key } if key
end

.button_up(id) ⇒ Object



87
88
89
90
# File 'lib/okami/mouse.rb', line 87

def button_up id
  key = @@key_symbols[id]
  @@key_up_listeners.each { |listener, method| method.call key } if key
end

.hideObject



35
# File 'lib/okami/mouse.rb', line 35

def hide;         $window.cursor_visible = false  end

.key_down?(key_symbol) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
58
59
60
# File 'lib/okami/mouse.rb', line 55

def key_down? key_symbol
  case key_symbol
  when :any_key; any_key_down? *@@key_symbols.values
  else;   $window.button_down? @@key_symbols.key( key_symbol )
  end
end

.key_symbolsObject



15
# File 'lib/okami/mouse.rb', line 15

def key_symbols;       @@key_symbols end

.key_symbols=(hash) ⇒ Object



16
# File 'lib/okami/mouse.rb', line 16

def key_symbols= hash; @@key_symbols = hash end

.keys_down?(*key_symbols) ⇒ Boolean

Returns true if all key_symbols is down

Returns:

  • (Boolean)


63
64
65
66
67
68
69
# File 'lib/okami/mouse.rb', line 63

def keys_down? *key_symbols
  key_symbols.each do |key_symbol|
    return false unless key_down? key_symbol
  end
  return nil if key_symbols.empty?
  return true
end

.offscreen?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/okami/mouse.rb', line 30

def offscreen?
  not onscreen?
end

.onscreen?Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
# File 'lib/okami/mouse.rb', line 23

def onscreen?
  x >= 0             &&
  y >= 0             &&
  x <= $window.width &&
  y <= $window.height
end

.remove_key_down_listener(listener) ⇒ Object



48
49
50
51
52
53
# File 'lib/okami/mouse.rb', line 48

def remove_key_down_listener listener
  case listener
  when Method; @@key_down_listeners.delete @@key_down_listeners.key(listener)
  else;        @@key_down_listeners.delete listener
  end
end

.remove_key_up_listener(listener) ⇒ Object



41
42
43
44
45
46
# File 'lib/okami/mouse.rb', line 41

def remove_key_up_listener listener
  case listener
  when Method; @@key_up_listeners.delete @@key_up_listeners.key(listener)
  else;        @@key_up_listeners.delete listener
  end
end

.showObject



34
# File 'lib/okami/mouse.rb', line 34

def show;         $window.cursor_visible = true   end

.visible=(bool) ⇒ Object



36
# File 'lib/okami/mouse.rb', line 36

def visible=bool; $window.cursor_visible = bool   end

.xObject



18
# File 'lib/okami/mouse.rb', line 18

def x; $window.mouse_x end

.x=(value) ⇒ Object



20
# File 'lib/okami/mouse.rb', line 20

def x=value; $window.mouse_x = value end

.yObject



19
# File 'lib/okami/mouse.rb', line 19

def y; $window.mouse_y end

.y=(value) ⇒ Object



21
# File 'lib/okami/mouse.rb', line 21

def y=value; $window.mouse_y = value end