package GraphicExport
{
import Defs.GraphicDef;
import flash.display.MovieClip;
import djarts.utils.*;
import djarts.display.GraphicFactory;
import CharacterExport.*;
public class AnimSetPacker
{
protected var doneCallback;
protected var callbackParam;
protected var holder:MovieClip;
public function AnimSetPacker(callback, callbackParam, holder:MovieClip)
{
this.doneCallback = callback;
this.callbackParam = callbackParam;
this.holder = holder;
}
protected var avatarIndex = 0;
protected var avatars:Array;
public function ExportDef(def:GraphicDef)
{
avatarIndex = 0;
avatars = def.ExportParams.avatars;
DoNextAvatar();
}
private function DoNextAvatar()
{
if (avatarIndex >= avatars.length)
{
Done();
return;
}
var avatar = avatars[avatarIndex];
var graphic = GraphicFactory.Instance().GetGraphic(avatar.base_clip, null, GraphicCallback);
}
protected var exporter:CharacterExporter;
protected function GraphicCallback(c, g)
{
exporter = new CharacterExporter(holder);
exporter.ProcessFromClip(g, ProductionDone);
}
protected var toExport:Array = new Array();
protected function ProductionDone()
{
var avatar = avatars[avatarIndex];
var avatarName = avatar.avatar;
var animations:Array = avatar.animations;
for (var i in exporter.Sequences)
{
exporter.Sequences[i].AvatarName = avatarName;
if (animations.indexOf(exporter.Sequences[i].AnimationName) != -1)
{
toExport.push(exporter.Sequences[i]);
}
}
avatarIndex++;
//exporter.ProduceTemplate(DoNextAvatar);
DoNextAvatar();
}
protected function Done()
{
var builder:AnimSetExportBuilder = new AnimSetExportBuilder(toExport);
if (doneCallback) doneCallback(builder.Output, callbackParam);
}
}
}