mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
59 lines
1.1 KiB
Haxe
59 lines
1.1 KiB
Haxe
package src;
|
|
|
|
import src.ResourceLoader;
|
|
|
|
class ResourceLoaderWorker {
|
|
var tasks:Array<(() -> Void)->Void> = [];
|
|
|
|
var paralleltasks:Array<(() -> Void)->Void> = [];
|
|
|
|
var onFinish:() -> Void;
|
|
|
|
var parallelstarted:Bool = false;
|
|
|
|
public function new(onFinish:() -> Void) {
|
|
this.onFinish = onFinish;
|
|
}
|
|
|
|
public function addTask(task:(() -> Void)->Void) {
|
|
tasks.push(task);
|
|
}
|
|
|
|
public function addTaskParallel(task:(() -> Void)->Void) {
|
|
paralleltasks.push(task);
|
|
}
|
|
|
|
public function run() {
|
|
if (!parallelstarted && paralleltasks.length > 0) {
|
|
parallelstarted = true;
|
|
var taskcount = paralleltasks.length;
|
|
var tasksdone = 0;
|
|
for (task in paralleltasks) {
|
|
task(() -> {
|
|
tasksdone++;
|
|
if (tasksdone == taskcount) {
|
|
this.run();
|
|
}
|
|
});
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (tasks.length > 0) {
|
|
var task = tasks.shift();
|
|
task(() -> {
|
|
if (tasks.length > 0) {
|
|
run();
|
|
} else {
|
|
onFinish();
|
|
}
|
|
});
|
|
} else {
|
|
onFinish();
|
|
}
|
|
}
|
|
|
|
public function loadFile(path:String) {
|
|
paralleltasks.push(fwd -> ResourceLoader.load(path).entry.load(fwd));
|
|
}
|
|
}
|