Используется матрица 32x32, в ней закодированы значения
Этот класс отвечает за анимацию:
class AnimationFrame {
int[] framedata;
public AnimationFrame(int[] framedata){
this.framedata = framedata;
}
public AnimationFrame(byte[][] drawmatrix){
framedata = new int[32];
for(int i = 0; i < 32; i++){
int shift = 0;
for(int e = 31; e > -1; e--){
byte b = drawmatrix[i][e];
shift = (shift<<1) | b;
}
framedata[i] = shift;
}
}
}
Это пример кодирования:
public static final Animation OVERLAY_STINK = new Animation(new AnimationFrame[]{new AnimationFrame(new int[]{0x0,0x0,0x0,0x0,0x10000000,0x8000008,0x10000004,0xa000028,0x11000044,0xa000028,0x1000044,0x12000020,0x21000040,0x10000000,0x20000000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}),new AnimationFrame(new int[]{0x0,0x0,0x0,0x10000000,0x8000008,0x10000004,0xa000028,0x11000044,0xa000028,0x1000044,0x12000020,0x21000040,0x10000000,0x20000000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0})});
А так выглядит результат, после компиляции этого кода: