commit 5eedd516ac094314007515c0fa89a52a7cbdef23
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Dec 14 11:45:48 2020 +0100

    Progress with the Rex Cube (icons)

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 35529593..f19bc072 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -634,7 +634,7 @@ class FactoryCubit
       }
 
     float[] bands0 = computeBands(+0.02f,10,0.5f,0.5f,5);
-    float[] bands1 = computeBands(-0.00f,45,0.5f,0.0f,2);
+    float[] bands1 = computeBands(-0.05f,45,0.5f,0.0f,2);
 
     meshes[0] = new MeshPolygon(vertices,bands0,1,1);
     meshes[0].setEffectAssociation(0,1,0);
diff --git a/src/main/java/org/distorted/objects/ObjectList.java b/src/main/java/org/distorted/objects/ObjectList.java
index f4abaf32..84ac1dce 100644
--- a/src/main/java/org/distorted/objects/ObjectList.java
+++ b/src/main/java/org/distorted/objects/ObjectList.java
@@ -123,7 +123,7 @@ public enum ObjectList
 
    REX (
          new int[][] {
-                       {3 , 16, R.raw.ivy, R.drawable.ui_small_ivy, R.drawable.ui_medium_ivy, R.drawable.ui_big_ivy, R.drawable.ui_huge_ivy} ,
+                       {3 , 16, R.raw.ivy, R.drawable.ui_small_rex, R.drawable.ui_medium_rex, R.drawable.ui_big_rex, R.drawable.ui_huge_rex} ,
                      },
          TwistyRex.class,
          new MovementRex(),
diff --git a/src/main/java/org/distorted/objects/TwistyRex.java b/src/main/java/org/distorted/objects/TwistyRex.java
index 7886c39e..328bbe65 100644
--- a/src/main/java/org/distorted/objects/TwistyRex.java
+++ b/src/main/java/org/distorted/objects/TwistyRex.java
@@ -352,21 +352,22 @@ public class TwistyRex extends TwistyObject
     {
     int COLORS = FACE_COLORS.length;
     FactorySticker factory = FactorySticker.getInstance();
-    float S  = 0.04f;
+    float S1 = 0.06f;
+    float S2 = 0.04f;
     float R1 = 0.12f;
     float R2 = 0.06f;
 
     if( face<COLORS )
       {
-      factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R2);
+      factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R2);
       }
     else if( face<2*COLORS )
       {
-      factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R1);
+      factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R1);
       }
     else
       {
-      factory.drawRexEdgeSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R1);
+      factory.drawRexEdgeSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S2, R1);
       }
     }
 
@@ -474,17 +475,54 @@ public class TwistyRex extends TwistyObject
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // The Rex is solved if and only if:
 //
-// TODO
+// 1) all 12 of its edge cubits are rotated with the same quat
+// 2) all its face & corner cubits are rotated with the same quat like the edge ones,
+//    and optionally they also might be upside down.
+//
+// i.e.
+// corners ( 0, 1, 2, 3, 4, 5, 6, 7) and faces (24,25) - might be extra QUAT[1]
+// corners ( 8, 9,10,11,12,13,14,15) and faces (26,27) - might be extra QUAT[2]
+// corners (16,17,18,19,20,21,22,23) and faces (28,29) - might be extra QUAT[3]
 
   public boolean isSolved()
     {
-    int q = CUBITS[0].mQuatIndex;
+    int q1,q = CUBITS[0].mQuatIndex;
 
-    for(int i=1; i<42; i++)
+    for(int i=30; i<42; i++)
       {
       if( CUBITS[i].mQuatIndex != q) return false;
       }
 
+    q1 = mulQuat(q,1);
+
+    for(int i=0; i<8; i++)
+      {
+      if( CUBITS[i].mQuatIndex != q && CUBITS[i].mQuatIndex != q1 ) return false;
+      }
+
+    if( CUBITS[24].mQuatIndex != q && CUBITS[24].mQuatIndex != q1 ) return false;
+    if( CUBITS[25].mQuatIndex != q && CUBITS[25].mQuatIndex != q1 ) return false;
+
+    q1 = mulQuat(q,2);
+
+    for(int i=8; i<16; i++)
+      {
+      if( CUBITS[i].mQuatIndex != q && CUBITS[i].mQuatIndex != q1 ) return false;
+      }
+
+    if( CUBITS[26].mQuatIndex != q && CUBITS[26].mQuatIndex != q1 ) return false;
+    if( CUBITS[27].mQuatIndex != q && CUBITS[27].mQuatIndex != q1 ) return false;
+
+    q1 = mulQuat(q,3);
+
+    for(int i=16; i<24; i++)
+      {
+      if( CUBITS[i].mQuatIndex != q && CUBITS[i].mQuatIndex != q1 ) return false;
+      }
+
+    if( CUBITS[28].mQuatIndex != q && CUBITS[28].mQuatIndex != q1 ) return false;
+    if( CUBITS[29].mQuatIndex != q && CUBITS[29].mQuatIndex != q1 ) return false;
+
     return true;
     }
 
diff --git a/src/main/res/drawable-nodpi/ui_big_rex.png b/src/main/res/drawable-nodpi/ui_big_rex.png
new file mode 100644
index 00000000..4e985ce8
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_big_rex.png differ
diff --git a/src/main/res/drawable-nodpi/ui_huge_rex.png b/src/main/res/drawable-nodpi/ui_huge_rex.png
new file mode 100644
index 00000000..b65c797a
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_huge_rex.png differ
diff --git a/src/main/res/drawable-nodpi/ui_medium_rex.png b/src/main/res/drawable-nodpi/ui_medium_rex.png
new file mode 100644
index 00000000..ea7f70a0
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_medium_rex.png differ
diff --git a/src/main/res/drawable-nodpi/ui_small_rex.png b/src/main/res/drawable-nodpi/ui_small_rex.png
new file mode 100644
index 00000000..cd70d22c
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_small_rex.png differ
