Project

General

Profile

« Previous | Next » 

Revision 64975793

Added by Leszek Koltunski over 4 years ago

RubikCube: renamed RubikSettingsEnum to BaseEffect and moved it to the 'effect' package.

View differences:

src/main/java/org/distorted/magic/RubikRenderer.java
21 21

  
22 22
import android.opengl.GLSurfaceView;
23 23

  
24
import org.distorted.effect.SizeChangeEffect;
25
import org.distorted.effect.SolveEffect;
26
import org.distorted.effect.ScrambleEffect;
24
import org.distorted.effect.BaseEffect;
27 25
import org.distorted.library.effect.VertexEffectSink;
28 26
import org.distorted.library.main.DistortedEffects;
29 27
import org.distorted.library.main.DistortedLibrary;
......
50 48
    private Static4D mTempCurrent, mTempAccumulated;
51 49
    private float mCubeSizeInScreenSpace;
52 50
    private int mNextCubeSize, mScrambleCubeNum;
53
    private long mRotationFinishedID, mSizeChangeEffectID, mSolveEffectID, mScrambleEffectID;
51
    private long mRotationFinishedID;
52
    private long[] mEffectID;
54 53
    private boolean mFinishRotation, mRemoveRotation, mFinishDragCurrent, mFinishDragAccumulated, mSolveCube, mScrambleCube;
55 54
    private boolean mCanRotate, mCanDrag, mCanScramble, mCanSolve;
56 55
    private RubikCube mOldCube, mNewCube;
......
88 87
      mCanScramble = true;
89 88
      mCanSolve    = true;
90 89

  
90
      mEffectID = new long[BaseEffect.Type.LENGTH];
91

  
91 92
      mMesh= new MeshFlat(20,20);
92 93
      mNextCubeSize =RubikActivity.getSize();
93 94
      }
......
130 131
      if( mNextCubeSize!=0 )
131 132
        {
132 133
        createCubeNow(mNextCubeSize);
133

  
134 134
        mCanDrag   = false;
135 135
        mCanRotate = false;
136 136
        mNextCubeSize = 0;
137
        changeSizeNow();
137
        doEffectNow(0);
138 138
        }
139 139

  
140 140
      if( mSolveCube )
......
144 144
        mCanRotate   = false;
145 145
        mCanScramble = false;
146 146
        mCanSolve    = false;
147
        solveCubeNow();
147
        doEffectNow(1);
148 148
        }
149 149

  
150 150
      if( mScrambleCube )
......
154 154
        mCanRotate    = false;
155 155
        mCanScramble  = false;
156 156
        mCanSolve     = false;
157
        scrambleCubeNow();
157
        doEffectNow(2);
158 158
        }
159 159
      }
160 160

  
......
185 185
   public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
