commit 5c4ed8eddd0e2f3e2f7dcabb60faa0238a6d3d4e
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Nov 14 00:35:52 2021 +0100

    Make the ShapeChanging the default TouchControl during MODE_REPLACE.

diff --git a/src/main/java/org/distorted/main/RubikObjectLibInterface.java b/src/main/java/org/distorted/main/RubikObjectLibInterface.java
index 4cb7d05a..6dc5d45e 100644
--- a/src/main/java/org/distorted/main/RubikObjectLibInterface.java
+++ b/src/main/java/org/distorted/main/RubikObjectLibInterface.java
@@ -37,6 +37,7 @@ import org.distorted.library.message.EffectMessageSender;
 import org.distorted.objectlib.BuildConfig;
 import org.distorted.objectlib.helpers.BlockController;
 import org.distorted.objectlib.helpers.ObjectLibInterface;
+import org.distorted.objectlib.main.ObjectControl;
 import org.distorted.objectlib.main.ObjectType;
 
 import org.distorted.dialogs.RubikDialogNewRecord;
@@ -55,15 +56,17 @@ import java.lang.ref.WeakReference;
 
 public class RubikObjectLibInterface implements ObjectLibInterface
 {
-  WeakReference<RubikActivity> mAct;
+  private final WeakReference<RubikActivity> mAct;
   private boolean mIsNewRecord;
   private long mNewRecord;
+  private int mLastCubitColor, mLastCubit, mLastCubitFace;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   RubikObjectLibInterface(RubikActivity act)
     {
     mAct = new WeakReference<>(act);
+    mLastCubitColor = -1;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -415,18 +418,28 @@ public class RubikObjectLibInterface implements ObjectLibInterface
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public int getCurrentColor()
+  public void onReplaceModeDown(int cubit, int face)
     {
     RubikScreenSolver solver = (RubikScreenSolver) ScreenList.SVER.getScreenClass();
-    return solver.getCurrentColor();
+    int color = solver.getCurrentColor();
+    RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
+    ObjectType currObject = play.getObject();
+    mLastCubitColor = SolverMain.cubitIsLocked(currObject,cubit);
+    mLastCubit = cubit;
+    mLastCubitFace = face;
+    ObjectControl control = mAct.get().getControl();
+    control.setTextureMap( cubit, face, color );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public int cubitIsLocked(int cubit)
+  public void onReplaceModeUp()
     {
-    RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
-    ObjectType currObject = play.getObject();
-    return SolverMain.cubitIsLocked(currObject,cubit);
+    if( mLastCubitColor>=0 )
+      {
+      ObjectControl control = mAct.get().getControl();
+      control.setTextureMap( mLastCubit, mLastCubitFace, mLastCubitColor );
+      mLastCubitColor = -1;
+      }
     }
 }
diff --git a/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java b/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java
index 89802bed..a4adc18b 100644
--- a/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java
+++ b/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java
@@ -46,8 +46,8 @@ public class TutorialObjectLibInterface implements ObjectLibInterface
   public void onBeginRotation() { }
   public void onSolved() { }
   public void onObjectCreated(long time) { }
-  public int getCurrentColor() { return 0; }
-  public int cubitIsLocked(int cubit) { return 0; }
+  public void onReplaceModeDown(int cubit, int face) { }
+  public void onReplaceModeUp() { }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
