Project

General

Profile

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

distorted-objectlib / src / main / java / org / distorted / objectlib / main / TwistyJson.java @ 51262d81

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 boolean shouldResetTextureMaps()
166
    {
167
    return mReader.shouldResetTextureMaps();
168
    }
169

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

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

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

    
180
  public void setReader(JsonReader reader)
181
    {
182
    mReader = reader;
183
    }
184

    
185
///////////////////////////////////////////////////////////////////////////////////////////////////
186

    
187
  public ScrambleState[] getScrambleStates()
188
    {
189
    return mReader.getScrambleStates();
190
    }
191

    
192
///////////////////////////////////////////////////////////////////////////////////////////////////
193

    
194
  public float[][] getCuts(int[] numLayers)
195
    {
196
    return mReader.getCuts();
197
    }
198

    
199
///////////////////////////////////////////////////////////////////////////////////////////////////
200

    
201
  public boolean[][] getLayerRotatable(int[] numLayers)
202
    {
203
    return mReader.getLayerRotatable();
204
    }
205

    
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207

    
208
  public int getTouchControlType()
209
    {
210
    return mReader.getMovementType();
211
    }
212

    
213
///////////////////////////////////////////////////////////////////////////////////////////////////
214

    
215
  public int getTouchControlSplit()
216
    {
217
    return mReader.getMovementSplit();
218
    }
219

    
220
///////////////////////////////////////////////////////////////////////////////////////////////////
221

    
222
  public int[][][] getEnabled()
223
    {
224
    return mReader.getEnabled();
225
    }
226

    
227
///////////////////////////////////////////////////////////////////////////////////////////////////
228

    
229
  public float[] getDist3D(int[] numLayers)
230
    {
231
    return mReader.getDist3D();
232
    }
233

    
234
///////////////////////////////////////////////////////////////////////////////////////////////////
235

    
236
  public Static3D[] getFaceAxis()
237
    {
238
    int numFaces = mReader.getNumFaces();
239

    
240
    switch(numFaces)
241
      {
242
      case  4: return TouchControlTetrahedron.FACE_AXIS;
243
      case  6: return TouchControlHexahedron.FACE_AXIS;
244
      case  8: return TouchControlOctahedron.FACE_AXIS;
245
      case 12: return TouchControlDodecahedron.FACE_AXIS;
246
      case 16: return TouchControlBall.FACE_AXIS;
247
      case 20: return TouchControlIcosahedron.FACE_AXIS;
248
      }
249

    
250
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
251
    return null;
252
    }
253

    
254
///////////////////////////////////////////////////////////////////////////////////////////////////
255

    
256
  public float[][] getCubitPositions(int[] numLayers)
257
    {
258
    return mReader.getCubitPositions();
259
    }
260

    
261
///////////////////////////////////////////////////////////////////////////////////////////////////
262

    
263
  public ObjectShape getObjectShape(int variant)
264
    {
265
    return mReader.getObjectShape(variant);
266
    }
267

    
268
///////////////////////////////////////////////////////////////////////////////////////////////////
269

    
270
  public ObjectFaceShape getObjectFaceShape(int variant)
271
    {
272
    return mReader.getObjectFaceShape(variant);
273
    }
274

    
275
///////////////////////////////////////////////////////////////////////////////////////////////////
276

    
277
  public ObjectVertexEffects getVertexEffects(int variant)
278
    {
279
    return mReader.getVertexEffects(variant);
280
    }
281

    
282
///////////////////////////////////////////////////////////////////////////////////////////////////
283

    
284
  public Static4D getCubitQuats(int cubit, int[] numLayers)
285
    {
286
    return mReader.getCubitQuats(cubit);
287
    }
288

    
289
///////////////////////////////////////////////////////////////////////////////////////////////////
290

    
291
  public int getNumCubitVariants(int[] numLayers)
292
    {
293
    return mReader.getNumCubitVariants();
294
    }
295

    
296
///////////////////////////////////////////////////////////////////////////////////////////////////
297

    
298
  public int getCubitVariant(int cubit, int[] numLayers)
299
    {
300
    return mReader.getCubitVariant(cubit);
301
    }
