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
- .add_key_down_listener(listener_method) ⇒ Object
- .add_key_up_listener(listener_method) ⇒ Object
-
.any_key_down?(*key_symbols) ⇒ Boolean
(also: any_of_keys_down?)
Returns true if one of the key_symbols is down.
- .button_down(id) ⇒ Object
- .button_up(id) ⇒ Object
- .hide ⇒ Object
- .key_down?(key_symbol) ⇒ Boolean
- .key_symbols ⇒ Object
- .key_symbols=(hash) ⇒ Object
-
.keys_down?(*key_symbols) ⇒ Boolean
Returns true if all key_symbols is down.
- .offscreen? ⇒ Boolean
- .onscreen? ⇒ Boolean
- .remove_key_down_listener(listener) ⇒ Object
- .remove_key_up_listener(listener) ⇒ Object
- .show ⇒ Object
- .visible=(bool) ⇒ Object
- .x ⇒ Object
- .x=(value) ⇒ Object
- .y ⇒ Object
- .y=(value) ⇒ Object
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
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 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 id key = @@key_symbols[id] @@key_up_listeners.each { |listener, method| method.call key } if key end |
.hide ⇒ Object
35 |
# File 'lib/okami/mouse.rb', line 35 def hide; $window.cursor_visible = false end |
.key_down?(key_symbol) ⇒ 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. @@key_symbols.key( key_symbol ) end end |
.key_symbols ⇒ Object
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
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
30 31 32 |
# File 'lib/okami/mouse.rb', line 30 def offscreen? not onscreen? end |
.onscreen? ⇒ 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 |
.show ⇒ Object
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 |
.x ⇒ Object
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 |
.y ⇒ Object
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 |