commit 33c22e6c22671ac4b477fcc68547de6de4932ac5
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon May 17 01:18:43 2021 +0200

    RubikControl: progress.

diff --git a/src/main/java/org/distorted/control/RubikControlWhole.java b/src/main/java/org/distorted/control/RubikControlWhole.java
index 3f49ec5b..03bae41a 100644
--- a/src/main/java/org/distorted/control/RubikControlWhole.java
+++ b/src/main/java/org/distorted/control/RubikControlWhole.java
@@ -52,6 +52,7 @@ class RubikControlWhole
   private static final int D5 =10000; // fingers circle
 
   private static final int[] DUR = { D1, D2, D3, D2, D1/4, 3*D1/4, D1/4, D2, D4, D5, D4, D2, D1 };
+  private static final int[] DYN = { 2, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4};
 
   private float X0, X1, X2, Y1, D, s001, s014, s033, F;
 
@@ -242,7 +243,6 @@ class RubikControlWhole
     mDynScaleShad1.add(mPosition1);
 
     mNodes[0].changeInputSurface(mTextureCirc);
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -281,8 +281,6 @@ class RubikControlWhole
 
     mDynMoveHand1.add(mPosition1);
     mDynMoveShad1.add(mPosition1);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -306,8 +304,6 @@ class RubikControlWhole
     mDynMoveShad1.add(point3h);
     mDynScaleHand1.add(pointH);
     mDynScaleShad1.add(mPosition1);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -337,7 +333,6 @@ class RubikControlWhole
     mDynMoveShad1.add(mPosition2);
 
     mNodes[0].changeInputSurface(mTextureShad);
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -382,8 +377,6 @@ class RubikControlWhole
     mDynScaleShad2.add(pointSm);
     mDynMoveHand2.add(mPosition1);
     mDynMoveShad2.add(mPosition2);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -430,8 +423,6 @@ class RubikControlWhole
     mPosition4.set(point2S);
     mDynMoveHand2.add(mPosition3);
     mDynMoveShad2.add(mPosition4);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -472,8 +463,6 @@ class RubikControlWhole
 
     mNodes[0].changeInputSurface(mTextureCirc);
     mNodes[1].changeInputSurface(mTextureCirc);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -511,8 +500,6 @@ class RubikControlWhole
     mDynMoveShad1.add(mPosition1);
     mDynMoveHand2.add(mPosition2);
     mDynMoveShad2.add(mPosition2);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -560,8 +547,6 @@ class RubikControlWhole
     mDynMoveShad1.add(mPosition1);
     mDynMoveHand2.add(mPosition2);
     mDynMoveShad2.add(mPosition2);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -602,8 +587,6 @@ class RubikControlWhole
     mDynMoveShad1.add(mPosition1);
     mDynMoveHand2.add(mPosition2);
     mDynMoveShad2.add(mPosition2);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -641,8 +624,6 @@ class RubikControlWhole
     mDynMoveShad2.add(point2h);
     mDynScaleHand2.add(point2H);
     mDynScaleShad2.add(mPosition2);
-
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -715,7 +696,6 @@ class RubikControlWhole
 
     mNodes[0].changeInputSurface(mTextureShad);
     mNodes[1].changeInputSurface(mTextureShad);
-    setPostFrame(true);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -876,6 +856,30 @@ class RubikControlWhole
     mControl = control;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void stageFinished(int stage)
