commit ecf3f149c9b9d314cc66b5cebc85a7ef3c3d48f3
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Aug 8 16:46:59 2021 +0200

    Move the TwistyObject.retCubePosition() to the solver.

diff --git a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
index d0c5442a..7eb65632 100644
--- a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
+++ b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
@@ -583,12 +583,4 @@ abstract class TwistyBandagedAbstract extends TwistyObject
 
     return true;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Bandaged solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyCube.java b/src/main/java/org/distorted/objects/TwistyCube.java
index 91478c68..d824f456 100644
--- a/src/main/java/org/distorted/objects/TwistyCube.java
+++ b/src/main/java/org/distorted/objects/TwistyCube.java
@@ -374,132 +374,6 @@ class TwistyCube extends TwistyObject
     return true;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// order: Up --> Right --> Front --> Down --> Left --> Back
-// (because the first implemented Solver - the two-phase Cube3 one - expects such order)
-//
-// Solved 3x3x3 Cube maps to "UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB"
-//
-// s : size of the cube; let index = a*s + b    (i.e. a,b = row,column)
-//
-// Up    :   index --> b<s-1 ? (s-1)*(s+4b)+a : 6*s*s -13*s +8 +a
-// Right :   index --> 6*s*s - 12*s + 7 - index
-// Front :   index --> if b==0  : s*s - 1 - index
-//                     if b==s-1: 6*s*s -11*s +6 - index
-//                     else
-//                         a==0: s*s + s-1 + 4*(b-1)*(s-1) + 2*(s-2) + s
-//                         else: s*s + s-1 + 4*(b-1)*(s-1) + 2*(s-1-a)
-// Down  :   index --> b==0 ? (s-1-a) : s*s + s-1 + 4*(b-1)*(s-1) - a
-// Left  :   index --> (s-1-a)*s + b
-// Back  :   index --> if b==s-1: s*(s-1-a)
-//                     if b==0  : 5*s*s -12*s + 8 + (s-1-a)*s
-//                     else
-//                        if a==s-1: s*s + 4*(s-2-b)*(s-1)
-//                        else     : s*s + 4*(s-2-b)*(s-1) + s + (s-2-a)*2
-
-  public String retObjectString()
-    {
-    StringBuilder objectString = new StringBuilder();
-    int layers = getNumLayers();
-    int len = layers*layers;
-    int cubitIndex, row, col, color,face;
-
-    final int RIGHT= 0;
-    final int LEFT = 1;
-    final int UP   = 2;
-    final int DOWN = 3;
-    final int FRONT= 4;
-    final int BACK = 5;
-
-    // 'I' - interior, theoretically can happen
-    final char[] FACE_NAMES = { 'R', 'L', 'U', 'D', 'F', 'B', 'I'};
-
-    face = UP;
-
-    for(int i=0; i<len; i++)
-      {
-      row = i/layers;
-      col = i%layers;
-
-      cubitIndex = col<layers-1 ? (layers-1)*(layers+4*col) + row : 6*layers*layers - 13*layers + 8 + row;
-      color = getCubitFaceColorIndex(cubitIndex,face);
-      objectString.append(FACE_NAMES[color]);
-      }
-
-    face = RIGHT;
-
-    for(int i=0; i<len; i++)
-      {
-      cubitIndex = 6*layers*layers - 12*layers +7 - i;
-      color = getCubitFaceColorIndex(cubitIndex,face);
-      objectString.append(FACE_NAMES[color]);
-      }
-
-    face = FRONT;
-
-    for(int i=0; i<len; i++)
-      {
-      row = i/layers;
-      col = i%layers;
-
-      if( col==layers-1 ) cubitIndex = 6*layers*layers - 11*layers + 6 -i;
-      else if(   col==0 ) cubitIndex = layers*layers - 1 - i;
-      else
-        {
-        if( row==0 ) cubitIndex = layers*layers + layers-1 + 4*(col-1)*(layers-1) + 2*(layers-2) + layers;
-        else         cubitIndex = layers*layers + layers-1 + 4*(col-1)*(layers-1) + 2*(layers-1-row);
-        }
-
-      color = getCubitFaceColorIndex(cubitIndex,face);
-      objectString.append(FACE_NAMES[color]);
-      }
-
-    face = DOWN;
-
-    for(int i=0; i<len; i++)
-      {
-      row = i/layers;
-      col = i%layers;
-
-      cubitIndex = col==0 ? layers-1-row : layers*layers + layers-1 + 4*(col-1)*(layers-1) - row;
-      color = getCubitFaceColorIndex(cubitIndex,face);
-      objectString.append(FACE_NAMES[color]);
-      }
-
-    face = LEFT;
-
-    for(int i=0; i<len; i++)
-      {
-      row = i/layers;
-      col = i%layers;
-
-      cubitIndex = (layers-1-row)*layers + col;
-      color = getCubitFaceColorIndex(cubitIndex,face);
-      objectString.append(FACE_NAMES[color]);
-      }
-
-    face = BACK;
-
-    for(int i=0; i<len; i++)
-      {
-      row = i/layers;
-      col = i%layers;
-
-      if( col==layers-1 ) cubitIndex = layers*(layers-1-row);
-      else if(   col==0 ) cubitIndex = 5*layers*layers - 12*layers + 8 + (layers-1-row)*layers;
-      else
-        {
-        if( row==layers-1 ) cubitIndex = layers*layers + 4*(layers-2-col)*(layers-1);
-        else                cubitIndex = layers*layers + 4*(layers-2-col)*(layers-1) + layers + 2*(layers-2-row);
-        }
-
-      color = getCubitFaceColorIndex(cubitIndex,face);
-      objectString.append(FACE_NAMES[color]);
-      }
-
-    return objectString.toString();
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyDiamond.java b/src/main/java/org/distorted/objects/TwistyDiamond.java
index 5903a4fb..884bd27b 100644
--- a/src/main/java/org/distorted/objects/TwistyDiamond.java
+++ b/src/main/java/org/distorted/objects/TwistyDiamond.java
@@ -604,14 +604,6 @@ public class TwistyDiamond extends TwistyObject
     return true;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Diamond solvers ATM
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyDino.java b/src/main/java/org/distorted/objects/TwistyDino.java
index 3cda6cb0..904b9428 100644
--- a/src/main/java/org/distorted/objects/TwistyDino.java
+++ b/src/main/java/org/distorted/objects/TwistyDino.java
@@ -256,14 +256,6 @@ public abstract class TwistyDino extends TwistyObject
     return BASIC_ANGLE;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Dino solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getComplexity(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyHelicopter.java b/src/main/java/org/distorted/objects/TwistyHelicopter.java
index 1f921b93..26768093 100644
--- a/src/main/java/org/distorted/objects/TwistyHelicopter.java
+++ b/src/main/java/org/distorted/objects/TwistyHelicopter.java
@@ -513,14 +513,6 @@ public class TwistyHelicopter extends TwistyObject
     return false;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Helicopter solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyIvy.java b/src/main/java/org/distorted/objects/TwistyIvy.java
index f08dc840..277d2d62 100644
--- a/src/main/java/org/distorted/objects/TwistyIvy.java
+++ b/src/main/java/org/distorted/objects/TwistyIvy.java
@@ -508,14 +508,6 @@ public class TwistyIvy extends TwistyObject
     return false;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Ivy solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyJing.java b/src/main/java/org/distorted/objects/TwistyJing.java
index 47d3e852..b01a9aba 100644
--- a/src/main/java/org/distorted/objects/TwistyJing.java
+++ b/src/main/java/org/distorted/objects/TwistyJing.java
@@ -480,14 +480,6 @@ public class TwistyJing extends TwistyObject
     return true;
     }
 
-////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no JingPyraminx solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyMinx.java b/src/main/java/org/distorted/objects/TwistyMinx.java
index 0f8859d3..d96fb8ad 100644
--- a/src/main/java/org/distorted/objects/TwistyMinx.java
+++ b/src/main/java/org/distorted/objects/TwistyMinx.java
@@ -557,12 +557,4 @@ abstract class TwistyMinx extends TwistyObject
     {
     return BASIC_ANGLE;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Minx solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
 }
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index dd928fb3..4b6eae2b 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -399,18 +399,6 @@ public abstract class TwistyObject extends DistortedNode
       }
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  int getCubitFaceColorIndex(int cubit, int face)
-    {
-    Static4D texMap = mMesh.getTextureMap(NUM_FACES*cubit + face);
-
-    int x = (int)(texMap.get0()/texMap.get2());
-    int y = (int)(texMap.get1()/texMap.get3());
-
-    return (mNumTexRows-1-y)*NUM_STICKERS_IN_ROW + x;
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // normal, not bandaged, object.
 
@@ -572,6 +560,18 @@ public abstract class TwistyObject extends DistortedNode
     factory.printStickerCoords();
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getCubitFaceColorIndex(int cubit, int face)
+    {
+    Static4D texMap = mMesh.getTextureMap(NUM_FACES*cubit + face);
+
+    int x = (int)(texMap.get0()/texMap.get2());
+    int y = (int)(texMap.get1()/texMap.get3());
+
+    return (mNumTexRows-1-y)*NUM_STICKERS_IN_ROW + x;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // the getFaceColors + final black in a grid (so that we do not exceed the maximum texture size)
 
@@ -984,7 +984,6 @@ public abstract class TwistyObject extends DistortedNode
   public abstract Static3D[] getRotationAxis();
   public abstract boolean isSolved();
   public abstract int[] getBasicAngle();
-  public abstract String retObjectString();
   public abstract void randomizeNewScramble(int[][] scramble, Random rnd, int curScramble, int totScrambles);
   public abstract int getObjectName(int numLayers);
   public abstract int getInventor(int numLayers);
diff --git a/src/main/java/org/distorted/objects/TwistyPyraminx.java b/src/main/java/org/distorted/objects/TwistyPyraminx.java
index 9c7f49a1..c2b786bd 100644
--- a/src/main/java/org/distorted/objects/TwistyPyraminx.java
+++ b/src/main/java/org/distorted/objects/TwistyPyraminx.java
@@ -468,14 +468,6 @@ public class TwistyPyraminx extends TwistyObject
     return true;
     }
 
-////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Pyraminx solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyRedi.java b/src/main/java/org/distorted/objects/TwistyRedi.java
index b6fd2f01..baa96d48 100644
--- a/src/main/java/org/distorted/objects/TwistyRedi.java
+++ b/src/main/java/org/distorted/objects/TwistyRedi.java
@@ -538,14 +538,6 @@ public class TwistyRedi extends TwistyObject
              CUBITS[19].mQuatIndex == q  );
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Redi solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistyRex.java b/src/main/java/org/distorted/objects/TwistyRex.java
index 6e453986..a363934f 100644
--- a/src/main/java/org/distorted/objects/TwistyRex.java
+++ b/src/main/java/org/distorted/objects/TwistyRex.java
@@ -685,14 +685,6 @@ public class TwistyRex extends TwistyObject
     return true;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Rex solvers ATM
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistySkewb.java b/src/main/java/org/distorted/objects/TwistySkewb.java
index d6dc846c..c471e9f4 100644
--- a/src/main/java/org/distorted/objects/TwistySkewb.java
+++ b/src/main/java/org/distorted/objects/TwistySkewb.java
@@ -687,14 +687,6 @@ public class TwistySkewb extends TwistyObject
     return true;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Skewb solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/objects/TwistySquare.java b/src/main/java/org/distorted/objects/TwistySquare.java
