package net.grobas.blizzardleaderboards.app.ui.adapter;


import android.os.Parcel;
import android.os.Parcelable;

import net.grobas.blizzardleaderboards.app.domain.Row;

public class FilterSpec implements Parcelable{

    private boolean factions[];
    private boolean classes[];
    private boolean races[];

    public FilterSpec() {
        setDefaultValues();
    }

    public void toggleFaction(int pos) {
        factions[pos] = !factions[pos];
    }

    public void toggleClass(int pos) {
        classes[pos - 1] = !classes[pos - 1];
    }

    public void toggleRace(int pos) {
        races[pos - 1] = !races[pos - 1];
    }

    public boolean isRowValid(Row row) {
        return factions[row.getFactionId()] && classes[row.getClassId() - 1] && races[row.getRaceId() - 1];
    }

    public void setDefaultValues() {
        factions = new boolean[]{true, true};
        classes = new boolean[]{true, true, true, true, true, true, true, true, true, true, true};
        races = new boolean[]{true, true, true, true, true, true, true, true, true, true, true, true, true};
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeBooleanArray(factions);
        dest.writeBooleanArray(classes);
        dest.writeBooleanArray(races);
    }

    public static final Parcelable.Creator<FilterSpec> CREATOR = new Parcelable.Creator<FilterSpec>() {
        public FilterSpec createFromParcel(Parcel pc) {
            return new FilterSpec(pc);
        }
        public FilterSpec[] newArray(int size) {
            return new FilterSpec[size];
        }
    };

    public FilterSpec(Parcel pc){
        pc.readBooleanArray(factions);
        pc.readBooleanArray(classes);
        pc.readBooleanArray(races);
    }
}