commit 7bdd481be62964cee6cdd64afd3dbcbbd9cfafc4
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Feb 13 15:32:22 2023 +0100

    - add the Pyraminx Duo solver to the list
    - make the signature of an object independent of its location in the ObjectType enum

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogWhatsNew.java b/src/main/java/org/distorted/dialogs/RubikDialogWhatsNew.java
index b1377fc2..77547956 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogWhatsNew.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogWhatsNew.java
@@ -119,14 +119,13 @@ public class RubikDialogWhatsNew extends RubikDialogAbstract
     pM.setMargins(0,2*margin,0,0);
 
     RubikActivity ract = (RubikActivity) getContext();
-    int start      = findVersion(mArgument);
     int numMessages= MESSAGES.length/2;
     String thisVersion = findCurrentVersion(ract);
 
     for(int i=0; i<numMessages; i++)
       {
-      String version = MESSAGES[start+2*i];
-      String message = MESSAGES[start+2*i+1];
+      String version = MESSAGES[2*i];
+      String message = MESSAGES[2*i+1];
       boolean isCurrent = version.equals(thisVersion);
 
       RubikDialogWhatsNewView pane = new RubikDialogWhatsNewView(ract,version,message,padd, isCurrent, (i==(numMessages-1) ? pL:pV),pT,pM);
diff --git a/src/main/java/org/distorted/solvers/ImplementedSolversList.java b/src/main/java/org/distorted/solvers/ImplementedSolversList.java
index 1a71db61..27bc98d1 100644
--- a/src/main/java/org/distorted/solvers/ImplementedSolversList.java
+++ b/src/main/java/org/distorted/solvers/ImplementedSolversList.java
@@ -17,6 +17,7 @@ import org.distorted.objectlib.main.ObjectSignatures;
 public enum ImplementedSolversList
 {
   CUBE3_KOCIEMBA (ObjectSignatures.CUBE_3, R.string.solver_cube3_title, R.string.solver_cube3_description, true),
+  PYRAMINX_DUO   (ObjectSignatures.PDUO_2, R.string.solver_pduo2_title, R.string.solver_pduo2_description, false),
   PYRAMINX       (ObjectSignatures.PYRA_3, R.string.solver_pyra3_title, R.string.solver_pyra3_description, false),
   IVY            (ObjectSignatures.IVY_2 , R.string.solver_ivy_title, R.string.solver_ivy_description, false),
   TOWER          (ObjectSignatures.CU_232, R.string.solver_cu232_title, R.string.solver_cu232_description, false),
diff --git a/src/main/java/org/distorted/solvers/SolverTablebase.java b/src/main/java/org/distorted/solvers/SolverTablebase.java
index ead11c2b..10d33413 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebase.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebase.java
@@ -23,7 +23,7 @@ public abstract class SolverTablebase
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public abstract String constructError();
+  public abstract String constructError(Resources res);
   public abstract int[] prepareQuats(TwistyObject object);
   public abstract String solution(int[] quats, Resources res);
 
@@ -52,7 +52,7 @@ public abstract class SolverTablebase
       }
     else
       {
-      String error = constructError();
+      String error = constructError(mRes);
       solver.displayErrorDialog(error);
       }
     }
