diff --git a/source/funkin/chart/Chart.hx b/source/funkin/chart/Chart.hx index 823a33ab..7c898d0c 100644 --- a/source/funkin/chart/Chart.hx +++ b/source/funkin/chart/Chart.hx @@ -70,8 +70,6 @@ class Chart { } } } - if (data.difficulties.length <= 0) - data.difficulties.push("CHART MISSING"); return data; } diff --git a/source/funkin/editors/ui/UISprite.hx b/source/funkin/editors/ui/UISprite.hx index a48d14d5..9d95dd71 100644 --- a/source/funkin/editors/ui/UISprite.hx +++ b/source/funkin/editors/ui/UISprite.hx @@ -1,6 +1,5 @@ package funkin.editors.ui; -import flixel.util.FlxDestroyUtil; import flixel.math.FlxRect; import openfl.ui.MouseCursor; diff --git a/source/funkin/game/HudCamera.hx b/source/funkin/game/HudCamera.hx index 73ab2ffb..dea1ba06 100644 --- a/source/funkin/game/HudCamera.hx +++ b/source/funkin/game/HudCamera.hx @@ -21,7 +21,6 @@ import flixel.math.FlxRect; import flixel.system.FlxAssets.FlxShader; import flixel.util.FlxAxes; import flixel.util.FlxColor; -import flixel.util.FlxDestroyUtil; import flixel.util.FlxSpriteUtil; import openfl.display.BlendMode; import openfl.filters.BitmapFilter; diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index b8bbd01d..22db28b9 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -9,7 +9,6 @@ import funkin.menus.StoryMenuState.WeekData; import funkin.ui.FunkinText; import flixel.group.FlxSpriteGroup; import funkin.scripting.Script; -import flixel.util.FlxDestroyUtil; import funkin.scripting.ScriptPack; import flixel.FlxSubState; import flixel.addons.transition.FlxTransitionableState; @@ -1463,7 +1462,7 @@ class PlayState extends MusicBeatState if (event.showRating || (event.showRating == null && event.player && !note.isSustainNote)) { var rating:FlxSprite = comboGroup.recycle(FlxSprite); - rating.resetSprite(-40, -60); + rating.resetSprite(comboGroup.x + -40, comboGroup.y + -60); comboGroup.remove(rating, true); songScore += score; @@ -1474,7 +1473,7 @@ class PlayState extends MusicBeatState rating.velocity.x -= FlxG.random.int(0, 10); var comboSpr:FlxSprite = comboGroup.recycle(FlxSprite).loadAnimatedGraphic(Paths.image('${event.ratingPrefix}combo${event.ratingSuffix}')); - comboSpr.resetSprite(0, 0); + comboSpr.resetSprite(comboGroup.x, comboGroup.y); comboGroup.remove(comboSpr, true); comboSpr.acceleration.y = 600; comboSpr.velocity.y -= 150; @@ -1497,7 +1496,7 @@ class PlayState extends MusicBeatState for (i in 0...separatedScore.length) { var numScore:FlxSprite = comboGroup.recycle(FlxSprite).loadAnimatedGraphic(Paths.image('${event.ratingPrefix}num${separatedScore.charAt(i)}${event.ratingSuffix}')); - numScore.resetSprite((43 * i) - 90, 80); + numScore.resetSprite(comboGroup.x + (43 * i) - 90, comboGroup.y + 80); comboGroup.remove(numScore, true); numScore.antialiasing = event.numAntialiasing; numScore.scale.set(event.numScale, event.numScale); diff --git a/source/funkin/import.hx b/source/funkin/import.hx index 233ef4f3..4af45322 100644 --- a/source/funkin/import.hx +++ b/source/funkin/import.hx @@ -19,6 +19,7 @@ import flixel.FlxCamera; import flixel.FlxObject; import flixel.math.FlxMath; import flixel.tweens.FlxEase; +import flixel.util.FlxDestroyUtil; import funkin.ui.Alphabet; import flixel.group.FlxGroup.FlxTypedGroup; diff --git a/source/funkin/menus/PauseSubState.hx b/source/funkin/menus/PauseSubState.hx index 94697b98..85c5bc41 100644 --- a/source/funkin/menus/PauseSubState.hx +++ b/source/funkin/menus/PauseSubState.hx @@ -13,6 +13,7 @@ import flixel.tweens.FlxTween; import flixel.util.FlxColor; import funkin.options.keybinds.KeybindsOptions; import funkin.menus.StoryMenuState; +import funkin.system.FunkinParentDisabler; class PauseSubState extends MusicBeatSubstate { @@ -39,6 +40,8 @@ class PauseSubState extends MusicBeatSubstate { super.create(); + add(new FunkinParentDisabler()); + pauseScript = Script.create(Paths.script(script)); pauseScript.setParent(this); pauseScript.load(); diff --git a/source/funkin/options/OptionsTree.hx b/source/funkin/options/OptionsTree.hx index f7122176..124b15ba 100644 --- a/source/funkin/options/OptionsTree.hx +++ b/source/funkin/options/OptionsTree.hx @@ -1,6 +1,5 @@ package funkin.options; -import flixel.util.FlxDestroyUtil; class OptionsTree extends FlxTypedGroup { public var lastMenu:OptionsScreen; public override function new() { diff --git a/source/funkin/scripting/MultiThreadedScript.hx b/source/funkin/scripting/MultiThreadedScript.hx index 4f82de84..ee426f53 100644 --- a/source/funkin/scripting/MultiThreadedScript.hx +++ b/source/funkin/scripting/MultiThreadedScript.hx @@ -5,7 +5,6 @@ import sys.thread.Thread; #end import hscript.IHScriptCustomBehaviour; -import flixel.util.FlxDestroyUtil; class MultiThreadedScript implements IFlxDestroyable implements IHScriptCustomBehaviour { var thread:#if ALLOW_MULTITHREADING Thread #else Dynamic #end; diff --git a/source/funkin/system/FunkinParentDisabler.hx b/source/funkin/system/FunkinParentDisabler.hx new file mode 100644 index 00000000..dd63f4c3 --- /dev/null +++ b/source/funkin/system/FunkinParentDisabler.hx @@ -0,0 +1,48 @@ +package funkin.system; + +import flixel.util.FlxTimer; +import flixel.tweens.FlxTween; + +/** + * Just add this in any substate to disable tweens, timers & camera movement from parent state. + */ +class FunkinParentDisabler extends FlxBasic { + var __tweens:Array; + var __cameras:Array; + var __timers:Array; + var __replaceUponDestroy:Bool; + public function new(replaceUponDestroy:Bool = true) { + super(); + __replaceUponDestroy = replaceUponDestroy; + @:privateAccess { + // tweens + __tweens = FlxTween.globalManager._tweens.copy(); + FlxTween.globalManager._tweens = []; + + // timers + __timers = FlxTimer.globalManager._timers.copy(); + FlxTimer.globalManager._timers = []; + + // cameras + __cameras = [for(c in FlxG.cameras.list) if (c.followActive) c]; + for(c in __cameras) c.followActive = false; + } + } + + public override function update(elapsed:Float) {} + public override function draw() {} + + public override function destroy() { + super.destroy(); + @:privateAccess { + if (__replaceUponDestroy) { + FlxTween.globalManager._tweens = __tweens; + FlxTimer.globalManager._timers = __timers; + } else { + for(t in __tweens) FlxTween.globalManager._tweens.push(t); + for(t in __timers) FlxTimer.globalManager._timers.push(t); + } + for(c in __cameras) c.followActive = true; + } + } +} \ No newline at end of file diff --git a/source/funkin/system/FunkinSprite.hx b/source/funkin/system/FunkinSprite.hx index 2c615915..c34a5653 100644 --- a/source/funkin/system/FunkinSprite.hx +++ b/source/funkin/system/FunkinSprite.hx @@ -9,7 +9,6 @@ import flixel.math.FlxMatrix; import flixel.math.FlxRect; import flixel.math.FlxPoint; import funkin.interfaces.IBeatReceiver; -import flixel.util.FlxDestroyUtil; @:enum abstract XMLAnimType(Int) diff --git a/source/funkin/updating/UpdateScreen.hx b/source/funkin/updating/UpdateScreen.hx index 11fdf026..502ee771 100644 --- a/source/funkin/updating/UpdateScreen.hx +++ b/source/funkin/updating/UpdateScreen.hx @@ -1,7 +1,6 @@ package funkin.updating; import funkin.shaders.CustomShader; -import flixel.util.FlxDestroyUtil; import funkin.ui.FunkinText; import funkin.menus.TitleState; import flixel.math.FlxRect;