package android.pentodroid.model;

import java.util.ArrayList;

public enum Pentomino {
    
    F1a( new Coordinate(0,1),new Coordinate(0,2),new Coordinate(1,0),
	 new Coordinate(1,1),new Coordinate(2,1) ),
    F1b( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,2) ),
    F1c( new Coordinate(0,1),new Coordinate(1,1),new Coordinate(1,2),
	 new Coordinate(2,0),new Coordinate(2,1) ),
    F1d( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,1) ),
    F2a( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,1) ),
    F2b( new Coordinate(0,2),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,1) ),
    F2c( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,1),new Coordinate(2,2) ),
    F2d( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,0) ),
    Ia( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	new Coordinate(0,3),new Coordinate(0,4) ),
    Ib( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(2,0),
	new Coordinate(3,0),new Coordinate(4,0) ),
    L1a( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(2,0),
	 new Coordinate(3,0),new Coordinate(3,1) ),
    L1b( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(0,3),new Coordinate(1,0) ),
    L1c( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,1),
	 new Coordinate(2,1),new Coordinate(3,1) ),
    L1d( new Coordinate(0,3),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(1,3) ),
    L2a( new Coordinate(0,1),new Coordinate(1,1),new Coordinate(2,1),
	 new Coordinate(3,0),new Coordinate(3,1) ),
    L2b( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(1,3) ),
    L2c( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,0),
	 new Coordinate(2,0),new Coordinate(3,0) ),
    L2d( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(0,3),new Coordinate(1,3) ),
    N1a( new Coordinate(0,1),new Coordinate(1,1),new Coordinate(2,0),
	 new Coordinate(2,1),new Coordinate(3,0) ),
    N1b( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(1,3) ),
    N1c( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,0),new Coordinate(3,0) ),
    N1d( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(1,2),new Coordinate(1,3) ),
    N2a( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(2,0),
	 new Coordinate(2,1),new Coordinate(3,1) ),
    N2b( new Coordinate(0,1),new Coordinate(0,2),new Coordinate(0,3),
	 new Coordinate(1,0),new Coordinate(1,1) ),
    N2c( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,1),new Coordinate(3,1) ),
    N2d( new Coordinate(0,2),new Coordinate(0,3),new Coordinate(1,0),
	 new Coordinate(1,1),new Coordinate(1,2) ),
    P1a( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,0),
	 new Coordinate(1,1),new Coordinate(2,0) ),
    P1b( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(1,1),new Coordinate(1,2) ),
    P1c( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,0),new Coordinate(2,1) ),
    P1d( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,0),
	 new Coordinate(1,1),new Coordinate(1,2) ),
    P2a( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,0),
	 new Coordinate(1,1),new Coordinate(2,1) ),
    P2b( new Coordinate(0,1),new Coordinate(0,2),new Coordinate(1,0),
	 new Coordinate(1,1),new Coordinate(1,2) ),
    P2c( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,0),new Coordinate(2,1) ),
    P2d( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(1,0),new Coordinate(1,1) ),
    Ta( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	new Coordinate(1,1),new Coordinate(2,1) ),
    Tb( new Coordinate(0,2),new Coordinate(1,0),new Coordinate(1,1),
	new Coordinate(1,2),new Coordinate(2,2) ),
    Tc( new Coordinate(0,1),new Coordinate(1,1),new Coordinate(2,0),
	new Coordinate(2,1),new Coordinate(2,2) ),
    Td( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	new Coordinate(1,2),new Coordinate(2,0) ),
    Ua( new Coordinate(0,0),new Coordinate(0,2),new Coordinate(1,0),
	new Coordinate(1,1),new Coordinate(1,2) ),
    Ub( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,0),
	new Coordinate(2,0),new Coordinate(2,1) ),
    Uc( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	new Coordinate(1,0),new Coordinate(1,2) ),
    Ud( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,1),
	new Coordinate(2,0),new Coordinate(2,1) ),
    Va( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(2,0),
	new Coordinate(2,1),new Coordinate(2,2) ),
    Vb( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	new Coordinate(1,0),new Coordinate(2,0) ),
    Vc( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	new Coordinate(1,2),new Coordinate(2,2) ),
    Vd( new Coordinate(0,2),new Coordinate(1,2),new Coordinate(2,0),
	new Coordinate(2,1),new Coordinate(2,2) ),
    Wa( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	new Coordinate(2,1),new Coordinate(2,2) ),
    Wb( new Coordinate(0,1),new Coordinate(0,2),new Coordinate(1,0),
	new Coordinate(1,1),new Coordinate(2,0) ),
    Wc( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,1),
	new Coordinate(1,2),new Coordinate(2,2) ),
    Wd( new Coordinate(0,2),new Coordinate(1,1),new Coordinate(1,2),
	new Coordinate(2,0),new Coordinate(2,1) ),
    X( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
       new Coordinate(1,2),new Coordinate(2,1) ),
    Y1a( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,1),new Coordinate(3,1) ),
    Y1b( new Coordinate(0,2),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(1,3) ),
    Y1c( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(2,0),
	 new Coordinate(2,1),new Coordinate(3,0) ),
    Y1d( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(0,3),new Coordinate(1,1) ),
    Y2a( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(2,0),new Coordinate(3,0) ),
    Y2b( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(0,2),
	 new Coordinate(0,3),new Coordinate(1,2) ),
    Y2c( new Coordinate(0,1),new Coordinate(1,1),new Coordinate(2,0),
	 new Coordinate(2,1),new Coordinate(3,1) ),
    Y2d( new Coordinate(0,1),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(1,3) ),
    Z1a( new Coordinate(0,0),new Coordinate(0,1),new Coordinate(1,1),
	 new Coordinate(2,1),new Coordinate(2,2) ),
    Z1b( new Coordinate(0,2),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,0) ),
    Z2a( new Coordinate(0,1),new Coordinate(0,2),new Coordinate(1,1),
	 new Coordinate(2,0),new Coordinate(2,1) ),
    Z2b( new Coordinate(0,0),new Coordinate(1,0),new Coordinate(1,1),
	 new Coordinate(1,2),new Coordinate(2,2) ) ;

    ArrayList<Coordinate> shape;
    
    Pentomino(Coordinate c1, Coordinate c2, Coordinate c3,
		     Coordinate c4, Coordinate c5) {
	shape = new ArrayList<Coordinate>(5);
	shape.add(c1);
	shape.add(c2);
	shape.add(c3);
	shape.add(c4);
	shape.add(c5);
    }

    public ArrayList<Coordinate> shapeOf() { return shape; }

}
