package fr.iutfbleau.dev45.wamster.tp05ex02_arcenciel;

public class ListeCouleur {
    public final static int INDICE_ROUGE = 0;
    public final static int INDICE_ORANGE = 1;
    public final static int INDICE_JAUNE = 2;
    public final static int INDICE_VERT = 3;
    public final static int INDICE_BLEU = 4;
    public final static int INDICE_INDIGO = 5;
    public final static int INDICE_VIOLET = 6;
    public final static int TAILLE_LISTE = 7;
    private int indexColor;
    private boolean [] couleurValide;
    private final static int[] listeCouleur = {
            0xfff00020,
            0xffff7f00,
            0xfffdfd96,
            0xff00561b,
            0xff0080ff,
            0xff4b0082,
            0xff7f00ff
    };
    public ListeCouleur(){
        this.indexColor = 0;
        this.setListeCouleurTrue();
    }

    public int couleurSuivante(){
        int i;
        for (i=0; i<ListeCouleur.listeCouleur.length; i++){
            this.indexColor = (this.indexColor+1)%ListeCouleur.listeCouleur.length;
            if (this.couleurValide[this.indexColor]){
                return ListeCouleur.listeCouleur[this.indexColor];
            }
        }
        return 0x00000000;
    }

    public boolean setListeCouleur(boolean[] nouvelEtat){
        if (nouvelEtat.length == ListeCouleur.listeCouleur.length){
            this.couleurValide = nouvelEtat;
            return true;
        }
        return false;
    }

    public boolean[] getValideCouleur(){
        return this.couleurValide;
    }

    public int getIndex(){
        return this.indexColor;
    }

    public void setIndex(int index){
        this.indexColor = index;
    }

    public int getActualColor(){
        this.indexColor --;
        return this.couleurSuivante();
    }

    public void setListeCouleurTrue(){
        this.couleurValide = new boolean[ListeCouleur.listeCouleur.length];
        int i;
        for (i=0; i<ListeCouleur.listeCouleur.length; i++){
            this.couleurValide[i] = true;
        }
    }
}
