mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-12-25 22:47:52 +00:00
Merge remote-tracking branch 'origin/master' into feature/scripted-modules
This commit is contained in:
commit
0b17f74f48
|
@ -1,8 +1,5 @@
|
|||
package funkin;
|
||||
|
||||
import funkin.modding.module.ModuleHandler;
|
||||
import funkin.play.stage.StageData;
|
||||
import funkin.charting.ChartingState;
|
||||
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
|
||||
import flixel.addons.transition.FlxTransitionableState;
|
||||
import flixel.addons.transition.TransitionData;
|
||||
|
@ -10,12 +7,18 @@ import flixel.graphics.FlxGraphic;
|
|||
import flixel.math.FlxPoint;
|
||||
import flixel.math.FlxRect;
|
||||
import flixel.util.FlxColor;
|
||||
import openfl.display.BitmapData;
|
||||
import funkin.charting.ChartingState;
|
||||
import funkin.charting.ChartingState;
|
||||
import funkin.modding.module.ModuleHandler;
|
||||
import funkin.play.PicoFight;
|
||||
import funkin.play.PlayState;
|
||||
import funkin.play.stage.StageData;
|
||||
import funkin.play.stage.StageData;
|
||||
import funkin.ui.PreferencesMenu;
|
||||
import funkin.ui.animDebugShit.DebugBoundingState;
|
||||
import funkin.ui.stageBuildShit.StageBuilderState;
|
||||
import funkin.util.macro.MacroUtil;
|
||||
import funkin.play.PlayState;
|
||||
import openfl.display.BitmapData;
|
||||
|
||||
using StringTools;
|
||||
|
||||
|
@ -176,7 +179,7 @@ class InitState extends FlxTransitionableState
|
|||
#elseif FIGHT
|
||||
FlxG.switchState(new PicoFight());
|
||||
#elseif ANIMDEBUG
|
||||
FlxG.switchState(new ui.animDebugShit.DebugBoundingState());
|
||||
FlxG.switchState(new DebugBoundingState());
|
||||
#elseif NETTEST
|
||||
FlxG.switchState(new netTest.NetTest());
|
||||
#else
|
||||
|
|
|
@ -80,8 +80,8 @@ class Note extends FlxSprite
|
|||
public static var RED_NOTE:Int = 3;
|
||||
|
||||
// SCORING STUFF
|
||||
public static var safeFrames:Int = 10;
|
||||
public static var HIT_WINDOW:Float = (safeFrames / 60) * 1000; // 166.67 ms hit window
|
||||
public static var HIT_WINDOW:Float = (10 / 60) * 1000; // 166.67 ms hit window (10 frames at 60fps)
|
||||
// thresholds are fractions of HIT_WINDOW ^^
|
||||
// anything above bad threshold is shit
|
||||
public static var BAD_THRESHOLD:Float = 0.8; // 125ms , 8 frames
|
||||
public static var GOOD_THRESHOLD:Float = 0.55; // 91.67ms , 5.5 frames
|
||||
|
|
|
@ -22,6 +22,8 @@ class NoteSplash extends FlxSprite
|
|||
|
||||
setupNoteSplash(x, y, noteData);
|
||||
|
||||
antialiasing = true;
|
||||
|
||||
// alpha = 0.75;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,10 @@ class PauseSubState extends MusicBeatSubstate
|
|||
|
||||
menuItems = pauseOG;
|
||||
|
||||
pauseMusic = new FlxSound().loadEmbedded(Paths.music('breakfast'), true, true);
|
||||
if (PlayState.storyWeek == 6) // consistent with logic that decides asset lib!!
|
||||
pauseMusic = new FlxSound().loadEmbedded(Paths.music('breakfast-pixel'), true, true);
|
||||
else
|
||||
pauseMusic = new FlxSound().loadEmbedded(Paths.music('breakfast'), true, true);
|
||||
pauseMusic.volume = 0;
|
||||
pauseMusic.play(false, FlxG.random.int(0, Std.int(pauseMusic.length / 2)));
|
||||
|
||||
|
|
|
@ -38,6 +38,31 @@ class VoicesGroup extends FlxTypedGroup<FlxSound>
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the largest deviation from the desired time inside this VoicesGroup.
|
||||
*
|
||||
* @param targetTime The time to check against.
|
||||
* If none is provided, it checks the time of all members against the first member of this VoicesGroup.
|
||||
* @return The largest deviation from the target time found.
|
||||
*/
|
||||
public function checkSyncError(?targetTime:Float):Float
|
||||
{
|
||||
var error:Float = 0;
|
||||
|
||||
forEachAlive(function(snd)
|
||||
{
|
||||
if (targetTime == null)
|
||||
targetTime = snd.time;
|
||||
else
|
||||
{
|
||||
var diff:Float = snd.time - targetTime;
|
||||
if (Math.abs(diff) > Math.abs(error))
|
||||
error = diff;
|
||||
}
|
||||
});
|
||||
return error;
|
||||
}
|
||||
|
||||
// prob a better / cleaner way to do all these forEach stuff?
|
||||
public function pause()
|
||||
{
|
||||
|
|
|
@ -5,7 +5,6 @@ import flixel.FlxObject;
|
|||
import flixel.FlxSprite;
|
||||
import flixel.FlxState;
|
||||
import flixel.FlxSubState;
|
||||
import flixel.addons.effects.FlxTrail;
|
||||
import flixel.addons.transition.FlxTransitionableState;
|
||||
import flixel.group.FlxGroup;
|
||||
import flixel.math.FlxMath;
|
||||
|
@ -541,11 +540,6 @@ class PlayState extends MusicBeatState implements IHook
|
|||
// REPOSITIONING PER STAGE
|
||||
switch (currentStageId)
|
||||
{
|
||||
case 'schoolEvil':
|
||||
var evilTrail = new FlxTrail(dad, null, 4, 24, 0.3, 0.069);
|
||||
// Go behind Spirit.
|
||||
evilTrail.zIndex = 190;
|
||||
add(evilTrail);
|
||||
case "tank":
|
||||
gf.y += 10;
|
||||
gf.x -= 30;
|
||||
|
@ -825,7 +819,7 @@ class PlayState extends MusicBeatState implements IHook
|
|||
|
||||
var gottaHitNote:Bool = section.mustHitSection;
|
||||
|
||||
if (songNotes.highStakes)
|
||||
if (songNotes.highStakes) // noteData > 3
|
||||
gottaHitNote = !section.mustHitSection;
|
||||
|
||||
var oldNote:Note;
|
||||
|
@ -838,6 +832,10 @@ class PlayState extends MusicBeatState implements IHook
|
|||
// swagNote.data = songNotes;
|
||||
swagNote.data.sustainLength = songNotes.sustainLength;
|
||||
swagNote.data.altNote = songNotes.altNote;
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
>>>>>>> origin/master
|
||||
swagNote.scrollFactor.set(0, 0);
|
||||
|
||||
var susLength:Float = swagNote.data.sustainLength;
|
||||
|
@ -939,10 +937,15 @@ class PlayState extends MusicBeatState implements IHook
|
|||
vocals.pause();
|
||||
|
||||
FlxG.sound.music.time = 0;
|
||||
|
||||
regenNoteData(); // loads the note data from start
|
||||
health = 1;
|
||||
songScore = 0;
|
||||
<<<<<<< HEAD
|
||||
Countdown.performCountdown(currentStageId.startsWith('school'));
|
||||
=======
|
||||
restartCountdownTimer();
|
||||
>>>>>>> origin/master
|
||||
|
||||
needsReset = false;
|
||||
}
|
||||
|
@ -1258,9 +1261,19 @@ class PlayState extends MusicBeatState implements IHook
|
|||
// TODO: Why the hell is the noteMiss logic in two different places?
|
||||
if (daNote.tooLate)
|
||||
{
|
||||
<<<<<<< HEAD
|
||||
var event:NoteScriptEvent = new NoteScriptEvent(ScriptEvent.NOTE_MISS, daNote, true);
|
||||
dispatchEvent(event);
|
||||
health -= 0.0775;
|
||||
=======
|
||||
if (curStage != null)
|
||||
{
|
||||
curStage.onNoteMiss(daNote);
|
||||
}
|
||||
|
||||
// lose less health on sustain notes!
|
||||
health -= 0.0775 * (daNote.isSustainNote ? 0.2 : 1); // if it's sustain, multiply it by 0.2 (not checked for balence yet), else keep it same (multiply by 1)
|
||||
>>>>>>> origin/master
|
||||
vocals.volume = 0;
|
||||
killCombo();
|
||||
}
|
||||
|
@ -1528,9 +1541,15 @@ class PlayState extends MusicBeatState implements IHook
|
|||
switch (currentStageId)
|
||||
{
|
||||
case 'limo':
|
||||
<<<<<<< HEAD
|
||||
cameraFollowPoint.x = currentStage.getBoyfriend().getMidpoint().x - 300;
|
||||
case 'mall':
|
||||
cameraFollowPoint.y = currentStage.getBoyfriend().getMidpoint().y - 200;
|
||||
=======
|
||||
camFollow.x = boyfriend.getMidpoint().x - 300;
|
||||
case 'mallXmas':
|
||||
camFollow.y = boyfriend.getMidpoint().y - 200;
|
||||
>>>>>>> origin/master
|
||||
case 'school' | 'schoolEvil':
|
||||
cameraFollowPoint.x = currentStage.getBoyfriend().getMidpoint().x - 200;
|
||||
cameraFollowPoint.y = currentStage.getBoyfriend().getMidpoint().y - 200;
|
||||
|
@ -1723,8 +1742,17 @@ class PlayState extends MusicBeatState implements IHook
|
|||
if (!super.stepHit())
|
||||
return false;
|
||||
|
||||
<<<<<<< HEAD
|
||||
if (Math.abs(FlxG.sound.music.time - (Conductor.songPosition - Conductor.offset)) > 20
|
||||
|| (currentSong.needsVoices && Math.abs(vocals.time - (Conductor.songPosition - Conductor.offset)) > 20))
|
||||
=======
|
||||
override function stepHit()
|
||||
{
|
||||
super.stepHit();
|
||||
|
||||
if (Math.abs(FlxG.sound.music.time - (Conductor.songPosition - Conductor.offset)) > 20
|
||||
|| Math.abs(vocals.checkSyncError(Conductor.songPosition - Conductor.offset)) > 20)
|
||||
>>>>>>> origin/master
|
||||
{
|
||||
resyncVocals();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue