Project

General

Profile

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

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

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 java.io.InputStream;
13

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

    
37
///////////////////////////////////////////////////////////////////////////////////////////////////
38

    
39
public class TwistyJson extends TwistyObject
40
{
41
  private JsonReader mReader;
42

    
43
///////////////////////////////////////////////////////////////////////////////////////////////////
44

    
45
  public TwistyJson(InputStream jsonStream, int meshState, int iconMode, Static4D quat, Static3D move, float scale, InputStream meshStream)
46
    {
47
    super(jsonStream, meshState, iconMode, quat, move, scale, meshStream);
48
    }
49

    
50
///////////////////////////////////////////////////////////////////////////////////////////////////
51

    
52
  @Override
53
  public int getCubitRotationType(int cubitIndex)
54
    {
55
    return mReader.getCubitTypes()[cubitIndex];
56
    }
57

    
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59

    
60
  @Override
61
  public float[] getCubitRowOffset(int cubitIndex)
62
    {
63
    return mReader.getCubitOffsets()[cubitIndex];
64
    }
65

    
66
///////////////////////////////////////////////////////////////////////////////////////////////////
67

    
68
  @Override
69
  public int[][] getVariantFaceIsOuter()
70
    {
71
    return mReader.getVariantFaceIsOuter();
72
    }
73

    
74
///////////////////////////////////////////////////////////////////////////////////////////////////
75

    
76
  @Override
77
  public int[][] getSolvedQuats()
78
    {
79
    return mReader.getSolvedQuats();
80
    }
81

    
82
///////////////////////////////////////////////////////////////////////////////////////////////////
83

    
84
  @Override
85
  public Static4D[] getQuats()
86
    {
87
    return mReader.getQuats();
88
    }
89

    
90
///////////////////////////////////////////////////////////////////////////////////////////////////
91

    
92
  @Override
93
  public int getSolvedFunctionIndex()
94
    {
95
    return mReader.getSolvedFunctionIndex();
96
    }
97

    
98
///////////////////////////////////////////////////////////////////////////////////////////////////
99

    
100
  @Override
101
  public int getNumCubitFaces()
102
    {
103
    return mReader.getNumCubitFaces();
104
    }
105

    
106
///////////////////////////////////////////////////////////////////////////////////////////////////
107

    
108
  @Override
109
  public int getVariantStickerShape(int variant, int face)
110
    {
111
    return mReader.getVariantStickerShape(variant,face);
112
    }
113

    
114
///////////////////////////////////////////////////////////////////////////////////////////////////
115

    
116
  @Override
117
  public int getCubitFaceMap(int cubit, int face)
118
    {
119
    return mReader.getCubitFaceFace(cubit,face);
120
    }
121

    
122
///////////////////////////////////////////////////////////////////////////////////////////////////
123

    
124
  @Override
125
  public float getPillowCoeff()
126
    {
127
    return mReader.getPillowCoeff();
128
    }
129

    
130
///////////////////////////////////////////////////////////////////////////////////////////////////
131

    
132
  @Override
133
  public int getNumStickerTypes()
134
    {
135
    return mReader.getNumStickerTypes();
136
    }
137

    
138
///////////////////////////////////////////////////////////////////////////////////////////////////
139

    
140
  @Override
141
  public ObjectSticker retSticker(int sticker)
142
    {
143
    return mReader.retSticker(sticker);
144
    }
145

    
146
///////////////////////////////////////////////////////////////////////////////////////////////////
147

    
148
  @Override
149
  public ObjectStickerOverride[] getStickerOverrides()
150
    {
151
    return mReader.getStickerOverrides();
152
    }
153

    
154
///////////////////////////////////////////////////////////////////////////////////////////////////
155

    
156
  @Override
157
  public int getScrambleType()
158
    {
159
    return mReader.getScrambleType();
160
    }
161

    
162
///////////////////////////////////////////////////////////////////////////////////////////////////
163

    
164
  @Override
165
  public int[][] getScrambleAlgorithms()
166
    {
167
    return mReader.getScrambleAlgorithms();
168
    }
169

    
170
///////////////////////////////////////////////////////////////////////////////////////////////////
171

    
172
  @Override
173
  public boolean shouldResetTextureMaps()
174
    {
175
    return mReader.shouldResetTextureMaps();
176
    }
177

    
178
///////////////////////////////////////////////////////////////////////////////////////////////////
179

    
180
  @Override
181
  public int getInternalColor()
182
    {
183
    return mReader.getInternalColor();
184
    }
185

    
186
///////////////////////////////////////////////////////////////////////////////////////////////////
187

    
188
  public void setReader(JsonReader reader)
189
    {
190
    mReader = reader;
191
    }
192

    
193
///////////////////////////////////////////////////////////////////////////////////////////////////
194

    
195
  public int[][] getScrambleEdges()
196
    {
197
    return mReader.getScrambleEdges();
198
    }
199

    
200
///////////////////////////////////////////////////////////////////////////////////////////////////
201

    
202
  public float[][] getCuts(int[] numLayers)
203
    {
204
    return mReader.getCuts();
205
    }
206

    
207
///////////////////////////////////////////////////////////////////////////////////////////////////
208

    
209
  public boolean[][] getLayerRotatable(int[] numLayers)
210
    {
211
    return mReader.getLayerRotatable();
212
    }
213

    
214
///////////////////////////////////////////////////////////////////////////////////////////////////
215

    
216
  public int getTouchControlType()
217
    {
218
    return mReader.getMovementType();
219
    }
220

    
221
///////////////////////////////////////////////////////////////////////////////////////////////////
222

    
223
  public int getTouchControlSplit()
224
    {
225
    return mReader.getMovementSplit();
226
    }
227

    
228
///////////////////////////////////////////////////////////////////////////////////////////////////
229

    
230
  public int[][][] getEnabled()
231
    {
232
    return mReader.getEnabled();
233
    }
234

    
235
///////////////////////////////////////////////////////////////////////////////////////////////////
236

    
237
  public float[] getDist3D(int[] numLayers)
238
    {
239
    return mReader.getDist3D();
240
    }
241

    
242
///////////////////////////////////////////////////////////////////////////////////////////////////
243

    
244
  public Static3D[] getFaceAxis()
245
    {
246
    int numFaces = mReader.getNumFaces();
247

    
248
    switch(numFaces)
249
      {
250
      case  4: return TouchControlTetrahedron.FACE_AXIS;
251
      case  6: return TouchControlHexahedron.FACE_AXIS;
252
      case  8: return TouchControlOctahedron.FACE_AXIS;
253
      case 12: return TouchControlDodecahedron.FACE_AXIS;
254
      case 16: return TouchControlBall.FACE_AXIS;
255
      case 20: return TouchControlIcosahedron.FACE_AXIS;
256
      }
257

    
258
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
259
    return null;
260
    }
261

    
262
///////////////////////////////////////////////////////////////////////////////////////////////////
263

    
264
  public float[][] getCubitPositions(int[] numLayers)
265
    {
266
    return mReader.getCubitPositions();
267
    }
268

    
269
///////////////////////////////////////////////////////////////////////////////////////////////////
270

    
271
  public ObjectShape getObjectShape(int variant)
272
    {
273
    return mReader.getObjectShape(variant);
274
    }
275

    
276
///////////////////////////////////////////////////////////////////////////////////////////////////
277

    
278
  public ObjectFaceShape getObjectFaceShape(int variant)
279
    {
280
    return mReader.getObjectFaceShape(variant);
281
    }
282

    
283
///////////////////////////////////////////////////////////////////////////////////////////////////
284

    
285
  public ObjectVertexEffects getVertexEffects(int variant)
286
    {
287
    return mReader.getVertexEffects(variant);
288
    }
289

    
290
///////////////////////////////////////////////////////////////////////////////////////////////////
291

    
292
  public Static4D getCubitQuats(int cubit, int[] numLayers)
293
    {
294
    return mReader.getCubitQuats(cubit);
295
    }
296

    
297
///////////////////////////////////////////////////////////////////////////////////////////////////
298

    
299
  public int getNumCubitVariants(int[] numLayers)
300
    {
301
    return mReader.getNumCubitVariants();
302
    }
303

    
304
///////////////////////////////////////////////////////////////////////////////////////////////////
305

    
306
  public int getCubitVariant(int cubit, int[] numLayers)
307
    {
308
    return mReader.getCubitVariant(cubit);
309
    }
310

    
311
///////////////////////////////////////////////////////////////////////////////////////////////////
312
// fake, this will never be called
313

    
314
  public float getStickerStroke()
315
    {
316
    return 0.0f;
317
    }
318

    
319
///////////////////////////////////////////////////////////////////////////////////////////////////
320
// fake, this will never be called
321

    
322
  public float getStickerRadius()
323
    {
324
    return 0.0f;
325
    }
326

    
327
///////////////////////////////////////////////////////////////////////////////////////////////////
328
// fake, this will never be called
329

    
330
  public float[][] getStickerAngles()
331
    {
332
    return null;
333
    }
334

    
335
///////////////////////////////////////////////////////////////////////////////////////////////////
336
// PUBLIC API
337

    
338
  public Static3D[] getRotationAxis()
339
    {
340
    return mReader.getRotationAxis();
341
    }
342

    
343
///////////////////////////////////////////////////////////////////////////////////////////////////
344

    
345
  public int[][] getBasicAngles()
346
    {
347
    return mReader.getBasicAngle();
348
    }
349

    
350
///////////////////////////////////////////////////////////////////////////////////////////////////
351

    
352
  public int getNumScramble()
353
    {
354
    return mReader.getNumScrambles();
355
    }
356

    
357
///////////////////////////////////////////////////////////////////////////////////////////////////
358

    
359
  public ObjectSignature getSignature()
360
    {
361
    return mReader.getSignature();
362
    }
363

    
364
///////////////////////////////////////////////////////////////////////////////////////////////////
365

    
366
  public String getObjectName()
367
    {
368
    return mReader.getObjectName();
369
    }
370

    
371
///////////////////////////////////////////////////////////////////////////////////////////////////
372

    
373
  public String getInventor()
374
    {
375
    return mReader.getInventor();
376
    }
377

    
378
///////////////////////////////////////////////////////////////////////////////////////////////////
379

    
380
  public int getYearOfInvention()
381
    {
382
    return mReader.getYearOfInvention();
383
    }
384

    
385
///////////////////////////////////////////////////////////////////////////////////////////////////
386

    
387
  public int getComplexity()
388
    {
389
    return mReader.getComplexity();
390
    }
391

    
392
///////////////////////////////////////////////////////////////////////////////////////////////////
393

    
394
  public int getNumFaces()
395
    {
396
    return mReader.getNumFaces();
397
    }
398

    
399
///////////////////////////////////////////////////////////////////////////////////////////////////
400

    
401
  public int getNumFaceColors()
402
    {
403
    return mReader.getNumFaceColors();
404
    }
405

    
406
///////////////////////////////////////////////////////////////////////////////////////////////////
407

    
408
  public int getColor(int face)
409
    {
410
    return mReader.getColor(face);
411
    }
412

    
413
///////////////////////////////////////////////////////////////////////////////////////////////////
414

    
415
  public String getShortName()
416
    {
417
    return mReader.getShortName();
418
    }
419

    
420
///////////////////////////////////////////////////////////////////////////////////////////////////
421

    
422
  public String[][] getTutorials()
423
    {
424
    return mReader.getTutorials();
425
    }
426

    
427
///////////////////////////////////////////////////////////////////////////////////////////////////
428

    
429
  public int getFOV()
430
    {
431
    switch( mReader.getNumFaces() )
432
      {
433
      case  4: return ShapeTetrahedron.FOV;
434
      case  6: return ShapeHexahedron.FOV;
435
      case  8: return ShapeOctahedron.FOV;
436
      case 12: return ShapeDodecahedron.FOV;
437
      case 16: return ShapeDiamond.FOV;
438
      case 20: return ShapeIcosahedron.FOV;
439
      }
440

    
441
    return 0;
442
    }
443

    
444
///////////////////////////////////////////////////////////////////////////////////////////////////
445

    
446
  public float getScreenRatio()
447
    {
448
    switch( mReader.getNumFaces() )
449
      {
450
      case  4: return ShapeTetrahedron.RATIO;
451
      case  6: return ShapeHexahedron.RATIO;
452
      case  8: return ShapeOctahedron.RATIO;
453
      case 12: return ShapeDodecahedron.RATIO;
454
      case 16: return ShapeDiamond.RATIO;
455
      case 20: return ShapeIcosahedron.RATIO;
456
      }
457

    
458
    return 0.0f;
459
    }
460
}
(6-6/10)