302

    
303
///////////////////////////////////////////////////////////////////////////////////////////////////
304
// fake, this will never be called
305

    
306
  public float getStickerStroke()
307
    {
308
    return 0.0f;
309
    }
310

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

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

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

    
322
  public float[][] getStickerAngles()
323
    {
324
    return null;
325
    }
326

    
327
///////////////////////////////////////////////////////////////////////////////////////////////////
328
// PUBLIC API
329

    
330
  public Static3D[] getRotationAxis()
331
    {
332
    return mReader.getRotationAxis();
333
    }
334

    
335
///////////////////////////////////////////////////////////////////////////////////////////////////
336

    
337
  public int[][] getBasicAngles()
338
    {
339
    return mReader.getBasicAngle();
340
    }
341

    
342
///////////////////////////////////////////////////////////////////////////////////////////////////
343

    
344
  public int getNumScramble()
345
    {
346
    return mReader.getNumScrambles();
347
    }
348

    
349
///////////////////////////////////////////////////////////////////////////////////////////////////
350

    
351
  public ObjectSignature getSignature()
352
    {
353
    return mReader.getSignature();
354
    }
355

    
356
///////////////////////////////////////////////////////////////////////////////////////////////////
357

    
358
  public String getObjectName()
359
    {
360
    return mReader.getObjectName();
361
    }
362

    
363
///////////////////////////////////////////////////////////////////////////////////////////////////
364

    
365
  public String getInventor()
366
    {
367
    return mReader.getInventor();
368
    }
369

    
370
///////////////////////////////////////////////////////////////////////////////////////////////////
371

    
372
  public int getYearOfInvention()
373
    {
374
    return mReader.getYearOfInvention();
375
    }
376

    
377
///////////////////////////////////////////////////////////////////////////////////////////////////
378

    
379
  public int getComplexity()
380
    {
381
    return mReader.getComplexity();
382
    }
383

    
384
///////////////////////////////////////////////////////////////////////////////////////////////////
385

    
386
  public int getNumFaces()
387
    {
388
    return mReader.getNumFaces();
389
    }
390

    
391
///////////////////////////////////////////////////////////////////////////////////////////////////
392

    
393
  public int getNumFaceColors()
394
    {
395
    return mReader.getNumFaceColors();
396
    }
397

    
398
///////////////////////////////////////////////////////////////////////////////////////////////////
399

    
400
  public int getColor(int face)
401
    {
402
    return mReader.getColor(face);
403
    }
404

    
405
///////////////////////////////////////////////////////////////////////////////////////////////////
406

    
407
  public String getShortName()
408
    {
409
    return mReader.getShortName();
410
    }
411

    
412
///////////////////////////////////////////////////////////////////////////////////////////////////
413

    
414
  public String[][] getTutorials()
415
    {
416
    return mReader.getTutorials();
417
    }
418

    
419
///////////////////////////////////////////////////////////////////////////////////////////////////
420

    
421
  public int getFOV()
422
    {
423
    switch( mReader.getNumFaces() )
424
      {
425
      case  4: return ShapeTetrahedron.FOV;
426
      case  6: return ShapeHexahedron.FOV;
427
      case  8: return ShapeOctahedron.FOV;
428
      case 12: return ShapeDodecahedron.FOV;
429
      case 16: return ShapeDiamond.FOV;
430
      case 20: return ShapeIcosahedron.FOV;
431
      }
432

    
433
    return 0;
434
    }
435

    
436
///////////////////////////////////////////////////////////////////////////////////////////////////
437

    
438
  public float getScreenRatio()
439
    {
440
    switch( mReader.getNumFaces() )
441
      {
442
      case  4: return ShapeTetrahedron.RATIO;
443
      case  6: return ShapeHexahedron.RATIO;
444
      case  8: return ShapeOctahedron.RATIO;
445
      case 12: return ShapeDodecahedron.RATIO;
446
      case 16: return ShapeDiamond.RATIO;
447
      case 20: return ShapeIcosahedron.RATIO;
448
      }
449

    
450
    return 0.0f;
451
    }
452
}
(7-7/9)