Revision bbc6471c
Added by Leszek Koltunski about 3 years ago
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
Change the automatic scramble API in the TwistyObject - in preparation for automatic scrambles in the Bandaged Objects.