commit 2067efd82efb99ce8e8791861395d9082ee789c7
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Sep 24 22:51:25 2020 +0100

    Fully support the 4-color Dino.

diff --git a/src/main/java/org/distorted/objects/RubikDino.java b/src/main/java/org/distorted/objects/RubikDino.java
index 14b5ef87..a5eae07f 100644
--- a/src/main/java/org/distorted/objects/RubikDino.java
+++ b/src/main/java/org/distorted/objects/RubikDino.java
@@ -411,46 +411,6 @@ public abstract class RubikDino extends RubikObject
       }
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int randomizeNewRow(Random rnd, int oldRotAxis, int oldRow, int newRotAxis)
-    {
-    float rowFloat = rnd.nextFloat();
-
-    switch(oldRotAxis)
-      {
-      case 0 : switch(newRotAxis)
-                 {
-                 case 1:
-                 case 2: return oldRow;
-                 case 3: return 2-oldRow;
-                 default: android.util.Log.e("dino", "error: oldRotAxis="+oldRotAxis+" newRotAxis:"+newRotAxis);
-                 }
-      case 1 : switch(newRotAxis)
-                 {
-                 case 0:
-                 case 3: return oldRow;
-                 case 2: return 2-oldRow;
-                 default: android.util.Log.e("dino", "error: oldRotAxis="+oldRotAxis+" newRotAxis:"+newRotAxis);
-                 }
-      case 2 : switch(newRotAxis)
-                 {
-                 case 0:
-                 case 3: return oldRow;
-                 case 1: return 2-oldRow;
-                 default: android.util.Log.e("dino", "error: oldRotAxis="+oldRotAxis+" newRotAxis:"+newRotAxis);
-                 }
-      case 3 : switch(newRotAxis)
-                 {
-                 case 1:
-                 case 2: return oldRow;
-                 case 0: return 2-oldRow;
-                 default: android.util.Log.e("dino", "error: oldRotAxis="+oldRotAxis+" newRotAxis:"+newRotAxis);
-                 }
-      default: return rowFloat<=0.5f ? 0:2;
-      }
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // only needed for solvers - there are no Dino solvers ATM)
 
diff --git a/src/main/java/org/distorted/objects/RubikDino4.java b/src/main/java/org/distorted/objects/RubikDino4.java
index 67a0e974..d374a3b5 100644
--- a/src/main/java/org/distorted/objects/RubikDino4.java
+++ b/src/main/java/org/distorted/objects/RubikDino4.java
@@ -25,7 +25,10 @@ import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedTexture;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
-import org.distorted.main.RubikSurfaceView;
+
+import java.util.Random;
+
+import static org.distorted.effects.scramble.ScrambleEffect.START_AXIS;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -62,6 +65,13 @@ public class RubikDino4 extends RubikDino
     return true;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int randomizeNewRow(Random rnd, int oldRotAxis, int oldRow, int newRotAxis)
+    {
+    return (oldRotAxis==START_AXIS) ? ((newRotAxis==1 || newRotAxis==2) ? 0:2) : (oldRotAxis+newRotAxis==3 ? 2-oldRow : oldRow);
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Dino4 is solved if and only if the four groups of three same-colored cubits each are rotate with
 // the same quaternion (actually we need to check only 3 first groups - if those are correct, the
diff --git a/src/main/java/org/distorted/objects/RubikDino6.java b/src/main/java/org/distorted/objects/RubikDino6.java
index 9a6ad7a3..5822ef3f 100644
--- a/src/main/java/org/distorted/objects/RubikDino6.java
+++ b/src/main/java/org/distorted/objects/RubikDino6.java
@@ -27,6 +27,10 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 import org.distorted.main.RubikSurfaceView;
 
+import java.util.Random;
+
+import static org.distorted.effects.scramble.ScrambleEffect.START_AXIS;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class RubikDino6 extends RubikDino
@@ -102,6 +106,13 @@ public class RubikDino6 extends RubikDino
     return false;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int randomizeNewRow(Random rnd, int oldRotAxis, int oldRow, int newRotAxis)
+    {
+    return (oldRotAxis==START_AXIS) ? (rnd.nextFloat()<=0.5f ? 0:2) : (oldRotAxis+newRotAxis==3 ? 2-oldRow : oldRow);
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Dino6 is solved if and only if:
 //
diff --git a/src/main/res/drawable-nodpi/ui_big_din4.png b/src/main/res/drawable-nodpi/ui_big_din4.png
new file mode 100644
index 00000000..212fd55b
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_big_din4.png differ
diff --git a/src/main/res/drawable-nodpi/ui_huge_din4.png b/src/main/res/drawable-nodpi/ui_huge_din4.png
new file mode 100644
index 00000000..e4388e79
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_huge_din4.png differ
diff --git a/src/main/res/drawable-nodpi/ui_medium_din4.png b/src/main/res/drawable-nodpi/ui_medium_din4.png
new file mode 100644
index 00000000..66a81806
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_medium_din4.png differ
diff --git a/src/main/res/drawable-nodpi/ui_small_din4.png b/src/main/res/drawable-nodpi/ui_small_din4.png
new file mode 100644
index 00000000..8c68e947
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_small_din4.png differ
