Project

General

Profile

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

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

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
  public void setReader(JsonReader reader)
186
    {
187
    mReader = reader;
188
    }
189

    
190
///////////////////////////////////////////////////////////////////////////////////////////////////
191

    
192
  public int[][] getScrambleEdges()
193
    {
194
    return mReader.getScrambleEdges();
195
    }
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
  public int getTouchControlType()
214
    {
215
    return mReader.getMovementType();
216
    }
217

    
218
///////////////////////////////////////////////////////////////////////////////////////////////////
219

    
220
  public int getTouchControlSplit()
221
    {
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
///////////////////////////////////////////////////////////////////////////////////////////////////
240

    
241
  public Static3D[] getFaceAxis()
242
    {
243
    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
      case 16: return TouchControlBall.FACE_AXIS;
252
      case 20: return TouchControlIcosahedron.FACE_AXIS;
253
      }
254

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

    
259
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
274

    
275
  public ObjectFaceShape getObjectFaceShape(int variant)
276
    {
277
    return mReader.getObjectFaceShape(variant);
278
    }
279

    
280
///////////////////////////////////////////////////////////////////////////////////////////////////
281

    
282
  public ObjectVertexEffects getVertexEffects(int variant)
283
    {
284
    return mReader.getVertexEffects(variant);
285
    }
286

    
287
///////////////////////////////////////////////////////////////////////////////////////////////////
288

    
289
  public Static4D getCubitQuats(int cubit, int[] numLayers)
290
    {
291
    return mReader.getCubitQuats(cubit);
292
    }
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
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
333
// PUBLIC API
334

    
335
  public Static3D[] getRotationAxis()
336
    {
337
    return mReader.getRotationAxis();
338
    }
339

    
340
///////////////////////////////////////////////////////////////////////////////////////////////////
341

    
342
  public int[][] getBasicAngles()
343
    {
344
    return mReader.getBasicAngle();
345
    }
346

    
347
///////////////////////////////////////////////////////////////////////////////////////////////////
348

    
349
  public int getNumScramble()
350
    {
351
    return mReader.getNumScrambles();
352
    }
353

    
354
///////////////////////////////////////////////////////////////////////////////////////////////////
355

    
356
  public ObjectSignature getSignature()
357
    {
358
    return mReader.getSignature();
359
    }
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
///////////////////////////////////////////////////////////////////////////////////////////////////
411

    
412
  public String getShortName()
413
    {
414
    return mReader.getShortName();
415
    }
416

    
417
///////////////////////////////////////////////////////////////////////////////////////////////////
418

    
419
  public String[][] getTutorials()
420
    {
421
    return mReader.getTutorials();
422
    }
423

    
424
///////////////////////////////////////////////////////////////////////////////////////////////////
425

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

    
438
    return 0;
439
    }
440

    
441
///////////////////////////////////////////////////////////////////////////////////////////////////
442

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

    
455
    return 0.0f;
456
    }
457
}
(7-7/11)