you know the fuck what

still a wip

Co-Authored-By: Ne_Eo <NeeEoo@users.noreply.github.com>
This commit is contained in:
⍚~Nex
2024-04-07 03:02:16 +02:00
co-authored by Ne_Eo
parent b44794c697
commit a14f75b2ef
8 changed files with 97 additions and 38 deletions
@@ -25,6 +25,7 @@ interface IModsAssetLibrary {
public var prefix:String;
public var modName:String;
public var libName:String;
public var basePath:String;
#if MOD_SUPPORT
public var _parsedAsset:String;
+5 -5
View File
@@ -108,7 +108,7 @@ class ModsFolder {
#end
return mods;
}
public static function getLoadedMods():Array<String> {
public static function getLoadedModsLibs():Array<IModsAssetLibrary> {
var libs = [];
for (i in Paths.assetsTree.libraries) {
var l = i;
@@ -117,13 +117,13 @@ class ModsFolder {
@:privateAccess
if (al.__proxy != null) l = al.__proxy;
}
var libString:String;
if (l is ScriptedAssetLibrary || l is IModsAssetLibrary) libString = cast(l, IModsAssetLibrary).modName;
else continue;
libs.push(libString);
if (l is ScriptedAssetLibrary || l is IModsAssetLibrary) libs.push(cast(l, IModsAssetLibrary));
}
return libs;
}
public static function getLoadedMods():Array<String>
return [for (modLib in getLoadedModsLibs()) modLib.modName];
public static function prepareLibrary(libName:String, force:Bool = false) {
var assets:AssetManifest = new AssetManifest();
assets.name = libName;
@@ -1,7 +1,7 @@
package funkin.backend.assets;
import lime.utils.AssetLibrary;
import lime.utils.Assets as LimeAssets;
import openfl.utils.AssetLibrary;
//import lime.utils.Assets as LimeAssets;
import lime.media.AudioBuffer;
import lime.graphics.Image;
@@ -16,14 +16,14 @@ import sys.FileSystem;
using StringTools;
class ModsFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
public var folderPath:String;
public var basePath:String;
public var modName:String;
public var libName:String;
public var useImageCache:Bool = true;
public var prefix = 'assets/';
public function new(folderPath:String, libName:String, ?modName:String) {
this.folderPath = folderPath;
public function new(basePath:String, libName:String, ?modName:String) {
this.basePath = basePath;
this.libName = libName;
this.prefix = 'assets/$libName/';
if(modName == null)
@@ -33,6 +33,10 @@ class ModsFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
super();
}
function toString():String {
return '(ModsFolderLibrary: $libName/$modName)';
}
#if MOD_SUPPORT
private var editedTimes:Map<String, Float> = [];
public var _parsedAsset:String = null;
@@ -111,7 +115,7 @@ class ModsFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
}
private function getAssetPath() {
return '$folderPath/$_parsedAsset';
return '$basePath/$_parsedAsset';
}
private function __isCacheValid(cache:Map<String, Dynamic>, asset:String, isLocalCache:Bool = false) {
@@ -150,4 +154,14 @@ class ModsFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
return true;
}
#end
// Backwards compat
@:noCompletion public var folderPath(get, set):String;
@:noCompletion private inline function get_folderPath():String {
return basePath;
}
@:noCompletion private inline function set_folderPath(value:String):String {
return basePath = value;
}
}
+3 -1
View File
@@ -23,6 +23,8 @@ class Paths
*/
inline public static final SOUND_EXT = #if web "mp3" #else "ogg" #end;
public static inline var translFolderName:String = "translations";
public static var assetsTree:AssetsLibraryList;
public static var tempFramesCache:Map<String, FlxFramesCollection> = [];
@@ -37,7 +39,7 @@ class Paths
return library != null ? '$library:assets/$library/$file' : 'assets/$file';
public static inline function translationsMain(key:String)
return getPath('translations/$key');
return getPath('$translFolderName/$key');
public static inline function translations(key:String)
return translationsMain('${TranslationsUtil.curLanguage}/$key');
@@ -21,9 +21,9 @@ class ScriptedAssetLibrary extends ModsFolderLibrary {
public var scriptName:String;
private static var nullValue:Dynamic = {};
public function new(scriptName:String, args:Array<Dynamic> = null, folderPath:String="./assets/", libName:String="assets", ?modName:String) {
public function new(scriptName:String, args:Array<Dynamic> = null, basePath:String="./assets/", libName:String="assets", ?modName:String) {
if(modName == null) modName = scriptName;
super(folderPath, libName, modName);
super(basePath, libName, modName);
this.scriptName = scriptName;
script = Script.create(Paths.script("data/library/" + scriptName));
script.setParent(this);
@@ -31,7 +31,10 @@ class ScriptedAssetLibrary extends ModsFolderLibrary {
script.load();
if(args == null) args = [];
script.call("create", args);
trace(script);
}
override function toString():String {
return '(ScriptedAssetLibrary: $libName/$modName/$scriptName)';
}
#if MOD_SUPPORT
@@ -1,7 +1,6 @@
package funkin.backend.assets;
import lime.utils.Log;
import lime.utils.AssetLibrary;
import lime.utils.AssetManifest;
import haxe.io.Path;
@@ -15,6 +14,7 @@ import lime.utils.AssetType;
import lime.utils.Bytes;
import lime.utils.Assets as LimeAssets;
import openfl.text.Font as OpenFLFont;
import openfl.utils.AssetLibrary;
#if MOD_SUPPORT
@@ -26,7 +26,7 @@ import funkin.backend.utils.SysZip;
import funkin.backend.utils.SysZip.SysZipEntry;
class ZipFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
public var zipPath:String;
public var basePath:String;
public var modName:String;
public var libName:String;
public var useImageCache:Bool = false;
@@ -35,16 +35,17 @@ class ZipFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
public var zip:SysZip;
public var assets:Map<String, SysZipEntry> = [];
public function new(zipPath:String, libName:String, ?modName:String) {
this.zipPath = zipPath;
public function new(basePath:String, libName:String, ?modName:String) {
this.libName = libName;
this.basePath = basePath;
if(modName == null)
this.modName = libName;
else
this.modName = modName;
zip = SysZip.openFromFile(zipPath);
zip = SysZip.openFromFile(basePath);
zip.read();
for(entry in zip.entries)
assets[entry.fileName.toLowerCase()] = entry;
@@ -52,6 +53,10 @@ class ZipFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
super();
}
function toString():String {
return '(ZipFolderLibrary: $libName/$modName)';
}
public var _parsedAsset:String;
public override function getAudioBuffer(id:String):AudioBuffer {
@@ -110,8 +115,8 @@ class ZipFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
}
private function getAssetPath() {
trace('[ZIP]$zipPath/$_parsedAsset');
return '[ZIP]$zipPath/$_parsedAsset';
trace('[ZIP]$basePath/$_parsedAsset');
return '[ZIP]$basePath/$_parsedAsset';
}
public function getFiles(folder:String):Array<String> {
@@ -150,5 +155,15 @@ class ZipFolderLibrary extends AssetLibrary implements IModsAssetLibrary {
}
return content;
}
// Backwards compat
@:noCompletion public var zipPath(get, set):String;
@:noCompletion private inline function get_zipPath():String {
return basePath;
}
@:noCompletion private inline function set_zipPath(value:String):String {
return basePath = value;
}
}
#end