enum TetrominoTypes {
    I = 0,
    J,
    L,
    O,
    S,
    T,
    Z,
    TETROMINO_COUNT
};

enum Direction {
    NORTH = 0,
    EAST,
    SOUTH,
    WEST
};

struct Tetromino {
    int size;
    struct Color color;
    int directions[4][4][4];
};

struct Tetromino tetrominos[7] = {
    [I] = {
        .size = 4,
        .color = SKYBLUE,
        .directions = {
            [NORTH] = {
                {0, 0, 0, 0},
                {1, 1, 1, 1},
                {0, 0, 0, 0},
                {0, 0, 0, 0}
            
            },
            [EAST] = {
                {0, 0, 1, 0},
                {0, 0, 1, 0},
                {0, 0, 1, 0},
                {0, 0, 1, 0}
            },
            [SOUTH] = {
                {0, 0, 0, 0},
                {0, 0, 0, 0},
                {1, 1, 1, 1},
                {0, 0, 0, 0}
            },
            [WEST] = {
                {0, 1, 0, 0},
                {0, 1, 0, 0},
                {0, 1, 0, 0},
                {0, 1, 0, 0}
            }
        }
    },
    [J] = {
        .size = 3,
        .color = BLUE,
        .directions = {
            [NORTH] = {
                {1, 0, 0},
                {1, 1, 1},
                {0, 0, 0}
            },
            [EAST] = {
                {0, 1, 1},
                {0, 1, 0},
                {0, 1, 0}
            },
            [SOUTH] = {
                {0, 0, 0},
                {1, 1, 1},
                {0, 0, 1}
            },
            [WEST] = {
                {0, 1, 0},
                {0, 1, 0},
                {1, 1, 0}
            }
        }
    },
    [L] = {
        .size = 3,
        .color = ORANGE,
        .directions = {
            [NORTH] = {
                {0, 0, 1},
                {1, 1, 1},
                {0, 0, 0}
            },
            [EAST] = {
                {0, 1, 0},
                {0, 1, 0},
                {0, 1, 1}
            },
            [SOUTH] = {
                {0, 0, 0},
                {1, 1, 1},
                {1, 0, 0}
            },
            [WEST] = {
                {1, 1, 0},
                {0, 1, 0},
                {0, 1, 0}
            }
        }
    },
    [O] = {
        .size = 3,
        .color = YELLOW,
        .directions = {
            [NORTH] = {
                {0, 1, 1},
                {0, 1, 1},
                {0, 0, 0}
            },
            [EAST] = {
                {0, 1, 1},
                {0, 1, 1},
                {0, 0, 0}
            },
            [SOUTH] = {
                {0, 1, 1},
                {0, 1, 1},
                {0, 0, 0}
            },
            [WEST] = {
                {0, 1, 1},
                {0, 1, 1},
                {0, 0, 0}
            }
        }
    },
    [S] = {
        .size = 3,
        .color = GREEN,
        .directions = {
            [NORTH] = {
                {0, 1, 1},
                {1, 1, 0},
                {0, 0, 0}
            },
            [EAST] = {
                {0, 1, 0},
                {0, 1, 1},
                {0, 0, 1}
            },
            [SOUTH] = {
                {0, 0, 0},
                {0, 1, 1},
                {1, 1, 0}
            },
            [WEST] = {
                {1, 0, 0},
                {1, 1, 0},
                {0, 1, 0}
            }
        }
    },
    [T] = {
        .size = 3,
        .color = PURPLE,
        .directions = {
            [NORTH] = {
                {0, 1, 0},
                {1, 1, 1},
                {0, 0, 0}
            },
            [EAST] = {
                {0, 1, 0},
                {0, 1, 1},
                {0, 1, 0}
            },
            [SOUTH] = {
                {0, 0, 0},
                {1, 1, 1},
                {0, 1, 0}
            },
            [WEST] = {
                {0, 1, 0},
                {1, 1, 0},
                {0, 1, 0}
            }
        }
    },
    [Z] = {
        .size = 3,
        .color = RED,
        .directions = {
            [NORTH] = {
                {1, 1, 0},
                {0, 1, 1},
                {0, 0, 0}
            },
            [EAST] = {
                {0, 0, 1},
                {0, 1, 1},
                {0, 1, 0}
            },
            [SOUTH] = {
                {0, 0, 0},
                {1, 1, 0},
                {0, 1, 1}
            },
            [WEST] = {
                {0, 1, 0},
                {1, 1, 0},
                {1, 0, 0}
            }
        }
    }
};