feat(core/audio): music-ended callback (CONV-03)
Ja::Engine exposa setOnMusicEnded(std::function<void()>). Quan updateCurrentMusic detecta que la pista actual ha acabat de drenar (times == 0 && stream buit) s'atura primer via stopMusic i després s'invoca el callback — així un eventual playMusic des del callback pot començar amb l'engine en estat net. Audio proxeia amb setOnMusicEnded. Contracte documentat: s'executa al mateix thread que Audio::update (render loop); no fer operacions blocants. Cap consumidor actualment; només exposa l'API per quan calgui. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
4e0dcfe739
commit
2ec6fd23b6
4 files changed
+31
-5
No files matched your search
@@ -1,10 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <cmath> // Per a std::lround
|
||||
#include <cstdint> // Per a int8_t, uint8_t
|
||||
#include <memory> // Per a std::unique_ptr
|
||||
#include <string> // Per a string
|
||||
#include <utility> // Per a move
|
||||
#include <cmath> // Per a std::lround
|
||||
#include <cstdint> // Per a int8_t, uint8_t
|
||||
#include <functional> // Per a std::function
|
||||
#include <memory> // Per a std::unique_ptr
|
||||
#include <string> // Per a string
|
||||
#include <utility> // Per a move
|
||||
|
||||
// Forward-declares per no incloure core/audio/jail_audio.hpp al header. Els
|
||||
// tres símbols (Music/Sound per al punter que exposa la API i Engine per al
|
||||
@@ -74,6 +75,7 @@ class Audio {
|
||||
void resumeMusic(); // Continua la música pausada
|
||||
void stopMusic(); // Aturar completament la música
|
||||
void fadeOutMusic(int milliseconds); // Fosa de sortida de la música (muta globals de Ja)
|
||||
void setOnMusicEnded(std::function<void()> callback); // Callback disparat quan la pista actual acaba de drenar (CONV-03)
|
||||
|
||||
// --- Control de sons ---
|
||||
void playSound(const std::string& name, Group group = Group::GAME); // Reproduir so puntual per nom (muta globals de Ja)
|
||||
|
||||
Reference in new issue
Block a user