[update] Replaced the test program with the subproject of sjplayer.

This commit is contained in:
2019-10-05 00:00:00 +00:00
parent 826f6d76eb
commit 9c5fb1af8c
5 changed files with 77 additions and 48 deletions

View File

@@ -0,0 +1,14 @@
{
"name": "standalone",
"sourcePaths": ["."],
"mainSourceFile": "main.d",
"targetPath": ".bin",
"dependencies": {
"sjplayer": {"path": "../"},
"gl4d": {"path": "../../thirdparty/gl4d"},
"derelict-sfml2": "~>4.0.0-beta.2"
}
}

View File

@@ -0,0 +1,57 @@
/// License: MIT
import std;
import derelict.sfml2.audio,
derelict.sfml2.system,
derelict.sfml2.window;
import gl4d;
int main(string[] args) {
(args.length == 4).enforce;
const music_file = args[1];
const bpm = args[2].to!float;
const script_file = args[3];
auto win = Initialize();
scope(exit) sfWindow_destroy(win);
auto music = sfMusic_createFromFile(music_file.toStringz).enforce;
scope(exit) sfMusic_destroy(music);
sfMusic_play(music);
while (true) {
sfEvent e;
sfWindow_pollEvent(win, &e);
if (e.type == sfEvtClosed) break;
const msecs = sfMusic_getPlayingOffset(music).microseconds * 1e-6f;
const beat = msecs/60f * bpm;
sfWindow_display(win);
}
return 0;
}
sfWindow* Initialize() {
DerelictSFML2System.load();
DerelictSFML2Window.load();
DerelictSFML2Audio .load();
sfContextSettings specs;
specs.depthBits = 24;
specs.stencilBits = 8;
specs.antialiasingLevel = 1;
specs.majorVersion = 3;
specs.minorVersion = 3;
specs.attributeFlags = sfContextCore;
auto win = sfWindow_create(sfVideoMode(600, 600),
"sjplayer".toStringz, sfClose | sfTitlebar, &specs).enforce;
sfWindow_setVerticalSyncEnabled(win, true);
sfWindow_setActive(win, true).enforce;
gl.ApplyContext();
return win;
}