commit 740fade2e90a11ff34ba6511a5cad3d0a3cccac9
Author: leszek <leszek@koltunski.pl>
Date:   Mon Jun 10 21:45:38 2024 +0200

    Fix the association between a RubikObject and its solvers and patterns.
    
    Before, if we rearranged the objects order in the main screen, this would break down.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
index 4eb5242d..5b07e020 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogPattern.java
@@ -21,6 +21,8 @@ import org.distorted.main.R;
 import org.distorted.objectlib.main.ObjectControl;
 import org.distorted.objectlib.patterns.RubikPattern;
 import org.distorted.objectlib.patterns.RubikPatternList;
+import org.distorted.objects.RubikObject;
+import org.distorted.objects.RubikObjectList;
 import org.distorted.patternui.PatternActivity;
 import org.distorted.patternui.ScreenList;
 import org.distorted.patternui.ScreenPattern;
@@ -73,7 +75,10 @@ public class RubikDialogPattern extends RubikDialogAbstract
       return;
       }
 
-    mPatternOrdinal = RubikPatternList.getOrdinal(objectOrdinal);
+    RubikObject object = RubikObjectList.getObject(objectOrdinal);
+    int objectIndex = object==null ? -1 : object.getIndex();
+
+    mPatternOrdinal = RubikPatternList.getOrdinal(objectIndex);
 
     if( mPatternOrdinal<0 )
       {
diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 80c2bd80..acc95369 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -46,6 +46,7 @@ public class RubikObject
   private final float mDifficulty;
   private final String mAuthor;
   private final boolean mAdjColors;
+  private final int mObjectIndex;
 
   private boolean mIsFree;
   private int mJsonID, mMeshID, mExtrasID;
@@ -75,11 +76,12 @@ public class RubikObject
     mAuthor      = meta.getAuthor();
     mIsLocal     = false;
     mAdjColors   = meta.supportsAdjustableStickerColors();
+    mObjectIndex = ListObjects.getObjectIndex(mUpperName);
 
-    int patternOrdinal  = RubikPatternList.getOrdinal(mObjectOrdinal);
+    int patternOrdinal  = RubikPatternList.getOrdinal(mObjectIndex);
     mPatterns = RubikPatternList.getPatterns(patternOrdinal);
 
-    mSolverOrdinal = ImplementedSolversList.getSolverOrdinal(mObjectOrdinal);
+    mSolverOrdinal = ImplementedSolversList.getSolverOrdinal(mObjectIndex);
     mExtrasOrdinal = -1;
 
     mObjectVersion = meta.objectVersion();
@@ -104,6 +106,7 @@ public class RubikObject
     mYear          = object.year;
     mAuthor        = object.author;
     mAdjColors     = object.adjColors;
+    mObjectIndex   = -1;
 
     mPatterns      = null;
     mExtrasOrdinal = -1;
@@ -313,6 +316,13 @@ public class RubikObject
     return mCategory;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getIndex()
+    {
+    return mObjectIndex;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public float getDifficulty()
diff --git a/src/main/java/org/distorted/solverui/SolverActivity.java b/src/main/java/org/distorted/solverui/SolverActivity.java
index c80a1123..922d8a92 100644
--- a/src/main/java/org/distorted/solverui/SolverActivity.java
+++ b/src/main/java/org/distorted/solverui/SolverActivity.java
@@ -61,7 +61,9 @@ public class SolverActivity extends BaseActivity
 
       Bundle b = getIntent().getExtras();
       mObjectOrdinal = b!=null ? b.getInt("obj") : 0;
-      mSolverOrdinal = ImplementedSolversList.getSolverOrdinal(mObjectOrdinal);
+      RubikObject object = RubikObjectList.getObject(mObjectOrdinal);
+      int objectIndex = object==null ? -1 : object.getIndex();
+      mSolverOrdinal = ImplementedSolversList.getSolverOrdinal(objectIndex);
       mDisplayMessageDialog = true;
 
       computeScreenDimensions();
