package network;

/**
 * Command Klasse
 * Roboter Kommando, das gleich aufgebaut ist wie PCommands,
 * also eine Command ID u. die zugehörigen Parameter enthält 
 */
public class Command
{
	// Attribute
    private int iCommandID;
    private int iParam;
    private float fParam[];
    private char sParam[];

    /**
     * Default Konstruktor
     */
    public Command()
    {
        fParam = new float[5];
        sParam = new char[50];
        iCommandID = 0;
        iParam = 0;
        for(int i = 0; i < 5; i++){ fParam[i] = 0; }
    }

    /**
     * Konstruktor mit der ID zur Definition des Commandos
     * @param id gibt die Art des Commandos an
     */
    public Command(int id)
    {
        fParam = new float[5];
        sParam = new char[50];
        iCommandID = id;
        iParam = 0;
        for(int i = 0; i < 5; i++)
        {
            fParam[i] = 0.0F;
        }
    }

    /**
     * Konstruktor mit ID, einem int- u. einem float-Wert
     * @param id gibt die Art des Commandos an
     * @param l int Parameter
     * @param f float Parameter
     */
    public Command(int id, int l, float f)
    {
        fParam = new float[5];
        sParam = new char[50];
        iCommandID = id;
        iParam = l;
        fParam[0] = f;
        for(int i = 1; i < 5; i++)
        {
            fParam[i] = 0.0F;
        }
    }
    
    /**
     * Konstruktor mit ID, einem int- u. einem float-Wert
     * @param id gibt die Art des Commandos an
     * @param l int Parameter
     * @param f float Parameter
     */
    public Command(int id, int l, String sparam)
    {
        fParam = new float[5];
        sParam = new char[50];
        iCommandID = id;
        iParam = l;
        sParam = sparam.toCharArray();
        for(int i = 0; i < 5; i++)
        {
            fParam[i] = 0.0F;
        }
    }

    /**
     * Konstruktor zum setzen aller Parameter
     * d.h. wenn ein Parameter nicht verwendet wird, einfach
     * 0 übergeben
     * @param id Definition des Kommandos
     * @param f1 float Param
     * @param f2 float Param
     * @param p1 float Param
     * @param p2 float Param
     * @param p3 float Param
     * @param sparam zum setzen des Strings
     */
    public Command(int id, float f1, float f2, float p1, float p2, float p3, String sparam)
    {
        fParam = new float[5];
        sParam = new char[50];
        iCommandID = id;
        iParam = 0;
        fParam[0] = f1;
        fParam[1] = f2;
        fParam[2] = p1;
        fParam[3] = p2;
        fParam[4] = p3;
        sParam = sparam.toCharArray();
    }

	/* ##########################################################################
	 * 						ÖFFENTLICHE METHODEN
	 * ##########################################################################*/
    
    /** GET - Methoden */
    public int getCommandID(){ return iCommandID; }
    public char[] getsParam(){ return sParam; }
    public int getiParam(){ return iParam; }
    public float getfParam(int i){ return fParam[i]; }

    /** SET - Methoden*/
    public void setCommandID(int i){ iCommandID = i; }
    public void setsParam(String s){ sParam = s.toCharArray(); }
    public void setiParam(int l){ iParam = l; }
    public void setfParam(float f, int i){ fParam[i] = f; }
}

