Funkin/source/MusicBeatState.hx

73 lines
1.4 KiB
Haxe
Raw Normal View History

package;
import Conductor.BPMChangeEvent;
import flixel.FlxG;
import flixel.addons.transition.FlxTransitionableState;
2020-10-12 03:52:21 +00:00
import flixel.addons.ui.FlxUIState;
2021-01-16 22:21:06 +00:00
import flixel.math.FlxRect;
2020-10-24 09:19:13 +00:00
import flixel.util.FlxTimer;
2020-10-12 03:52:21 +00:00
class MusicBeatState extends FlxUIState
{
2020-10-13 08:07:04 +00:00
private var curStep:Int = 0;
private var curBeat:Int = 0;
2020-10-28 08:24:56 +00:00
private var controls(get, never):Controls;
inline function get_controls():Controls
return PlayerSettings.player1.controls;
2020-10-13 08:07:04 +00:00
override function create()
{
2021-01-16 22:21:06 +00:00
if (transIn != null)
trace('reg ' + transIn.region);
super.create();
}
2020-10-10 03:22:07 +00:00
override function update(elapsed:Float)
{
//everyStep();
var oldStep:Int = curStep;
2020-10-10 03:22:07 +00:00
updateCurStep();
2020-11-21 10:43:04 +00:00
updateBeat();
2020-10-13 08:07:04 +00:00
if (oldStep != curStep && curStep >= 0)
stepHit();
2020-10-10 03:22:07 +00:00
super.update(elapsed);
}
2020-11-21 10:43:04 +00:00
private function updateBeat():Void
{
curBeat = Math.floor(curStep / 4);
2020-11-21 10:43:04 +00:00
}
private function updateCurStep():Void
{
var lastChange:BPMChangeEvent = {
stepTime: 0,
songTime: 0,
bpm: 0
}
for (i in 0...Conductor.bpmChangeMap.length)
{
if (Conductor.songPosition >= Conductor.bpmChangeMap[i].songTime)
lastChange = Conductor.bpmChangeMap[i];
}
curStep = lastChange.stepTime + Math.floor((Conductor.songPosition - lastChange.songTime) / Conductor.stepCrochet);
}
public function stepHit():Void
{
if (curStep % 4 == 0)
2020-10-10 03:22:07 +00:00
beatHit();
}
public function beatHit():Void
{
//do literally nothing dumbass
}
}