index 50e98939..3f698245 100644
--- a/src/main/java/org/distorted/objects/TwistySquare.java
+++ b/src/main/java/org/distorted/objects/TwistySquare.java
@@ -295,13 +295,4 @@ abstract class TwistySquare extends TwistyObject
     {
     return BASIC_ANGLE;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Square solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 }
diff --git a/src/main/java/org/distorted/objects/TwistyUltimate.java b/src/main/java/org/distorted/objects/TwistyUltimate.java
index ea3f9857..6248be82 100644
--- a/src/main/java/org/distorted/objects/TwistyUltimate.java
+++ b/src/main/java/org/distorted/objects/TwistyUltimate.java
@@ -485,14 +485,6 @@ class TwistyUltimate extends TwistyObject
     return true;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// only needed for solvers - there are no Skewb Ultimate solvers ATM)
-
-  public String retObjectString()
-    {
-    return "";
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getObjectName(int numLayers)
diff --git a/src/main/java/org/distorted/screens/RubikScreenSolver.java b/src/main/java/org/distorted/screens/RubikScreenSolver.java
index 9e607a38..c656b1fe 100644
--- a/src/main/java/org/distorted/screens/RubikScreenSolver.java
+++ b/src/main/java/org/distorted/screens/RubikScreenSolver.java
@@ -212,8 +212,7 @@ public class RubikScreenSolver extends RubikScreenAbstract
           {
           mSolving = true;
           TwistyObject object = act.getObject();
-          String objectString = object.retObjectString();
-          SolverMain solver = new SolverMain( act.getResources(), mCurrentObject, mCurrentObjectSize, objectString );
+          SolverMain solver = new SolverMain( act.getResources(), object );
           solver.start();
           }
         }
