feat(音频): 添加从NPK加载音频文件的功能

实现SoundPackArchive系统用于管理NPK格式的音频资源包
为Music和Sound类添加loadFromNpk方法支持从NPK加载音频
新增音频播放控制功能如暂停、恢复、停止等
This commit is contained in:
2026-03-21 00:37:32 +08:00
parent 18111dae6b
commit 46ca534a19
8 changed files with 492 additions and 2 deletions

Binary file not shown.

View File

@@ -18,6 +18,8 @@
#include <frostbite2D/audio/sound.h>
#include <frostbite2D/resource/npk_archive.h>
#include <frostbite2D/resource/sound_pack_archive.h>
using namespace frostbite2D;
int main(int argc, char **argv) {
@@ -117,11 +119,30 @@ int main(int argc, char **argv) {
auto sprite1 = Sprite::createFromNpk("sprite/newtitle/nangua.img", 0);
if (sprite1) {
sprite1->SetPosition(0, 0);
sprite1->SetScale(5.0f);
menuScene->AddActor(sprite1);
} else {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create sprite from NPK!");
}
SoundPackArchive &archive = SoundPackArchive::get();
archive.setSoundPackDirectory("assets/SoundPacks");
archive.init();
// auto sound = Sound::loadFromNpk("sounds/ui/adventurer_maker_name.ogg");
// if (sound) {
// sound->play();
// } else {
// SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to load sound!");
// }
auto music = Music::loadFromNpk("sounds/ui/amazing_box.ogg");
if (music) {
music->play();
} else {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to load music!");
}
app.run();
app.shutdown();