commit 6fd4a72c9132679933643e78fa91dc3f0fa1cc67
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Oct 24 00:51:28 2020 +0100

    Preparation for the Object Info popup: add the name, inventor, complexity info to each object.

diff --git a/src/main/java/org/distorted/objects/TwistyCube.java b/src/main/java/org/distorted/objects/TwistyCube.java
index 59f029b6..46675daa 100644
--- a/src/main/java/org/distorted/objects/TwistyCube.java
+++ b/src/main/java/org/distorted/objects/TwistyCube.java
@@ -29,6 +29,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -485,4 +486,46 @@ class TwistyCube extends TwistyObject
 
     return objectString.toString();
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 2: return R.string.cube2;
+      case 3: return R.string.cube3;
+      case 4: return R.string.cube4;
+      case 5: return R.string.cube5;
+      }
+    return R.string.cube3;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 2: return R.string.cube2_inventor;
+      case 3: return R.string.cube3_inventor;
+      case 4: return R.string.cube4_inventor;
+      case 5: return R.string.cube5_inventor;
+      }
+    return R.string.cube3_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 2: return 4;
+      case 3: return 6;
+      case 4: return 8;
+      case 5: return 10;
+      }
+    return 6;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyDiamond.java b/src/main/java/org/distorted/objects/TwistyDiamond.java
index cb120b17..1cf401e1 100644
--- a/src/main/java/org/distorted/objects/TwistyDiamond.java
+++ b/src/main/java/org/distorted/objects/TwistyDiamond.java
@@ -30,6 +30,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -422,4 +423,24 @@ public class TwistyDiamond extends TwistyObject
     return "";
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    return R.string.diam2;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    return R.string.diam2_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    return 5;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyDino.java b/src/main/java/org/distorted/objects/TwistyDino.java
index ebbfbaf8..5c5f3c52 100644
--- a/src/main/java/org/distorted/objects/TwistyDino.java
+++ b/src/main/java/org/distorted/objects/TwistyDino.java
@@ -279,4 +279,11 @@ public abstract class TwistyDino extends TwistyObject
     {
     return "";
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    return 2;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyDino4.java b/src/main/java/org/distorted/objects/TwistyDino4.java
index 3761f379..2c0802cb 100644
--- a/src/main/java/org/distorted/objects/TwistyDino4.java
+++ b/src/main/java/org/distorted/objects/TwistyDino4.java
@@ -25,6 +25,7 @@ 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.R;
 
 import java.util.Random;
 
@@ -108,4 +109,18 @@ public class TwistyDino4 extends TwistyDino
 
     return true;
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    return R.string.din43;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    return R.string.din43_inventor;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyDino6.java b/src/main/java/org/distorted/objects/TwistyDino6.java
index 288d3ef4..9e75dadc 100644
--- a/src/main/java/org/distorted/objects/TwistyDino6.java
+++ b/src/main/java/org/distorted/objects/TwistyDino6.java
@@ -25,6 +25,7 @@ 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.R;
 
 import java.util.Random;
 
@@ -105,4 +106,18 @@ public class TwistyDino6 extends TwistyDino
 
     return ( qX==qY && qX==qZ ) || ( qY==mulQuat(qX,2) && qZ==mulQuat(qX,8) );
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    return R.string.dino3;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    return R.string.dino3_inventor;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyHelicopter.java b/src/main/java/org/distorted/objects/TwistyHelicopter.java
index 6bfe9976..0d859b78 100644
--- a/src/main/java/org/distorted/objects/TwistyHelicopter.java
+++ b/src/main/java/org/distorted/objects/TwistyHelicopter.java
@@ -30,6 +30,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -482,4 +483,25 @@ public class TwistyHelicopter extends TwistyObject
     {
     return "";
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    return R.string.heli3;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    return R.string.heli3_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    return 8;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyIvy.java b/src/main/java/org/distorted/objects/TwistyIvy.java
index 7f719fbd..3fa163e4 100644
--- a/src/main/java/org/distorted/objects/TwistyIvy.java
+++ b/src/main/java/org/distorted/objects/TwistyIvy.java
@@ -30,6 +30,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -397,4 +398,25 @@ public class TwistyIvy extends TwistyObject
     {
     return "";
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    return R.string.ivy2;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    return R.string.ivy2_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    return 1;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index c1dddc93..f1f3bcdf 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -771,4 +771,7 @@ public abstract class TwistyObject extends DistortedNode
   public abstract String retObjectString();
   public abstract int randomizeNewRotAxis(Random rnd, int oldRotAxis);
   public abstract int randomizeNewRow(Random rnd, int oldRotAxis, int oldRow, int newRotAxis);
+  public abstract int getObjectName(int numLayers);
+  public abstract int getInventor(int numLayers);
+  public abstract int getComplexity(int numLayers);
   }
diff --git a/src/main/java/org/distorted/objects/TwistyPyraminx.java b/src/main/java/org/distorted/objects/TwistyPyraminx.java
index 2c1e085c..eea2f6b4 100644
--- a/src/main/java/org/distorted/objects/TwistyPyraminx.java
+++ b/src/main/java/org/distorted/objects/TwistyPyraminx.java
@@ -29,6 +29,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -401,4 +402,43 @@ public class TwistyPyraminx extends TwistyObject
     {
     return "";
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 3: return R.string.pyra3;
+      case 4: return R.string.pyra4;
+      case 5: return R.string.pyra5;
+      }
+    return R.string.pyra3;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 3: return R.string.pyra3_inventor;
+      case 4: return R.string.pyra4_inventor;
+      case 5: return R.string.pyra5_inventor;
+      }
+    return R.string.pyra3_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 3: return 4;
+      case 4: return 6;
+      case 5: return 8;
+      }
+    return 4;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyRedi.java b/src/main/java/org/distorted/objects/TwistyRedi.java
index dc3aa531..b12bcde8 100644
--- a/src/main/java/org/distorted/objects/TwistyRedi.java
+++ b/src/main/java/org/distorted/objects/TwistyRedi.java
@@ -30,6 +30,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -430,4 +431,25 @@ public class TwistyRedi extends TwistyObject
     {
     return "";
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    return R.string.redi2;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    return R.string.redi2_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    return 4;
+    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistySkewb.java b/src/main/java/org/distorted/objects/TwistySkewb.java
index c088e680..d09628f0 100644
--- a/src/main/java/org/distorted/objects/TwistySkewb.java
+++ b/src/main/java/org/distorted/objects/TwistySkewb.java
@@ -32,6 +32,7 @@ import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.main.R;
 import org.distorted.main.RubikSurfaceView;
 
 import java.util.Random;
@@ -661,4 +662,40 @@ public class TwistySkewb extends TwistyObject
     {
     return "";
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getObjectName(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 2: return R.string.skew2;
+      case 3: return R.string.skew3;
+      }
+    return R.string.skew2;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getInventor(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 2: return R.string.skew2_inventor;
+      case 3: return R.string.skew3_inventor;
+      }
+    return R.string.skew2_inventor;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getComplexity(int numLayers)
+    {
+    switch(numLayers)
+      {
+      case 2: return 5;
+      case 3: return 9;
+      }
+    return 5;
+    }
 }
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 2b1a4124..071102e4 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,8 +1,6 @@
 <resources>
     <string name="app_name">Magic Cube</string>
     <string name="distorted" translatable="false">DISTORTED</string>
-    <string name="opengl_error" translatable="false">Error</string>
-    <string name="opengl_error_text" translatable="false">This device does not support OpenGL 3.0</string>
     <string name="scramble">Scramble</string>
     <string name="solve">Solve</string>
     <string name="exit">Exit</string>
@@ -37,17 +35,20 @@
     <string name="new_name_try_again">The name you have chosen, %s, is already taken. Try again:</string>
     <string name="downloading">Downloading…</string>
     <string name="submitting">Submitting…</string>
-    <string name="privacy_policy">Privacy Policy</string>
-    <string name="privacy_policy_text">Please see and accept our <a href="https://distorted.org/redmine/projects/magic-cube/wiki/Privacy_policy">Privacy Policy</a></string>
-    <string name="accept">Accept</string>
-    <string name="decline">Decline</string>
     <string name="credits1">Open Source app developed using the Distorted graphics library. Licensed under <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL version 2</a> or - at your option - any later version.</string>
     <string name="credits2">Pretty Patterns by Walter Randelshofer. See <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string>
     <string name="credits3">Download code, take a look at tutorials, learn how to add your own graphics effect, learn how to code your own object, contribute a Pretty Pattern, implement your own solver, or report a bug: \n\n<a href="https://distorted.org/redmine/projects/magic-cube/wiki">Distorted.org</a></string>
-    <string name="credits4">Please see our <a href="https://distorted.org/redmine/projects/magic-cube/wiki/Privacy_policy">Privacy Policy</a></string>
+    <string name="credits4" translatable="false">Please see our <a href="https://distorted.org/redmine/projects/magic-cube/wiki/Privacy_policy">Privacy Policy</a></string>
 
-    <string name="solver_generic_error1">Solver for this object and size not implemented yet!</string>
+    <string name="privacy_policy" translatable="false">Privacy Policy</string>
+    <string name="privacy_policy_text" translatable="false">Please see and accept our <a href="https://distorted.org/redmine/projects/magic-cube/wiki/Privacy_policy">Privacy Policy</a></string>
+    <string name="accept" translatable="false">Accept</string>
+    <string name="decline" translatable="false">Decline</string>
+
+    <string name="opengl_error" translatable="false">Error</string>
+    <string name="opengl_error_text" translatable="false">This device does not support OpenGL 3.0</string>
 
+    <string name="solver_generic_error1">Solver for this object and size not implemented yet!</string>
     <string name="solver_cube3_error1">There are not exactly 9 facelets of each color!</string>
     <string name="solver_cube3_error2">Not all 12 edges exist exactly once!</string>
     <string name="solver_cube3_error3">One edge has to be flipped!</string>
@@ -65,4 +66,37 @@
     <string name="ti_placeholder">%1$.2f seconds</string>
     <string name="mo_placeholder">%1$d/%2$d</string>
     <string name="sq_placeholder" translatable="false">%1$2d.</string>
+
+    <string name="cube2" translatable="false">Pocket Cube</string>
+    <string name="cube3" translatable="false">Rubik Cube</string>
+    <string name="cube4" translatable="false">Rubik\'s Revenge</string>
+    <string name="cube5" translatable="false">Professor\'s Cube</string>
+    <string name="pyra3" translatable="false">Pyraminx</string>
+    <string name="pyra4" translatable="false">Master Pyraminx</string>
+    <string name="pyra5" translatable="false">Professor\'s Pyraminx</string>
+    <string name="skew2" translatable="false">Skewb</string>
+    <string name="skew3" translatable="false">Master Skewb</string>
+    <string name="diam2" translatable="false">Skewb Diamond</string>
+    <string name="redi2" translatable="false">Redi Cube</string>
+    <string name="heli3" translatable="false">Helicopter Cube</string>
+    <string name="ivy2"  translatable="false">Ivy Cube</string>
+    <string name="dino3" translatable="false">Dino Cube (6 color)</string>
+    <string name="din43" translatable="false">Dino Cube (4 color)</string>
+
+    <string name="cube2_inventor" translatable="false">Larry Nichols, 1970</string>
+    <string name="cube3_inventor" translatable="false">Ernő Rubik, 1974</string>
+    <string name="cube4_inventor" translatable="false">Péter Sebestény, 1981</string>
+    <string name="cube5_inventor" translatable="false">Udo Krell, 1981</string>
+    <string name="pyra3_inventor" translatable="false">Uwe Meffert, 1970</string>
+    <string name="pyra4_inventor" translatable="false">Katsuhiko Okamoto, 2002</string>
+    <string name="pyra5_inventor" translatable="false">Timur Evbatyrov, 2011</string>
+    <string name="skew2_inventor" translatable="false">Tony Durham, 1982</string>
+    <string name="skew3_inventor" translatable="false">Katsuhiko Okamoto, 2003</string>
+    <string name="diam2_inventor" translatable="false">Uwe Meffert, 1984</string>
+    <string name="redi2_inventor" translatable="false">Oskar van Deventer, 2009</string>
+    <string name="heli3_inventor" translatable="false">Adam G. Cowan, 2006</string>
+    <string name="ivy2_inventor"  translatable="false">Eitan Cher, 2009</string>
+    <string name="dino3_inventor" translatable="false">Robert Webb, 1985</string>
+    <string name="din43_inventor" translatable="false">Robert Webb, 1985</string>
+
 </resources>
