package GraphicExport
{
import CharacterExport.*;
import Defs.GraphicDef;
import flash.display.MovieClip;
import djarts.utils.*;
public class SkelAnimPacker
{
protected var library:PieceLibrary;
protected var waiter:CountWaiter;
protected var exporters:Array = new Array();
protected var defs:Array = new Array();
protected var doneCallback;
protected var callbackParam;
protected var holder:MovieClip;
protected var defaultExportType;
protected var scale:Number = 1;
protected var outputFormat = "binary";
public function SkelAnimPacker(callback, callbackParam, holder:MovieClip, defaultExportType = null, scale=1, outputFormat="binary")
{
this.doneCallback = callback;
this.callbackParam = callbackParam;
this.holder = holder;
this.defaultExportType = defaultExportType;
this.scale = scale;
this.outputFormat = outputFormat;
}
public function ExportDefs(defs:Array)
{
this.defs = defs;
library = new PieceLibrary();
ExportNext();
}
var removeClips:Array = new Array();
protected var currentDef:GraphicDef;
protected function ExportNext(...rest)
{
if (holder)
{
for (var i in removeClips)
{
if (removeClips[i].parent)
{
removeClips[i].parent.removeChild(removeClips[i]);
}
}
removeClips.splice(0);
for (var i = 0; i < holder.numChildren; i++)
{
removeClips.push(holder.getChildAt(i));
}
}
if (defs.length == 0)
{
Done();
return;
}
currentDef = defs.shift();
var exporter:CharacterExporter = new CharacterExporter(holder);
exporters.push(exporter);
exporter.Process(currentDef.ID, ExportNext, library, defaultExportType, scale);
}
var exporter:ExportBuilder;
protected function Done()
{
this.library.EnsureAllUsedPiecesHaveNames();
exporter = new ExportBuilder(exporters, -1, -1, library);
if (outputFormat == "json_png_set")
{
if (doneCallback) doneCallback(exporter.GetJSONPNGSet(), callbackParam);
} else {
if (doneCallback) doneCallback(exporter.Output, callbackParam);
}
}
protected function JSONSaveComplete()
{
if (doneCallback) doneCallback(exporter.Output, callbackParam);
}
}
}