commit 0c67ea1370244d9cdab73a8142497820359b3457
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Dec 16 01:00:44 2022 +0100

    Stars animation: support spending stars.

diff --git a/src/main/java/org/distorted/overlays/OverlayStars.java b/src/main/java/org/distorted/overlays/OverlayStars.java
index c20091dc..070e6e87 100644
--- a/src/main/java/org/distorted/overlays/OverlayStars.java
+++ b/src/main/java/org/distorted/overlays/OverlayStars.java
@@ -66,10 +66,11 @@ public class OverlayStars extends OverlayGeneric implements EffectListener
    private int mTotalStars, mNewStars;
    private FragmentEffectAlpha mAlpha;
    private Dynamic1D mAlphaStrength;
+   private boolean mIncrease;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   private Dynamic3D createRandomMove()
+   private Dynamic3D createRandomMove(boolean increase)
       {
       Dynamic3D move = new Dynamic3D();
       move.setMode(Dynamic.MODE_PATH);
@@ -86,10 +87,20 @@ public class OverlayStars extends OverlayGeneric implements EffectListener
       Static3D pointE = new Static3D(0,0,0);
       Static3D pointF = new Static3D(0,0,-10000);
 
-      move.add(pointS);
-      move.add(pointM);
-      move.add(pointE);
-      move.add(pointF);
+      if( increase )
+         {
+         move.add(pointS);
+         move.add(pointM);
+         move.add(pointE);
+         move.add(pointF);
+         }
+      else
+         {
+         move.add(pointF);
+         move.add(pointE);
+         move.add(pointM);
+         move.add(pointS);
+         }
 
       return move;
       }
@@ -137,7 +148,7 @@ public class OverlayStars extends OverlayGeneric implements EffectListener
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   private DistortedNode createNode(Resources res, int numStars)
+   private DistortedNode createNode(Resources res, int numStars, boolean increase)
       {
       // texture /////////////////////////////////////////////////////
       if( mTexture==null )
@@ -202,7 +213,7 @@ public class OverlayStars extends OverlayGeneric implements EffectListener
 
       for(int i=0; i<mNewStars; i++)
         {
-        Dynamic3D moveP = createRandomMove();
+        Dynamic3D moveP = createRandomMove(increase);
         VertexEffectMove moveE= new VertexEffectMove(moveP);
         moveE.setMeshAssociation(0,i);
         effects.apply(moveE);
@@ -252,7 +263,10 @@ public class OverlayStars extends OverlayGeneric implements EffectListener
       mWidth = mScreen.getWidth();
       mHeight= mScreen.getHeight();
 
-      mNode = createNode(res,mTotalStars);
+      mIncrease = mNewStars>0;
+      if( !mIncrease ) mNewStars = -mNewStars;
+
+      mNode = createNode(res,mTotalStars,mIncrease);
       mNode.glDepthMask(false);
       mNode.glStencilMask(0);
       mNode.enableDepthStencil(InternalOutputSurface.NO_DEPTH_NO_STENCIL);
@@ -285,8 +299,7 @@ public class OverlayStars extends OverlayGeneric implements EffectListener
          glow.notifyWhenFinished(this);
          DistortedEffects effects = mNode.getEffects();
          effects.apply(glow);
-
-         renderStars(mTotalStars+mNewStars);
+         renderStars(mTotalStars+(mIncrease ? mNewStars : -mNewStars));
          }
       if( id==mGlowID )
          {