186 186
      {
187 187
      VertexEffectSink.enable();
188
      SizeChangeEffect.enableEffects();
189
      ScrambleEffect.enableEffects();
190
      SolveEffect.enableEffects();
188
      BaseEffect.Type.enableEffects();
191 189

  
192 190
      try
193 191
        {
......
207 205
       {
208 206
       mRemoveRotation = true;
209 207
       }
210
     else if( effectID == mSizeChangeEffectID )
208
     else if( effectID == mEffectID[0] )
211 209
       {
212 210
       mCanRotate   = true;
213 211
       mCanDrag     = true;
214 212
       }
215
     else if( effectID == mSolveEffectID )
213
     else if( effectID == mEffectID[1] )
216 214
       {
217 215
       mCanRotate   = true;
218 216
       mCanDrag     = true;
219 217
       mCanSolve    = true;
220 218
       mCanScramble = true;
221 219
       }
222
     else if( effectID == mScrambleEffectID   )
220
     else if( effectID == mEffectID[2] )
223 221
       {
224 222
       mCanRotate   = true;
225 223
       mCanDrag     = true;
......
311 309

  
312 310
///////////////////////////////////////////////////////////////////////////////////////////////////
313 311

  
314
   private void changeSizeNow()
312
   private void doEffectNow(int index)
315 313
     {
316
     try
317
       {
318
       int pos0 = RubikSettingsEnum.getEnum(0).getCurrentPos();
319
       int typ0 = RubikSettingsEnum.getEnum(0).getCurrentType();
320
       int pos = RubikSettingsEnum.translatePos(pos0)+1;
321
       SizeChangeEffect effect = SizeChangeEffect.create(typ0);
322
       mSizeChangeEffectID = effect.start(pos,mScreen,mOldCube,mNewCube,this);
323
       }
324
     catch(Exception ex)
325
       {
326
       android.util.Log.e("Renderer", "failed to create SizeChangeEffect, exception: "+ex.getMessage());
314
     mEffectID[index] = BaseEffect.Type.getType(index).startEffect(this);
327 315

  
328
       if( mOldCube!=null ) mScreen.detach(mOldCube);
329
       mScreen.attach(mNewCube);
316
     if( mEffectID[index] == -1 )
317
       {
330 318
       mCanRotate = true;
331 319
       mCanDrag   = true;
332 320
       }
......
334 322

  
335 323
///////////////////////////////////////////////////////////////////////////////////////////////////
336 324

  
337
   private void solveCubeNow()
325
   float returnCubeSizeInScreenSpace()
338 326
     {
339
     try
340
       {
341
       int pos1 = RubikSettingsEnum.getEnum(1).getCurrentPos();
342
       int typ1 = RubikSettingsEnum.getEnum(1).getCurrentType();
343
       int pos = RubikSettingsEnum.translatePos(pos1)+1;
344
       SolveEffect effect = SolveEffect.create(typ1);
345
       mSolveEffectID = effect.start(pos,mScreen,mNewCube,this);
346
       }
347
     catch(Exception ex)
348
       {
349
       android.util.Log.e("Renderer", "failed to create SolveEffect, exception: "+ex.getMessage());
350

  
351
       mNewCube.solve();    //
352
       mCanRotate = true;   // just solve the cube
353
       mCanDrag   = true;   //
354
       }
327
     return mCubeSizeInScreenSpace;
355 328
     }
356 329

  
357 330
///////////////////////////////////////////////////////////////////////////////////////////////////
358 331

  
359
   private void scrambleCubeNow()
332
   boolean canRotate()
360 333
     {
361
     try
362
       {
363
       int pos2 = RubikSettingsEnum.getEnum(2).getCurrentPos();
364
       int typ2 = RubikSettingsEnum.getEnum(2).getCurrentType();
365
       int pos = RubikSettingsEnum.translatePos(pos2)+1;
366
       ScrambleEffect effect = ScrambleEffect.create(typ2);
367
       mScrambleEffectID = effect.start(pos,mNewCube,mScrambleCubeNum,this);
368
       }
369
     catch(Exception ex)
370
       {
371
       android.util.Log.e("Renderer", "failed to create ScrambleEffect, exception: "+ex.getMessage());
334
     return mCanRotate;
335
     }
372 336

  
373
       mCanRotate = true;
374
       mCanDrag   = true;
375
       }
337
///////////////////////////////////////////////////////////////////////////////////////////////////
338

  
339
   boolean canDrag()
340
     {
341
     return mCanDrag;
376 342
     }
377 343

  
378 344
///////////////////////////////////////////////////////////////////////////////////////////////////
379 345

  
380
   float returnCubeSizeInScreenSpace()
346
   public RubikCube getCube()
381 347
     {
382
     return mCubeSizeInScreenSpace;
348
     return mNewCube;
383 349
     }
384 350

  
385 351
///////////////////////////////////////////////////////////////////////////////////////////////////
386 352

  
387
   boolean canRotate()
353
   public RubikCube getOldCube()
388 354
     {
389
     return mCanRotate;
355
     return mOldCube;
390 356
     }
391 357

  
392 358
///////////////////////////////////////////////////////////////////////////////////////////////////
393 359

  
394
   boolean canDrag()
360
   public DistortedScreen getScreen()
395 361
     {
396
     return mCanDrag;
362
     return mScreen;
397 363
     }
398 364

  
399 365
///////////////////////////////////////////////////////////////////////////////////////////////////
400 366

  
401
   RubikCube getCube()
367
   public int getNumScrambles()
402 368
     {
403
     return mNewCube;
369
     return mScrambleCubeNum;
404 370
     }
405 371

  
406 372
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff