Initial engine repository
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#pragma once
|
||||
|
||||
#include <frostbite2D/base/RefObject.h>
|
||||
#include <frostbite2D/types/type_alias.h>
|
||||
#include <string>
|
||||
#include <SDL2/SDL_mixer.h>
|
||||
|
||||
namespace frostbite2D {
|
||||
|
||||
/**
|
||||
* @brief 音效类
|
||||
*
|
||||
* 用于加载和播放短音频文件,支持从文件或内存加载。
|
||||
* 支持 WAV、OGG 等格式。
|
||||
*/
|
||||
class Sound : public RefObject {
|
||||
public:
|
||||
static Ptr<Sound> loadFromPath(const std::string& path);
|
||||
static Ptr<Sound> loadFromFile(const std::string& path);
|
||||
static Ptr<Sound> loadFromMemory(const uint8* data, size_t size);
|
||||
static Ptr<Sound> loadFromNpk(const std::string& audioPath);
|
||||
|
||||
~Sound();
|
||||
|
||||
int play(int loops = 0, int channel = -1);
|
||||
int playLoop(int channel = -1);
|
||||
void setVolume(float volume);
|
||||
float getVolume() const;
|
||||
int getLastChannel() const;
|
||||
|
||||
static void stop(int channel);
|
||||
static void stopAll();
|
||||
static bool isPlaying(int channel);
|
||||
static void pause(int channel);
|
||||
static void resume(int channel);
|
||||
static void pauseAll();
|
||||
static void resumeAll();
|
||||
|
||||
const std::string& getPath() const { return path_; }
|
||||
|
||||
private:
|
||||
Sound(Mix_Chunk* chunk, const std::string& path = "");
|
||||
|
||||
Mix_Chunk* chunk_ = nullptr;
|
||||
std::string path_;
|
||||
float volume_ = 1.0f;
|
||||
int lastChannel_ = -1;
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user