Project

General

Profile

« Previous | Next » 

Revision e1a86bf2

Added by Leszek Koltunski over 2 years ago

Move the main app to the 'J1M1' object creation mode, i.e. create them from the Json files and using the Dmesh fiels as well.

Make it possible for any app descending from the 'objectlib' to use any of the J0M0, J0M1, J1M0, J1M1 modes.

View differences:

build.gradle
24 24

  
25 25
dependencies {
26 26
    api project(':distorted-library')
27
    implementation project(path: ':distorted-puzzle-dmesh')
28
    implementation project(path: ':distorted-puzzle-jsons')
29 27
}
src/main/java/org/distorted/objectlib/json/JsonReader.java
42 42

  
43 43
public class JsonReader
44 44
{
45
  private static JsonReader mThis;
46

  
47 45
  private ScrambleState[] mStates;
48 46
  private int[][] mSolvedQuats;
49 47
  private Static4D[] mQuats;
......
64 62
  private ObjectSticker[] mObjectSticker;
65 63
  private Static3D[] mAxis;
66 64
  private int[] mBasicAngle;
67
  private String mLongName, mInventor;
65
  private String mLongName, mShortName, mInventor;
68 66
  private int mYearOfInvention, mComplexity;
69 67
  private int[] mNumLayers;
70 68
  private float mSize;
71
  private int mScrambleType;
69
  private int mScrambleType, mNumScrambles;
72 70
  private int[] mColor;
73

  
74
///////////////////////////////////////////////////////////////////////////////////////////////////
75

  
76
  private JsonReader()
77
    {
78

  
79
    }
80

  
81
///////////////////////////////////////////////////////////////////////////////////////////////////
82

  
83
  public static JsonReader getInstance()
84
    {
85
    if( mThis==null ) mThis = new JsonReader();
86
    return mThis;
87
    }
71
  private ObjectType mType;
88 72

  
89 73
///////////////////////////////////////////////////////////////////////////////////////////////////
90 74

  
91 75
  private void parseMetadata(JSONObject object) throws JSONException
92 76
    {
93 77
    mLongName        = object.getString("longname");
78
    mShortName       = object.getString("shortname");
94 79
    mInventor        = object.getString("inventor");
95 80
    mYearOfInvention = object.getInt("year");
96 81
    mComplexity      = object.getInt("complexity");
97 82
    mSize            = (float)object.getDouble("size");
98 83
    mSolvedFuncIndex = object.getInt("solved_func");
84
    mNumScrambles    = object.getInt("scrambles");
85

  
86
    int ordinal = ObjectType.getOrdinal(mShortName);
87
    mType = ordinal>=0 ? ObjectType.getObject(ordinal) : null;
99 88
    }
100 89

  
101 90
///////////////////////////////////////////////////////////////////////////////////////////////////
......
655 644
    return mCubitFaceColor[cubit][face];
656 645
    }
657 646

  
647
///////////////////////////////////////////////////////////////////////////////////////////////////
648

  
649
  public int getNumScrambles()
650
    {
651
    return mNumScrambles;
652
    }
653

  
658 654
///////////////////////////////////////////////////////////////////////////////////////////////////
659 655

  
660 656
  public ObjectSticker retSticker(int sticker)
......
680 676

  
681 677
  public ObjectType intGetObjectType()
682 678
    {
683
    return null;
679
    return mType;
684 680
    }
685 681

  
686 682
///////////////////////////////////////////////////////////////////////////////////////////////////
......
690 686
    return mLongName;
691 687
    }
692 688

  
689
///////////////////////////////////////////////////////////////////////////////////////////////////
690

  
691
  public String getShortName()
692
    {
693
    return mShortName;
694
    }
695

  
693 696
///////////////////////////////////////////////////////////////////////////////////////////////////
694 697

  
695 698
  public String getInventor()
src/main/java/org/distorted/objectlib/json/JsonWriter.java
36 36
import org.distorted.objectlib.helpers.ObjectSticker;
37 37
import org.distorted.objectlib.helpers.ScrambleState;
38 38
import org.distorted.objectlib.main.TwistyObject;
39
import org.distorted.objectlib.main.ObjectType;
39 40

  
40 41
///////////////////////////////////////////////////////////////////////////////////////////////////
41 42

  
......
354 355
    {
355 356
    JSONObject metadata = new JSONObject();
356 357

  
358
    ObjectType type = object.getObjectType();
359

  
357 360
    metadata.put("longname"   , object.getObjectName() );
358 361
    metadata.put("inventor"   , object.getInventor());
359 362
    metadata.put("year"       , object.getYearOfInvention());
360 363
    metadata.put("complexity" , object.getComplexity());
361 364
    metadata.put("size"       , object.getSize() );
362 365
    metadata.put("solved_func", object.getSolvedFunctionIndex() );
366
    metadata.put("scrambles"  , type.getNumScramble() );
367
    metadata.put("shortname"  , type.name() );
363 368

  
364 369
    return metadata;
365 370
    }
