commit 05c044a5e3d9a2c9e774a564f2e5c45a105126d5
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Nov 23 14:22:27 2022 +0100

    Reinstall the latest Android Studio, latest gradle; reconfigure all project to match and compile.

diff --git a/build.gradle b/build.gradle
index 939546d5..fb31e7f6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -30,6 +30,7 @@ android {
             manifestPlaceholders = [crashlyticsCollectionEnabled:"false"]
         }
     }
+    namespace 'org.distorted.main'
 
 }
 
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 524bbe22..1bf2e80b 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -1,5 +1,4 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="org.distorted.main">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-feature android:glEsVersion="0x00030000" android:required="true" />
     <uses-feature android:name="android.hardware.faketouch" android:required="true" />
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java b/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java
index dc9b783c..b6dcc055 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java
@@ -136,7 +136,7 @@ public class RubikDialogScoresView extends FrameLayout
     TextView textName = row.findViewById(R.id.scoresScrambleRowName);
     TextView textTime = row.findViewById(R.id.scoresScrambleRowTime);
 
-    imgCoun.setImageResource(countryID!=0 ? countryID : R.drawable.un);
+    imgCoun.setImageResource(countryID!=0 ? countryID : org.distorted.flags.R.drawable.unknown);
     textName.setText(name);
     textTime.setText(time);
 
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
index bbef64a0..0dba2bb8 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
@@ -73,10 +73,7 @@ public class RubikDialogTutorialView extends FrameLayout
         reader.parseJsonTutorial(jsonStream);
         tutorials = reader.getTutorials();
         }
-      catch(Exception ex)
-        {
-        tutorials = null;
-        }
+      catch(Exception ignored) { }
       }
 
     if( tutorials!=null )
@@ -151,7 +148,7 @@ public class RubikDialogTutorialView extends FrameLayout
       });
 
     ImageView image = row.findViewById(R.id.tutorialCountry);
-    int id = countryID!=0 ? countryID : R.drawable.un;
+    int id = countryID!=0 ? countryID : org.distorted.flags.R.drawable.unknown;
     image.setImageResource(id);
 
     TextView author = row.findViewById(R.id.tutorialAuthor);
diff --git a/src/main/java/org/distorted/objects/RubikObjectList.java b/src/main/java/org/distorted/objects/RubikObjectList.java
index e17888a9..e0200cd1 100644
--- a/src/main/java/org/distorted/objects/RubikObjectList.java
+++ b/src/main/java/org/distorted/objects/RubikObjectList.java
@@ -16,7 +16,7 @@ import android.content.Context;
 import android.content.SharedPreferences;
 
 import org.distorted.external.RubikFiles;
-//import org.distorted.external.RubikScores;
+import org.distorted.external.RubikScores;
 import org.distorted.main.RubikActivity;
 import org.distorted.objectlib.main.ObjectSignatures;
 import org.distorted.objectlib.main.ObjectType;
@@ -24,7 +24,6 @@ import org.distorted.objectlib.main.ObjectType;
 import static org.distorted.objectlib.main.TwistyObject.MESH_NICE;
 import static org.distorted.objectlib.main.ObjectType.NUM_OBJECTS;
 import static org.distorted.main.RubikActivity.SHOW_DOWNLOADED_DEBUG;
-//import static org.distorted.main.RubikActivity.SHOW_SOLVED_DEBUG;
 import static org.distorted.screens.RubikScreenPlay.LEVELS_SHOWN;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -156,9 +155,10 @@ public class RubikObjectList
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-/*
+
   private static void restoreFreedObjects(SharedPreferences preferences)
     {
+    /*
     mFreeSolvedObjects = preferences.getString("rol_freeSolved", "");
     mFreeBoughtObjects = preferences.getString("rol_freeBought", "");
 
@@ -201,15 +201,20 @@ public class RubikObjectList
         if( o!=null ) o.markFree();
         }
       }
+     */
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private static int getNumUnclaimedSolves()
     {
+    /*
     RubikScores scores = RubikScores.getInstance();
     int numMAXes = scores.numberOfSolvedMAXes();
     return numMAXes-mNumFreeSolved;
+     */
+
+    return 0;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -218,14 +223,13 @@ public class RubikObjectList
     {
     RubikScores scores = RubikScores.getInstance();
     int numObjects = RubikObjectList.getNumObjects();
-    int level = LEVELS_SHOWN;
     int ret = 0;
 
     for(int obj=0; obj<numObjects; obj++)
       {
       RubikObject object = getObject(obj);
 
-      if( object!=null && !object.isFree() && scores.isSolved(obj,level) )
+      if( object!=null && !object.isFree() && scores.isSolved(obj,LEVELS_SHOWN) )
         {
         solveObject(object.getUpperName());
         ret++;
@@ -257,6 +261,7 @@ public class RubikObjectList
 
   public static boolean solveObject(RubikObject object, String shortName)
     {
+    /*
     if( object!=null && !object.isFree() )
       {
       if( SHOW_SOLVED_DEBUG ) android.util.Log.e("D", "object "+shortName+" marked as solved");
@@ -266,10 +271,10 @@ public class RubikObjectList
       mNumFreeSolved++;
       return true;
       }
-
+    */
     return false;
     }
-*/
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 
@@ -358,12 +363,13 @@ public class RubikObjectList
         }
       }
     }
-/*
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static boolean allAlreadyBought()
     {
-    return mFreeBoughtObjects.equals("*");
+    //return mFreeBoughtObjects.equals("*");
+    return false;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -391,6 +397,7 @@ public class RubikObjectList
 
   public static void buyAll()
     {
+    /*
     mFreeBoughtObjects = "*";
     if( SHOW_SOLVED_DEBUG ) android.util.Log.e("D", "all objects marked as bought");
 
@@ -399,12 +406,14 @@ public class RubikObjectList
       RubikObject o = mObjects.get(i);
       o.markFree();
       }
+    */
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static boolean buyObject(String shortName)
     {
+    /*
     RubikObject o = getObject(shortName);
 
     if( o!=null && !o.isFree() )
@@ -415,7 +424,7 @@ public class RubikObjectList
       mFreeBoughtObjects += add;
       return true;
       }
-
+    */
     return false;
     }
 
@@ -426,7 +435,7 @@ public class RubikObjectList
     RubikObject object = getObject(shortName);
     return solveObject(object,shortName);
     }
-*/
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static void savePreferences(SharedPreferences.Editor editor)
@@ -531,7 +540,7 @@ public class RubikObjectList
     mObject = getOrdinal(objName);
     if( mObject<0 || mObject>=mNumObjects ) mObject = DEF_OBJECT;
 
-//    if( justStarted) restoreFreedObjects(preferences);
+    if( justStarted) restoreFreedObjects(preferences);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -552,7 +561,7 @@ public class RubikObjectList
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-/*
+
   public static void setObjectFreeState()
     {
     int numUnclaimed = getNumUnclaimedSolves();
@@ -564,7 +573,7 @@ public class RubikObjectList
       if( stillUnclaimed>0) markAsFree(stillUnclaimed);
       }
     }
-*/
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public static boolean setCurrObject(int ordinal)
