Revision 27a70eae
Added by Leszek Koltunski about 4 years ago
src/main/java/org/distorted/effect/scramble/ScrambleEffect.java | ||
---|---|---|
23 | 23 |
import org.distorted.library.effect.Effect; |
24 | 24 |
import org.distorted.library.main.DistortedEffects; |
25 | 25 |
import org.distorted.library.message.EffectListener; |
26 |
import org.distorted.object.RubikCube; |
|
27 | 26 |
import org.distorted.magic.RubikRenderer; |
27 |
import org.distorted.object.RubikObject; |
|
28 | 28 |
|
29 | 29 |
import java.lang.reflect.Method; |
30 | 30 |
import java.util.Random; |
31 | 31 |
|
32 |
import static org.distorted.object.RubikObjectList.VECTX; |
|
33 |
import static org.distorted.object.RubikObjectList.VECTY; |
|
34 |
import static org.distorted.object.RubikObjectList.VECTZ; |
|
35 |
|
|
32 | 36 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
33 | 37 |
|
34 | 38 |
public abstract class ScrambleEffect extends BaseEffect implements EffectListener |
... | ... | |
69 | 73 |
private int mLastVector; |
70 | 74 |
private long mDurationSingleTurn; |
71 | 75 |
private Random mRnd; |
72 |
private RubikCube mCube;
|
|
76 |
private RubikObject mObject;
|
|
73 | 77 |
|
74 | 78 |
Effect[] mNodeEffects; |
75 | 79 |
int[] mNodeEffectPosition; |
... | ... | |
123 | 127 |
{ |
124 | 128 |
switch(mRnd.nextInt(3)) |
125 | 129 |
{ |
126 |
case 0: mLastVector = RubikCube.VECTX; break;
|
|
127 |
case 1: mLastVector = RubikCube.VECTY; break;
|
|
128 |
case 2: mLastVector = RubikCube.VECTZ; break;
|
|
130 |
case 0: mLastVector = VECTX; break; |
|
131 |
case 1: mLastVector = VECTY; break; |
|
132 |
case 2: mLastVector = VECTZ; break; |
|
129 | 133 |
} |
130 | 134 |
} |
131 | 135 |
else |
... | ... | |
134 | 138 |
|
135 | 139 |
switch(mLastVector) |
136 | 140 |
{ |
137 |
case RubikCube.VECTX: mLastVector = (newVector==0 ? RubikCube.VECTY: RubikCube.VECTZ); break;
|
|
138 |
case RubikCube.VECTY: mLastVector = (newVector==0 ? RubikCube.VECTX: RubikCube.VECTZ); break;
|
|
139 |
case RubikCube.VECTZ: mLastVector = (newVector==0 ? RubikCube.VECTX: RubikCube.VECTY); break;
|
|
141 |
case VECTX: mLastVector = (newVector==0 ? VECTY: VECTZ); break;
|
|
142 |
case VECTY: mLastVector = (newVector==0 ? VECTX: VECTZ); break;
|
|
143 |
case VECTZ: mLastVector = (newVector==0 ? VECTX: VECTY); break;
|
|
140 | 144 |
} |
141 | 145 |
} |
142 | 146 |
|
143 |
int row = mRnd.nextInt(mCube.getSize());
|
|
147 |
int row = mRnd.nextInt(mObject.getSize());
|
|
144 | 148 |
int angle= randomizeAngle(); |
145 | 149 |
int absAngle = (angle<0 ? -angle : angle); |
146 | 150 |
long durationMillis = absAngle*mDurationSingleTurn; |
... | ... | |
153 | 157 |
android.util.Log.e("effect", "ERROR: "+mNumDoubleScramblesLeft); |
154 | 158 |
} |
155 | 159 |
|
156 |
mCurrentBaseEffectID = mCube.addNewRotation(mLastVector, row, angle*90, durationMillis, this );
|
|
160 |
mCurrentBaseEffectID = mObject.addNewRotation(mLastVector, row, angle*90, durationMillis, this );
|
|
157 | 161 |
} |
158 | 162 |
else |
159 | 163 |
{ |
... | ... | |
183 | 187 |
{ |
184 | 188 |
for(int i=0; i<mCubeEffectNumber; i++) |
185 | 189 |
{ |
186 |
mCube.apply(mCubeEffects[i],mCubeEffectPosition[i]);
|
|
190 |
mObject.apply(mCubeEffects[i],mCubeEffectPosition[i]);
|
|
187 | 191 |
mCubeEffects[i].notifyWhenFinished(this); |
188 | 192 |
} |
189 | 193 |
|
190 |
DistortedEffects nodeEffects = mCube.getEffects();
|
|
194 |
DistortedEffects nodeEffects = mObject.getEffects();
|
|
191 | 195 |
|
192 | 196 |
for(int i=0; i<mNodeEffectNumber; i++) |
193 | 197 |
{ |
... | ... | |
202 | 206 |
{ |
203 | 207 |
for(int i=0; i<mCubeEffectNumber; i++) |
204 | 208 |
{ |
205 |
mCube.remove(mCubeEffects[i].getID());
|
|
209 |
mObject.remove(mCubeEffects[i].getID());
|
|
206 | 210 |
} |
207 | 211 |
|
208 |
DistortedEffects nodeEffects = mCube.getEffects();
|
|
212 |
DistortedEffects nodeEffects = mObject.getEffects();
|
|
209 | 213 |
|
210 | 214 |
for(int i=0; i<mNodeEffectNumber; i++) |
211 | 215 |
{ |
... | ... | |
244 | 248 |
{ |
245 | 249 |
if( effectID == mCurrentBaseEffectID ) |
246 | 250 |
{ |
247 |
mCube.removeRotationNow();
|
|
251 |
mObject.removeRotationNow();
|
|
248 | 252 |
addNewScramble(); |
249 | 253 |
return; |
250 | 254 |
} |
... | ... | |
301 | 305 |
@SuppressWarnings("unused") |
302 | 306 |
public long start(int duration, RubikRenderer renderer) |
303 | 307 |
{ |
304 |
mCube = renderer.getCube();
|
|
308 |
mObject = renderer.getObject();
|
|
305 | 309 |
mListener = renderer; |
306 | 310 |
|
307 |
mCube.solve();
|
|
311 |
mObject.solve();
|
|
308 | 312 |
|
309 | 313 |
int numScrambles = renderer.getNumScrambles(); |
310 | 314 |
int dura = (int)(duration*Math.pow(numScrambles,0.6f)); |
Also available in: Unified diff
Make RubikCube and RubikCubeMovement generic and not visible outside of their package.