Project

General

Profile

« Previous | Next » 

Revision bbc6471c

Added by Leszek Koltunski about 3 years ago

Change the automatic scramble API in the TwistyObject - in preparation for automatic scrambles in the Bandaged Objects.

View differences:

src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
49 49
      }
50 50
    }
51 51

  
52
  private static int NUM_EFFECTS = Type.values().length;
52
  private static final int NUM_EFFECTS = Type.values().length;
53 53
  private static final int FAKE_EFFECT_ID  = -3;
54 54
  private static final Type[] types;
55 55

  
......
72 72
  private int mNumDoubleScramblesLeft, mNumScramblesLeft;
73 73
  private int mLastRotAxis, mLastRow;
74 74
  private long mDurationSingleTurn;
75
  private Random mRnd;
75
  private final Random mRnd;
76 76
  private int mBasicAngle;
77 77

  
78 78
  TwistyObject mObject;
......
81 81
  Effect[] mCubeEffects;
82 82
  int[] mCubeEffectPosition;
83 83
  int mCubeEffectNumber, mNodeEffectNumber;
84
  int mNumScrambles;
85
  int[] mScramble;
84 86

  
85 87
///////////////////////////////////////////////////////////////////////////////////////////////////
86 88

  
87 89
  ScrambleEffect()
88 90
    {
89 91
    mRnd = new Random( System.currentTimeMillis() );
92
    mScramble = new int[3];
90 93
    mLastRotAxis = START_AXIS;
91 94
    }
92 95

  
......
125 128
      }
126 129

  
127 130
    mDurationSingleTurn = duration/(mNumScramblesLeft+mNumDoubleScramblesLeft);
131
    mNumScrambles = 0;
128 132

  
129 133
    addNewScramble();
130 134
    }
......
136 140
    {
137 141
    if( mNumScramblesLeft>0 )
138 142
      {
139
      int lastRotAxis = mLastRotAxis;
140
      mLastRotAxis = mObject.randomizeNewRotAxis(mRnd,mLastRotAxis);
141
      mLastRow = mObject.randomizeNewRow(mRnd,lastRotAxis,mLastRow,mLastRotAxis);
143
      mNumScrambles++;
144

  
145
      mObject.randomizeNewScramble(mScramble, mRnd,mLastRotAxis, mLastRow, mNumScrambles,
146
                                  mNumScramblesLeft, mNumDoubleScramblesLeft);
147
      mLastRotAxis = mScramble[0];
148
      mLastRow     = mScramble[1];
149
      int angle    = mScramble[2];
142 150

  
143 151
      int rowBitmap  = (1<<mLastRow);
144
      int angle= randomizeAngle();
145 152
      int absAngle = (angle<0 ? -angle : angle);
146 153
      long durationMillis = absAngle*mDurationSingleTurn;
147 154

  
......
166 173
      }
167 174
    }
168 175

  
169
///////////////////////////////////////////////////////////////////////////////////////////////////
170
// only works for basicAngle<=5.
171

  
172
  private int randomizeAngle()
173
    {
174
    int random = mRnd.nextInt(mNumScramblesLeft);
175
    int result = random<mNumDoubleScramblesLeft ? 2:1;
176
    int sign   = mRnd.nextInt(2);
177

  
178
    return sign==0 ? result : -result;
179
    }
180

  
181 176
///////////////////////////////////////////////////////////////////////////////////////////////////
182 177

  
183 178
  private void assignEffects()

Also available in: Unified diff