package com.increpare.bfxr.dataClasses
{
import com.increpare.bfxr.synthesis.*;
import com.increpare.bfxr.synthesis.Synthesizer.SfxrSynth;
public class SfxLibrary
{
public var globals:String; public var synths:Array; public var mixes:Array;
public function SfxLibrary()
{
globals = "";
synths = new Array();
mixes = new Array();
}
public static function LoadFrom(data:String):SfxLibrary
{
var result:SfxLibrary = new SfxLibrary();
var lines:Array = data.split("\n");
var version:int=int(lines[i]);
if (lines[1]!="")
throw new Error("file not of correct format");
result.globals = lines[2];
var i:int=4;
while (i<lines.length && lines[i]!="")
{
result.synths.push(SoundData.Deserialize(lines[i]));
i++;
}
i++;
while (i<lines.length && lines[i]!="")
{
result.mixes.push(LayerData.Deserialize(lines[i]));
i++;
}
return result;
}
/** Assumes members have already been populated */
public function Save():String
{
var result:String = SfxrSynth.version.toString();
result+="\n\n";
result+=globals;
result+="\n\n";
for (var i:int=0;i<synths.length;i++)
{
result+=(synths[i] as SoundData).Serialize()+"\n";
}
result+="\n";
for (i=0;i<mixes.length;i++)
{
result+=(mixes[i] as LayerData).Serialize()+"\n";
}
return result;
}
}
}