package tetris;

import java.util.*;
import java.awt.*;

public class PieceFactory {
    private static Random generator = null;

    private static TetrisBlock bRed = new TetrisBlock(Color.red);
    private static TetrisBlock bBlue = new TetrisBlock(Color.blue);
    private static TetrisBlock bCyan = new TetrisBlock(Color.cyan);
    private static TetrisBlock bGreen = new TetrisBlock(Color.green);
    private static TetrisBlock bYellow = new TetrisBlock(Color.yellow);
    private static TetrisBlock bOrange = new TetrisBlock(Color.orange);

    private static Point o00 = new Point(0, 0);
    private static Point o01 = new Point(0, 1);
    private static Point o02 = new Point(0, 2);
    private static Point o10 = new Point(1, 0);
    private static Point o11 = new Point(1, 1);
    private static Point o12 = new Point(1, 2);
    private static Point o20 = new Point(2, 0);
    private static Point o21 = new Point(2, 1);
    private static Point o22 = new Point(2, 2);
    private static Point o31 = new Point(3, 1);

    // o o o o
    // x x x x
    // o o o o
    // o o o o
    private static Point[] p1off = { o01, o11, o21, o31 };
    private static TetrisPiece p1 = new TetrisPiece(bRed, p1off, 4);

    // o o o
    // x x o
    // o x x
    private static Point[] p2off = { o01, o11, o12, o22 };
    private static TetrisPiece p2 = new TetrisPiece(bBlue, p2off, 3);

    // o o o
    // x x x
    // o o x
    private static Point[] p3off = { o01, o11, o21, o22 };
    private static TetrisPiece p3 = new TetrisPiece(bCyan, p3off, 3);

    // o x x
    // o o x
    // o o x
    private static Point[] p4off = { o10, o20, o21, o22 };
    private static TetrisPiece p4 = new TetrisPiece(bGreen, p4off, 3);

    // o o o
    // o x x
    // x x o
    private static Point[] p5off = { o02, o12, o11, o21 };
    private static TetrisPiece p5 = new TetrisPiece(bYellow, p5off, 3);

    // x x
    // x x
    private static Point[] p6off = { o00, o01, o10, o11 };
    private static TetrisPiece p6 = new TetrisPiece(bOrange, p6off, 2);

    private static TetrisPiece[] pieces = { p1, p2, p3, p4, p5, p6 };

    public static TetrisPiece getPiece() {
	if (generator == null);
	    generator = new Random();

	int pieceIdx = generator.nextInt(pieces.length);
	return pieces[pieceIdx];
    }
}