+    {
+    switch(stage)
+      {
+      case  1: setEffectsStage2(); break;
+      case  2: setEffectsStage3(); break;
+      case  3: setEffectsStage4(); break;
+      case  4: setEffectsStage5(); break;
+      case  5: setEffectsStage6(); break;
+      case  6: setEffectsStage7(); break;
+      case  7: setEffectsStage8(); break;
+      case  8: setEffectsStage9(); break;
+      case  9: setEffectsStage10(); break;
+      case 10: setEffectsStage11(); break;
+      case 11: setEffectsStage12(); break;
+      case 12: setEffectsStage13(); break;
+      default: setPostFrame(false);
+               mEffectID = -1;
+               mControl.effectFinished(mEffectID);
+      }
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC
 
@@ -885,142 +889,28 @@ class RubikControlWhole
     else mDiffTime = time - mLastTime;
     mLastTime = time;
 
-    switch( mCurrentStage )
+    switch(DYN[mCurrentStage-1])
       {
-      case  1: boolean finished1_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished1_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished1_1 && finished1_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage2();
-                 }
-               break;
-      case  2: boolean finished2_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               if( finished2_1 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage3();
-                 }
-               break;
-      case  3: boolean finished3_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               if( finished3_1 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage4();
-                 }
-               break;
-      case  4: boolean finished4_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               if( finished4_1 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage5();
-                 }
-               break;
-      case  5: boolean finished5_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished5_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished5_1 && finished5_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage6();
-                 }
-               break;
-      case  6: boolean finished6_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished6_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished6_1 && finished6_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage7();
-                 }
-               break;
-      case  7: boolean finished7_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished7_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               boolean finished7_3 = mDyn3.get( tmpBuffer,6, time, mDiffTime);
-               boolean finished7_4 = mDyn4.get( tmpBuffer,9, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[ 1], tmpBuffer[ 2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[ 4], tmpBuffer[ 5]);
-               mPosition3.set(tmpBuffer[6], tmpBuffer[ 7], tmpBuffer[ 8]);
-               mPosition4.set(tmpBuffer[9], tmpBuffer[10], tmpBuffer[11]);
-               if( finished7_1 && finished7_2 && finished7_3 && finished7_4 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage8();
-                 }
-               break;
-      case  8: boolean finished8_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished8_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished8_1 && finished8_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage9();
-                 }
-               break;
-      case  9: boolean finished9_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished9_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished9_1 && finished9_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage10();
-                 }
-               break;
-      case 10: boolean finished10_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished10_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished10_1 && finished10_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage11();
-                 }
-               break;
-      case 11: boolean finished11_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished11_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished11_1 && finished11_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage12();
-                 }
-               break;
-      case 12: boolean finished12_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished12_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
-               if( finished12_1 && finished12_2 )
-                 {
-                 setPostFrame(false);
-                 setEffectsStage13();
-                 }
-               break;
-      case 13: boolean finished13_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
-               boolean finished13_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
-               boolean finished13_3 = mDyn3.get( tmpBuffer,6, time, mDiffTime);
-               boolean finished13_4 = mDyn4.get( tmpBuffer,9, time, mDiffTime);
-               mPosition1.set(tmpBuffer[0], tmpBuffer[ 1], tmpBuffer[ 2]);
-               mPosition2.set(tmpBuffer[3], tmpBuffer[ 4], tmpBuffer[ 5]);
-               mPosition3.set(tmpBuffer[6], tmpBuffer[ 7], tmpBuffer[ 8]);
-               mPosition4.set(tmpBuffer[9], tmpBuffer[10], tmpBuffer[11]);
-               if( finished13_1 && finished13_2 && finished13_3 && finished13_4 )
-                 {
-                 setPostFrame(false);
-                 mEffectID = -1;
-                 mControl.effectFinished(mEffectID);
-                 }
-               break;
-      default: android.util.Log.e("D", "WHAT? "+mCurrentStage);
+      case 1: boolean finished1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
+              mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
+              if( finished1 ) stageFinished(mCurrentStage);
+              break;
+      case 2: boolean finished2_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
+              boolean finished2_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
+              mPosition1.set(tmpBuffer[0], tmpBuffer[1], tmpBuffer[2]);
+              mPosition2.set(tmpBuffer[3], tmpBuffer[4], tmpBuffer[5]);
+              if( finished2_1 && finished2_2 ) stageFinished(mCurrentStage);
+              break;
+      case 4: boolean finished4_1 = mDyn1.get( tmpBuffer,0, time, mDiffTime);
+              boolean finished4_2 = mDyn2.get( tmpBuffer,3, time, mDiffTime);
+              boolean finished4_3 = mDyn3.get( tmpBuffer,6, time, mDiffTime);
+              boolean finished4_4 = mDyn4.get( tmpBuffer,9, time, mDiffTime);
+              mPosition1.set(tmpBuffer[0], tmpBuffer[ 1], tmpBuffer[ 2]);
+              mPosition2.set(tmpBuffer[3], tmpBuffer[ 4], tmpBuffer[ 5]);
+              mPosition3.set(tmpBuffer[6], tmpBuffer[ 7], tmpBuffer[ 8]);
+              mPosition4.set(tmpBuffer[9], tmpBuffer[10], tmpBuffer[11]);
+              if( finished4_1 && finished4_2 && finished4_3 && finished4_4 ) stageFinished(mCurrentStage);
+              break;
       }
     }
   }
