commit b72b71a10dc650664bb97601bc266aa75d5c9d1f
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Apr 14 14:03:36 2022 +0200

    preparation for dual animation on/off modes in BandagedPlay

diff --git a/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java b/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java
index 6c3c4f46..dbbc0ea9 100644
--- a/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java
+++ b/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java
@@ -19,6 +19,8 @@
 
 package org.distorted.bandaged;
 
+import java.util.Random;
+
 import android.app.Activity;
 import android.content.SharedPreferences;
 import android.view.View;
@@ -36,12 +38,20 @@ import org.distorted.objectlib.scrambling.ObjectScrambler;
 
 public class BandagedPlayScreen
 {
-  private static final int NUM_SCRAMBLES = 24;
+  public static final int ANIMATION_ON  = 0;
+  public static final int ANIMATION_OFF = 1;
+
+  private static final int NUM_SCRAMBLES = 2;
 
   private TransparentImageButton mBackButton, mScrambleButton, mSolveButton;
   private final LockController mLockController;
-  private MovesController mMovesController;
+  private final MovesController mMovesController;
   private String mKey;
+  private int[][] mMoves;
+  private Random mRnd;
+
+  private int mAnimationMode;
+  private int mScrambleDepth;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -49,6 +59,9 @@ public class BandagedPlayScreen
     {
     mLockController = new LockController();
     mMovesController= new MovesController();
+
+    mAnimationMode = ANIMATION_OFF;
+    mScrambleDepth = NUM_SCRAMBLES;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -84,7 +97,9 @@ public class BandagedPlayScreen
       @Override
       public void onClick(View v)
         {
-        act.getControl().solveObject();
+        ObjectControl control = act.getControl();
+        if( mAnimationMode==ANIMATION_OFF ) control.solveOnly();
+        if( mAnimationMode==ANIMATION_ON  ) control.solveObject();
         mMovesController.clearMoves(act);
         }
       });
@@ -106,7 +121,29 @@ public class BandagedPlayScreen
         ObjectControl control = act.getControl();
         TwistyObject object = control.getObject();
         ObjectScrambler.setSignature(object.getSignature());
-        control.scrambleObject(NUM_SCRAMBLES);
+
+        if( mAnimationMode==ANIMATION_OFF )
+          {
+          if( mMoves==null || mMoves.length<mScrambleDepth ) mMoves = new int[mScrambleDepth][3];
+          if( mRnd==null ) mRnd = new Random();
+
+          for(int move=0; move<mScrambleDepth; move++)
+            {
+            object.randomizeNewScramble(mMoves, mRnd, move, mScrambleDepth);
+            }
+          for(int move=0; move<mScrambleDepth; move++)
+            {
+            int row = mMoves[move][1];
+            mMoves[move][1] = (1<<row);
+            }
+
+          control.initializeObject(mMoves);
+          }
+
+        if( mAnimationMode==ANIMATION_ON )
+          {
+          control.scrambleObject(mScrambleDepth);
+          }
         }
       });
     }
@@ -206,4 +243,18 @@ public class BandagedPlayScreen
     ObjectControl control = act.getControl();
     control.restorePreferences(preferences);
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void setAnimationMode(int mode)
+    {
+    mAnimationMode = mode;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void setScrambleDepth(int depth)
+    {
+    mScrambleDepth = depth;
+    }
 }
