Class: Bestguigui::SplashScene

Inherits:
Scene
  • Object
show all
Defined in:
lib/bestguigui_lab/splash_scene.rb

Overview

Écran de démarrage prêt à l'emploi : titre + "Powered by Gosu" en fondu, avec un SplashGem qui tombe et rebondit sur le titre. Bascule ensuite sur la scène suivante.

Bestguigui::SplashScene.new(window, title: "Mon jeu", next_scene: :menu)

Constant Summary collapse

FADE_IN =
0.6
HOLD =
1.2
FADE_OUT =
0.6

Instance Method Summary collapse

Methods inherited from Scene

#button_down

Constructor Details

#initialize(window, title:, next_scene:) ⇒ SplashScene

Returns a new instance of SplashScene.



128
129
130
131
132
133
134
135
136
137
138
# File 'lib/bestguigui_lab/splash_scene.rb', line 128

def initialize(window, title:, next_scene:)
    super(window)
    @title = title
    @next_scene = next_scene
    @gem = SplashGem.new(window)
    @title_font = Assets.font(size: 64)
    @subtitle_font = Assets.font(size: 24)
    @gosu_font = Assets.font(size: 36)
    @elapsed = 0.0
    Assets.gem_sound('assets', 'splash_jingle.wav').play
end

Instance Method Details

#draw ⇒ Object



145
146
147
148
149
150
151
152
153
# File 'lib/bestguigui_lab/splash_scene.rb', line 145

def draw
    color = Gosu::Color.new(fade_alpha, 255, 255, 255)
    accent = Gosu::Color.new(fade_alpha, 220, 30, 40)
    offset = @gem.title_offset(@elapsed)

    @gem.draw(@elapsed, fade_alpha)
    draw_centered(@title_font, @title, (@window.height / 2) + offset, color)
    draw_powered_by((@window.height / 2) + 80 + offset, color, accent)
end

#update(dt) ⇒ Object



140
141
142
143
# File 'lib/bestguigui_lab/splash_scene.rb', line 140

def update(dt)
    @elapsed += dt / 1000.0
    @window.switch_scene(@next_scene) if @elapsed >= FADE_IN + HOLD + FADE_OUT
end