bestguigui_lab 0.8.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b673ef4e8872e5d7caf22b1ff79292179b2218c4cc7b52c2caafba484d6b268
4
- data.tar.gz: beb55c5d96030f481f50400880e4fe03fab15c7a84b176d289d2697947ba38c7
3
+ metadata.gz: bfea52cbbec246d0b78adb34f4ede81f0cd5316276fc53d2cf84ddd857222d8c
4
+ data.tar.gz: c839294b885dcf881638371fbe529bfcf9603c62ed31190380e86ef23210e0e6
5
5
  SHA512:
6
- metadata.gz: e84c4e95875f7dec3e34190e852c50bf61fe909799507cf0f6b47f98d50b780b561a93fd6fc95616019fb41a40f71ce9ac4d4a98f46aba29d79a64edbd4c678a
7
- data.tar.gz: 2d5c2e7de99e3025b7e1b97cadd48c8881bdf79bcf568dec299a9ae4a135a6e1eced058c1d508c5567c26a7df39cdd6e6420321905eae7a185ae11794d5c48aa
6
+ metadata.gz: 61c72285fb0e23ab24622812f98340501af9c46c8123230d444a36b6d1ae42503697c8c33519cf906254c15047ec5ad5f5f09bbe25853a26e625499ca1e669f8
7
+ data.tar.gz: 0c61253a25f9e9d6b9cf91d46ad19bb1c6c095cd0d7847e396a9c18db25a1a4ce20a8d3f25e00ea76e924b5e26a802788a952af9e0fffa4cc0c2d827e04793a8
@@ -4,6 +4,7 @@ module Bestguigui
4
4
  # Charge et met en cache les assets (images, sons, modèles 3D...) pour éviter de les recharger plusieurs fois.
5
5
  class Assets
6
6
  @root = Dir.pwd
7
+ @gem_root = __dir__ # lib/bestguigui_lab, pour les ressources embarquees dans le kit
7
8
 
8
9
  @images = Hash.new { |cache, path| cache[path] = Gosu::Image.new(path, retro: true) }
9
10
  @sounds = Hash.new { |cache, path| cache[path] = Gosu::Sample.new(path) }
@@ -16,6 +17,10 @@ module Bestguigui
16
17
  def self.resolve(name) = File.expand_path(name, @root)
17
18
  def self.image(name) = @images[resolve(name)]
18
19
  def self.sound(name) = @sounds[resolve(name)]
20
+
21
+ # Pour un fichier livre avec le kit (lib/bestguigui_lab/...), pas avec
22
+ # le projet de l'utilisateur : resout par rapport a la gem, pas Dir.pwd.
23
+ def self.gem_sound(*relative_parts) = @sounds[File.join(@gem_root, *relative_parts)]
19
24
  def self.song(name) = @songs[resolve(name)]
20
25
 
21
26
  def self.font(name = Gosu.default_font_name, size: 20)
@@ -125,10 +125,6 @@ module Bestguigui
125
125
  HOLD = 1.2
126
126
  FADE_OUT = 0.6
127
127
 
128
- JINGLE_PATH = File.join(__dir__, 'assets', 'splash_jingle.wav')
129
-
130
- def self.jingle = @jingle ||= Gosu::Sample.new(JINGLE_PATH)
131
-
132
128
  def initialize(window, title:, next_scene:)
133
129
  super(window)
134
130
  @title = title
@@ -138,7 +134,7 @@ module Bestguigui
138
134
  @subtitle_font = Assets.font(size: 24)
139
135
  @gosu_font = Assets.font(size: 36)
140
136
  @elapsed = 0.0
141
- self.class.jingle.play
137
+ Assets.gem_sound('assets', 'splash_jingle.wav').play
142
138
  end
143
139
 
144
140
  def update(dt)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bestguigui
4
- VERSION = '0.8.0'
4
+ VERSION = '0.11.0'
5
5
  end
@@ -2,9 +2,27 @@
2
2
 
3
3
  module Bestguigui
4
4
  # Fenêtre de base qui calcule le delta-time et délègue update/draw/
5
- # button_down à la scène courante (@scene). Hérite-en, fixe @scene
6
- # dans #initialize (et ajoute switch_scene si plusieurs écrans).
5
+ # button_down à la scène courante (@scene). Hérite-en et implémente
6
+ # switch_scene(scene_type) pour construire tes scènes ; le constructeur
7
+ # se charge de lancer le splash screen du kit avant scene, sauf si
8
+ # splash_screen: false.
9
+ #
10
+ # Bestguigui::Window.new(640, 480, scene: :main, title: 'Mon jeu')
11
+ # Bestguigui::Window.new(640, 480, scene: :main, splash_screen: false)
7
12
  class Window < Gosu::Window
13
+ def initialize(width, height, scene:, splash_screen: true, title: nil)
14
+ super(width, height)
15
+ if splash_screen
16
+ @scene = SplashScene.new(self, title: title, next_scene: scene)
17
+ else
18
+ switch_scene(scene)
19
+ end
20
+ end
21
+
22
+ def switch_scene(scene_type)
23
+ raise NotImplementedError, "implémente switch_scene(#{scene_type.inspect}) dans ta sous-classe"
24
+ end
25
+
8
26
  def update
9
27
  @last_update ||= Gosu.milliseconds
10
28
  dt = Gosu.milliseconds - @last_update
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bestguigui_lab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bestguigui