commit 13ed203c2012fe8246646429a49bafeac06c7160
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Nov 17 23:19:59 2020 +0100

    Progress creating the Tutorial Activity.

diff --git a/src/main/java/org/distorted/tutorial/TutorialPreRender.java b/src/main/java/org/distorted/tutorial/TutorialPreRender.java
index 88071911..3b212bed 100644
--- a/src/main/java/org/distorted/tutorial/TutorialPreRender.java
+++ b/src/main/java/org/distorted/tutorial/TutorialPreRender.java
@@ -27,6 +27,7 @@ import org.distorted.effects.EffectController;
 import org.distorted.objects.ObjectList;
 import org.distorted.objects.TwistyObject;
 import org.distorted.main.RubikPreRender.ActionFinishedListener;
+import org.distorted.scores.RubikScores;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -35,7 +36,7 @@ public class TutorialPreRender implements EffectController
   private ActionFinishedListener mAddActionListener;
   private TutorialSurfaceView mView;
   private boolean mFinishRotation, mRemoveRotation, mAddRotation,
-                  mSetQuat, mChangeObject, mSetupObject, mSolveObject,
+                  mSetQuat, mChangeObject, mSetupObject, mSolveObject, mScrambleObject,
                   mInitializeObject, mResetAllTextureMaps, mRemovePatternRotation;
   private boolean mCanPlay;
   private boolean mIsSolved;
@@ -49,6 +50,7 @@ public class TutorialPreRender implements EffectController
   private long mAddRotationDuration;
   private long mAddRotationID, mRemoveRotationID;
   private int mNearestAngle;
+  private int mScrambleObjectNum;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -63,10 +65,14 @@ public class TutorialPreRender implements EffectController
     mChangeObject   = false;
     mSetupObject    = false;
     mSolveObject    = false;
+    mScrambleObject = false;
+
     mCanPlay        = true;
     mOldObject      = null;
     mNewObject      = null;
-    mScreenWidth    = 0;
+
+    mScreenWidth       = 0;
+    mScrambleObjectNum = 0;
 
     mRemovePatternRotation= false;
     }
@@ -219,6 +225,17 @@ public class TutorialPreRender implements EffectController
     doEffectNow( BaseEffect.Type.SOLVE );
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void scrambleObjectNow()
+    {
+    mScrambleObject = false;
+    mCanPlay        = false;
+    mIsSolved       = false;
+    RubikScores.getInstance().incrementNumPlays();
+    doEffectNow( BaseEffect.Type.SCRAMBLE );
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void initializeObjectNow()
@@ -296,6 +313,7 @@ public class TutorialPreRender implements EffectController
     if( mChangeObject          ) changeObjectNow();
     if( mSetupObject           ) setupObjectNow();
     if( mSolveObject           ) solveObjectNow();
+    if( mScrambleObject        ) scrambleObjectNow();
     if( mAddRotation           ) addRotationNow();
     if( mInitializeObject      ) initializeObjectNow();
     if( mResetAllTextureMaps   ) resetAllTextureMapsNow();
@@ -329,7 +347,7 @@ public class TutorialPreRender implements EffectController
 
   public int getNumScrambles()
     {
-    return 0;
+    return mScrambleObjectNum;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -342,6 +360,17 @@ public class TutorialPreRender implements EffectController
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void scrambleObject(int num)
+    {
+    if( mCanPlay )
+      {
+      mScrambleObject = true;
+      mScrambleObjectNum = num;
+      }
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void resetAllTextureMaps()
diff --git a/src/main/java/org/distorted/tutorial/TutorialState.java b/src/main/java/org/distorted/tutorial/TutorialState.java
index 373eb534..19daae06 100644
--- a/src/main/java/org/distorted/tutorial/TutorialState.java
+++ b/src/main/java/org/distorted/tutorial/TutorialState.java
@@ -26,7 +26,10 @@ import android.widget.LinearLayout;
 import org.distorted.main.R;
 import org.distorted.main.RubikActivity;
 import org.distorted.main.RubikPreRender;
+import org.distorted.objects.ObjectList;
 import org.distorted.objects.TwistyObject;
+import org.distorted.states.RubikStatePlay;
+import org.distorted.states.StateList;
 import org.distorted.states.TransparentImageButton;
 
 import java.util.ArrayList;
@@ -173,8 +176,13 @@ public class TutorialState implements RubikPreRender.ActionFinishedListener
       @Override
       public void onClick(View v)
         {
-        TutorialPreRender pre = act.getPreRender();
-        // TODO
+        RubikStatePlay play = (RubikStatePlay) StateList.PLAY.getStateClass();
+        int size = play.getSize();
+        int object= play.getObject();
+        int sizeIndex = ObjectList.getSizeIndex(object,size);
+        int maxLevel = ObjectList.getMaxLevel(object, sizeIndex);
+
+        act.getPreRender().scrambleObject(maxLevel);
         }
       });
     }
diff --git a/src/main/res/layout/tutorial.xml b/src/main/res/layout/tutorial.xml
index 901f14fc..39e53f94 100644
--- a/src/main/res/layout/tutorial.xml
+++ b/src/main/res/layout/tutorial.xml
@@ -17,7 +17,7 @@
         android:id="@+id/lowerPart"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="1"
+        android:layout_weight="1.2"
         android:orientation="horizontal"
         android:background="@android:color/transparent">
 
