Project

General

Profile

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

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

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// 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
///////////////////////////////////////////////////////////////////////////////////////////////////
9

    
10
package org.distorted.objectlib.main;
11

    
12
import org.distorted.library.type.Static3D;
13
import org.distorted.library.type.Static4D;
14
import org.distorted.objectlib.helpers.ObjectFaceShape;
15
import org.distorted.objectlib.helpers.ObjectShape;
16
import org.distorted.objectlib.helpers.ObjectSignature;
17
import org.distorted.objectlib.helpers.ObjectSticker;
18
import org.distorted.objectlib.helpers.ObjectStickerOverride;
19
import org.distorted.objectlib.helpers.ObjectVertexEffects;
20
import org.distorted.objectlib.json.JsonReader;
21
import org.distorted.objectlib.shape.ShapeDiamond;
22
import org.distorted.objectlib.shape.ShapeDodecahedron;
23
import org.distorted.objectlib.shape.ShapeHexahedron;
24
import org.distorted.objectlib.shape.ShapeIcosahedron;
25
import org.distorted.objectlib.shape.ShapeOctahedron;
26
import org.distorted.objectlib.shape.ShapeTetrahedron;
27
import org.distorted.objectlib.touchcontrol.TouchControlBall;
28
import org.distorted.objectlib.touchcontrol.TouchControlDodecahedron;
29
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
30
import org.distorted.objectlib.touchcontrol.TouchControlIcosahedron;
31
import org.distorted.objectlib.touchcontrol.TouchControlOctahedron;
32
import org.distorted.objectlib.touchcontrol.TouchControlTetrahedron;
33

    
34
///////////////////////////////////////////////////////////////////////////////////////////////////
35

    
36
public class TwistyJson extends TwistyObject
37
{
38
  private JsonReader mReader;
39

    
40
///////////////////////////////////////////////////////////////////////////////////////////////////
41

    
42
  public TwistyJson(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitAssets assets)
43
    {
44
    super(meshState, iconMode, quat, move, scale, assets);
45
    }
46

    
47
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
64

    
65
  @Override
66
  public int[][] getVariantFaceIsOuter()
67
    {
68
    return mReader.getVariantFaceIsOuter();
69
    }
70

    
71
///////////////////////////////////////////////////////////////////////////////////////////////////
72

    
73
  @Override
74
  public int[][] getSolvedQuats()
75
    {
76
    return mReader.getSolvedQuats();
77
    }
78

    
79
///////////////////////////////////////////////////////////////////////////////////////////////////
80

    
81
  @Override
82
  public Static4D[] getQuats()
83
    {
84
    return mReader.getQuats();
85
    }
86

    
87
///////////////////////////////////////////////////////////////////////////////////////////////////
88

    
89
  @Override
90
  public int getSolvedFunctionIndex()
91
    {
92
    return mReader.getSolvedFunctionIndex();
93
    }
94

    
95
///////////////////////////////////////////////////////////////////////////////////////////////////
96

    
97
  @Override
98
  public int getNumCubitFaces()
99
    {
100
    return mReader.getNumCubitFaces();
101
    }
102

    
103
///////////////////////////////////////////////////////////////////////////////////////////////////
104

    
105
  @Override
106
  public int getVariantStickerShape(int variant, int face)
107
    {
108
    return mReader.getVariantStickerShape(variant,face);
109
    }
110

    
111
///////////////////////////////////////////////////////////////////////////////////////////////////
112

    
113
  @Override
114
  public int getCubitFaceMap(int cubit, int face)
115
    {
116
    return mReader.getCubitFaceFace(cubit,face);
117
    }
118

    
119
///////////////////////////////////////////////////////////////////////////////////////////////////
120

    
121
  @Override
122
  public float getPillowCoeff()
123
    {
124
    return mReader.getPillowCoeff();
125
    }
126

    
127
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
144

    
145
  @Override
146
  public ObjectStickerOverride[] getStickerOverrides()
147
    {
148
    return mReader.getStickerOverrides();
149
    }
150

    
151
///////////////////////////////////////////////////////////////////////////////////////////////////
152

    
153
  @Override
154
  public int getScrambleType()
155
    {
156
    return mReader.getScrambleType();
157
    }
158

    
159
///////////////////////////////////////////////////////////////////////////////////////////////////
160

    
161
  @Override
162
  public int[][] getScrambleAlgorithms()
163
    {
164
    return mReader.getScrambleAlgorithms();
165
    }
166

    
167
///////////////////////////////////////////////////////////////////////////////////////////////////
168

    
169
  @Override
170
  public boolean shouldResetTextureMaps()
171
    {
172
    return mReader.shouldResetTextureMaps();
173
    }
174

    
175
///////////////////////////////////////////////////////////////////////////////////////////////////
176

    
177
  @Override
178
  public int getInternalColor()
179
    {
180
    return mReader.getInternalColor();
181
    }
182

    
183
///////////////////////////////////////////////////////////////////////////////////////////////////
184

    
185
  @Override
186
  public float[][] returnRotationFactor()
187
    {
188
    return mReader.returnRotationFactor();
189
    }
190

    
191
///////////////////////////////////////////////////////////////////////////////////////////////////
192

    
193
  public void setReader(JsonReader reader)
194
    {
195
    mReader = reader;
196
    }
197

    
198
///////////////////////////////////////////////////////////////////////////////////////////////////
199

    
200
  public int[][] getScrambleEdges()
201
    {
202
    return mReader.getScrambleEdges();
203
    }
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
  public int getTouchControlType()
222
    {
223
    return mReader.getMovementType();
224
    }
225

    
226
///////////////////////////////////////////////////////////////////////////////////////////////////
227

    
228
  public int getTouchControlSplit()
229
    {
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
///////////////////////////////////////////////////////////////////////////////////////////////////
248

    
249
  public Static3D[] getFaceAxis()
250
    {
251
    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
      case 16: return TouchControlBall.FACE_AXIS;
260
      case 20: return TouchControlIcosahedron.FACE_AXIS;
261
      }
262

    
263
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
264
    return null;
265
    }
266

    
267
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
282

    
283
  public ObjectFaceShape getObjectFaceShape(int variant)
284
    {
285
    return mReader.getObjectFaceShape(variant);
286
    }
287

    
288
///////////////////////////////////////////////////////////////////////////////////////////////////
289

    
290
  public ObjectVertexEffects getVertexEffects(int variant)
291
    {
292
    return mReader.getVertexEffects(variant);
293
    }
294

    
295
///////////////////////////////////////////////////////////////////////////////////////////////////
296

    
297
  public Static4D getCubitQuats(int cubit, int[] numLayers)
298
    {
299
    return mReader.getCubitQuats(cubit);
300
    }
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
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
341
// PUBLIC API
342

    
343
  public Static3D[] getRotationAxis()
344
    {
345
    return mReader.getRotationAxis();
346
    }
347

    
348
///////////////////////////////////////////////////////////////////////////////////////////////////
349

    
350
  public int[][] getBasicAngles()
351
    {
352
    return mReader.getBasicAngle();
353
    }
354

    
355
///////////////////////////////////////////////////////////////////////////////////////////////////
356

    
357
  public int getNumScramble()
358
    {
359
    return mReader.getNumScrambles();
360
    }
361

    
362
///////////////////////////////////////////////////////////////////////////////////////////////////
363

    
364
  public ObjectSignature getSignature()
365
    {
366
    return mReader.getSignature();
367
    }
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
///////////////////////////////////////////////////////////////////////////////////////////////////
419

    
420
  public String getShortName()
421
    {
422
    return mReader.getShortName();
423
    }
424

    
425
///////////////////////////////////////////////////////////////////////////////////////////////////
426

    
427
  public String[][] getTutorials()
428
    {
429
    return mReader.getTutorials();
430
    }
431

    
432
///////////////////////////////////////////////////////////////////////////////////////////////////
433

    
434
  public int getFOV()
435
    {
436
    switch( mReader.getNumFaces() )
437
      {
438
      case  4: return ShapeTetrahedron.FOV;
439
      case  6: return ShapeHexahedron.FOV;
440
      case  8: return ShapeOctahedron.FOV;
441
      case 12: return ShapeDodecahedron.FOV;
442
      case 16: return ShapeDiamond.FOV;
443
      case 20: return ShapeIcosahedron.FOV;
444
      }
445

    
446
    return 0;
447
    }
448

    
449
///////////////////////////////////////////////////////////////////////////////////////////////////
450

    
451
  public float getScreenRatio()
452
    {
453
    switch( mReader.getNumFaces() )
454
      {
455
      case  4: return ShapeTetrahedron.RATIO;
456
      case  6: return ShapeHexahedron.RATIO;
457
      case  8: return ShapeOctahedron.RATIO;
458
      case 12: return ShapeDodecahedron.RATIO;
459
      case 16: return ShapeDiamond.RATIO;
460
      case 20: return ShapeIcosahedron.RATIO;
461
      }
462

    
463
    return 0.0f;
464
    }
465
}
(7-7/11)