Project

General

Profile

« Previous | Next » 

Revision 7aae846c

Added by Leszek Koltunski about 2 years ago

Crazy Planets: introduce cubit type and offset to the JSON; create (shared) mesh and all the JSONs.

View differences:

src/main/java/org/distorted/objectlib/json/JsonReader.java
32 32

  
33 33
import org.distorted.objectlib.helpers.ObjectFaceShape;
34 34
import org.distorted.objectlib.helpers.ObjectSignature;
35
import org.distorted.objectlib.main.Cubit;
35 36
import org.distorted.objectlib.objects.TwistyBandagedCuboid;
36 37
import org.json.JSONArray;
37 38
import org.json.JSONException;
......
81 82
  private String mTutorialObject;
82 83
  private String[][] mTutorials;
83 84
  private ObjectSignature mSignature;
85
  private int[] mCubitType;
86
  private float[][] mCubitRowOffset;
84 87

  
85 88
  private static JsonReader mThis;
86 89

  
......
128 131

  
129 132
///////////////////////////////////////////////////////////////////////////////////////////////////
130 133

  
131
  private void parseMetadata2or3(JSONObject object) throws JSONException
134
  private void parseMetadata2or3or4(JSONObject object) throws JSONException
132 135
    {
133 136
    mLongName        = object.getString("longname");
134 137
    mShortName       = object.getString("shortname");
......
170 173
    mCubitVariant   = new int[numCubits];
171 174
    mPositions      = new float[numCubits][];
172 175
    mCubitFaceColor = new int[numCubits][];
176
    mCubitType      = new int[numCubits];
177
    mCubitRowOffset = new float[numCubits][];
173 178

  
174 179
    for(int i=0; i<numCubits; i++)
175 180
      {
......
192 197
      int numColor = jsonColor.length();
193 198
      mCubitFaceColor[i] = new int[numColor];
194 199
      for(int j=0; j<numColor; j++) mCubitFaceColor[i][j] = jsonColor.getInt(j);
200

  
201
      mCubitType[i] = (int)jsonCubit.optInt("type", Cubit.TYPE_NORMAL);
202
      float xoff = (float)jsonCubit.optDouble("offsetX", 0 );
203
      float yoff = (float)jsonCubit.optDouble("offsetY", 0 );
204
      float zoff = (float)jsonCubit.optDouble("offsetZ", 0 );
205
      mCubitRowOffset[i] = new float[] {xoff,yoff,zoff};
195 206
      }
196 207
    }
197 208

  
......
412 423

  
413 424
///////////////////////////////////////////////////////////////////////////////////////////////////
414 425

  
415
  private void parseAxis2or3(JSONArray object) throws JSONException
426
  private void parseAxis2or3or4(JSONArray object) throws JSONException
416 427
    {
417 428
    int numAxis = object.length();
418 429

  
......
611 622

  
612 623
///////////////////////////////////////////////////////////////////////////////////////////////////
613 624

  
614
  private void parseVersion2or3(JSONObject object) throws JSONException
625
  private void parseVersion2or3or4(JSONObject object) throws JSONException
615 626
    {
616 627
    JSONObject metadata    = object.getJSONObject("metadata");
617
    parseMetadata2or3(metadata);
628
    parseMetadata2or3or4(metadata);
618 629
    JSONObject mesh        = object.getJSONObject("mesh");
619 630
    parseMesh(mesh);
620 631
    JSONArray axis         = object.getJSONArray("axis");
621
    parseAxis2or3(axis);
632
    parseAxis2or3or4(axis);
622 633
    JSONArray quats        = object.getJSONArray("quats");
623 634
    parseQuats(quats);
624 635
    JSONObject scrambling  = object.getJSONObject("scrambling");
......
661 672

  
662 673
///////////////////////////////////////////////////////////////////////////////////////////////////
663 674

  
664
  private void parseVersion2or3Metadata(JSONObject object) throws JSONException
675
  private void parseVersion2or3or4Metadata(JSONObject object) throws JSONException
665 676
    {
666 677
    JSONObject metadata = object.getJSONObject("metadata");
667
    parseMetadata2or3(metadata);
678
    parseMetadata2or3or4(metadata);
668 679
    }
669 680

  
670 681
///////////////////////////////////////////////////////////////////////////////////////////////////
......
688 699
        {
689 700
        parseVersion1(object);
690 701
        }
691
      else if( major==2 || major==3 )
702
      else if( major==2 || major==3 || major==4 )
692 703
        {
693
        parseVersion2or3(object);
704
        parseVersion2or3or4(object);
694 705
        }
695 706
      else
696 707
        {
......
728 739
        {
729 740
        parseVersion1Metadata(object);
730 741
        }
731
      else if( major==2 || major==3 )
742
      else if( major==2 || major==3 || major==4 )
732 743
        {
733
        parseVersion2or3Metadata(object);
744
        parseVersion2or3or4Metadata(object);
734 745
        }
735 746
      else
736 747
        {
......
766 777
      stream.close();
767 778

  
768 779
      JSONObject object = new JSONObject(contents.toString());
769
      int major = object.getInt("major");
770

  
771
      if( major==1 || major==2 || major==3 )
772
        {
773
        JSONObject metadata = object.getJSONObject("metadata");
774
        return metadata.getInt("scrambles");
775
        }
776
      else
777
        {
778
        android.util.Log.e("readNumScrambles", "Unknown version "+major);
779
        }
780
      JSONObject metadata = object.getJSONObject("metadata");
781
      return metadata.getInt("scrambles");
780 782
      }
781 783
    catch(FileNotFoundException ex)
782 784
      {
......
964 966
    return colors.length>face ? colors[face] : -1;
965 967
    }
966 968

  
969
///////////////////////////////////////////////////////////////////////////////////////////////////
970

  
971
  public int[] getCubitTypes()
972
    {
973
    return mCubitType;
974
    }
975

  
976
///////////////////////////////////////////////////////////////////////////////////////////////////
977

  
978
  public float[][] getCubitOffsets()
979
    {
980
    return mCubitRowOffset;
981
    }
982

  
967 983
///////////////////////////////////////////////////////////////////////////////////////////////////
968 984

  
969 985
  public int getCubitFaceFace(int cubit, int face)

Also available in: Unified diff