Project

General

Profile

« Previous | Next » 

Revision 8becce57

Added by Leszek Koltunski about 4 years ago

Major progress with Prretty Patterns - hopefully only initializing the Object remains!

View differences:

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