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