Now uses a single struct for game pieces

Makes it so you can store all of them in a 2D array without casting
void pointers as discussed before