Module: Bestguigui::Assets
- Defined in:
- lib/bestguigui/assets.rb
Overview
Cache mémoïsé pour les images/sons/polices chargés depuis le disque — évite de recharger le même fichier à chaque fois qu'une entité qui l'utilise est recréée (ex: une nouvelle partie qui reconstruit tous ses objets).
Pas d'instance à créer ni à faire passer partout : ce sont des méthodes de module, appelables depuis n'importe où.
Bestguigui::Assets.image("gfx/snowball.png", retro: true)
Bestguigui::Assets.tiles("gfx/player.png", 128, 128, retro: true)
Bestguigui::Assets.sample("sfx/hit.mp3")
Bestguigui::Assets.song("sfx/theme.mp3")
Bestguigui::Assets.font(24, name: "gfx/MyFont.ttf")
Le cache est tenu par (chemin/taille + options) : les mêmes arguments renvoient toujours le même objet déjà chargé.
Class Method Summary collapse
-
.clear ⇒ Object
Vide le cache — utile si tu changes vraiment de contenu (rare en jam), ou en tests.
-
.font(size, **options) ⇒ Object
Charger une police (surtout un .ttf custom) fait un vrai travail — rasterisation des glyphes — pas juste une lecture disque, donc aussi utile à mémoïser que les images/sons.
- .image(path, **options) ⇒ Object
-
.play_song(path, volume: 1, loop: true) ⇒ Object
Charge (ou récupère) une musique de fond et la lance — le trio song/volume/play qu'on refait dans chaque jeu.
- .sample(path) ⇒ Object
- .song(path) ⇒ Object
- .tiles(path, tile_width, tile_height, **options) ⇒ Object
Class Method Details
.clear ⇒ Object
Vide le cache — utile si tu changes vraiment de contenu (rare en jam), ou en tests.
60 61 62 63 64 65 |
# File 'lib/bestguigui/assets.rb', line 60 def clear @images.clear @samples.clear @songs.clear @fonts.clear end |
.font(size, **options) ⇒ Object
Charger une police (surtout un .ttf custom) fait un vrai travail — rasterisation des glyphes — pas juste une lecture disque, donc aussi utile à mémoïser que les images/sons.
54 55 56 |
# File 'lib/bestguigui/assets.rb', line 54 def font(size, **) @fonts[[size, ]] ||= Gosu::Font.new(size, **) end |
.image(path, **options) ⇒ Object
25 26 27 |
# File 'lib/bestguigui/assets.rb', line 25 def image(path, **) @images[[path, ]] ||= Gosu::Image.new(path, **) end |
.play_song(path, volume: 1, loop: true) ⇒ Object
Charge (ou récupère) une musique de fond et la lance — le trio song/volume/play qu'on refait dans chaque jeu. Ne relance pas si elle joue déjà (utile appelé depuis un state recréé, ex: un retry).
44 45 46 47 48 49 |
# File 'lib/bestguigui/assets.rb', line 44 def play_song(path, volume: 1, loop: true) s = song(path) s.volume = volume s.play(loop) unless s. s end |
.sample(path) ⇒ Object
33 34 35 |
# File 'lib/bestguigui/assets.rb', line 33 def sample(path) @samples[path] ||= Gosu::Sample.new(path) end |
.song(path) ⇒ Object
37 38 39 |
# File 'lib/bestguigui/assets.rb', line 37 def song(path) @songs[path] ||= Gosu::Song.new(path) end |
.tiles(path, tile_width, tile_height, **options) ⇒ Object
29 30 31 |
# File 'lib/bestguigui/assets.rb', line 29 def tiles(path, tile_width, tile_height, **) @images[[path, tile_width, tile_height, ]] ||= Gosu::Image.load_tiles(path, tile_width, tile_height, **) end |