Class: MiniGL::GameWindow
- Inherits:
-
Gosu::Window
- Object
- Gosu::Window
- MiniGL::GameWindow
- Defined in:
- lib/minigl/global.rb
Overview
The main class for a MiniGL game, holds references to globally accessible objects and constants.
Instance Method Summary collapse
- #button_down(id) ⇒ Object
- #button_up(id) ⇒ Object
-
#clear(color) ⇒ Object
Draws a rectangle with the size of the entire screen, in the given color.
-
#initialize(scr_w, scr_h = nil, fullscreen = true, gravity = Vector.new(0, 1), min_speed = Vector.new(0.01, 0.01), ramp_contact_threshold = 4, ramp_slip_threshold = 1, ramp_slip_force = 1, kb_held_delay = 40, kb_held_interval = 5, double_click_delay = 8) ⇒ GameWindow
constructor
Creates a game window (initializing a game with all MiniGL features enabled).
-
#toggle_fullscreen ⇒ Object
Toggles the window between windowed and full screen mode.
Constructor Details
#initialize(scr_w, scr_h = nil, fullscreen = true, gravity = Vector.new(0, 1), min_speed = Vector.new(0.01, 0.01), ramp_contact_threshold = 4, ramp_slip_threshold = 1, ramp_slip_force = 1, kb_held_delay = 40, kb_held_interval = 5, double_click_delay = 8) ⇒ GameWindow
Creates a game window (initializing a game with all MiniGL features enabled).
Parameters:
- scr_w
-
Width of the window, in pixels.
- scr_h
-
Height of the window, in pixels.
- fullscreen
-
Whether the window must be initialized in full screen mode.
- gravity
-
A Vector object representing the horizontal and vertical components of the force of gravity. Essentially, this force will be applied to every object which calls
move
, from the Movement module. - min_speed
-
A Vector with the minimum speed for moving objects, i.e., the value below which the speed will be rounded to zero.
- ramp_contact_threshold
-
The maximum horizontal movement an object can perform in a single frame and keep contact with a ramp when it’s above one.
- ramp_slip_threshold
-
The maximum ratio between height and width of a ramp above which the objects will always slip down when trying to ‘climb’ that ramp.
- ramp_slip_force
-
The force that will be applied in the horizontal direction when the object is slipping from a steep ramp.
- kb_held_delay
-
The number of frames a key must be held by the user before the “held” event (that can be checked with
KB.key_held?
) starts to trigger. - kb_held_interval
-
The interval, in frames, between each triggering of the “held” event, after the key has been held for more than
kb_held_delay
frames. - double_click_delay
-
The maximum interval, in frames, between two clicks, to trigger the “double click” event (checked with
Mouse.double_click?
).
Obs.: This method accepts named parameters, but scr_w
and scr_h
are mandatory.
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
# File 'lib/minigl/global.rb', line 199 def initialize(scr_w, scr_h = nil, fullscreen = true, gravity = Vector.new(0, 1), min_speed = Vector.new(0.01, 0.01), ramp_contact_threshold = 4, ramp_slip_threshold = 1, ramp_slip_force = 1, kb_held_delay = 40, kb_held_interval = 5, double_click_delay = 8) if scr_w.is_a? Hash scr_h = scr_w[:scr_h] fullscreen = scr_w.fetch(:fullscreen, true) gravity = scr_w.fetch(:gravity, Vector.new(0, 1)) min_speed = scr_w.fetch(:min_speed, Vector.new(0.01, 0.01)) ramp_contact_threshold = scr_w.fetch(:ramp_contact_threshold, 4) ramp_slip_threshold = scr_w.fetch(:ramp_slip_threshold, 1.1) ramp_slip_force = scr_w.fetch(:ramp_slip_force, 0.1) kb_held_delay = scr_w.fetch(:kb_held_delay, 40) kb_held_interval = scr_w.fetch(:kb_held_interval, 5) double_click_delay = scr_w.fetch(:double_click_delay, 8) scr_w = scr_w[:scr_w] end super scr_w, scr_h, fullscreen G.window = self G.gravity = gravity G.min_speed = min_speed G.ramp_contact_threshold = ramp_contact_threshold G.ramp_slip_threshold = ramp_slip_threshold G.ramp_slip_force = ramp_slip_force G.kb_held_delay = kb_held_delay G.kb_held_interval = kb_held_interval G.double_click_delay = double_click_delay KB.initialize Mouse.initialize Res.initialize end |
Instance Method Details
#button_down(id) ⇒ Object
249 250 251 252 |
# File 'lib/minigl/global.rb', line 249 def (id) super Mouse.(id) end |
#button_up(id) ⇒ Object
254 255 256 257 |
# File 'lib/minigl/global.rb', line 254 def (id) super Mouse.(id) end |
#clear(color) ⇒ Object
Draws a rectangle with the size of the entire screen, in the given color.
Parameters:
- color
-
Color of the rectangle to be drawn, in hexadecimal RRGGBB format.
236 237 238 239 240 241 242 |
# File 'lib/minigl/global.rb', line 236 def clear(color) color |= 0xff000000 draw_quad 0, 0, color, width, 0, color, width, height, color, 0, height, color, 0 end |
#toggle_fullscreen ⇒ Object
Toggles the window between windowed and full screen mode.
245 246 247 |
# File 'lib/minigl/global.rb', line 245 def toggle_fullscreen self.fullscreen = !fullscreen? end |