src/main/java/org/distorted/objectlib/main/ObjectControl.java
19 19

  
20 20
package org.distorted.objectlib.main;
21 21

  
22
import java.io.InputStream;
23

  
22 24
import android.app.Activity;
23 25
import android.content.SharedPreferences;
24 26
import android.util.DisplayMetrics;
......
82 84
    private static final Static4D mTemp= new Static4D(0,0,0,1);
83 85

  
84 86
    private static boolean mForcedIconMode = false;
85
    private static boolean mForcedDmeshMode= false;
86
    private static boolean mForcedJsonMode = false;
87 87

  
88 88
///////////////////////////////////////////////////////////////////////////////////////////////////
89 89
// cast the 3D axis we are currently rotating along (which is already casted to the surface of the
......
522 522
      mForcedIconMode = mode;
523 523
      }
524 524

  
525
///////////////////////////////////////////////////////////////////////////////////////////////////
526

  
527
    public static void setDmeshMode(boolean mode)
528
      {
529
      mForcedDmeshMode = mode;
530
      }
531

  
532
///////////////////////////////////////////////////////////////////////////////////////////////////
533

  
534
    public static void setJsonMode(boolean mode)
535
      {
536
      mForcedJsonMode = mode;
537
      }
538

  
539 525
///////////////////////////////////////////////////////////////////////////////////////////////////
540 526

  
541 527
    public static boolean isInIconMode()
......
543 529
      return mForcedIconMode;
544 530
      }
545 531

  
546
///////////////////////////////////////////////////////////////////////////////////////////////////
547

  
548
    public static boolean isInDmeshMode()
549
      {
550
      return mForcedDmeshMode;
551
      }
552

  
553
///////////////////////////////////////////////////////////////////////////////////////////////////
554

  
555
    public static boolean isInJsonMode()
556
      {
557
      return mForcedJsonMode;
558
      }
559

  
560 532
///////////////////////////////////////////////////////////////////////////////////////////////////
561 533
// PUBLIC API
562 534
///////////////////////////////////////////////////////////////////////////////////////////////////
......
736 708

  
737 709
///////////////////////////////////////////////////////////////////////////////////////////////////
738 710

  
739
    public void changeObject(ObjectType newObject)
711
    public void changeObject(int ordinal, InputStream jsonStream, InputStream meshStream)
740 712
      {
741
      mPreRender.changeObject(newObject);
713
      mPreRender.changeObject(ordinal, jsonStream, meshStream);
742 714
      }
743 715

  
744 716
///////////////////////////////////////////////////////////////////////////////////////////////////
745 717

  
746
    public void recreateObject()
718
    public void changeIfDifferent(int ordinal, InputStream jsonStream, InputStream meshStream)
747 719
      {
748
      mPreRender.recreateObject();
720
      TwistyObject object = mPreRender.getObject();
721
      ObjectType old = object==null ? null : object.getObjectType();
722

  
723
      if( old==null || old.ordinal() != ordinal )
724
        {
725
        mPreRender.changeObject(ordinal, jsonStream, meshStream);
726
        }
749 727
      }
