diff --git a/source/funkin/backend/chart/ChartData.hx b/source/funkin/backend/chart/ChartData.hx index c2d068e8..425cfc3a 100644 --- a/source/funkin/backend/chart/ChartData.hx +++ b/source/funkin/backend/chart/ChartData.hx @@ -19,7 +19,7 @@ typedef ChartMetaData = { public var ?bpm:Float; public var ?displayName:String; public var ?beatsPerMeasure:Float; - public var ?stepsPerBeat:Float; + public var ?stepsPerBeat:Int; public var ?icon:String; public var ?color:Dynamic; public var ?difficulties:Array; diff --git a/source/funkin/backend/chart/FNFLegacyParser.hx b/source/funkin/backend/chart/FNFLegacyParser.hx index 78f7919b..e4e60d9b 100644 --- a/source/funkin/backend/chart/FNFLegacyParser.hx +++ b/source/funkin/backend/chart/FNFLegacyParser.hx @@ -221,7 +221,7 @@ typedef SwagSong = // ADDITIONAL STUFF THAT MAY NOT BE PRESENT IN CHART var ?maxHealth:Float; var ?beatsPerMeasure:Float; - var ?stepsPerBeat:Float; + var ?stepsPerBeat:Int; } typedef SwagSection = diff --git a/source/funkin/backend/scripting/events/AmountEvent.hx b/source/funkin/backend/scripting/events/AmountEvent.hx index a27b1f51..31ae18c6 100644 --- a/source/funkin/backend/scripting/events/AmountEvent.hx +++ b/source/funkin/backend/scripting/events/AmountEvent.hx @@ -4,7 +4,7 @@ final class AmountEvent extends CancellableEvent { /** * Amount */ - public var amount:Int; + public var amount:Null; /** * Shows whether or not psych users complained about this class diff --git a/source/funkin/backend/system/Conductor.hx b/source/funkin/backend/system/Conductor.hx index f9758b94..56dbfcd9 100644 --- a/source/funkin/backend/system/Conductor.hx +++ b/source/funkin/backend/system/Conductor.hx @@ -45,7 +45,7 @@ class Conductor /** * Number of steps per beat (bottom number in time signature). Defaults to 4. */ - public static var stepsPerBeat:Float = 4; + public static var stepsPerBeat:Int = 4; /** @@ -262,7 +262,7 @@ class Conductor } } - public static function changeBPM(newBpm:Float, beatsPerMeasure:Float = 4, stepsPerBeat:Float = 4) + public static function changeBPM(newBpm:Float, beatsPerMeasure:Float = 4, stepsPerBeat:Int = 4) { bpm = newBpm; diff --git a/source/funkin/backend/system/Flags.hx b/source/funkin/backend/system/Flags.hx index e250dfab..03a6b48c 100644 --- a/source/funkin/backend/system/Flags.hx +++ b/source/funkin/backend/system/Flags.hx @@ -55,7 +55,7 @@ class Flags { public static var WEEKS_LIST_MOD_MODE:Allow<"prepend", "override", "append"> = "override"; public static var DEFAULT_BPM:Float = 100.0; - public static var DEFAULT_BEATS_PER_MEASURE:Int = 4; + public static var DEFAULT_BEATS_PER_MEASURE:Float = 4; public static var DEFAULT_STEPS_PER_BEAT:Int = 4; public static var SUPPORTED_CHART_RUNTIME_FORMATS:Array = ["Legacy", "Psych Engine"]; diff --git a/source/funkin/backend/utils/CoolUtil.hx b/source/funkin/backend/utils/CoolUtil.hx index d0dd4a47..3f956e72 100644 --- a/source/funkin/backend/utils/CoolUtil.hx +++ b/source/funkin/backend/utils/CoolUtil.hx @@ -424,7 +424,7 @@ class CoolUtil var timeSignParsed:Array> = musicInfo["TimeSignature"] == null ? [] : [for(s in musicInfo["TimeSignature"].split("/")) Std.parseFloat(s)]; var beatsPerMeasure:Float = Flags.DEFAULT_BEATS_PER_MEASURE; - var stepsPerBeat:Float = Flags.DEFAULT_STEPS_PER_BEAT; + var stepsPerBeat:Int = Flags.DEFAULT_STEPS_PER_BEAT; // Check later, i dont think timeSignParsed can contain null, only nan if (timeSignParsed.length == 2 && !timeSignParsed.contains(null)) { diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index f68e1a10..0d5cd1a8 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -247,7 +247,7 @@ class PlayState extends MusicBeatState /** * Current song name (lowercase and spaces to dashes) */ - public var curSongID:String = ""; + public var curSongID:String = ""; /** * Current stage name */ @@ -737,7 +737,7 @@ class PlayState extends MusicBeatState // HUD INITIALIZATION & CAMERA INITIALIZATION #if REGION - var event = EventManager.get(AmountEvent).recycle(Flags.DEFAULT_STRUM_AMOUNT); + var event = EventManager.get(AmountEvent).recycle(null); if (!gameAndCharsEvent("onPreGenerateStrums", event).cancelled) { generateStrums(event.amount); gameAndCharsEvent("onPostGenerateStrums", event); @@ -1047,9 +1047,12 @@ class PlayState extends MusicBeatState return FlxSort.byValues(FlxSort.DESCENDING, p1.time, p2.time); }); - camZoomingInterval = cast songData.meta.beatsPerMeasure.getDefault(4); + var beatsPerMeasure:Float = songData.meta.beatsPerMeasure.getDefault(Flags.DEFAULT_BEATS_PER_MEASURE); + var stepsPerBeat:Int = songData.meta.stepsPerBeat.getDefault(Flags.DEFAULT_STEPS_PER_BEAT); - Conductor.changeBPM(songData.meta.bpm, cast songData.meta.beatsPerMeasure.getDefault(4), cast songData.meta.stepsPerBeat.getDefault(4)); + camZoomingInterval = Std.int(beatsPerMeasure); + + Conductor.changeBPM(songData.meta.bpm, beatsPerMeasure, stepsPerBeat); curSong = songData.meta.name.toLowerCase(); curSongID = curSong.replace(" ", "-"); @@ -1072,9 +1075,12 @@ class PlayState extends MusicBeatState } @:dox(hide) - private inline function generateStrums(amount:Int = 4):Void - for(p in strumLines) - p.generateStrums(amount); + private inline function generateStrums(amount:Null = null):Void { + for(p in strumLines) { + var kc = amount != null ? amount : Flags.DEFAULT_STRUM_AMOUNT; + p.generateStrums(kc); + } + } @:dox(hide) override function openSubState(SubState:FlxSubState)