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. * This is useful for hot reloading assets during development. */ class ReloadAssetsDebugPlugin extends FlxBasic { public function new() { super(); } public static function initialize():Void { FlxG.plugins.addPlugin(new ReloadAssetsDebugPlugin()); } public override function update(elapsed:Float):Void { super.update(elapsed); #if html5 if (FlxG.keys.justPressed.FIVE && FlxG.keys.pressed.SHIFT) #else if (FlxG.keys.justPressed.F5) #end { 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(); } } } public override function destroy():Void { super.destroy(); } }