Project

General

Profile

Download (13.6 KB) Statistics
| Branch: | Revision:

distorted-objectlib / src / main / java / org / distorted / objectlib / main / TwistyJson.java @ deaf067b

1 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6 4c87f159 Leszek Koltunski
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10
package org.distorted.objectlib.main;
11
12
import org.distorted.library.type.Static3D;
13
import org.distorted.library.type.Static4D;
14 3ee1d662 Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectFaceShape;
15 82eb152a Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectShape;
16 1d581993 Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectSignature;
17 82eb152a Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectSticker;
18 3a0a23bf Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectStickerOverride;
19 84a17011 Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectVertexEffects;
20 82eb152a Leszek Koltunski
import org.distorted.objectlib.json.JsonReader;
21 b63235a0 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeDiamond;
22 b31249d6 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeDodecahedron;
23
import org.distorted.objectlib.shape.ShapeHexahedron;
24 b63235a0 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeIcosahedron;
25 b31249d6 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeOctahedron;
26
import org.distorted.objectlib.shape.ShapeTetrahedron;
27 b63235a0 Leszek Koltunski
import org.distorted.objectlib.touchcontrol.TouchControlBall;
28 40e77224 Leszek Koltunski
import org.distorted.objectlib.touchcontrol.TouchControlDodecahedron;
29
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
30 b63235a0 Leszek Koltunski
import org.distorted.objectlib.touchcontrol.TouchControlIcosahedron;
31 40e77224 Leszek Koltunski
import org.distorted.objectlib.touchcontrol.TouchControlOctahedron;
32
import org.distorted.objectlib.touchcontrol.TouchControlTetrahedron;
33 82eb152a Leszek Koltunski
34
///////////////////////////////////////////////////////////////////////////////////////////////////
35
36
public class TwistyJson extends TwistyObject
37
{
38
  private JsonReader mReader;
39
40
///////////////////////////////////////////////////////////////////////////////////////////////////
41
42 cf93ea4e Leszek Koltunski
  public TwistyJson(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitAssets assets)
43 82eb152a Leszek Koltunski
    {
44 cf93ea4e Leszek Koltunski
    super(meshState, iconMode, quat, move, scale, assets);
45 82eb152a Leszek Koltunski
    }
46
47 7aae846c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
48
49
  @Override
50
  public int getCubitRotationType(int cubitIndex)
51
    {
52
    return mReader.getCubitTypes()[cubitIndex];
53
    }
54
55
///////////////////////////////////////////////////////////////////////////////////////////////////
56
57
  @Override
58
  public float[] getCubitRowOffset(int cubitIndex)
59
    {
60
    return mReader.getCubitOffsets()[cubitIndex];
61
    }
62
63 40e77224 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
64
65
  @Override
66
  public int[][] getVariantFaceIsOuter()
67
    {
68
    return mReader.getVariantFaceIsOuter();
69
    }
70
71 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
72
73 ed0988c0 Leszek Koltunski
  @Override
74
  public int[][] getSolvedQuats()
75 82eb152a Leszek Koltunski
    {
76 ed0988c0 Leszek Koltunski
    return mReader.getSolvedQuats();
77 82eb152a Leszek Koltunski
    }
78
79
///////////////////////////////////////////////////////////////////////////////////////////////////
80
81 ed0988c0 Leszek Koltunski
  @Override
82
  public Static4D[] getQuats()
83 82eb152a Leszek Koltunski
    {
84 ed0988c0 Leszek Koltunski
    return mReader.getQuats();
85 82eb152a Leszek Koltunski
    }
86
87
///////////////////////////////////////////////////////////////////////////////////////////////////
88
89 ed0988c0 Leszek Koltunski
  @Override
90
  public int getSolvedFunctionIndex()
91 82eb152a Leszek Koltunski
    {
92 ed0988c0 Leszek Koltunski
    return mReader.getSolvedFunctionIndex();
93 82eb152a Leszek Koltunski
    }
94
95
///////////////////////////////////////////////////////////////////////////////////////////////////
96
97 ed0988c0 Leszek Koltunski
  @Override
98
  public int getNumCubitFaces()
99 82eb152a Leszek Koltunski
    {
100 ed0988c0 Leszek Koltunski
    return mReader.getNumCubitFaces();
101 82eb152a Leszek Koltunski
    }
102
103
///////////////////////////////////////////////////////////////////////////////////////////////////
104
105 ed0988c0 Leszek Koltunski
  @Override
106 51262d81 Leszek Koltunski
  public int getVariantStickerShape(int variant, int face)
107 82eb152a Leszek Koltunski
    {
108 51262d81 Leszek Koltunski
    return mReader.getVariantStickerShape(variant,face);
109 ed0988c0 Leszek Koltunski
    }
110
111
///////////////////////////////////////////////////////////////////////////////////////////////////
112
113
  @Override
114
  public int getCubitFaceMap(int cubit, int face)
115
    {
116
    return mReader.getCubitFaceFace(cubit,face);
117
    }
118
119 6db8fe2e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
120
121
  @Override
122
  public float getPillowCoeff()
123
    {
124
    return mReader.getPillowCoeff();
125
    }
126
127 ed0988c0 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
128
129
  @Override
130
  public int getNumStickerTypes()
131
    {
132
    return mReader.getNumStickerTypes();
133
    }
134
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136
137
  @Override
138
  public ObjectSticker retSticker(int sticker)
139
    {
140
    return mReader.retSticker(sticker);
141
    }
142
143 3a0a23bf Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
144
145
  @Override
146
  public ObjectStickerOverride[] getStickerOverrides()
147
    {
148
    return mReader.getStickerOverrides();
149
    }
150
151 ed0988c0 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
152
153
  @Override
154
  public int getScrambleType()
155
    {
156
    return mReader.getScrambleType();
157
    }
158
159 9ba7f3f6 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
160
161
  @Override
162
  public int[][] getScrambleAlgorithms()
163
    {
164
    return mReader.getScrambleAlgorithms();
165
    }
166
167 ed0988c0 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
168
169
  @Override
170
  public boolean shouldResetTextureMaps()
171
    {
172
    return mReader.shouldResetTextureMaps();
173
    }
174
175 253e440f Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
176
177
  @Override
178
  public int getInternalColor()
179
    {
180
    return mReader.getInternalColor();
181
    }
182
183 deaf067b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
184
185
  @Override
186
  public float[][] returnRotationFactor()
187
    {
188
    return mReader.returnRotationFactor();
189
    }
190
191 ed0988c0 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
192
193
  public void setReader(JsonReader reader)
194
    {
195
    mReader = reader;
196
    }
197
198
///////////////////////////////////////////////////////////////////////////////////////////////////
199
200 9ba7f3f6 Leszek Koltunski
  public int[][] getScrambleEdges()
201 ed0988c0 Leszek Koltunski
    {
202 9ba7f3f6 Leszek Koltunski
    return mReader.getScrambleEdges();
203 82eb152a Leszek Koltunski
    }
204
205
///////////////////////////////////////////////////////////////////////////////////////////////////
206
207
  public float[][] getCuts(int[] numLayers)
208
    {
209
    return mReader.getCuts();
210
    }
211
212
///////////////////////////////////////////////////////////////////////////////////////////////////
213
214
  public boolean[][] getLayerRotatable(int[] numLayers)
215
    {
216
    return mReader.getLayerRotatable();
217
    }
218
219
///////////////////////////////////////////////////////////////////////////////////////////////////
220
221 11fa413d Leszek Koltunski
  public int getTouchControlType()
222 82eb152a Leszek Koltunski
    {
223
    return mReader.getMovementType();
224
    }
225
226
///////////////////////////////////////////////////////////////////////////////////////////////////
227
228 11fa413d Leszek Koltunski
  public int getTouchControlSplit()
229 82eb152a Leszek Koltunski
    {
230
    return mReader.getMovementSplit();
231
    }
232
233
///////////////////////////////////////////////////////////////////////////////////////////////////
234
235
  public int[][][] getEnabled()
236
    {
237
    return mReader.getEnabled();
238
    }
239
240
///////////////////////////////////////////////////////////////////////////////////////////////////
241
242
  public float[] getDist3D(int[] numLayers)
243
    {
244
    return mReader.getDist3D();
245
    }
246
247 4c9ca251 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
248
249
  public Static3D[] getFaceAxis()
250
    {
251 40e77224 Leszek Koltunski
    int numFaces = mReader.getNumFaces();
252
253
    switch(numFaces)
254
      {
255
      case  4: return TouchControlTetrahedron.FACE_AXIS;
256
      case  6: return TouchControlHexahedron.FACE_AXIS;
257
      case  8: return TouchControlOctahedron.FACE_AXIS;
258
      case 12: return TouchControlDodecahedron.FACE_AXIS;
259 b63235a0 Leszek Koltunski
      case 16: return TouchControlBall.FACE_AXIS;
260
      case 20: return TouchControlIcosahedron.FACE_AXIS;
261 40e77224 Leszek Koltunski
      }
262
263
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
264 4c9ca251 Leszek Koltunski
    return null;
265
    }
266
267 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
268
269
  public float[][] getCubitPositions(int[] numLayers)
270
    {
271
    return mReader.getCubitPositions();
272
    }
273
274
///////////////////////////////////////////////////////////////////////////////////////////////////
275
276
  public ObjectShape getObjectShape(int variant)
277
    {
278
    return mReader.getObjectShape(variant);
279
    }
280
281 3ee1d662 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
282
283
  public ObjectFaceShape getObjectFaceShape(int variant)
284
    {
285
    return mReader.getObjectFaceShape(variant);
286
    }
287
288 84a17011 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
289
290
  public ObjectVertexEffects getVertexEffects(int variant)
291
    {
292
    return mReader.getVertexEffects(variant);
293
    }
294
295 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
296
297 d0e6cf7f Leszek Koltunski
  public Static4D getCubitQuats(int cubit, int[] numLayers)
298 82eb152a Leszek Koltunski
    {
299 d0e6cf7f Leszek Koltunski
    return mReader.getCubitQuats(cubit);
300 82eb152a Leszek Koltunski
    }
301
302
///////////////////////////////////////////////////////////////////////////////////////////////////
303
304
  public int getNumCubitVariants(int[] numLayers)
305
    {
306
    return mReader.getNumCubitVariants();
307
    }
308
309
///////////////////////////////////////////////////////////////////////////////////////////////////
310
311
  public int getCubitVariant(int cubit, int[] numLayers)
312
    {
313
    return mReader.getCubitVariant(cubit);
314
    }
315
316 d53fb890 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
317
// fake, this will never be called
318
319
  public float getStickerStroke()
320
    {
321
    return 0.0f;
322
    }
323
324
///////////////////////////////////////////////////////////////////////////////////////////////////
325
// fake, this will never be called
326
327
  public float getStickerRadius()
328
    {
329
    return 0.0f;
330
    }
331
332
///////////////////////////////////////////////////////////////////////////////////////////////////
333
// fake, this will never be called
334
335
  public float[][] getStickerAngles()
336
    {
337
    return null;
338
    }
339
340 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
341
// PUBLIC API
342
343
  public Static3D[] getRotationAxis()
344
    {
345
    return mReader.getRotationAxis();
346
    }
347
348
///////////////////////////////////////////////////////////////////////////////////////////////////
349
350 beee90ab Leszek Koltunski
  public int[][] getBasicAngles()
351 82eb152a Leszek Koltunski
    {
352
    return mReader.getBasicAngle();
353
    }
354
355
///////////////////////////////////////////////////////////////////////////////////////////////////
356
357 5f54927b Leszek Koltunski
  public int getNumScramble()
358 82eb152a Leszek Koltunski
    {
359 5f54927b Leszek Koltunski
    return mReader.getNumScrambles();
360
    }
361
362
///////////////////////////////////////////////////////////////////////////////////////////////////
363
364 1d581993 Leszek Koltunski
  public ObjectSignature getSignature()
365 5f54927b Leszek Koltunski
    {
366
    return mReader.getSignature();
367 82eb152a Leszek Koltunski
    }
368
369
///////////////////////////////////////////////////////////////////////////////////////////////////
370
371
  public String getObjectName()
372
    {
373
    return mReader.getObjectName();
374
    }
375
376
///////////////////////////////////////////////////////////////////////////////////////////////////
377
378
  public String getInventor()
379
    {
380
    return mReader.getInventor();
381
    }
382
383
///////////////////////////////////////////////////////////////////////////////////////////////////
384
385
  public int getYearOfInvention()
386
    {
387
    return mReader.getYearOfInvention();
388
    }
389
390
///////////////////////////////////////////////////////////////////////////////////////////////////
391
392
  public int getComplexity()
393
    {
394
    return mReader.getComplexity();
395
    }
396
397
///////////////////////////////////////////////////////////////////////////////////////////////////
398
399
  public int getNumFaces()
400
    {
401
    return mReader.getNumFaces();
402
    }
403
404
///////////////////////////////////////////////////////////////////////////////////////////////////
405
406
  public int getNumFaceColors()
407
    {
408
    return mReader.getNumFaceColors();
409
    }
410
411
///////////////////////////////////////////////////////////////////////////////////////////////////
412
413
  public int getColor(int face)
414
    {
415
    return mReader.getColor(face);
416
    }
417
418 e1a86bf2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
419
420
  public String getShortName()
421
    {
422
    return mReader.getShortName();
423
    }
424
425 052e0362 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
426
427
  public String[][] getTutorials()
428
    {
429
    return mReader.getTutorials();
430
    }
431
432 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
433
434
  public int getFOV()
435
    {
436
    switch( mReader.getNumFaces() )
437
      {
438 386af988 Leszek Koltunski
      case  4: return ShapeTetrahedron.FOV;
439
      case  6: return ShapeHexahedron.FOV;
440
      case  8: return ShapeOctahedron.FOV;
441
      case 12: return ShapeDodecahedron.FOV;
442 b63235a0 Leszek Koltunski
      case 16: return ShapeDiamond.FOV;
443
      case 20: return ShapeIcosahedron.FOV;
444 82eb152a Leszek Koltunski
      }
445
446
    return 0;
447
    }
448
449
///////////////////////////////////////////////////////////////////////////////////////////////////
450
451
  public float getScreenRatio()
452
    {
453
    switch( mReader.getNumFaces() )
454
      {
455 386af988 Leszek Koltunski
      case  4: return ShapeTetrahedron.RATIO;
456
      case  6: return ShapeHexahedron.RATIO;
457
      case  8: return ShapeOctahedron.RATIO;
458
      case 12: return ShapeDodecahedron.RATIO;
459 b63235a0 Leszek Koltunski
      case 16: return ShapeDiamond.RATIO;
460
      case 20: return ShapeIcosahedron.RATIO;
461 82eb152a Leszek Koltunski
      }
462
463
    return 0.0f;
464
    }
465
}