package ddddbb.game;
import java.lang.reflect.Field;
import ddddbb.comb.DOp;
public class ObjectiveEnum {
// Trivial(
// new int[][] {
// new int[] { 1,0,0,0 },
// new int[] { 0,0,0,0 }
// },
// new int[][][] {
// new int[][] { new int[] { 1,0,0,0 } },
// new int[][] { new int[] { 0,0,-1,-2 } },
// }
// );
public static Objective Bar = new Objective("Bar",
new int[][] {
new int[] { 2,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 0,0,0,0 }
},
new int[][][] {
new int[][] {
new int[] { -1, 0, 0 ,0 },
new int[] { -1, 1, 0 , 0}
},
new int[][] { new int[] {1,0,0,0} }
}
);
public static Objective Two_Cuboids = new Objective("Two Cuboids",
DOp.create4dCube(2),
new int[][][] {
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 1,1,1,0 },
},
DOp.trans(new int[][] {
new int[] { 0,0,0,1 },
new int[] { 1,0,0,1 },
new int[] { 0,1,0,1 },
new int[] { 1,1,0,1 },
new int[] { 0,0,1,1 },
new int[] { 1,0,1,1 },
new int[] { 0,1,1,1 },
new int[] { 1,1,1,1 },
}, new int[] {3,0,0,-1}),
}
);
public static Objective Worm = new Objective("Worm",
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 1,1,0,0 },
new int[] { 1,1,1,0 },
new int[] { 1,1,1,-1 },
},
new int[][][] {
new int[][] { new int[] { 1,1,0,0 } },
new int[][] { new int[] { 0,0,0,0 } },
new int[][] { new int[] { 2,0,0,0 } },
new int[][] { new int[] { 0,2,0,0 } },
new int[][] { new int[] { 2,2,0,0 } },
}
);
public static Objective Star = new Objective("Star",
DOp.create4dStar(),
new int[][][] {
new int[][] { new int[] { 0,0,0,0 }},
new int[][] { new int[] { 2,0,0,0 }},
new int[][] { new int[] { -2,0,0,0 }},
new int[][] { new int[] { 0,2,0,0 }},
new int[][] { new int[] { 0,-2,0,0 }},
new int[][] { new int[] { 0,0,2,0 }},
new int[][] { new int[] { 0,0,-2,0 }},
new int[][] { new int[] { 0,0,0,2 }},
new int[][] { new int[] { 0,0,0,-2 }},
}
);
public static Objective Twirled_Pieces = new Objective("Twirled Pieces",
DOp.create4dCube(2),
new int[][][] {
DOp.trans(DOp.rot(new int[][] {
new int[] { 0,0,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 1,1,1,0 },
new int[] { 1,1,1,1 },
new int[] { 1,0,1,1 },
new int[] { 0,0,1,1 },
new int[] { 0,0,0,1 },
},0,2),new int[] { 1,0,0,0 }),
DOp.trans(new int[][] {
new int[] { 1,0,0,0 },
new int[] { 1,1,0,0 },
new int[] { 0,1,0,0 },
new int[] { 0,1,1,0 },
new int[] { 0,1,1,1 },
new int[] { 0,1,0,1 },
new int[] { 1,1,0,1 },
new int[] { 1,0,0,1 },
},new int[] {3,0,0,0})
}
);
public static Objective D3Box = new Objective(
"3D Box",
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 2,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 2,1,0,0 },
new int[] { 0,2,0,0 },
new int[] { 1,2,0,0 },
new int[] { 2,2,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 2,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 1,1,1,0 },
new int[] { 2,1,1,0 },
new int[] { 0,2,1,0 },
new int[] { 1,2,1,0 },
new int[] { 2,2,1,0 },
new int[] { 0,0,2,0 },
new int[] { 1,0,2,0 },
new int[] { 2,0,2,0 },
new int[] { 0,1,2,0 },
new int[] { 1,1,2,0 },
new int[] { 2,1,2,0 },
new int[] { 0,2,2,0 },
new int[] { 1,2,2,0 },
new int[] { 2,2,2,0 },
},
new int[][][] {
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 2,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 2,1,0,0 },
new int[] { 0,2,0,0 },
new int[] { 1,2,0,0 },
new int[] { 2,2,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 2,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 2,1,1,0 },
new int[] { 0,2,1,0 },
new int[] { 1,2,1,0 },
new int[] { 2,2,1,0 },
new int[] { 0,0,2,0 },
new int[] { 1,0,2,0 },
new int[] { 2,0,2,0 },
new int[] { 0,1,2,0 },
new int[] { 1,1,2,0 },
new int[] { 2,1,2,0 },
new int[] { 0,2,2,0 },
new int[] { 1,2,2,0 },
new int[] { 2,2,2,0 },
},
new int[][] {
new int[] { 4,1,1,0 },
}
}
);
public static Objective Mirrored_Worms = new Objective("Mirrored Worms",
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 1,1,0,0 },
new int[] { 1,1,1,0 },
new int[] { 1,1,1,-1 },
new int[] { 2,0,0,0 },
new int[] { 3,0,0,0 },
new int[] { 3,1,0,0 },
new int[] { 3,1,1,0 },
new int[] { 3,1,1,-1 },
},
new int[][][] {
new int[][] {
new int[] { 0,0,0,0 },
new int[] {-1,0,0,0 },
new int[] {-1,-1,0,0 },
new int[] {-1,-1,-1,0},
new int[] {-1,-1,-1,1},
},
new int[][] {
new int[] { 2,0,0,0 },
new int[] { 3,0,0,0 },
new int[] { 3,1,0,0 },
new int[] { 3,1,1,0 },
new int[] { 3,1,1,-1 },
},
}
);
public static Objective Plug = new Objective("Plug",
DOp.create4dCube(2),
new int[][][] {
DOp.trans(DOp.rot(DOp.rot(new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 1,1,1,0 },
new int[] { 0,0,0,1 },
},0,3),0,3),new int[] {1,0,0,1}),
DOp.trans( new int[][] {
new int[] { 1,0,0,1 },
new int[] { 0,1,0,1 },
new int[] { 1,1,0,1 },
new int[] { 0,0,1,1 },
new int[] { 1,0,1,1 },
new int[] { 0,1,1,1 },
new int[] { 1,1,1,1 },
},new int[] {3,0,0,0}),
}
);
public static Objective TwoRings = new Objective("Two Rings",
new int[][] {
new int[] {0,0,0,0},
new int[] {1,0,0,0},
new int[] {2,0,0,0},
new int[] {2,1,0,0},
new int[] {2,2,0,0},
new int[] {1,2,0,0},
new int[] {0,2,0,0},
new int[] {0,1,0,0},
new int[] {0,0,0,1},
new int[] {1,0,0,1},
new int[] {2,0,0,1},
new int[] {2,1,0,1},
new int[] {2,2,0,1},
new int[] {1,2,0,1},
new int[] {0,2,0,1},
new int[] {0,1,0,1}
},
new int[][][] {
new int[][] {
new int[] {0,0,0,0},
new int[] {1,0,0,0},
new int[] {2,0,0,0},
new int[] {2,1,0,0},
new int[] {2,2,0,0},
new int[] {1,2,0,0},
new int[] {0,2,0,0},
new int[] {0,1,0,0}
},
new int[][] {
new int[] {1,1,-1,0},
new int[] {1,1,0,0},
new int[] {1,1,1,0},
new int[] {2,1,1,0},
new int[] {3,1,1,0},
new int[] {3,1,0,0},
new int[] {3,1,-1,0},
new int[] {2,1,-1,0},
}
}
);
public static Objective Clamp = new Objective(
"4D Clamp",
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 2,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 2,1,0,0 },
new int[] { 0,2,0,0 },
new int[] { 1,2,0,0 },
new int[] { 2,2,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 2,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 1,1,1,0 },
new int[] { 2,1,1,0 },
new int[] { 0,2,1,0 },
new int[] { 1,2,1,0 },
new int[] { 2,2,1,0 },
new int[] { 0,0,2,0 },
new int[] { 1,0,2,0 },
new int[] { 2,0,2,0 },
new int[] { 0,1,2,0 },
new int[] { 1,1,2,0 },
new int[] { 2,1,2,0 },
new int[] { 0,2,2,0 },
new int[] { 1,2,2,0 },
new int[] { 2,2,2,0 },
},
new int[][][] {
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 2,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 2,1,0,0 },
new int[] { 0,2,0,0 },
new int[] { 1,2,0,0 },
new int[] { 2,2,0,0 },
new int[] { 0,0,1,0 },
new int[] { 2,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 1,1,1,0 },
new int[] { 2,1,1,0 },
new int[] { 0,2,1,0 },
new int[] { 2,2,1,0 },
new int[] { 0,0,2,0 },
new int[] { 1,0,2,0 },
new int[] { 2,0,2,0 },
new int[] { 0,1,2,0 },
new int[] { 1,1,2,0 },
new int[] { 2,1,2,0 },
new int[] { 0,2,2,0 },
new int[] { 1,2,2,0 },
new int[] { 2,2,2,0 },
},
new int[][] {
new int[] { 4,0,1,0 },
new int[] { 4,2,1,0 },
}
}
);
public static Objective TriClamp = new Objective(
"Triclamp",
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 2,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 1,1,0,0 },
new int[] { 2,1,0,0 },
new int[] { 0,2,0,0 },
new int[] { 1,2,0,0 },
new int[] { 2,2,0,0 },
new int[] { 0,0,1,0 },
new int[] { 1,0,1,0 },
new int[] { 2,0,1,0 },
new int[] { 0,1,1,0 },
new int[] { 1,1,1,0 },
new int[] { 2,1,1,0 },
new int[] { 0,2,1,0 },
new int[] { 1,2,1,0 },
new int[] { 2,2,1,0 },
new int[] { 0,0,2,0 },
new int[] { 1,0,2,0 },
new int[] { 2,0,2,0 },
new int[] { 0,1,2,0 },
new int[] { 1,1,2,0 },
new int[] { 2,1,2,0 },
new int[] { 0,2,2,0 },
new int[] { 1,2,2,0 },
new int[] { 2,2,2,0 },
},
new int[][][] {
new int[][] {
new int[] { 0,0,0,0 },
new int[] { 1,0,0,0 },
new int[] { 2,0,0,0 },
new int[] { 0,1,0,0 },
new int[] { 2,1,0,0 },
new int[] { 0,2,0,0 },
new int[] { 1,2,0,0 },
new int[] { 2,2,0,0 },
new int[] { 0,0,1,0 },
new int[] { 2,0,1,0 },
new int[] { 1,1,1,0 },
new int[] { 0,2,1,0 },
new int[] { 2,2,1,0 },
new int[] { 0,0,2,0 },
new int[] { 1,0,2,0 },
new int[] { 2,0,2,0 },
new int[] { 0,1,2,0 },
new int[] { 2,1,2,0 },
new int[] { 0,2,2,0 },
new int[] { 1,2,2,0 },
new int[] { 2,2,2,0 },
},
new int[][] {
new int[] { 5,1,0,0 },
new int[] { 5,0,1,0 },
new int[] { 5,2,1,0 },
new int[] { 6,1,1,0 },
new int[] { 4,1,1,0 },
new int[] { 5,1,2,0 },
}
}
);
public static Objective Exam = new Objective("4 Tesseract Pieces",
DOp.create4dCube(2),
new int[][][] {
new int[][] {
new int[] { 0, 1, 0, 0 },
new int[] { 0, 0, 0, 0 },
new int[] { 1, 0, 0, 0 },
new int[] { 1, 0, 1, 0 },
},
DOp.trans(DOp.rot(new int[][] {
new int[] { 1, 0, 0, 1 },
new int[] { 1, 0, 1, 1 },
new int[] { 0, 0, 1, 1 },
new int[] { 0, 0, 1, 0 },
},1,3),new int[] {3,1,-1,0}),
DOp.trans(DOp.rot(DOp.rot(new int[][] {
new int[] { 1, 1, 0, 0 },
new int[] { 1, 1, 0, 1 },
new int[] { 0, 1, 0, 1 },
new int[] { 0, 0, 0, 1 },
},2,1),2,1), new int[] {0,4,0,-1}),
DOp.trans(DOp.rot(new int[][] {
new int[] { 0, 1, 1, 0 },
new int[] { 0, 1, 1, 1 },
new int[] { 1, 1, 1, 1 },
new int[] { 1, 1, 1, 0 },
},3,1),new int[] {3,3,-1,1}),
}
);
public static Objective[] values() {
Class<ObjectiveEnum> c = ObjectiveEnum.class;
Field[] fields = c.getDeclaredFields();
Objective[] res = new Objective[fields.length];
for (int i=0;i<fields.length;i++) {
try {
res[i] = (Objective) fields[i].get(null);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return res;
}
}