diff --git a/buildnumber.txt b/buildnumber.txt index 8e20b01e..f3409cd6 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2202 \ No newline at end of file +2204 \ No newline at end of file diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 077d56ef..7f0f926c 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -1656,6 +1656,12 @@ class PlayState extends MusicBeatState scripts.call("stepHit", [curStep]); } + override function measureHit(curMeasure:Int) + { + super.measureHit(curMeasure); + scripts.call("measureHit", [curMeasure]); + } + override function beatHit(curBeat:Int) { super.beatHit(curBeat); diff --git a/source/funkin/utils/CoolUtil.hx b/source/funkin/utils/CoolUtil.hx index 59ae586e..4e9e03fb 100644 --- a/source/funkin/utils/CoolUtil.hx +++ b/source/funkin/utils/CoolUtil.hx @@ -167,10 +167,21 @@ class CoolUtil var infoPath = '${Path.withoutExtension(path)}.ini'; if (Assets.exists(infoPath)) { var musicInfo = IniUtil.parseAsset(infoPath, [ - "BPM" => null + "BPM" => null, + "TimeSignature" => "2/2" ]); + + var timeSignParsed:Array> = musicInfo["TimeSignature"] == null ? [] : [for(s in musicInfo["TimeSignature"].split("/")) Std.parseFloat(s)]; + var beatsPerMesure:Float = 4; + var stepsPerBeat:Float = 4; + + if (timeSignParsed.length == 2 && !timeSignParsed.contains(null)) { + beatsPerMesure = timeSignParsed[0] == null || timeSignParsed[0] <= 0 ? 4 : cast timeSignParsed[0]; + stepsPerBeat = timeSignParsed[1] == null || timeSignParsed[1] <= 0 ? 4 : cast timeSignParsed[1]; + } + var parsedBPM:Null = Std.parseFloat(musicInfo["BPM"]); - Conductor.changeBPM(parsedBPM == null ? DefaultBPM : parsedBPM); + Conductor.changeBPM(parsedBPM == null ? DefaultBPM : parsedBPM, beatsPerMesure, stepsPerBeat); } else Conductor.changeBPM(DefaultBPM); }