[update] Improved the codes to load audio files.
This commit is contained in:
parent
d3b02a184f
commit
7c455ed83a
@ -7,27 +7,23 @@ import sj.AbstractScene,
|
||||
sj.KeyInput,
|
||||
sj.LobbyWorld,
|
||||
sj.ProgramSet,
|
||||
sj.SceneInterface;
|
||||
sj.SceneInterface,
|
||||
sj.util.audio;
|
||||
|
||||
///
|
||||
class SelectScene : AbstractScene {
|
||||
public:
|
||||
///
|
||||
enum SpotlightSound = cast(ubyte[]) import("sounds/spotlight.wav");
|
||||
|
||||
///
|
||||
this(LobbyWorld lobby, ProgramSet program) {
|
||||
lobby_ = lobby;
|
||||
|
||||
const buf = SpotlightSound;
|
||||
spotlight_buffer_ = sfSoundBuffer_createFromMemory(buf.ptr, buf.length);
|
||||
sound_ = sfSound_create();
|
||||
|
||||
first_ = true;
|
||||
sound_ = sfSound_create();
|
||||
soundres_.Load();
|
||||
}
|
||||
~this() {
|
||||
sfSound_destroy(sound_);
|
||||
sfSoundBuffer_destroy(spotlight_buffer_);
|
||||
soundres_.Unload();
|
||||
}
|
||||
|
||||
///
|
||||
@ -36,12 +32,6 @@ class SelectScene : AbstractScene {
|
||||
}
|
||||
|
||||
override void Update(KeyInput input) {
|
||||
if (first_) {
|
||||
sfSound_setBuffer(sound_, spotlight_buffer_);
|
||||
sfSound_play(sound_);
|
||||
}
|
||||
first_ = false;
|
||||
|
||||
if (input.up) GoNextScene(title_scene_);
|
||||
}
|
||||
override void Draw() {
|
||||
@ -49,13 +39,25 @@ class SelectScene : AbstractScene {
|
||||
}
|
||||
|
||||
private:
|
||||
static struct SoundResources {
|
||||
public:
|
||||
enum Spotlight = cast(ubyte[]) import("sounds/spotlight.wav");
|
||||
|
||||
sfSoundBuffer* spotlight;
|
||||
|
||||
void Load() {
|
||||
spotlight = CreateSoundBufferFromBuffer(Spotlight);
|
||||
}
|
||||
void Unload() {
|
||||
sfSoundBuffer_destroy(spotlight);
|
||||
}
|
||||
}
|
||||
|
||||
SceneInterface title_scene_;
|
||||
|
||||
LobbyWorld lobby_;
|
||||
|
||||
sfSoundBuffer* spotlight_buffer_;
|
||||
|
||||
sfSound* sound_;
|
||||
|
||||
bool first_;
|
||||
SoundResources soundres_;
|
||||
}
|
||||
|
9
src/sj/util/audio.d
Normal file
9
src/sj/util/audio.d
Normal file
@ -0,0 +1,9 @@
|
||||
/// License: MIT
|
||||
module sj.util.audio;
|
||||
|
||||
import derelict.sfml2.audio;
|
||||
|
||||
///
|
||||
sfSoundBuffer* CreateSoundBufferFromBuffer(in ubyte[] buf) {
|
||||
return sfSoundBuffer_createFromMemory(buf.ptr, buf.length);
|
||||
}
|
Reference in New Issue
Block a user