1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2025-09-01 03:15:53 +00:00
Funkin/source/funkin/ui/charSelect/CharSelectAtlasHandler.hx
2025-08-28 22:48:53 -05:00

46 lines
1.2 KiB
Haxe

package funkin.ui.charSelect;
import animate.FlxAnimateFrames;
import flixel.FlxG;
/**
* Utility class for handling the atlases loaded by CharSelect & co. in an efficient way.
* TODO: Maybe this should be a general utility class instead?
*/
class CharSelectAtlasHandler
{
static final framesCache:Map<String, FlxAnimateFrames> = [];
public static function loadAtlas(path:String, ?settings:FlxAnimateSettings):Null<FlxAnimateFrames>
{
if (framesCache.exists(path)) return framesCache.get(path);
var result:FlxAnimateFrames = FlxAnimateFrames.fromAnimate(Paths.animateAtlas(path),
{
swfMode: settings?.swfMode ?? true,
filterQuality: settings?.filterQuality ?? MEDIUM,
cacheOnLoad: settings?.cacheOnLoad ?? false
});
if (result == null)
{
FlxG.log.error('Failed to load atlas at path $path!');
return null;
}
result.parent.destroyOnNoUse = false;
framesCache.set(path, result);
return result;
}
public static function clearAtlasCache():Void
{
for (frames in framesCache.iterator())
{
// NOTE: Doing this already calls checkUseCount!
frames.parent.destroyOnNoUse = true;
}
framesCache.clear();
}
}