diff --git a/src/main/java/org/distorted/solvers/SolverMain.java b/src/main/java/org/distorted/solvers/SolverMain.java
index fd499b35..54e744cf 100644
--- a/src/main/java/org/distorted/solvers/SolverMain.java
+++ b/src/main/java/org/distorted/solvers/SolverMain.java
@@ -23,6 +23,7 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objects.ObjectList;
+import org.distorted.objects.TwistyObject;
 import org.distorted.screens.ScreenList;
 import org.distorted.screens.RubikScreenSolver;
 
@@ -30,19 +31,15 @@ import org.distorted.screens.RubikScreenSolver;
 
 public class SolverMain implements Runnable
 {
-  private final String mObjectPosition;
   private final Resources mRes;
-  private final ObjectList mObject;
-  private final int mSize;
+  private final TwistyObject mObject;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public SolverMain(Resources res, ObjectList object, int size, String position )
+  public SolverMain(Resources res, TwistyObject object)
     {
-    mRes            = res;
-    mObject         = object;
-    mSize           = size;
-    mObjectPosition = position;
+    mRes   = res;
+    mObject= object;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -75,7 +72,10 @@ public class SolverMain implements Runnable
     if( !org.distorted.solvers.cube3.Search.prepare(mRes) )
       result= "Error 9";
     else
-      result = org.distorted.solvers.cube3.Search.solution(mObjectPosition, 24, 20);
+      {
+      String objectPosition = prepareCube3position();
+      result = org.distorted.solvers.cube3.Search.solution(objectPosition, 24, 20);
+      }
 
     if (result.contains("Error"))
       {
@@ -100,6 +100,132 @@ public class SolverMain implements Runnable
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// order: Up --> Right --> Front --> Down --> Left --> Back
+// (because the first implemented Solver - the two-phase Cube3 one - expects such order)
+//
+// Solved 3x3x3 Cube maps to "UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB"
+//
+// s : size of the cube; let index = a*s + b    (i.e. a,b = row,column)
+//
+// Up    :   index --> b<s-1 ? (s-1)*(s+4b)+a : 6*s*s -13*s +8 +a
+// Right :   index --> 6*s*s - 12*s + 7 - index
+// Front :   index --> if b==0  : s*s - 1 - index
+//                     if b==s-1: 6*s*s -11*s +6 - index
+//                     else
+//                         a==0: s*s + s-1 + 4*(b-1)*(s-1) + 2*(s-2) + s
+//                         else: s*s + s-1 + 4*(b-1)*(s-1) + 2*(s-1-a)
+// Down  :   index --> b==0 ? (s-1-a) : s*s + s-1 + 4*(b-1)*(s-1) - a
+// Left  :   index --> (s-1-a)*s + b
+// Back  :   index --> if b==s-1: s*(s-1-a)
+//                     if b==0  : 5*s*s -12*s + 8 + (s-1-a)*s
+//                     else
+//                        if a==s-1: s*s + 4*(s-2-b)*(s-1)
+//                        else     : s*s + 4*(s-2-b)*(s-1) + s + (s-2-a)*2
+
+  private String prepareCube3position()
+    {
+    StringBuilder objectString = new StringBuilder();
+    int layers = mObject.getNumLayers();
+    int len = layers*layers;
+    int cubitIndex, row, col, color,face;
+
+    final int RIGHT= 0;
+    final int LEFT = 1;
+    final int UP   = 2;
+    final int DOWN = 3;
+    final int FRONT= 4;
+    final int BACK = 5;
+
+    // 'I' - interior, theoretically can happen
+    final char[] FACE_NAMES = { 'R', 'L', 'U', 'D', 'F', 'B', 'I'};
+
+    face = UP;
+
+    for(int i=0; i<len; i++)
+      {
+      row = i/layers;
+      col = i%layers;
+
+      cubitIndex = col<layers-1 ? (layers-1)*(layers+4*col) + row : 6*layers*layers - 13*layers + 8 + row;
+      color = mObject.getCubitFaceColorIndex(cubitIndex,face);
+      objectString.append(FACE_NAMES[color]);
+      }
+
+    face = RIGHT;
+
+    for(int i=0; i<len; i++)
+      {
+      cubitIndex = 6*layers*layers - 12*layers +7 - i;
+      color = mObject.getCubitFaceColorIndex(cubitIndex,face);
+      objectString.append(FACE_NAMES[color]);
+      }
+
+    face = FRONT;
+
+    for(int i=0; i<len; i++)
+      {
+      row = i/layers;
+      col = i%layers;
+
+      if( col==layers-1 ) cubitIndex = 6*layers*layers - 11*layers + 6 -i;
+      else if(   col==0 ) cubitIndex = layers*layers - 1 - i;
+      else
+        {
+        if( row==0 ) cubitIndex = layers*layers + layers-1 + 4*(col-1)*(layers-1) + 2*(layers-2) + layers;
+        else         cubitIndex = layers*layers + layers-1 + 4*(col-1)*(layers-1) + 2*(layers-1-row);
+        }
+
+      color = mObject.getCubitFaceColorIndex(cubitIndex,face);
+      objectString.append(FACE_NAMES[color]);
+      }
+
+    face = DOWN;
+
+    for(int i=0; i<len; i++)
+      {
+      row = i/layers;
+      col = i%layers;
+
+      cubitIndex = col==0 ? layers-1-row : layers*layers + layers-1 + 4*(col-1)*(layers-1) - row;
+      color = mObject.getCubitFaceColorIndex(cubitIndex,face);
+      objectString.append(FACE_NAMES[color]);
+      }
+
+    face = LEFT;
+
+    for(int i=0; i<len; i++)
+      {
+      row = i/layers;
+      col = i%layers;
+
+      cubitIndex = (layers-1-row)*layers + col;
+      color = mObject.getCubitFaceColorIndex(cubitIndex,face);
+      objectString.append(FACE_NAMES[color]);
+      }
+
+    face = BACK;
+
+    for(int i=0; i<len; i++)
+      {
+      row = i/layers;
+      col = i%layers;
+
+      if( col==layers-1 ) cubitIndex = layers*(layers-1-row);
+      else if(   col==0 ) cubitIndex = 5*layers*layers - 12*layers + 8 + (layers-1-row)*layers;
+      else
+        {
+        if( row==layers-1 ) cubitIndex = layers*layers + 4*(layers-2-col)*(layers-1);
+        else                cubitIndex = layers*layers + 4*(layers-2-col)*(layers-1) + layers + 2*(layers-2-row);
+        }
+
+      color = mObject.getCubitFaceColorIndex(cubitIndex,face);
+      objectString.append(FACE_NAMES[color]);
+      }
+
+    return objectString.toString();
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void interruptCube3()
@@ -121,7 +247,7 @@ public class SolverMain implements Runnable
     {
     RubikScreenSolver solver = (RubikScreenSolver) ScreenList.SVER.getScreenClass();
 
-    if( mObject == ObjectList.CUBE && mSize == 3)
+    if( mObject.getObjectList()==ObjectList.CUBE && mObject.getNumLayers()==3 )
       {
       solveCube3(solver);
       }
