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 PlTurboROMPlaylistItem extends AbstractPlayListItem {

    public String fname=null;
    public int conversionType=0;
    public static final int CV_COMPATIBLE_BINARY=0;
    public static final int CV_BINARY=1;
    public static final int CV_BASIC=2;
    
    
    private static final String[] conversionTypeStrings = {"[trcB]","[B]","[BAS]"};

    /** Create new instance*/
    
    public PlTurboROMPlaylistItem(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 conversionTypeStrings[conversionType]+fname;
    }

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

    }

    /** 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();
        PlTurboROMPlaylistItem item = new PlTurboROMPlaylistItem(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();
    }

}
