mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-14 19:25:16 -05:00
Merge pull request #664 from FunkinCrew/gamerbross/chart-reload-f5
[PUBLIC PR] Pressing F5 in play state now reloads the chart data from your assets folder
This commit is contained in:
commit
b0a842c2c7
4 changed files with 17 additions and 68 deletions
|
@ -1348,64 +1348,13 @@ class PlayState extends MusicBeatSubState
|
|||
}
|
||||
|
||||
/**
|
||||
* Removes any references to the current stage, then clears the stage cache,
|
||||
* then reloads all the stages.
|
||||
*
|
||||
* This is useful for when you want to edit a stage without reloading the whole game.
|
||||
* Reloading works on both the JSON and the HXC, if applicable.
|
||||
*
|
||||
* Call this by pressing F5 on a debug build.
|
||||
*/
|
||||
override function debug_refreshModules():Void
|
||||
override function reloadAssets():Void
|
||||
{
|
||||
// Prevent further gameplay updates, which will try to reference dead objects.
|
||||
criticalFailure = true;
|
||||
|
||||
// Remove the current stage. If the stage gets deleted while it's still in use,
|
||||
// it'll probably crash the game or something.
|
||||
if (this.currentStage != null)
|
||||
{
|
||||
remove(currentStage);
|
||||
var event:ScriptEvent = new ScriptEvent(DESTROY, false);
|
||||
ScriptEventDispatcher.callEvent(currentStage, event);
|
||||
currentStage = null;
|
||||
}
|
||||
|
||||
if (!overrideMusic)
|
||||
{
|
||||
// Stop the instrumental.
|
||||
if (FlxG.sound.music != null)
|
||||
{
|
||||
FlxG.sound.music.destroy();
|
||||
FlxG.sound.music = null;
|
||||
}
|
||||
|
||||
// Stop the vocals.
|
||||
if (vocals != null && vocals.exists)
|
||||
{
|
||||
vocals.destroy();
|
||||
vocals = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Stop the instrumental.
|
||||
if (FlxG.sound.music != null)
|
||||
{
|
||||
FlxG.sound.music.stop();
|
||||
}
|
||||
|
||||
// Stop the vocals.
|
||||
if (vocals != null && vocals.exists)
|
||||
{
|
||||
vocals.stop();
|
||||
}
|
||||
}
|
||||
|
||||
super.debug_refreshModules();
|
||||
|
||||
var event:ScriptEvent = new ScriptEvent(CREATE, false);
|
||||
ScriptEventDispatcher.callEvent(currentSong, event);
|
||||
funkin.modding.PolymodHandler.forceReloadAssets();
|
||||
lastParams.targetSong = SongRegistry.instance.fetchEntry(currentSong.id);
|
||||
LoadingState.loadPlayState(lastParams);
|
||||
}
|
||||
|
||||
override function stepHit():Bool
|
||||
|
|
|
@ -78,9 +78,6 @@ class MusicBeatState extends FlxTransitionableState implements IEventHandler
|
|||
{
|
||||
// Emergency exit button.
|
||||
if (FlxG.keys.justPressed.F4) FlxG.switchState(() -> new MainMenuState());
|
||||
|
||||
// This can now be used in EVERY STATE YAY!
|
||||
if (FlxG.keys.justPressed.F5) debug_refreshModules();
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
|
@ -114,12 +111,10 @@ class MusicBeatState extends FlxTransitionableState implements IEventHandler
|
|||
ModuleHandler.callEvent(event);
|
||||
}
|
||||
|
||||
function debug_refreshModules()
|
||||
function reloadAssets()
|
||||
{
|
||||
PolymodHandler.forceReloadAssets();
|
||||
|
||||
this.destroy();
|
||||
|
||||
// Create a new instance of the current state, so old data is cleared.
|
||||
FlxG.resetState();
|
||||
}
|
||||
|
|
|
@ -72,9 +72,6 @@ class MusicBeatSubState extends FlxSubState implements IEventHandler
|
|||
// Emergency exit button.
|
||||
if (FlxG.keys.justPressed.F4) FlxG.switchState(() -> new MainMenuState());
|
||||
|
||||
// This can now be used in EVERY STATE YAY!
|
||||
if (FlxG.keys.justPressed.F5) debug_refreshModules();
|
||||
|
||||
// Display Conductor info in the watch window.
|
||||
FlxG.watch.addQuick("musicTime", FlxG.sound.music?.time ?? 0.0);
|
||||
Conductor.watchQuick(conductorInUse);
|
||||
|
@ -82,7 +79,7 @@ class MusicBeatSubState extends FlxSubState implements IEventHandler
|
|||
dispatchEvent(new UpdateScriptEvent(elapsed));
|
||||
}
|
||||
|
||||
function debug_refreshModules()
|
||||
function reloadAssets()
|
||||
{
|
||||
PolymodHandler.forceReloadAssets();
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package funkin.util.plugins;
|
||||
|
||||
import flixel.FlxG;
|
||||
import flixel.FlxBasic;
|
||||
import funkin.ui.MusicBeatState;
|
||||
import funkin.ui.MusicBeatSubState;
|
||||
|
||||
/**
|
||||
* A plugin which adds functionality to press `F5` to reload all game assets, then reload the current state.
|
||||
|
@ -28,10 +31,15 @@ class ReloadAssetsDebugPlugin extends FlxBasic
|
|||
if (FlxG.keys.justPressed.F5)
|
||||
#end
|
||||
{
|
||||
funkin.modding.PolymodHandler.forceReloadAssets();
|
||||
var state:Dynamic = FlxG.state;
|
||||
if (state is MusicBeatState || state is MusicBeatSubState) state.reloadAssets();
|
||||
else
|
||||
{
|
||||
funkin.modding.PolymodHandler.forceReloadAssets();
|
||||
|
||||
// Create a new instance of the current state, so old data is cleared.
|
||||
FlxG.resetState();
|
||||
// Create a new instance of the current state, so old data is cleared.
|
||||
FlxG.resetState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue