Project

General

Profile

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

distorted-objectlib / src / main / java / org / distorted / objectlib / main / TwistyJson.java @ 4f629c09

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 ed0988c0 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
184
185
  public void setReader(JsonReader reader)
186
    {
187
    mReader = reader;
188
    }
189
190
///////////////////////////////////////////////////////////////////////////////////////////////////
191
192 9ba7f3f6 Leszek Koltunski
  public int[][] getScrambleEdges()
193 ed0988c0 Leszek Koltunski
    {
194 9ba7f3f6 Leszek Koltunski
    return mReader.getScrambleEdges();
195 82eb152a Leszek Koltunski
    }
196
197
///////////////////////////////////////////////////////////////////////////////////////////////////
198
199
  public float[][] getCuts(int[] numLayers)
200
    {
201
    return mReader.getCuts();
202
    }
203
204
///////////////////////////////////////////////////////////////////////////////////////////////////
205
206
  public boolean[][] getLayerRotatable(int[] numLayers)
207
    {
208
    return mReader.getLayerRotatable();
209
    }
210
211
///////////////////////////////////////////////////////////////////////////////////////////////////
212
213 11fa413d Leszek Koltunski
  public int getTouchControlType()
214 82eb152a Leszek Koltunski
    {
215
    return mReader.getMovementType();
216
    }
217
218
///////////////////////////////////////////////////////////////////////////////////////////////////
219
220 11fa413d Leszek Koltunski
  public int getTouchControlSplit()
221 82eb152a Leszek Koltunski
    {
222
    return mReader.getMovementSplit();
223
    }
224
225
///////////////////////////////////////////////////////////////////////////////////////////////////
226
227
  public int[][][] getEnabled()
228
    {
229
    return mReader.getEnabled();
230
    }
231
232
///////////////////////////////////////////////////////////////////////////////////////////////////
233
234
  public float[] getDist3D(int[] numLayers)
235
    {
236
    return mReader.getDist3D();
237
    }
238
239 4c9ca251 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
240
241
  public Static3D[] getFaceAxis()
242
    {
243 40e77224 Leszek Koltunski
    int numFaces = mReader.getNumFaces();
244
245
    switch(numFaces)
246
      {
247
      case  4: return TouchControlTetrahedron.FACE_AXIS;
248
      case  6: return TouchControlHexahedron.FACE_AXIS;
249
      case  8: return TouchControlOctahedron.FACE_AXIS;
250
      case 12: return TouchControlDodecahedron.FACE_AXIS;
251 b63235a0 Leszek Koltunski
      case 16: return TouchControlBall.FACE_AXIS;
252
      case 20: return TouchControlIcosahedron.FACE_AXIS;
253 40e77224 Leszek Koltunski
      }
254
255
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
256 4c9ca251 Leszek Koltunski
    return null;
257
    }
258
259 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
260
261
  public float[][] getCubitPositions(int[] numLayers)
262
    {
263
    return mReader.getCubitPositions();
264
    }
265
266
///////////////////////////////////////////////////////////////////////////////////////////////////
267
268
  public ObjectShape getObjectShape(int variant)
269
    {
270
    return mReader.getObjectShape(variant);
271
    }
272
273 3ee1d662 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
274
275
  public ObjectFaceShape getObjectFaceShape(int variant)
276
    {
277
    return mReader.getObjectFaceShape(variant);
278
    }
279
280 84a17011 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
281
282
  public ObjectVertexEffects getVertexEffects(int variant)
283
    {
284
    return mReader.getVertexEffects(variant);
285
    }
286
287 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
288
289 d0e6cf7f Leszek Koltunski
  public Static4D getCubitQuats(int cubit, int[] numLayers)
290 82eb152a Leszek Koltunski
    {
291 d0e6cf7f Leszek Koltunski
    return mReader.getCubitQuats(cubit);
292 82eb152a Leszek Koltunski
    }
293
294
///////////////////////////////////////////////////////////////////////////////////////////////////
295
296
  public int getNumCubitVariants(int[] numLayers)
297
    {
298
    return mReader.getNumCubitVariants();
299
    }
300
301
///////////////////////////////////////////////////////////////////////////////////////////////////
302
303
  public int getCubitVariant(int cubit, int[] numLayers)
304
    {
305
    return mReader.getCubitVariant(cubit);
306
    }
307
308 d53fb890 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
309
// fake, this will never be called
310
311
  public float getStickerStroke()
312
    {
313
    return 0.0f;
314
    }
315
316
///////////////////////////////////////////////////////////////////////////////////////////////////
317
// fake, this will never be called
318
319
  public float getStickerRadius()
320
    {
321
    return 0.0f;
322
    }
323
324
///////////////////////////////////////////////////////////////////////////////////////////////////
325
// fake, this will never be called
326
327
  public float[][] getStickerAngles()
328
    {
329
    return null;
330
    }
331
332 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
333
// PUBLIC API
334
335
  public Static3D[] getRotationAxis()
336
    {
337
    return mReader.getRotationAxis();
338
    }
339
340
///////////////////////////////////////////////////////////////////////////////////////////////////
341
342 beee90ab Leszek Koltunski
  public int[][] getBasicAngles()
343 82eb152a Leszek Koltunski
    {
344
    return mReader.getBasicAngle();
345
    }
346
347
///////////////////////////////////////////////////////////////////////////////////////////////////
348
349 5f54927b Leszek Koltunski
  public int getNumScramble()
350 82eb152a Leszek Koltunski
    {
351 5f54927b Leszek Koltunski
    return mReader.getNumScrambles();
352
    }
353
354
///////////////////////////////////////////////////////////////////////////////////////////////////
355
356 1d581993 Leszek Koltunski
  public ObjectSignature getSignature()
357 5f54927b Leszek Koltunski
    {
358
    return mReader.getSignature();
359 82eb152a Leszek Koltunski
    }
360
361
///////////////////////////////////////////////////////////////////////////////////////////////////
362
363
  public String getObjectName()
364
    {
365
    return mReader.getObjectName();
366
    }
367
368
///////////////////////////////////////////////////////////////////////////////////////////////////
369
370
  public String getInventor()
371
    {
372
    return mReader.getInventor();
373
    }
374
375
///////////////////////////////////////////////////////////////////////////////////////////////////
376
377
  public int getYearOfInvention()
378
    {
379
    return mReader.getYearOfInvention();
380
    }
381
382
///////////////////////////////////////////////////////////////////////////////////////////////////
383
384
  public int getComplexity()
385
    {
386
    return mReader.getComplexity();
387
    }
388
389
///////////////////////////////////////////////////////////////////////////////////////////////////
390
391
  public int getNumFaces()
392
    {
393
    return mReader.getNumFaces();
394
    }
395
396
///////////////////////////////////////////////////////////////////////////////////////////////////
397
398
  public int getNumFaceColors()
399
    {
400
    return mReader.getNumFaceColors();
401
    }
402
403
///////////////////////////////////////////////////////////////////////////////////////////////////
404
405
  public int getColor(int face)
406
    {
407
    return mReader.getColor(face);
408
    }
409
410 e1a86bf2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
411
412
  public String getShortName()
413
    {
414
    return mReader.getShortName();
415
    }
416
417 052e0362 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
418
419
  public String[][] getTutorials()
420
    {
421
    return mReader.getTutorials();
422
    }
423
424 82eb152a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
425
426
  public int getFOV()
427
    {
428
    switch( mReader.getNumFaces() )
429
      {
430 386af988 Leszek Koltunski
      case  4: return ShapeTetrahedron.FOV;
431
      case  6: return ShapeHexahedron.FOV;
432
      case  8: return ShapeOctahedron.FOV;
433
      case 12: return ShapeDodecahedron.FOV;
434 b63235a0 Leszek Koltunski
      case 16: return ShapeDiamond.FOV;
435
      case 20: return ShapeIcosahedron.FOV;
436 82eb152a Leszek Koltunski
      }
437
438
    return 0;
439
    }
440
441
///////////////////////////////////////////////////////////////////////////////////////////////////
442
443
  public float getScreenRatio()
444
    {
445
    switch( mReader.getNumFaces() )
446
      {
447 386af988 Leszek Koltunski
      case  4: return ShapeTetrahedron.RATIO;
448
      case  6: return ShapeHexahedron.RATIO;
449
      case  8: return ShapeOctahedron.RATIO;
450
      case 12: return ShapeDodecahedron.RATIO;
451 b63235a0 Leszek Koltunski
      case 16: return ShapeDiamond.RATIO;
452
      case 20: return ShapeIcosahedron.RATIO;
453 82eb152a Leszek Koltunski
      }
454
455
    return 0.0f;
456
    }
457
}