commit 20931cf6a875791648ca2a1cc579d83df56cccda
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Apr 6 14:08:17 2020 +0100

    Progress making the Solver state more abstract.

diff --git a/src/main/java/org/distorted/objects/RubikCube.java b/src/main/java/org/distorted/objects/RubikCube.java
index a07c62a0..08d88bc7 100644
--- a/src/main/java/org/distorted/objects/RubikCube.java
+++ b/src/main/java/org/distorted/objects/RubikCube.java
@@ -228,7 +228,7 @@ class RubikCube extends RubikObject
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public String retString()
+  public String retObjectString()
     {
     String ret="UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB";
 /*
diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index c0ed5bd2..732bf16e 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -567,13 +567,6 @@ public abstract class RubikObject extends DistortedNode
     return mList;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public String retObjectString()
-    {
-    return retString();
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   abstract float getScreenRatio();
@@ -581,11 +574,11 @@ public abstract class RubikObject extends DistortedNode
   abstract Static3D[] getCubitPositions(int size);
   abstract float[] getLegalQuats();
   abstract int getNumFaces();
-  abstract String retString();
   abstract MeshBase createCubitMesh(int cubit, int vertices);
   abstract void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top, int side);
   public abstract Static3D[] getRotationAxis();
   public abstract int getBasicAngle();
   public abstract float returnMultiplier();
   public abstract float returnRotationFactor(float offset);
+  public abstract String retObjectString();
   }
diff --git a/src/main/java/org/distorted/objects/RubikObjectList.java b/src/main/java/org/distorted/objects/RubikObjectList.java
index b0bdc597..8d98e12f 100644
--- a/src/main/java/org/distorted/objects/RubikObjectList.java
+++ b/src/main/java/org/distorted/objects/RubikObjectList.java
@@ -25,6 +25,8 @@ import org.distorted.library.mesh.MeshRectangles;
 import org.distorted.library.type.Static4D;
 import org.distorted.main.R;
 
+import java.lang.reflect.Field;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public enum RubikObjectList
@@ -36,6 +38,7 @@ public enum RubikObjectList
                        {4 , R.drawable.cube4} ,
                        {5 , R.drawable.cube5}
                      },
+         RubikCube.class,
          new RubikCubeMovement()
        ),
 
@@ -45,6 +48,7 @@ public enum RubikObjectList
                        {4 , R.drawable.pyra4} ,
                        {5 , R.drawable.pyra5}
                      },
+         RubikPyraminx.class,
          new RubikPyraminxMovement()
        ),
   ;
@@ -53,7 +57,8 @@ public enum RubikObjectList
   public static final int MAX_SIZE;
 
   private final int[] mObjectSizes, mIconIDs;
-  final RubikObjectMovement mObjectMovementClass;
+  private final Class<? extends RubikObject> mObjectClass;
+  private final RubikObjectMovement mObjectMovementClass;
   private static final RubikObjectList[] objects;
   private static int mNumAll;
 
@@ -213,7 +218,33 @@ public enum RubikObjectList
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  RubikObjectList(int[][] info, RubikObjectMovement movement)
+  public static int[] retFaceColors(RubikObjectList object)
+    {
+    Field field;
+    int[] faceColors=null;
+
+    try
+      {
+      field = object.mObjectClass.getDeclaredField("FACE_COLORS");
+      field.setAccessible(true);
+      Object obj = field.get(null);
+      faceColors = (int[]) obj;
+      }
+    catch(NoSuchFieldException ex)
+      {
+      android.util.Log.e("RubikObjectList", object.mObjectClass.getSimpleName()+": no such field exception getting field: "+ex.getMessage());
+      }
+    catch(IllegalAccessException ex)
+      {
+      android.util.Log.e("RubikObjectList", object.mObjectClass.getSimpleName()+": illegal access exception getting field: "+ex.getMessage());
+      }
+
+    return faceColors;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  RubikObjectList(int[][] info, Class<? extends RubikObject> object , RubikObjectMovement movement)
     {
     int length = info.length;
 
@@ -226,6 +257,7 @@ public enum RubikObjectList
       mIconIDs[i]     = info[i][1];
       }
 
+    mObjectClass         = object;
     mObjectMovementClass = movement;
     }
 
diff --git a/src/main/java/org/distorted/objects/RubikPyraminx.java b/src/main/java/org/distorted/objects/RubikPyraminx.java
index 1e8d57bc..487837dd 100644
--- a/src/main/java/org/distorted/objects/RubikPyraminx.java
+++ b/src/main/java/org/distorted/objects/RubikPyraminx.java
@@ -323,7 +323,7 @@ public class RubikPyraminx extends RubikObject
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // TODO
 
-  public String retString()
+  public String retObjectString()
     {
     return "";
     }
diff --git a/src/main/java/org/distorted/states/RubikStateSolver.java b/src/main/java/org/distorted/states/RubikStateSolver.java
index d678b8c7..2b9a743b 100644
--- a/src/main/java/org/distorted/states/RubikStateSolver.java
+++ b/src/main/java/org/distorted/states/RubikStateSolver.java
@@ -78,6 +78,19 @@ public class RubikStateSolver extends RubikStateAbstract
     RubikStatePlay play = (RubikStatePlay)RubikState.PLAY.getStateClass();
     play.setObjectAndSize(RubikObjectList.CUBE,3);
 
+int[] colors = RubikObjectList.retFaceColors(RubikObjectList.CUBE);
+
+if( colors != null )
+  {
+  int len = colors.length;
+
+  android.util.Log.e("solver", "retColors len="+len+" first: "+colors[0]);
+  }
+else
+  {
+  android.util.Log.e("solver", "retColors null");
+  }
+
     DisplayMetrics metrics = act.getResources().getDisplayMetrics();
     final float scale = metrics.density;
 
