Module: MiniGL::Mouse
- Defined in:
- lib/minigl/global.rb
Overview
Exposes methods for controlling mouse events.
Class Attribute Summary collapse
-
.x ⇒ Object
readonly
The current x-coordinate of the mouse cursor in the screen.
-
.y ⇒ Object
readonly
The current y-coordinate of the mouse cursor in the screen.
Class Method Summary collapse
-
.button_down?(btn) ⇒ Boolean
Returns whether the given button is down in the current frame.
-
.button_pressed?(btn) ⇒ Boolean
Returns whether the given button is down in the current frame and was not down in the frame before.
-
.button_released?(btn) ⇒ Boolean
Returns whether the given button is not down in the current frame, but was down in the frame before.
-
.double_click?(btn) ⇒ Boolean
Returns whether the given button has just been double clicked.
-
.initialize ⇒ Object
This is called by
GameWindow.initialize. -
.over?(x, y = nil, w = nil, h = nil) ⇒ Boolean
Returns whether the mouse cursor is currently inside the given area.
-
.update ⇒ Object
Updates the mouse position and the state of all buttons.
Class Attribute Details
.x ⇒ Object (readonly)
The current x-coordinate of the mouse cursor in the screen.
369 370 371 |
# File 'lib/minigl/global.rb', line 369 def x @x end |
.y ⇒ Object (readonly)
The current y-coordinate of the mouse cursor in the screen.
372 373 374 |
# File 'lib/minigl/global.rb', line 372 def y @y end |
Class Method Details
.button_down?(btn) ⇒ Boolean
Returns whether the given button is down in the current frame.
Parameters:
- btn
-
Button to be checked. Valid values are
:left,:middleand:right
425 426 427 |
# File 'lib/minigl/global.rb', line 425 def (btn) @down[btn] end |
.button_pressed?(btn) ⇒ Boolean
Returns whether the given button is down in the current frame and was not down in the frame before.
Parameters:
- btn
-
Button to be checked. Valid values are
:left,:middleand:right
416 417 418 |
# File 'lib/minigl/global.rb', line 416 def (btn) @down[btn] and not @prev_down[btn] end |
.button_released?(btn) ⇒ Boolean
Returns whether the given button is not down in the current frame, but was down in the frame before.
Parameters:
- btn
-
Button to be checked. Valid values are
:left,:middleand:right
435 436 437 |
# File 'lib/minigl/global.rb', line 435 def (btn) @prev_down[btn] and not @down[btn] end |
.double_click?(btn) ⇒ Boolean
Returns whether the given button has just been double clicked.
Parameters:
- btn
-
Button to be checked. Valid values are
:left,:middleand:right
444 445 446 |
# File 'lib/minigl/global.rb', line 444 def double_click?(btn) @dbl_click[btn] end |
.initialize ⇒ Object
This is called by GameWindow.initialize. Don’t call it explicitly.
376 377 378 379 380 381 |
# File 'lib/minigl/global.rb', line 376 def initialize @down = {} @prev_down = {} @dbl_click = {} @dbl_click_timer = {} end |
.over?(x, y = nil, w = nil, h = nil) ⇒ Boolean
Returns whether the mouse cursor is currently inside the given area.
Parameters:
- x
-
The x-coordinate of the top left corner of the area.
- y
-
The y-coordinate of the top left corner of the area.
- w
-
The width of the area.
- h
-
The height of the area.
Alternate syntax
over?(rectangle)
Parameters:
- rectangle
-
A rectangle representing the area to be checked.
462 463 464 465 |
# File 'lib/minigl/global.rb', line 462 def over?(x, y = nil, w = nil, h = nil) return @x >= x.x && @x < x.x + x.w && @y >= x.y && @y < x.y + x.h if x.is_a? Rectangle @x >= x && @x < x + w && @y >= y && @y < y + h end |
.update ⇒ Object
Updates the mouse position and the state of all buttons.
384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 |
# File 'lib/minigl/global.rb', line 384 def update @prev_down = @down.clone @down.clear @dbl_click.clear @dbl_click_timer.each do |k, v| if v < G.double_click_delay; @dbl_click_timer[k] += 1 else; @dbl_click_timer.delete k; end end k1 = [Gosu::MsLeft, Gosu::MsMiddle, Gosu::MsRight] k2 = [:left, :middle, :right] (0..2).each do |i| if G.window. k1[i] @down[k2[i]] = true @dbl_click[k2[i]] = true if @dbl_click_timer[k2[i]] @dbl_click_timer.delete k2[i] elsif @prev_down[k2[i]] @dbl_click_timer[k2[i]] = 0 end end @x = G.window.mouse_x.round @y = G.window.mouse_y.round end |