package turgen.plugin.plturbo;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import turgen.generator.PulseCrate;
import turgen.playlist.AbstractPlayListItem;

/**Playlist item for PL Turbo ROM*/
public class PlASTPlaylistItem extends AbstractPlayListItem {

    public String fname=null;
    public int conversionType=0;
    
    public static final int CV_BINARY_AST=0;
    public static final int CV_BINARY_BUT=1;
    private static final String[] methodStrings = {"[AST]","[BUT]"};
    

    /** Create new instance*/
    public PlASTPlaylistItem(String inF,String outF,PulseCrate speed,String fname,int conversionType,int[] silenceList) {
        this.inFile=inF;
        this.outFile=outF;
        this.pulses=speed;
        this.fname=fname;
        this.conversionType=conversionType;
        this.silenceList=silenceList;
    }

    /**Get string representation*/
    public String toString() {
        return methodStrings[conversionType]+fname;
    }

    /** Create blank instance*/
    public PlASTPlaylistItem() {

    }

    /** Validate item*/
    public boolean validate() {
        if (this.inFile==null) return false;
        if (this.outFile==null) this.outFile="";
        if (this.fname==null) this.fname="NONAME";
        if (this.pulses==null) return false;
        return true;
    }

    
    public AbstractPlayListItem getClonedCopy() {
        int[] silenceListCopy = (int[])this.silenceList.clone();
        PulseCrate pulsesCopy = pulses.getCopy();
        PlASTPlaylistItem item = new PlASTPlaylistItem(inFile, outFile, pulsesCopy, fname, conversionType, silenceListCopy);
        copyBasics(item);
        return item;
    }

    
    public void saveToStream(DataOutputStream dos) throws Exception {
        saveBasics(dos);
        dos.writeUTF(fname);
        dos.writeInt(conversionType);
    }

    
    public void loadFromStream(DataInputStream dis, int version) throws Exception {
        loadBasics(dis);
        fname=dis.readUTF();
        conversionType=dis.readInt();
        
    }

}
