[update] Added debug-music-offset-beat command-line option.
This commit is contained in:
parent
c146ab5366
commit
d98d0be7b7
@ -36,11 +36,16 @@ int main(string[] unparsed_args) {
|
||||
|
||||
private bool ParseArgs(string[] unparsed_args, out Args args) {
|
||||
auto helpinfo = unparsed_args.getopt(
|
||||
"debug-music-offset-beat", &args.debug_music_offset_beat,
|
||||
"debug-music-index", &args.debug_music_index,
|
||||
"window-size", &args.window_size
|
||||
);
|
||||
|
||||
auto valid = true;
|
||||
if (args.debug_music_offset_beat < 0) {
|
||||
"invalid music offset (it should be 0 or more)".writeln;
|
||||
valid = false;
|
||||
}
|
||||
if (args.window_size <= 100) {
|
||||
"invalid window size (it should be 100 or more)".writeln;
|
||||
valid = false;
|
||||
|
@ -9,4 +9,6 @@ struct Args {
|
||||
|
||||
///
|
||||
int debug_music_index = -1;
|
||||
///
|
||||
float debug_music_offset_beat = 0;
|
||||
}
|
||||
|
@ -35,17 +35,18 @@ class LoadingScene : SceneInterface {
|
||||
}
|
||||
|
||||
///
|
||||
void Initialize(Music music) {
|
||||
void Initialize(Music music, float offset_beat = 0) {
|
||||
music_ = music;
|
||||
offset_beat_ = offset_beat;
|
||||
|
||||
first_drawn_ = false;
|
||||
}
|
||||
override SceneInterface Update(KeyInput input) {
|
||||
if (first_drawn_) {
|
||||
// TODO: parallelize contex creation
|
||||
// TODO: parallelize context creation
|
||||
auto context = music_.CreatePlayerContext(
|
||||
vec2i(args_.window_size, args_.window_size), programs_.player);
|
||||
play_scene_.Initialize(music_, context);
|
||||
play_scene_.Initialize(music_, context, offset_beat_);
|
||||
return play_scene_;
|
||||
}
|
||||
return this;
|
||||
@ -67,6 +68,7 @@ class LoadingScene : SceneInterface {
|
||||
LobbyWorld lobby_;
|
||||
|
||||
Music music_;
|
||||
float offset_beat_;
|
||||
|
||||
bool first_drawn_;
|
||||
}
|
||||
|
@ -64,8 +64,9 @@ class Music {
|
||||
}
|
||||
|
||||
///
|
||||
void PlayForGame() {
|
||||
sfMusic_setPlayingOffset(music_, sfMilliseconds(0));
|
||||
void PlayForGame(float offset_beat) {
|
||||
sfMusic_setPlayingOffset(music_,
|
||||
sfMilliseconds((offset_beat*bpm_ / 60f / 1e-6f).to!int));
|
||||
sfMusic_play(music_);
|
||||
}
|
||||
///
|
||||
|
@ -35,13 +35,13 @@ class PlayScene : SceneInterface {
|
||||
}
|
||||
|
||||
///
|
||||
void Initialize(Music music, sjplayer.Context context) {
|
||||
void Initialize(Music music, sjplayer.Context context, float offset_beat = 0) {
|
||||
music_ = music;
|
||||
context_ = context;
|
||||
|
||||
score_ = BaseScore;
|
||||
|
||||
music_.PlayForGame();
|
||||
music_.PlayForGame(offset_beat);
|
||||
}
|
||||
override SceneInterface Update(KeyInput input) {
|
||||
beat_ = music_.beat;
|
||||
|
Reference in New Issue
Block a user