diff --git a/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java b/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java
index 94601dd8..2c30d392 100644
--- a/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java
+++ b/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java
@@ -18,6 +18,16 @@ import org.distorted.solvers.SolverTablebase;
 
 public class SolverPyraminxDuo extends SolverTablebase
 {
+  private static final int ERROR_CORNER_GYB_MISSING = 0;
+  private static final int ERROR_CORNER_GYR_MISSING = 1;
+  private static final int ERROR_CORNER_GBR_MISSING = 2;
+  private static final int ERROR_CORNER_YBR_MISSING = 3;
+
+  private static final int ERROR_CENTER_G_MISSING = 4;
+  private static final int ERROR_CENTER_Y_MISSING = 5;
+  private static final int ERROR_CENTER_B_MISSING = 6;
+  private static final int ERROR_CENTER_R_MISSING = 7;
+
   private int mErrorID;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -28,24 +38,55 @@ public class SolverPyraminxDuo extends SolverTablebase
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// TODO
-  public String constructError()
+
+  public String constructError(Resources res)
     {
     return null;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// TODO
+
   public int[] prepareQuats(TwistyObject object)
     {
-    return null;
+    int c0f0 = object.getCubitFaceColorIndex(0,0);
+    int c0f1 = object.getCubitFaceColorIndex(0,1);
+    int c0f2 = object.getCubitFaceColorIndex(0,2);
+
+    int c1f0 = object.getCubitFaceColorIndex(1,0);
+    int c1f1 = object.getCubitFaceColorIndex(1,1);
+    int c1f2 = object.getCubitFaceColorIndex(1,2);
+
+    int c2f0 = object.getCubitFaceColorIndex(2,0);
+    int c2f1 = object.getCubitFaceColorIndex(2,1);
+    int c2f2 = object.getCubitFaceColorIndex(2,2);
+
+    int c3f0 = object.getCubitFaceColorIndex(3,0);
+    int c3f1 = object.getCubitFaceColorIndex(3,1);
+    int c3f2 = object.getCubitFaceColorIndex(3,2);
+
+    int c4f0 = object.getCubitFaceColorIndex(4,0);
+    int c5f0 = object.getCubitFaceColorIndex(5,0);
+    int c6f0 = object.getCubitFaceColorIndex(6,0);
+    int c7f0 = object.getCubitFaceColorIndex(3,0);
+
+    android.util.Log.e("D", "tip 0: "+c0f0+" "+c0f1+" "+c0f2);
+    android.util.Log.e("D", "tip 1: "+c1f0+" "+c1f1+" "+c1f2);
+    android.util.Log.e("D", "tip 2: "+c2f0+" "+c2f1+" "+c2f2);
+    android.util.Log.e("D", "tip 3: "+c3f0+" "+c3f1+" "+c3f2);
+
+    android.util.Log.e("D", "center 0: "+c4f0);
+    android.util.Log.e("D", "center 1: "+c5f0);
+    android.util.Log.e("D", "center 2: "+c6f0);
+    android.util.Log.e("D", "center 3: "+c7f0);
+
+    return new int[] {0,0,0,0,0,0};
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// TODO
+
   public String solution(int[] quats, Resources res)
     {
-    return null;
+    return "";
     }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/pduo/TablebasesPyraminxDuo.java b/src/main/java/org/distorted/solvers/pduo/TablebasesPyraminxDuo.java
new file mode 100644
index 00000000..413b6edb
--- /dev/null
+++ b/src/main/java/org/distorted/solvers/pduo/TablebasesPyraminxDuo.java
@@ -0,0 +1,18 @@
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Copyright 2023 Leszek Koltunski                                                               //
+//                                                                                               //
+// This file is part of Magic Cube.                                                              //
+//                                                                                               //
+// Magic Cube is proprietary software licensed under an EULA which you should have received      //
+// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+package org.distorted.solvers.pduo;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+public class TablebasesPyraminxDuo
+{
+
+}  
+
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index a3ceaa44..74b00c4a 100755
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">orange</string>
 
     <string name="solver_cube3_description">Ein nahezu perfekter, sofortiger, zweiphasiger 3x3x3-Löser.\nAutor: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">Noch nicht implementiert.\nAutor: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">Noch nicht implementiert.\nAutor: Leszek Koltunski.</string>
     <string name="solver_ivy_description">Noch nicht implementiert.\nAutor: Leszek Koltunski.</string>
     <string name="solver_cu232_description">Noch nicht implementiert.\nAutor: Leszek Koltunski.</string>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index b6e9a4ca..f74b08e6 100755
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">naranjas</string>
 
     <string name="solver_cube3_description">Un 3x3x3 solucionador casi perfecto, instantáneo, de dos fases.\nAutor: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">Aun no implementado.\nAutor: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">Aun no implementado.\nAutor: Leszek Koltunski.</string>
     <string name="solver_ivy_description">Aun no implementado.\nAutor: Leszek Koltunski.</string>
     <string name="solver_cu232_description">Aun no implementado.\nAutor: Leszek Koltunski.</string>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index b7d964c9..3557d3af 100755
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">orange</string>
 
     <string name="solver_cube3_description">Un solveur 3x3x3 biphasé presque parfait, instantané.\nAuteur: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">Pas encore mis en œuvre.\nAuteur: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">Pas encore mis en œuvre.\nAuteur: Leszek Koltunski.</string>
     <string name="solver_ivy_description">Pas encore mis en œuvre.\nAuteur: Leszek Koltunski.</string>
     <string name="solver_cu232_description">Pas encore mis en œuvre.\nAuteur: Leszek Koltunski.</string>
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index 889f079b..dc5e45a4 100755
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -99,6 +99,7 @@
     <string name="color_orange">オレンジ色の</string>
 
     <string name="solver_cube3_description">ほぼ完璧で瞬間的な 2 フェーズ 3x3x3 ソルバー。\n著者: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">まだ実装されていません。\n著者: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">まだ実装されていません。\n著者: Leszek Koltunski.</string>
     <string name="solver_ivy_description">まだ実装されていません。\n著者: Leszek Koltunski.</string>
     <string name="solver_cu232_description">まだ実装されていません。\n著者: Leszek Koltunski.</string>
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index 5cd56dd0..5c85b51e 100755
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">주황색</string>
 
     <string name="solver_cube3_description">거의 완벽하고 즉각적인 2상 3x3x3 솔버입니다.\n작가: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">아직 구현되지 않음\n작가: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">아직 구현되지 않음\n작가: Leszek Koltunski.</string>
     <string name="solver_ivy_description">아직 구현되지 않음\n작가: Leszek Koltunski.</string>
     <string name="solver_cu232_description">아직 구현되지 않음\n작가: Leszek Koltunski.</string>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index 822b9039..4ccb807c 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">pomarańczowych</string>
 
     <string name="solver_cube3_description">Natychmiastowy, prawie perfekcyjny rozwiązywacz kostki 3x3x3.\nAutor: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">Jeszcze nie zaimplementowany.\nAutor: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">Jeszcze nie zaimplementowany.\nAutor: Leszek Koltunski.</string>
     <string name="solver_ivy_description">Jeszcze nie zaimplementowany.\nAutor: Leszek Koltunski.</string>
     <string name="solver_cu232_description">Jeszcze nie zaimplementowany.\nAutor: Leszek Koltunski.</string>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 16813716..ba612297 100755
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">оранжевых</string>
 
     <string name="solver_cube3_description">Практически идеальный, мгновенный, двухфазный решатель 3x3x3.\nАвтор: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">Еще не реализован.\nАвтор: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">Еще не реализован.\nАвтор: Leszek Koltunski.</string>
     <string name="solver_ivy_description">Еще не реализован.\nАвтор: Leszek Koltunski.</string>
     <string name="solver_cu232_description">Еще не реализован.\nАвтор: Leszek Koltunski.</string>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index 20efd2c4..2fb4fbfb 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -104,6 +104,7 @@
     <string name="color_orange">橙色的</string>
 
     <string name="solver_cube3_description">一个几乎完美的、瞬时的、两相的3x3x3解算器。\n作者: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">尚未实施。\n作者: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">尚未实施。\n作者: Leszek Koltunski.</string>
     <string name="solver_ivy_description">尚未实施。\n作者: Leszek Koltunski.</string>
     <string name="solver_cu232_description">尚未实施。\n作者: Leszek Koltunski.</string>
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 37630021..5dff6c3a 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -98,6 +98,7 @@
     <string name="color_orange">橙色的</string>
 
     <string name="solver_cube3_description">一個近乎完美的瞬時兩相 3x3x3 求解器。\n作者: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">尚未實現。\n作者: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">尚未實現。\n作者: Leszek Koltunski.</string>
     <string name="solver_ivy_description">尚未實現。\n作者: Leszek Koltunski.</string>
     <string name="solver_cu232_description">尚未實現。\n作者: Leszek Koltunski.</string>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 597ce653..f2b7b53d 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -118,12 +118,14 @@
     <string name="color_orange">orange</string>
 
     <string name="solver_cube3_title" translatable="false">Kociemba 3x3 Solver</string>
+    <string name="solver_pduo2_title" translatable="false">Pyraminx Duo Solver</string>
     <string name="solver_pyra3_title" translatable="false">Pyraminx Solver</string>
     <string name="solver_ivy_title" translatable="false">Ivy Solver</string>
     <string name="solver_cu232_title" translatable="false">2x2x3 Cuboid Solver</string>
     <string name="solver_diam2_title" translatable="false">Skewb Diamond Solver</string>
 
     <string name="solver_cube3_description">A near-perfect, instantaneous, two-phase 3x3x3 solver.\nAuthor: Herbert Kociemba.</string>
+    <string name="solver_pduo2_description">Not implemented yet.\nAuthor: Leszek Koltunski.</string>
     <string name="solver_pyra3_description">Not implemented yet.\nAuthor: Leszek Koltunski.</string>
     <string name="solver_ivy_description">Not implemented yet.\nAuthor: Leszek Koltunski.</string>
     <string name="solver_cu232_description">Not implemented yet.\nAuthor: Leszek Koltunski.</string>
