Class: Bestguigui::Window

Inherits:
Gosu::Window
  • Object
show all
Defined in:
lib/bestguigui_lab/window.rb

Overview

Fenêtre de base qui calcule le delta-time et délègue update/draw/ button_down à la scène courante (@scene). Hérite-en et implémente switch_scene(scene_type) pour construire tes scènes ; le constructeur se charge de lancer le splash screen du kit avant scene, sauf si splash_screen: false.

Bestguigui::Window.new(640, 480, scene: :main, title: 'Mon jeu') Bestguigui::Window.new(640, 480, scene: :main, splash_screen: false)

Instance Method Summary collapse

Constructor Details

#initialize(width, height, scene:, splash_screen: true, title: nil) ⇒ Window

Returns a new instance of Window.



13
14
15
16
17
18
19
20
# File 'lib/bestguigui_lab/window.rb', line 13

def initialize(width, height, scene:, splash_screen: true, title: nil)
    super(width, height)
    if splash_screen
        @scene = SplashScene.new(self, title: title, next_scene: scene)
    else
        switch_scene(scene)
    end
end

Instance Method Details

#button_down(id) ⇒ Object



37
38
39
# File 'lib/bestguigui_lab/window.rb', line 37

def button_down(id)
    @scene.button_down(id)
end

#draw ⇒ Object



33
34
35
# File 'lib/bestguigui_lab/window.rb', line 33

def draw
    @scene.draw
end

#switch_scene(scene_type) ⇒ Object

Raises:

  • (NotImplementedError)


22
23
24
# File 'lib/bestguigui_lab/window.rb', line 22

def switch_scene(scene_type)
    raise NotImplementedError, "implémente switch_scene(#{scene_type.inspect}) dans ta sous-classe"
end

#update ⇒ Object



26
27
28
29
30
31
# File 'lib/bestguigui_lab/window.rb', line 26

def update
    @last_update ||= Gosu.milliseconds
    dt = Gosu.milliseconds - @last_update
    @scene.update(dt)
    @last_update = Gosu.milliseconds
end