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

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

View File

@ -3,5 +3,5 @@
"targetType": "none",
"subPackages": ["sjscript"]
"subPackages": ["sjscript", "sjplayer"]
}

View File

@ -3,7 +3,12 @@
"targetPath": ".bin",
"subPackages": [
"standalone"
],
"dependencies": {
"sjscript": {"path": "../sjscript"},
"gl4d": {"path": "../thirdparty/gl4d"}
}
}

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;
}

View File

@ -1,47 +0,0 @@
#!/usr/bin/env dub
/+ dub.json:
{
"name": "sjplayer",
"dependencies": {
"sjscript": {"path": "../sjscript"},
"derelict-sfml2": "~>4.0.0-beta.2"
},
"lflags-posix": ["-L../thirdparty/dsfml/lib"],
"lflags-windows": ["/LIBPATH:..\\thirdparty\\dsfml\\lib\\"]
} +/
import std;
import derelict.sfml2.audio,
derelict.sfml2.system,
derelict.sfml2.window;
int main(string[] args) {
DerelictSFML2System.load();
DerelictSFML2Window.load();
DerelictSFML2Audio.load();
sfContextSettings specs;
specs.depthBits = 32;
specs.stencilBits = 32;
specs.antialiasingLevel = 1;
specs.majorVersion = 3;
specs.minorVersion = 3;
auto win = sfWindow_create(
sfVideoMode(600, 600), "sjplayer".toStringz, sfDefaultStyle, &specs);
scope(exit) sfWindow_destroy(win);
sfWindow_setActive(win, true);
auto running = true;
while (running) {
sfEvent e;
sfWindow_pollEvent(win, &e);
running = e.type != sfEvtClosed;
sfWindow_display(win);
}
return 0;
}