Revision 7aae846c
Added by Leszek Koltunski about 2 years ago
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
Crazy Planets: introduce cubit type and offset to the JSON; create (shared) mesh and all the JSONs.