Closed Joalor64GH closed 1 month ago
It should be able to replace any binary asset. You'd need to give more information about your setup for me to be able to help you.
Well, I think it might have something to do with this.
package backend;
#if FUTURE_POLYMOD
import polymod.Polymod;
import polymod.Polymod.Framework;
import polymod.backends.PolymodAssets.PolymodAssetType;
import polymod.format.ParseRules;
#end
class ModHandler {
private static final MOD_DIR:String = 'mods';
#if FUTURE_POLYMOD
private static final extensions:Map<String, PolymodAssetType> = [
'ogg' => AUDIO_GENERIC,
'png' => IMAGE,
'xml' => TEXT,
'json' => TEXT,
'txt' => TEXT,
'hxs' => TEXT,
'ttf' => FONT,
'otf' => FONT
];
public static var trackedMods:Array<ModMetadata> = [];
#end
public static function reload():Void {
#if FUTURE_POLYMOD
trace('Reloading Polymod...');
loadMods(getMods());
#else
trace("Polymod reloading is not supported on your Platform!");
#end
}
#if FUTURE_POLYMOD
public static function loadMods(folders:Array<String>):Void {
var loadedModlist:Array<ModMetadata> = Polymod.init({
modRoot: MOD_DIR,
dirs: folders,
framework: Framework.FLIXEL,
apiVersion: Lib.application.meta.get('version'),
errorCallback: onError,
parseRules: getParseRules(),
extensionMap: extensions,
frameworkParams: {
assetLibraryPaths: ["default" => "./"]
},
ignoredFiles: Polymod.getDefaultIgnoreList()
});
if (loadedModlist == null)
return;
trace('Loading Successful, ${loadedModlist.length} / ${folders.length} new mods.');
for (mod in loadedModlist)
trace('Name: ${mod.title}, [${mod.id}]');
}
public static function getMods():Array<String> {
trackedMods = [];
if (FlxG.save.data.disabledMods == null) {
FlxG.save.data.disabledMods = [];
FlxG.save.flush();
}
var daList:Array<String> = [];
trace('Searching for Mods...');
for (i in Polymod.scan(MOD_DIR, '*.*.*', onError)) {
trackedMods.push(i);
if (!FlxG.save.data.disabledMods.contains(i.id))
daList.push(i.id);
}
if (daList != null && daList.length > 0)
trace('Found ${daList.length} new mods.');
return daList != null && daList.length > 0 ? daList : [];
}
public static function getParseRules():ParseRules {
final output:ParseRules = ParseRules.getDefault();
output.addType("txt", TextFileFormat.LINES);
output.addType("hxs", TextFileFormat.PLAINTEXT);
return output != null ? output : null;
}
static function onError(error:PolymodError):Void {
switch (error.severity) {
case NOTICE:
trace(error.message);
case WARNING:
trace(error.message);
case ERROR:
trace(error.message);
}
}
#end
}
Or this:
public static function returnSound(key:String, ?cache:Bool = true):Sound {
if (Assets.exists(file('$key.ogg'), SOUND)) {
var path:String = file('$key.ogg');
if (!currentTrackedSounds.exists(path))
currentTrackedSounds.set(path, Assets.getSound(path, cache));
localTrackedAssets.push(path);
return currentTrackedSounds.get(path);
}
trace('oops! $key returned null');
return null;
}
Nevermind, it works! It was just an issue with my mod handler.
I'm testing out polymod for modding support, but for some reason, audio file replacement isn't working?? Can it even replace audio files or is it just something that needs to be fixed?