Revision 8becce57
Added by Leszek Koltunski about 4 years ago
src/main/java/org/distorted/effect/scramble/ScrambleEffect.java | ||
---|---|---|
22 | 22 |
import org.distorted.effect.BaseEffect; |
23 | 23 |
import org.distorted.library.effect.Effect; |
24 | 24 |
import org.distorted.library.main.DistortedEffects; |
25 |
import org.distorted.library.main.DistortedScreen; |
|
25 | 26 |
import org.distorted.library.message.EffectListener; |
26 |
import org.distorted.magic.RubikRenderer;
|
|
27 |
import org.distorted.magic.RubikPostRender;
|
|
27 | 28 |
import org.distorted.object.RubikObject; |
28 | 29 |
|
29 | 30 |
import java.lang.reflect.Method; |
... | ... | |
31 | 32 |
|
32 | 33 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
33 | 34 |
|
34 |
public abstract class ScrambleEffect extends BaseEffect implements EffectListener |
|
35 |
public abstract class ScrambleEffect extends BaseEffect implements EffectListener, RubikPostRender.ActionFinishedListener
|
|
35 | 36 |
{ |
36 | 37 |
public enum Type |
37 | 38 |
{ |
... | ... | |
62 | 63 |
} |
63 | 64 |
} |
64 | 65 |
|
65 |
private EffectListener mListener;
|
|
66 |
private RubikPostRender mPostRender;
|
|
66 | 67 |
private int mEffectReturned; |
67 |
private long mCurrentBaseEffectID; |
|
68 | 68 |
private int mNumDoubleScramblesLeft, mNumScramblesLeft; |
69 | 69 |
private int mLastVector; |
70 | 70 |
private long mDurationSingleTurn; |
... | ... | |
154 | 154 |
android.util.Log.e("effect", "ERROR: "+mNumDoubleScramblesLeft); |
155 | 155 |
} |
156 | 156 |
|
157 |
mCurrentBaseEffectID = mObject.addNewRotation(mLastVector, rowBitmap, angle*(360/mBasicAngle), durationMillis, this );
|
|
157 |
mPostRender.addRotation(this, mLastVector, rowBitmap, angle*(360/mBasicAngle), durationMillis);
|
|
158 | 158 |
} |
159 | 159 |
else |
160 | 160 |
{ |
... | ... | |
162 | 162 |
|
163 | 163 |
if( mEffectReturned == mCubeEffectNumber+mNodeEffectNumber ) |
164 | 164 |
{ |
165 |
mListener.effectFinished(FAKE_EFFECT_ID);
|
|
165 |
mPostRender.effectFinished(FAKE_EFFECT_ID);
|
|
166 | 166 |
} |
167 | 167 |
} |
168 | 168 |
} |
... | ... | |
242 | 242 |
|
243 | 243 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
244 | 244 |
|
245 |
public void effectFinished(final long effectID)
|
|
245 |
public void onActionFinished(final long effectID)
|
|
246 | 246 |
{ |
247 |
if( effectID == mCurrentBaseEffectID ) |
|
248 |
{ |
|
249 |
mObject.removeRotationNow(); |
|
250 |
addNewScramble(); |
|
251 |
return; |
|
252 |
} |
|
247 |
mObject.removeRotationNow(); |
|
248 |
addNewScramble(); |
|
249 |
} |
|
253 | 250 |
|
251 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
252 |
|
|
253 |
public void effectFinished(final long effectID) |
|
254 |
{ |
|
254 | 255 |
for(int i=0; i<mCubeEffectNumber; i++) |
255 | 256 |
{ |
256 | 257 |
long id = mCubeEffects[i].getID(); |
... | ... | |
266 | 267 |
|
267 | 268 |
if( mNumScramblesLeft==0 ) |
268 | 269 |
{ |
269 |
mListener.effectFinished(FAKE_EFFECT_ID);
|
|
270 |
mPostRender.effectFinished(FAKE_EFFECT_ID);
|
|
270 | 271 |
} |
271 | 272 |
} |
272 | 273 |
|
... | ... | |
289 | 290 |
|
290 | 291 |
if( mNumScramblesLeft==0 ) |
291 | 292 |
{ |
292 |
mListener.effectFinished(FAKE_EFFECT_ID);
|
|
293 |
mPostRender.effectFinished(FAKE_EFFECT_ID);
|
|
293 | 294 |
} |
294 | 295 |
} |
295 | 296 |
|
... | ... | |
301 | 302 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
302 | 303 |
|
303 | 304 |
@SuppressWarnings("unused") |
304 |
public long start(int duration, RubikRenderer renderer)
|
|
305 |
public long start(int duration, DistortedScreen screen, RubikPostRender post)
|
|
305 | 306 |
{ |
306 |
mObject = renderer.getObject();
|
|
307 |
mListener = renderer;
|
|
307 |
mObject = post.getObject();
|
|
308 |
mPostRender = post;
|
|
308 | 309 |
|
309 | 310 |
mObject.solve(); |
310 | 311 |
|
311 | 312 |
mNumAxis = mObject.getRotationAxis().length; |
312 | 313 |
mBasicAngle = mObject.getBasicAngle(); |
313 | 314 |
|
314 |
int numScrambles = renderer.getNumScrambles();
|
|
315 |
int numScrambles = post.getNumScrambles();
|
|
315 | 316 |
int dura = (int)(duration*Math.pow(numScrambles,0.6f)); |
316 | 317 |
createBaseEffects(dura,numScrambles); |
317 | 318 |
createEffects (dura,numScrambles); |
Also available in: Unified diff
Major progress with Prretty Patterns - hopefully only initializing the Object remains!