750 728

  
751 729
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/objectlib/main/ObjectPreRender.java
20 20
package org.distorted.objectlib.main;
21 21

  
22 22
import java.io.InputStream;
23
import java.lang.ref.WeakReference;
24 23

  
25 24
import android.app.Activity;
26 25
import android.content.SharedPreferences;
27
import android.content.res.Resources;
28 26

  
29 27
import org.distorted.library.message.EffectListener;
30 28
import org.distorted.library.type.Static3D;
31 29

  
30
import org.distorted.library.type.Static4D;
32 31
import org.distorted.objectlib.helpers.ObjectLibInterface;
33 32
import org.distorted.objectlib.effects.BaseEffect;
34 33
import org.distorted.objectlib.effects.scramble.ScrambleEffect;
......
39 38

  
40 39
public class ObjectPreRender implements EffectListener
41 40
  {
42
  private final WeakReference<Activity> mAct;
43 41
  private final ObjectControl mController;
44
  private ObjectType mNextObject;
42
  private InputStream mJsonStream, mMeshStream;
43
  private int mOrdinal;
45 44
  private TwistyObject mOldObject, mNewObject;
46 45
  private SharedPreferences mPreferences;
47 46
  private MovesFinished mAddActionListener;
......
51 50
  private float mMoveX, mMoveY;
52 51

  
53 52
  private boolean mFinishRotation, mRemoveRotation, mRemovePatternRotation, mAddRotation,
54
                  mSetQuat, mChangeObject, mSolveObject, mScrambleObject, mRecreateObject,
53
                  mSetQuat, mChangeObject, mSolveObject, mScrambleObject,
55 54
                  mInitializeObject, mSetTextureMap, mResetAllTextureMaps, mSolve;
56 55
  private boolean mUIBlocked, mTouchBlocked, mIsSolved;
57 56
  private long mRotationFinishedID;
......
69 68

  
70 69
  public ObjectPreRender(Activity act, ObjectControl controller, ObjectLibInterface actioner)
71 70
    {
72
    mAct = new WeakReference<>(act);
73 71
    mInterface = actioner;
74 72
    mController = controller;
75 73

  
......
79 77
    mAddRotation          = false;
80 78
    mSetQuat              = false;
81 79
    mChangeObject         = false;
82
    mRecreateObject       = false;
83 80
    mSolveObject          = false;
84 81
    mSolve                = false;
85 82
    mScrambleObject       = false;
......
98 95

  
99 96
///////////////////////////////////////////////////////////////////////////////////////////////////
100 97

  
101
  private void createObjectNow(ObjectType object)
98
  private void createObjectNow(int ordinal, InputStream jsonStream, InputStream meshStream)
102 99
    {
103 100
    boolean firstTime = (mNewObject==null);
104 101

  
105 102
    if( mOldObject!=null ) mOldObject.releaseResources();
106 103
    mOldObject = mNewObject;
107 104
    Static3D move = new Static3D(mMoveX,mMoveY,0);
108
    Resources res = mAct.get().getResources();
105
    Static4D quat = mController.getQuat();
109 106

  
110 107
    long time1 = System.currentTimeMillis();
111 108

  
112
    int meshID = object.getMeshID();
113
    InputStream meshStream = ( meshID!=0 && ObjectControl.isInDmeshMode() ) ? res.openRawResource(meshID) : null;
114

  
115
    if( !ObjectControl.isInJsonMode() )
116
      {
117
      mNewObject = object.create( mController.getQuat(), move, meshStream);
118
      }
119
    else
120
      {
121
      int jsonID = object.getJsonID();
122
      InputStream jsonStream = jsonID!=0 ? res.openRawResource(jsonID) : null;
123
      mNewObject = new TwistyJson(jsonStream, mController.getQuat(), move, meshStream);
124
      }
109
    if( jsonStream==null ) mNewObject = ObjectType.create( ordinal, quat, move, meshStream);
110
    else                   mNewObject = new TwistyJson( jsonStream, quat, move, meshStream);
125 111

  
126 112
    long time2 = System.currentTimeMillis();
127 113
    mInterface.onObjectCreated(time2-time1);
......
233 219
  private void changeObjectNow()
234 220
    {
235 221
    mChangeObject = false;
236

  
237
    if ( mNewObject==null || mNewObject.getObjectType()!=mNextObject )
238
      {
239
      blockEverything(BlockController.PLACE_1);
240
      createObjectNow(mNextObject);
241
      doEffectNow( BaseEffect.Type.SIZECHANGE );
242
      }
243
    }
244

  
245
///////////////////////////////////////////////////////////////////////////////////////////////////
246

  
247
  private void recreateObjectNow()
248
    {
249
    mRecreateObject = false;
250

  
251
    if ( mNewObject!=null )
252
      {
253
      blockEverything(BlockController.PLACE_1);
254
      createObjectNow(mNewObject.getObjectType());
255
      doEffectNow( BaseEffect.Type.SIZECHANGE );
256
      }
222
    blockEverything(BlockController.PLACE_1);
223
    createObjectNow(mOrdinal,mJsonStream,mMeshStream);
224
    doEffectNow( BaseEffect.Type.SIZECHANGE );
257 225
    }
258 226

  
259 227
///////////////////////////////////////////////////////////////////////////////////////////////////
......
422 390

  
423 391
///////////////////////////////////////////////////////////////////////////////////////////////////
424 392

  
425
  public void changeObject(ObjectType object)
393
  public void changeObject(int ordinal, InputStream jsonStream, InputStream meshStream)
426 394
    {
427 395
    mChangeObject = true;
428
    mNextObject = object;
429
    }
430

  
431
///////////////////////////////////////////////////////////////////////////////////////////////////
432

  
433
  public void recreateObject()
434
    {
435
    mRecreateObject = true;
396
    mOrdinal    = ordinal;
397
    mJsonStream = jsonStream;
398
    mMeshStream = meshStream;
436 399
    }
437 400

  
438 401
///////////////////////////////////////////////////////////////////////////////////////////////////
......
503 466
    if( mRemoveRotation        ) removeRotationNow();
504 467
    if( mRemovePatternRotation ) removePatternRotationNow();
505 468
    if( mChangeObject          ) changeObjectNow();
506
    if( mRecreateObject        ) recreateObjectNow();
507 469
    if( mSolveObject           ) solveObjectNow();
508 470
    if( mScrambleObject        ) scrambleObjectNow();
509 471
    if( mAddRotation           ) addRotationNow();
src/main/java/org/distorted/objectlib/main/ObjectType.java
31 31

  
32 32
public enum ObjectType
33 33
  {
34
  CUBE_2 ( new int[] {2,2,2}      , 12, R.raw.json_cube_2, R.raw.cube_2, R.drawable.cube_2s, R.drawable.cube_2m, R.drawable.cube_2b, R.drawable.cube_2h),
35
  CUBE_3 ( new int[] {3,3,3}      , 17, R.raw.json_cube_3, R.raw.cube_3, R.drawable.cube_3s, R.drawable.cube_3m, R.drawable.cube_3b, R.drawable.cube_3h),
36
  CUBE_4 ( new int[] {4,4,4}      , 24, R.raw.json_cube_4, R.raw.cube_4, R.drawable.cube_4s, R.drawable.cube_4m, R.drawable.cube_4b, R.drawable.cube_4h),
37
  CUBE_5 ( new int[] {5,5,5}      , 28, R.raw.json_cube_5, R.raw.cube_5, R.drawable.cube_5s, R.drawable.cube_5m, R.drawable.cube_5b, R.drawable.cube_5h),
38
  CUBE_6 ( new int[] {6,6,6}      , 35, R.raw.json_cube_6, R.raw.cube_6, R.drawable.cube_6s, R.drawable.cube_6m, R.drawable.cube_6b, R.drawable.cube_6h),
39
  DIAM_2 ( new int[] {2,2,2,2}    , 12, R.raw.json_diam_2, R.raw.diam_2, R.drawable.diam_2s, R.drawable.diam_2m, R.drawable.diam_2b, R.drawable.diam_2h),
40
  DIAM_3 ( new int[] {3,3,3,3}    , 24, R.raw.json_diam_3, R.raw.diam_3, R.drawable.diam_3s, R.drawable.diam_3m, R.drawable.diam_3b, R.drawable.diam_3h),
41
  DIAM_4 ( new int[] {4,4,4,4}    , 32, R.raw.json_diam_4, R.raw.diam_4, R.drawable.diam_4s, R.drawable.diam_4m, R.drawable.diam_4b, R.drawable.diam_4h),
42
  JING_2 ( new int[] {2,2,2,2}    , 11, R.raw.json_jing_2, R.raw.jing_2, R.drawable.jing_2s, R.drawable.jing_2m, R.drawable.jing_2b, R.drawable.jing_2h),
43
  PYRA_3 ( new int[] {3,3,3,3}    , 10, R.raw.json_pyra_3, R.raw.pyra_3, R.drawable.pyra_3s, R.drawable.pyra_3m, R.drawable.pyra_3b, R.drawable.pyra_3h),
44
  PYRA_4 ( new int[] {4,4,4,4}    , 17, R.raw.json_pyra_4, R.raw.pyra_4, R.drawable.pyra_4s, R.drawable.pyra_4m, R.drawable.pyra_4b, R.drawable.pyra_4h),
45
  PYRA_5 ( new int[] {5,5,5,5}    , 23, R.raw.json_pyra_5, R.raw.pyra_5, R.drawable.pyra_5s, R.drawable.pyra_5m, R.drawable.pyra_5b, R.drawable.pyra_5h),
46
  KILO_3 ( new int[] {3,3,3,3,3,3}, 18, R.raw.json_kilo_3, R.raw.kilo_3, R.drawable.kilo_3s, R.drawable.kilo_3m, R.drawable.kilo_3b, R.drawable.kilo_3h),
47
  KILO_5 ( new int[] {5,5,5,5,5,5}, 33, R.raw.json_kilo_5, R.raw.kilo_5, R.drawable.kilo_5s, R.drawable.kilo_5m, R.drawable.kilo_5b, R.drawable.kilo_5h),
48
  MEGA_3 ( new int[] {3,3,3,3,3,3}, 21, R.raw.json_mega_3, R.raw.mega_3, R.drawable.mega_3s, R.drawable.mega_3m, R.drawable.mega_3b, R.drawable.mega_3h),
49
  MEGA_5 ( new int[] {5,5,5,5,5,5}, 37, R.raw.json_mega_5, R.raw.mega_5, R.drawable.mega_5s, R.drawable.mega_5m, R.drawable.mega_5b, R.drawable.mega_5h),
50
  ULTI_2 ( new int[] {2,2,2,2}    , 18, R.raw.json_ulti_2, R.raw.ulti_2, R.drawable.ulti_2s, R.drawable.ulti_2m, R.drawable.ulti_2b, R.drawable.ulti_2h),
51
  DINO_3 ( new int[] {3,3,3,3}    , 10, R.raw.json_dino_3, R.raw.dino_3, R.drawable.dino_3s, R.drawable.dino_3m, R.drawable.dino_3b, R.drawable.dino_3h),
52
  DIN4_3 ( new int[] {3,3,3,3}    ,  7, R.raw.json_din4_3, R.raw.dino_3, R.drawable.din4_3s, R.drawable.din4_3m, R.drawable.din4_3b, R.drawable.din4_3h),
53
  REDI_3 ( new int[] {3,3,3,3}    , 16, R.raw.json_redi_3, R.raw.redi_3, R.drawable.redi_3s, R.drawable.redi_3m, R.drawable.redi_3b, R.drawable.redi_3h),
54
  SKEW_2 ( new int[] {2,2,2,2}    , 11, R.raw.json_skew_2, R.raw.skew_2, R.drawable.skew_2s, R.drawable.skew_2m, R.drawable.skew_2b, R.drawable.skew_2h),
55
  SKEW_3 ( new int[] {3,3,3,3}    , 21, R.raw.json_skew_3, R.raw.skew_3, R.drawable.skew_3s, R.drawable.skew_3m, R.drawable.skew_3b, R.drawable.skew_3h),
56
  IVY_2  ( new int[] {2,2,2,2}    ,  8, R.raw.json_ivy_2 , R.raw.ivy_2 , R.drawable.ivy_2s , R.drawable.ivy_2m , R.drawable.ivy_2b , R.drawable.ivy_2h ),
57
  REX_3  ( new int[] {3,3,3,3}    , 19, R.raw.json_rex_3 , R.raw.rex_3 , R.drawable.rex_3s , R.drawable.rex_3m , R.drawable.rex_3b , R.drawable.rex_3h ),
58
  BAN1_3 ( new int[] {3,3,3}      , 16, R.raw.json_ban1_3, R.raw.ban1_3, R.drawable.ban1_3s, R.drawable.ban1_3m, R.drawable.ban1_3b, R.drawable.ban1_3h),
59
  BAN2_3 ( new int[] {3,3,3}      , 16, R.raw.json_ban2_3, R.raw.ban2_3, R.drawable.ban2_3s, R.drawable.ban2_3m, R.drawable.ban2_3b, R.drawable.ban2_3h),
60
  BAN3_3 ( new int[] {3,3,3}      , 16, R.raw.json_ban3_3, R.raw.ban3_3, R.drawable.ban3_3s, R.drawable.ban3_3m, R.drawable.ban3_3b, R.drawable.ban3_3h),
61
  BAN4_3 ( new int[] {3,3,3}      , 16, R.raw.json_ban4_3, R.raw.ban4_3, R.drawable.ban4_3s, R.drawable.ban4_3m, R.drawable.ban4_3b, R.drawable.ban4_3h),
62
  SQU1_3 ( new int[] {3,2,3}      , 24, R.raw.json_squ1_3, R.raw.squ1_3, R.drawable.squ1_3s, R.drawable.squ1_3m, R.drawable.squ1_3b, R.drawable.squ1_3h),
63
  SQU2_3 ( new int[] {3,2,3}      , 24, R.raw.json_squ2_3, R.raw.squ2_3, R.drawable.squ2_3s, R.drawable.squ2_3m, R.drawable.squ2_3b, R.drawable.squ2_3h),
64
  MIRR_2 ( new int[] {2,2,2}      , 12, R.raw.json_mirr_2, R.raw.mirr_2, R.drawable.mirr_2s, R.drawable.mirr_2m, R.drawable.mirr_2b, R.drawable.mirr_2h),
65
  MIRR_3 ( new int[] {3,3,3}      , 17, R.raw.json_mirr_3, R.raw.mirr_3, R.drawable.mirr_3s, R.drawable.mirr_3m, R.drawable.mirr_3b, R.drawable.mirr_3h),
66
  CU_323 ( new int[] {3,2,3}      , 15, R.raw.json_cu_323, R.raw.cu_323, R.drawable.cu_323s, R.drawable.cu_323m, R.drawable.cu_323b, R.drawable.cu_323h),
67
  CU_232 ( new int[] {2,3,2}      , 16, R.raw.json_cu_232, R.raw.cu_232, R.drawable.cu_232s, R.drawable.cu_232m, R.drawable.cu_232b, R.drawable.cu_232h),
68
  CU_343 ( new int[] {3,4,3}      , 23, R.raw.json_cu_343, R.raw.cu_343, R.drawable.cu_343s, R.drawable.cu_343m, R.drawable.cu_343b, R.drawable.cu_343h),
69
  HELI_3 ( new int[] {3,3,3,3,3,3}, 20, R.raw.json_heli_3, R.raw.heli_3, R.drawable.heli_3s, R.drawable.heli_3m, R.drawable.heli_3b, R.drawable.heli_3h),
34
  CUBE_2 ( new int[] {2,2,2}      , 12, R.drawable.cube_2s, R.drawable.cube_2m, R.drawable.cube_2b, R.drawable.cube_2h),
35
  CUBE_3 ( new int[] {3,3,3}      , 17, R.drawable.cube_3s, R.drawable.cube_3m, R.drawable.cube_3b, R.drawable.cube_3h),
36
  CUBE_4 ( new int[] {4,4,4}      , 24, R.drawable.cube_4s, R.drawable.cube_4m, R.drawable.cube_4b, R.drawable.cube_4h),
37
  CUBE_5 ( new int[] {5,5,5}      , 28, R.drawable.cube_5s, R.drawable.cube_5m, R.drawable.cube_5b, R.drawable.cube_5h),
38
  CUBE_6 ( new int[] {6,6,6}      , 35, R.drawable.cube_6s, R.drawable.cube_6m, R.drawable.cube_6b, R.drawable.cube_6h),
39
  DIAM_2 ( new int[] {2,2,2,2}    , 12, R.drawable.diam_2s, R.drawable.diam_2m, R.drawable.diam_2b, R.drawable.diam_2h),
40
  DIAM_3 ( new int[] {3,3,3,3}    , 24, R.drawable.diam_3s, R.drawable.diam_3m, R.drawable.diam_3b, R.drawable.diam_3h),
41
  DIAM_4 ( new int[] {4,4,4,4}    , 32, R.drawable.diam_4s, R.drawable.diam_4m, R.drawable.diam_4b, R.drawable.diam_4h),
42
  JING_2 ( new int[] {2,2,2,2}    , 11, R.drawable.jing_2s, R.drawable.jing_2m, R.drawable.jing_2b, R.drawable.jing_2h),
43
  PYRA_3 ( new int[] {3,3,3,3}    , 10, R.drawable.pyra_3s, R.drawable.pyra_3m, R.drawable.pyra_3b, R.drawable.pyra_3h),
44
  PYRA_4 ( new int[] {4,4,4,4}    , 17, R.drawable.pyra_4s, R.drawable.pyra_4m, R.drawable.pyra_4b, R.drawable.pyra_4h),
45
  PYRA_5 ( new int[] {5,5,5,5}    , 23, R.drawable.pyra_5s, R.drawable.pyra_5m, R.drawable.pyra_5b, R.drawable.pyra_5h),
46
  KILO_3 ( new int[] {3,3,3,3,3,3}, 18, R.drawable.kilo_3s, R.drawable.kilo_3m, R.drawable.kilo_3b, R.drawable.kilo_3h),
47
  KILO_5 ( new int[] {5,5,5,5,5,5}, 33, R.drawable.kilo_5s, R.drawable.kilo_5m, R.drawable.kilo_5b, R.drawable.kilo_5h),
48
  MEGA_3 ( new int[] {3,3,3,3,3,3}, 21, R.drawable.mega_3s, R.drawable.mega_3m, R.drawable.mega_3b, R.drawable.mega_3h),
49
  MEGA_5 ( new int[] {5,5,5,5,5,5}, 37, R.drawable.mega_5s, R.drawable.mega_5m, R.drawable.mega_5b, R.drawable.mega_5h),
50
  ULTI_2 ( new int[] {2,2,2,2}    , 18, R.drawable.ulti_2s, R.drawable.ulti_2m, R.drawable.ulti_2b, R.drawable.ulti_2h),
51
  DINO_3 ( new int[] {3,3,3,3}    , 10, R.drawable.dino_3s, R.drawable.dino_3m, R.drawable.dino_3b, R.drawable.dino_3h),
52
  DIN4_3 ( new int[] {3,3,3,3}    ,  7, R.drawable.din4_3s, R.drawable.din4_3m, R.drawable.din4_3b, R.drawable.din4_3h),
53
  REDI_3 ( new int[] {3,3,3,3}    , 16, R.drawable.redi_3s, R.drawable.redi_3m, R.drawable.redi_3b, R.drawable.redi_3h),
54
  SKEW_2 ( new int[] {2,2,2,2}    , 11, R.drawable.skew_2s, R.drawable.skew_2m, R.drawable.skew_2b, R.drawable.skew_2h),
55
  SKEW_3 ( new int[] {3,3,3,3}    , 21, R.drawable.skew_3s, R.drawable.skew_3m, R.drawable.skew_3b, R.drawable.skew_3h),
56
  IVY_2  ( new int[] {2,2,2,2}    ,  8, R.drawable.ivy_2s , R.drawable.ivy_2m , R.drawable.ivy_2b , R.drawable.ivy_2h ),
57
  REX_3  ( new int[] {3,3,3,3}    , 19, R.drawable.rex_3s , R.drawable.rex_3m , R.drawable.rex_3b , R.drawable.rex_3h ),
58
  BAN1_3 ( new int[] {3,3,3}      , 16, R.drawable.ban1_3s, R.drawable.ban1_3m, R.drawable.ban1_3b, R.drawable.ban1_3h),
59
  BAN2_3 ( new int[] {3,3,3}      , 16, R.drawable.ban2_3s, R.drawable.ban2_3m, R.drawable.ban2_3b, R.drawable.ban2_3h),
60
  BAN3_3 ( new int[] {3,3,3}      , 16, R.drawable.ban3_3s, R.drawable.ban3_3m, R.drawable.ban3_3b, R.drawable.ban3_3h),
61
  BAN4_3 ( new int[] {3,3,3}      , 16, R.drawable.ban4_3s, R.drawable.ban4_3m, R.drawable.ban4_3b, R.drawable.ban4_3h),
62
  SQU1_3 ( new int[] {3,2,3}      , 24, R.drawable.squ1_3s, R.drawable.squ1_3m, R.drawable.squ1_3b, R.drawable.squ1_3h),
63
  SQU2_3 ( new int[] {3,2,3}      , 24, R.drawable.squ2_3s, R.drawable.squ2_3m, R.drawable.squ2_3b, R.drawable.squ2_3h),
64
  MIRR_2 ( new int[] {2,2,2}      , 12, R.drawable.mirr_2s, R.drawable.mirr_2m, R.drawable.mirr_2b, R.drawable.mirr_2h),
65
  MIRR_3 ( new int[] {3,3,3}      , 17, R.drawable.mirr_3s, R.drawable.mirr_3m, R.drawable.mirr_3b, R.drawable.mirr_3h),
66
  CU_323 ( new int[] {3,2,3}      , 15, R.drawable.cu_323s, R.drawable.cu_323m, R.drawable.cu_323b, R.drawable.cu_323h),
67
  CU_232 ( new int[] {2,3,2}      , 16, R.drawable.cu_232s, R.drawable.cu_232m, R.drawable.cu_232b, R.drawable.cu_232h),
68
  CU_343 ( new int[] {3,4,3}      , 23, R.drawable.cu_343s, R.drawable.cu_343m, R.drawable.cu_343b, R.drawable.cu_343h),
69
  HELI_3 ( new int[] {3,3,3,3,3,3}, 20, R.drawable.heli_3s, R.drawable.heli_3m, R.drawable.heli_3b, R.drawable.heli_3h),
70 70
  ;
71 71

  
72 72
  public static final int NUM_OBJECTS = values().length;
73
  private static final ObjectType[] objects;
73 74

  
74 75
  private final int[] mNumLayers;
75 76
  private final int mNumScrambles;
76 77
  private final int mSmallIcon, mMediumIcon, mBigIcon, mHugeIcon;
77
  private final int mMeshID, mJsonID;
78

  
79
  private static final ObjectType[] objects;
80 78

  
81 79
  static
82 80
    {
......
106 104

  
107 105
///////////////////////////////////////////////////////////////////////////////////////////////////
108 106

  
109
  ObjectType(int[] numLayers, int scrambles, int jsonID, int meshID, int sIcon, int mIcon, int bIcon, int hIcon)
107
  ObjectType(int[] numLayers, int scrambles, int sIcon, int mIcon, int bIcon, int hIcon)
110 108
    {
111 109
    mNumLayers   = numLayers;
112 110
    mNumScrambles= scrambles;
113
    mJsonID      = jsonID;
114
    mMeshID      = meshID;
115 111
    mSmallIcon   = sIcon;
116 112
    mMediumIcon  = mIcon;
117 113
    mBigIcon     = bIcon;
118 114
    mHugeIcon    = hIcon;
119 115
    }
120 116

  
121
///////////////////////////////////////////////////////////////////////////////////////////////////
122

  
123
  public int getNumScramble()
124
    {
125
    return mNumScrambles;
126
    }
127

  
128 117
///////////////////////////////////////////////////////////////////////////////////////////////////
129 118

  
130 119
  public int getIconID(int size)
......
142 131

  
143 132
///////////////////////////////////////////////////////////////////////////////////////////////////
144 133

  
145
  public int getMeshID()
146
    {
147
    return mMeshID;
148
    }
149

  
150
///////////////////////////////////////////////////////////////////////////////////////////////////
151

  
152
  public int getJsonID()
134
  public int getNumScramble()
153 135
    {
154
    return mJsonID;
136
    return mNumScrambles;
155 137
    }
156 138

  
157 139
///////////////////////////////////////////////////////////////////////////////////////////////////
158 140

  
159
  public TwistyObject create(Static4D quat, Static3D move, InputStream stream)
141
  public static TwistyObject create(int ordinal, Static4D quat, Static3D move, InputStream meshStream)
160 142
    {
161
    int ord = ordinal();
162
    int[] numL= objects[ord].mNumLayers;
143
    int[] numL= objects[ordinal].mNumLayers;
163 144

  
164
    switch(ord)
145
    switch(ordinal)
165 146
      {
166 147
      case  0:
167 148
      case  1:
168 149
      case  2:
169 150
      case  3:
170
      case  4: return new TwistyCuboid        (numL, quat, move, stream);
151
      case  4: return new TwistyCuboid        (numL, quat, move, meshStream);
171 152
      case  5:
172 153
      case  6:
173
      case  7: return new TwistyDiamond       (numL, quat, move, stream);
174
      case  8: return new TwistyJing          (numL, quat, move, stream);
154
      case  7: return new TwistyDiamond       (numL, quat, move, meshStream);
155
      case  8: return new TwistyJing          (numL, quat, move, meshStream);
175 156
      case  9:
176 157
      case 10:
177
      case 11: return new TwistyPyraminx      (numL, quat, move, stream);
158
      case 11: return new TwistyPyraminx      (numL, quat, move, meshStream);
178 159
      case 12:
179
      case 13: return new TwistyKilominx      (numL, quat, move, stream);
160
      case 13: return new TwistyKilominx      (numL, quat, move, meshStream);
180 161
      case 14:
181
      case 15: return new TwistyMegaminx      (numL, quat, move, stream);
182
      case 16: return new TwistyUltimate      (numL, quat, move, stream);
183
      case 17: return new TwistyDino6         (numL, quat, move, stream);
184
      case 18: return new TwistyDino4         (numL, quat, move, stream);
185
      case 19: return new TwistyRedi          (numL, quat, move, stream);
162
      case 15: return new TwistyMegaminx      (numL, quat, move, meshStream);
163
      case 16: return new TwistyUltimate      (numL, quat, move, meshStream);
164
      case 17: return new TwistyDino6         (numL, quat, move, meshStream);
165
      case 18: return new TwistyDino4         (numL, quat, move, meshStream);
166
      case 19: return new TwistyRedi          (numL, quat, move, meshStream);
186 167
      case 20:
187
      case 21: return new TwistySkewb         (numL, quat, move, stream);
188
      case 22: return new TwistyIvy           (numL, quat, move, stream);
189
      case 23: return new TwistyRex           (numL, quat, move, stream);
190
      case 24: return new TwistyBandagedFused (numL, quat, move, stream);
191
      case 25: return new TwistyBandaged2Bar  (numL, quat, move, stream);
192
      case 26: return new TwistyBandaged3Plate(numL, quat, move, stream);
193
      case 27: return new TwistyBandagedEvil  (numL, quat, move, stream);
194
      case 28: return new TwistySquare1       (numL, quat, move, stream);
195
      case 29: return new TwistySquare2       (numL, quat, move, stream);
168
      case 21: return new TwistySkewb         (numL, quat, move, meshStream);
169
      case 22: return new TwistyIvy           (numL, quat, move, meshStream);
170
      case 23: return new TwistyRex           (numL, quat, move, meshStream);
171
      case 24: return new TwistyBandagedFused (numL, quat, move, meshStream);
172
      case 25: return new TwistyBandaged2Bar  (numL, quat, move, meshStream);
173
      case 26: return new TwistyBandaged3Plate(numL, quat, move, meshStream);
174
      case 27: return new TwistyBandagedEvil  (numL, quat, move, meshStream);
175
      case 28: return new TwistySquare1       (numL, quat, move, meshStream);
176
      case 29: return new TwistySquare2       (numL, quat, move, meshStream);
196 177
      case 30:
197
      case 31: return new TwistyMirror        (numL, quat, move, stream);
178
      case 31: return new TwistyMirror        (numL, quat, move, meshStream);
198 179
      case 32:
199 180
      case 33:
200
      case 34: return new TwistyCuboid        (numL, quat, move, stream);
201
      case 35: return new TwistyHelicopter    (numL, quat, move, stream);
181
      case 34: return new TwistyCuboid        (numL, quat, move, meshStream);
182
      case 35: return new TwistyHelicopter    (numL, quat, move, meshStream);
202 183
      }
203 184

  
204 185
    return null;
src/main/java/org/distorted/objectlib/main/TwistyJson.java
266 266
    return mReader.getColor(face);
267 267
    }
268 268

  
269
///////////////////////////////////////////////////////////////////////////////////////////////////
270

  
271
  public String getShortName()
272
    {
273
    return mReader.getShortName();
274
    }
275

  
269 276
///////////////////////////////////////////////////////////////////////////////////////////////////
270 277

  
271 278
  public int getFOV()
src/main/java/org/distorted/objectlib/main/TwistyObject.java
146 146

  
147 147
  TwistyObject(InputStream jsonStream, Static4D quat, Static3D move, InputStream meshStream)
148 148
    {
149
    JsonReader reader = JsonReader.getInstance();
149
    JsonReader reader = new JsonReader();
150 150
    reader.parseJsonFile(jsonStream);
151 151
    setReader(reader);
152 152

  
......
1335 1335
    return mMovement;
1336 1336
    }
1337 1337

  
1338
///////////////////////////////////////////////////////////////////////////////////////////////////
1339

  
1340
  public String getShortName()
1341
    {
1342
    return getObjectType().name();
1343
    }
1344

  
1338 1345
///////////////////////////////////////////////////////////////////////////////////////////////////
1339 1346

  
1340 1347
  protected void setReader(JsonReader reader)

Also available in: Unified diff