commit ca280c3fb1e147f46602db63ea3550eb81b41acd
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Jul 13 22:36:39 2022 +0200

    Make the BandagedPlay use FastScramble. (static 500 times)

diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java b/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
index 5105a154..f0e1e867 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
@@ -40,12 +40,12 @@ import org.distorted.helpers.TransparentImageButton;
 import org.distorted.main.R;
 import org.distorted.main.RubikActivity;
 
+import static org.distorted.objectlib.scrambling.ScrambleStateBandagedCuboid.MAX_SUPPORTED_SIZE;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class BandagedCreatorScreen implements AdapterView.OnItemSelectedListener
 {
-  public static final int MAX_SUPPORTED_SIZE = 5;
-
   private WeakReference<BandagedCreatorActivity> mAct;
   private TransparentImageButton mBackButton, mResetButton, mDoneButton;
   private LinearLayout mObjectView;
diff --git a/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java b/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java
index 81589974..dba1fb4e 100644
--- a/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java
+++ b/src/main/java/org/distorted/bandaged/BandagedPlayScreen.java
@@ -19,39 +19,27 @@
 
 package org.distorted.bandaged;
 
-import java.util.Random;
-
 import android.app.Activity;
 import android.content.SharedPreferences;
-import android.os.Bundle;
 import android.view.View;
 import android.widget.LinearLayout;
 
-import org.distorted.dialogs.RubikDialogBandagedSettings;
 import org.distorted.helpers.LockController;
 import org.distorted.helpers.MovesController;
 import org.distorted.helpers.TransparentImageButton;
 import org.distorted.main.R;
 import org.distorted.objectlib.main.ObjectControl;
-import org.distorted.objectlib.main.TwistyObject;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class BandagedPlayScreen
 {
-  public static final int[] DEPTHS = new int[] {20,50,100,200,500,1000};
-  public static final int ANIMATION_ON  = 0;
-  public static final int ANIMATION_OFF = 1;
+  private static final int NUM_SCRAMBLES = 500;
 
-  private TransparentImageButton mBackButton, mScrambleButton, mSolveButton, mSettingsButton;
+  private TransparentImageButton mBackButton, mScrambleButton, mSolveButton;
   private final LockController mLockController;
   private final MovesController mMovesController;
   private String mKey;
-  private int[][] mMoves;
-  private Random mRnd;
-
-  private int mAnimationMode;
-  private int mScrambleDepth;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -81,30 +69,6 @@ public class BandagedPlayScreen
       });
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void setupSettingsButton(final BandagedPlayActivity act)
-    {
-    int icon = BandagedPlayActivity.getDrawable(R.drawable.ui_small_settings,R.drawable.ui_medium_settings, R.drawable.ui_big_settings, R.drawable.ui_huge_settings);
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
-    mSettingsButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE, params);
-
-    mSettingsButton.setOnClickListener( new View.OnClickListener()
-      {
-      @Override
-      public void onClick(View v)
-        {
-        Bundle bundle = new Bundle();
-        bundle.putInt("scraPos", mScrambleDepth );
-        bundle.putInt("animPos", mAnimationMode );
-
-        RubikDialogBandagedSettings setDiag = new RubikDialogBandagedSettings();
-        setDiag.setArguments(bundle);
-        setDiag.show(act.getSupportFragmentManager(), null);
-        }
-      });
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void setupSolveButton(final BandagedPlayActivity act)
@@ -119,8 +83,7 @@ public class BandagedPlayScreen
       public void onClick(View v)
         {
         ObjectControl control = act.getControl();
-        if( mAnimationMode==ANIMATION_OFF ) control.solveOnly();
-        if( mAnimationMode==ANIMATION_ON  ) control.solveObject();
+        control.solveObject();
         mMovesController.clearMoves(act);
         }
       });
@@ -140,32 +103,8 @@ public class BandagedPlayScreen
       public void onClick(View v)
         {
         ObjectControl control = act.getControl();
-        TwistyObject object = control.getObject();
-
-        int depth = DEPTHS[mScrambleDepth];
-
-        if( mAnimationMode==ANIMATION_OFF )
-          {
-          if( mMoves==null || mMoves.length<depth ) mMoves = new int[depth][3];
-          if( mRnd==null ) mRnd = new Random();
-
-          for(int move=0; move<depth; move++)
-            {
-            object.randomizeNewScramble(mMoves, mRnd, move, depth);
-            }
-          for(int move=0; move<depth; move++)
-            {
-            int row = mMoves[move][1];
-            mMoves[move][1] = (1<<row);
-            }
-
-          control.initializeObject(mMoves);
-          }
-
-        if( mAnimationMode==ANIMATION_ON )
-          {
-          control.scrambleObject(depth);
-          }
+        control.fastScrambleObject(NUM_SCRAMBLES);
+        mMovesController.clearMoves(act);
         }
       });
     }
@@ -205,7 +144,6 @@ public class BandagedPlayScreen
     layoutLower.addView(layoutRight);
 
     setupSolveButton(act);
-    setupSettingsButton(act);
     setupScrambleButton(act);
 
     LinearLayout layoutUpper = act.findViewById(R.id.upperBar);
@@ -218,7 +156,6 @@ public class BandagedPlayScreen
     layoutRightU.setLayoutParams(paramsR);
 
     layoutLeftU.addView(mSolveButton);
-    layoutMidU.addView(mSettingsButton);
     layoutRightU.addView(mScrambleButton);
 
     layoutUpper.removeAllViews();
@@ -257,9 +194,6 @@ public class BandagedPlayScreen
     mMovesController.savePreferences(mKey,editor);
     ObjectControl control = act.getControl();
     control.savePreferences(editor);
-
-    editor.putInt("playScreen_scramble" , mScrambleDepth);
-    editor.putInt("playScreen_animation", mAnimationMode);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -269,22 +203,5 @@ public class BandagedPlayScreen
     mMovesController.restorePreferences(act,mKey,preferences);
     ObjectControl control = act.getControl();
     control.restorePreferences(preferences);
-
-    mScrambleDepth = preferences.getInt("playScreen_scramble" ,3);
-    mAnimationMode = preferences.getInt("playScreen_animation",ANIMATION_OFF);
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public void setAnimationMode(int mode)
-    {
-    mAnimationMode = mode;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public void setScrambleDepth(int depth)
-    {
-    mScrambleDepth = depth;
     }
 }
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogBandagedSettings.java b/src/main/java/org/distorted/dialogs/RubikDialogBandagedSettings.java
deleted file mode 100644
index 2b749101..00000000
--- a/src/main/java/org/distorted/dialogs/RubikDialogBandagedSettings.java
+++ /dev/null
@@ -1,205 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Copyright 2019 Leszek Koltunski                                                               //
-//                                                                                               //
-// This file is part of Magic Cube.                                                              //
-//                                                                                               //
-// Magic Cube is free software: you can redistribute it and/or modify                            //
-// it under the terms of the GNU General Public License as published by                          //
-// the Free Software Foundation, either version 2 of the License, or                             //
-// (at your option) any later version.                                                           //
-//                                                                                               //
-// Magic Cube is distributed in the hope that it will be useful,                                 //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
-// GNU General Public License for more details.                                                  //
-//                                                                                               //
-// You should have received a copy of the GNU General Public License                             //
-// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-package org.distorted.dialogs;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.Window;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatDialogFragment;
-import androidx.fragment.app.FragmentActivity;
-
-import org.distorted.bandaged.BandagedPlayActivity;
-import org.distorted.bandaged.BandagedPlayScreen;
-import org.distorted.main.R;
-import org.distorted.main.RubikActivity;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-public class RubikDialogBandagedSettings extends AppCompatDialogFragment implements AdapterView.OnItemSelectedListener
-  {
-  private int mAnimPos, mScraPos;
-  private float mTextSize;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private String[] createScrambleModes()
-    {
-    int len = BandagedPlayScreen.DEPTHS.length;
-    String[] ret = new String[len];
-
-    for(int i=0; i<len; i++)
-      {
-      ret[i] = String.valueOf(BandagedPlayScreen.DEPTHS[i]);
-      }
-
-    return ret;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void configureView(FragmentActivity act, View view, float textSize, int scraPos, int animPos)
-    {
-    TextView text1 = view.findViewById(R.id.bandaged_text_depth);
-    text1.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
-    TextView text2 = view.findViewById(R.id.bandaged_text_animation);
-    text2.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
-
-    mScraPos = scraPos;
-    mAnimPos = animPos;
-
-    Spinner scramble = view.findViewById(R.id.bandaged_spinner_scramble);
-    scramble.setOnItemSelectedListener(this);
-    String[] scrambleModes = createScrambleModes();
-
-    ArrayAdapter<String> scrambleAdapter = new ArrayAdapter<>(act, R.layout.spinner_item, scrambleModes );
-    scrambleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-    scramble.setAdapter(scrambleAdapter);
-    scramble.setSelection(mScraPos,true);
-    View v1 = scramble.getSelectedView();
-    ((TextView)v1).setTextSize(TypedValue.COMPLEX_UNIT_PX,mTextSize);
-
-    Spinner animation = view.findViewById(R.id.bandaged_spinner_animation);
-    animation.setOnItemSelectedListener(this);
-    String[] animationModes = { "ON" , "OFF" };
-
-    ArrayAdapter<String> animationAdapter = new ArrayAdapter<>(act, R.layout.spinner_item, animationModes );
-    animationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-    animation.setAdapter(animationAdapter);
-    animation.setSelection(mAnimPos,true);
-    View v2 = animation.getSelectedView();
-    ((TextView)v2).setTextSize(TypedValue.COMPLEX_UNIT_PX,mTextSize);
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  @Override
-  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
-    {
-    int spinnerID = parent.getId();
-
-    ((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX,mTextSize);
-
-    if( spinnerID == R.id.bandaged_spinner_scramble )
-      {
-      mScraPos = pos;
-      }
-    else if( spinnerID == R.id.bandaged_spinner_animation )
-      {
-      mAnimPos = pos;
-      }
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  @Override
-  public void onNothingSelected(AdapterView<?> parent) { }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  @NonNull
-  @Override
-  public Dialog onCreateDialog(Bundle savedInstanceState)
-    {
-    FragmentActivity act = getActivity();
-    LayoutInflater inflater = act.getLayoutInflater();
-    AlertDialog.Builder builder = new AlertDialog.Builder(act);
-
-    DisplayMetrics displaymetrics = new DisplayMetrics();
-    act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
-    final float titleSize= displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
-    final float okSize   = displaymetrics.widthPixels * RubikActivity.DIALOG_BUTTON_SIZE;
-    mTextSize = displaymetrics.widthPixels * RubikActivity.MENU_BIG_TEXT_SIZE;
-
-    TextView tv = (TextView) inflater.inflate(R.layout.dialog_title, null);
-    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
-    tv.setText(R.string.settings);
-    builder.setCustomTitle(tv);
-
-    Bundle args = getArguments();
-    int scraPos, animPos;
-
-    try
-      {
-      scraPos = args.getInt("scraPos");
-      animPos = args.getInt("animPos");
-      }
-    catch(Exception e)
-      {
-      scraPos = 0;
-      animPos = 0;
-      }
-
-    final BandagedPlayActivity bact = (BandagedPlayActivity)getContext();
-
-    builder.setCancelable(true);
-    builder.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener()
-      {
-      @Override
-      public void onClick(DialogInterface dialog, int which)
-        {
-        BandagedPlayScreen screen = bact!=null ? bact.getScreen() : null;
-
-        if( screen!=null )
-          {
-          screen.setScrambleDepth(mScraPos);
-          screen.setAnimationMode(mAnimPos);
-          }
-        }
-      });
-
-    final View view = inflater.inflate(R.layout.dialog_settings, null);
-    configureView(act,view,mTextSize,scraPos,animPos);
-    builder.setView(view);
-
-    Dialog dialog = builder.create();
-    dialog.setCanceledOnTouchOutside(false);
-    Window window = dialog.getWindow();
-
-    if( window!=null )
-      {
-      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
-      }
-
-    dialog.setOnShowListener(new DialogInterface.OnShowListener()
-      {
-      @Override
-      public void onShow(DialogInterface dialog)
-        {
-        Button btnPositive = ((AlertDialog)dialog).getButton(Dialog.BUTTON_POSITIVE);
-        btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, okSize);
-        }
-      });
-
-    return dialog;
-    }
-  }
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index d22175e3..0887260d 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -366,7 +366,7 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
         {
         int currObject = RubikObjectList.getCurrObject();
         RubikObject object = RubikObjectList.getObject(currObject);
-        int numScrambles = object==null ? 0 : object.getNumScramble();
+        int numScrambles = object==null ? 0 : 2*object.getNumScramble();
         mShouldReactToEndOfScrambling = false;
         act.getControl().fastScrambleObject(numScrambles);
         }
diff --git a/src/main/java/org/distorted/tutorials/TutorialScreen.java b/src/main/java/org/distorted/tutorials/TutorialScreen.java
index 3cb2b545..d33c6d36 100644
--- a/src/main/java/org/distorted/tutorials/TutorialScreen.java
+++ b/src/main/java/org/distorted/tutorials/TutorialScreen.java
@@ -75,7 +75,7 @@ public class TutorialScreen
         {
         int object = RubikObjectList.getCurrObject();
         RubikObject obj = RubikObjectList.getObject(object);
-        int numScrambles = obj==null ? 0 : obj.getNumScramble();
+        int numScrambles = obj==null ? 0 : 2*obj.getNumScramble();
         act.getControl().fastScrambleObject(numScrambles);
         }
       });
