//Possession.java
//Movement & Search team
//Jon Havstad, Jesse Eyerman, Sam Cordova, Qutaiba Mahmoud
//CS371 Lab 7

import javax.swing.*;
import java.util.Vector;

public class Possession {
    //Instance variables
    private String posType, posName, iconURL;
    private String[] stats = {"null", "null", "null", "null"};

    private static Vector deck;

    public static Possession draw()
    {
    Possession rv = (Possession) deck.elementAt(0);
    deck.removeElementAt(0);
    return rv;
    }

    public static Possession draw(String nam)
    {
    int i;
    Possession rv;
    for (i=0; i < deck.size(); i++) {
      rv = (Possession) (deck.elementAt(i));
      if (rv.getPosName().equals(nam)) {
         deck.removeElementAt(i);
         return rv;
         }
      }
    return null;
    }

    /**
     * Initialization of the deck needs to include Spaceships.
     * Need to randomize the deck.
     */

    public static void init() {
	Possession p;
       deck = new Vector();
       String [] features = {"stat1", "stat2"};
       p = new Possession("weapon", "High Energy Sniper's Rifle",
				"irifle.gif", features);
       deck.addElement(p);
       String [] features2 = {"stat3", "stat4", "stat5"};
       p = new Possession("weapon","Assassin's Blade","iblade.gif", features2);
       deck.addElement(p);

       String [] features3 = {"stat6", "stat7"};
       p = new Possession("object", "Helian Drug", "idrug.gif", features3);
       deck.addElement(p);

       String [] features4 = {"stat8", "stat9"};
       p = new Possession("object", "Scanner", "iscanner.gif", features4);
       deck.addElement(p);

       String [] features5 = {"stat10", "stat11", "stat12", "stat13"};
       p = new Possession("object", "Scrambler", "iscrambl.gif", features5);
       deck.addElement(p);

       String [] features6 = {"stat14", "stat15"};
       p = new Possession("object", "Medi-kit of Ptolus", "imedkit.gif", features6);
       deck.addElement(p);

       String [] features7 = {"stat16"};
       p = new Possession("object", "Personal Body Shield", "ishield.gif", features7);
       deck.addElement(p);

       String [] features8 = {"stat17", "stat18", "stat19"};
       p = new Possession("object", "Cache of Rare Gems", "igems.gif", features8);
       deck.addElement(p);

       String [] features9 = {"stat20", "stat21", "stat22"};
       p = new Possession("companion", "Cervac MK V", "icervac.gif", features9);
       deck.addElement(p);

       String [] features10 = {"stat23", "stat24", "stat25", "stat26"};
       p = new Possession("companion", "Norrocks", "inorocks.gif", features10);
       deck.addElement(p);

       String [] features11 = {"stat27", "stat27", "stat29"};
       p = new Possession("companion", "Charsot", "icharsot.gif", features11);
       deck.addElement(p);

       String [] features12 = {"stat30", "stat31", "stat32"};
       p = new Possession("companion", "Advisor Android", "iadvisor.gif", features12);
       deck.addElement(p);

    }

    public Possession(String typ, String nam, String icon, String []features)
    {
       posType = typ;
       posName = nam;
       iconURL = icon;
       stats = features;
    }

    //constructor method
    public Possession(String input) {
	int i = 0, curField = 1;
	StringBuffer inBuffer = new StringBuffer();
	input = input + "#";
	while (i < input.length()) {
	    if (input.charAt(i) != ',' && input.charAt(i) != '#')
		inBuffer.append(input.charAt(i));
	    else {
		processField(inBuffer, curField);
		curField++;
		inBuffer = new StringBuffer();			  
	    }
	    i++;
	}
    }
    private void processField(StringBuffer inBuffer, int curField) {
	switch (curField) { 
	case 1:
	    posType = inBuffer.toString();
	    break;
	case 2: 
	    posName = inBuffer.toString();
	    break;
	case 3:
	    iconURL = inBuffer.toString();
	    break;
	case 4:
	    if (inBuffer.length() != 0)
		stats[0] = inBuffer.toString();
	    break;
	case 5:
	    if (inBuffer.length() != 0)
		stats[1] = inBuffer.toString();
	    break;
	case 6: 
	    if (inBuffer.length() != 0)
		stats[2] = inBuffer.toString();
	    break;
	case 7: 
	    if (inBuffer.length() != 0)
		stats[3] = inBuffer.toString();
	    break;
	    	case 8: 
	    	    break; 
	default:
	    System.out.println("Surpassed accessible fields.  Input file may not be possession dat file.");
	    break;
	}
	return;
	
    }
	//Accessor methods
    public String getPosType() {
	return posType;
    }
    public String getPosName() {
	return posName;
    }
    public String getIconURL() {
	return iconURL;
    }
    public String getFirstStat() {
	return stats[0];
    }
    public String getSecondStat() {
	return stats[1];
    }
    public String getThirdStat() {
	return stats[2];
    }
    public String getFourthStat() {
	return stats[3];
    }

}

