2020-10-28 09:26:33 +00:00
|
|
|
package;
|
|
|
|
|
2021-02-11 22:06:26 +00:00
|
|
|
import Conductor.BPMChangeEvent;
|
2020-11-06 09:57:00 +00:00
|
|
|
import flixel.FlxG;
|
2020-10-28 09:26:33 +00:00
|
|
|
import flixel.FlxSubState;
|
|
|
|
|
|
|
|
class MusicBeatSubstate extends FlxSubState
|
|
|
|
{
|
|
|
|
public function new()
|
|
|
|
{
|
|
|
|
super();
|
|
|
|
}
|
|
|
|
|
|
|
|
private var lastBeat:Float = 0;
|
|
|
|
private var lastStep:Float = 0;
|
|
|
|
|
|
|
|
private var totalBeats:Int = 0;
|
|
|
|
private var totalSteps:Int = 0;
|
|
|
|
|
|
|
|
private var curStep:Int = 0;
|
|
|
|
private var curBeat:Int = 0;
|
|
|
|
private var controls(get, never):Controls;
|
|
|
|
|
|
|
|
inline function get_controls():Controls
|
|
|
|
return PlayerSettings.player1.controls;
|
|
|
|
|
|
|
|
override function create()
|
|
|
|
{
|
|
|
|
#if (!web)
|
|
|
|
TitleState.soundExt = '.ogg';
|
|
|
|
#end
|
|
|
|
|
|
|
|
super.create();
|
|
|
|
}
|
|
|
|
|
|
|
|
override function update(elapsed:Float)
|
|
|
|
{
|
2021-02-12 00:58:11 +00:00
|
|
|
//everyStep();
|
|
|
|
var oldStep:Int = curStep;
|
2020-10-28 09:26:33 +00:00
|
|
|
|
|
|
|
updateCurStep();
|
2021-02-12 00:58:11 +00:00
|
|
|
|
|
|
|
if (oldStep != curStep && curStep > 0)
|
|
|
|
stepHit();
|
|
|
|
|
2021-02-11 22:06:26 +00:00
|
|
|
curBeat = Math.floor(curStep / 4);
|
2020-10-28 09:26:33 +00:00
|
|
|
|
|
|
|
super.update(elapsed);
|
|
|
|
}
|
|
|
|
|
|
|
|
private function updateCurStep():Void
|
|
|
|
{
|
2021-02-11 22:06:26 +00:00
|
|
|
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);
|
2020-10-28 09:26:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function stepHit():Void
|
|
|
|
{
|
|
|
|
totalSteps += 1;
|
|
|
|
lastStep += Conductor.stepCrochet;
|
|
|
|
|
|
|
|
if (totalSteps % 4 == 0)
|
|
|
|
beatHit();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function beatHit():Void
|
|
|
|
{
|
|
|
|
lastBeat += Conductor.crochet;
|
|
|
|
totalBeats += 1;
|
|
|
|
}
|
|
|
|
}
|