Project

General

Profile

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

distorted-objectlib / src / main / java / org / distorted / objectlib / main / TwistyJson.java @ 3a0a23bf

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is free software: you can redistribute it and/or modify                            //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Magic Cube is distributed in the hope that it will be useful,                                 //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.objectlib.main;
21

    
22
import java.io.InputStream;
23

    
24
import org.distorted.library.type.Static3D;
25
import org.distorted.library.type.Static4D;
26
import org.distorted.objectlib.helpers.ObjectFaceShape;
27
import org.distorted.objectlib.helpers.ObjectShape;
28
import org.distorted.objectlib.helpers.ObjectSignature;
29
import org.distorted.objectlib.helpers.ObjectSticker;
30
import org.distorted.objectlib.helpers.ObjectStickerOverride;
31
import org.distorted.objectlib.scrambling.ScrambleState;
32
import org.distorted.objectlib.json.JsonReader;
33
import org.distorted.objectlib.touchcontrol.TouchControlDodecahedron;
34
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
35
import org.distorted.objectlib.touchcontrol.TouchControlOctahedron;
36
import org.distorted.objectlib.touchcontrol.TouchControlTetrahedron;
37

    
38
///////////////////////////////////////////////////////////////////////////////////////////////////
39

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

    
44
///////////////////////////////////////////////////////////////////////////////////////////////////
45

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

    
51
///////////////////////////////////////////////////////////////////////////////////////////////////
52

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

    
59
///////////////////////////////////////////////////////////////////////////////////////////////////
60

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

    
67
///////////////////////////////////////////////////////////////////////////////////////////////////
68

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

    
75
///////////////////////////////////////////////////////////////////////////////////////////////////
76

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

    
83
///////////////////////////////////////////////////////////////////////////////////////////////////
84

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

    
91
///////////////////////////////////////////////////////////////////////////////////////////////////
92

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

    
99
///////////////////////////////////////////////////////////////////////////////////////////////////
100

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

    
107
///////////////////////////////////////////////////////////////////////////////////////////////////
108

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

    
115
///////////////////////////////////////////////////////////////////////////////////////////////////
116

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

    
123
///////////////////////////////////////////////////////////////////////////////////////////////////
124

    
125
  @Override
126
  public int getNumStickerTypes()
127
    {
128
    return mReader.getNumStickerTypes();
129
    }
130

    
131
///////////////////////////////////////////////////////////////////////////////////////////////////
132

    
133
  @Override
134
  public ObjectSticker retSticker(int sticker)
135
    {
136
    return mReader.retSticker(sticker);
137
    }
138

    
139
///////////////////////////////////////////////////////////////////////////////////////////////////
140

    
141
  @Override
142
  public ObjectStickerOverride[] getStickerOverrides()
143
    {
144
    return mReader.getStickerOverrides();
145
    }
146

    
147
///////////////////////////////////////////////////////////////////////////////////////////////////
148

    
149
  @Override
150
  public int getScrambleType()
151
    {
152
    return mReader.getScrambleType();
153
    }
154

    
155
///////////////////////////////////////////////////////////////////////////////////////////////////
156

    
157
  @Override
158
  public boolean shouldResetTextureMaps()
159
    {
160
    return mReader.shouldResetTextureMaps();
161
    }
162

    
163
///////////////////////////////////////////////////////////////////////////////////////////////////
164

    
165
  @Override
166
  public int getInternalColor()
167
    {
168
    return mReader.getInternalColor();
169
    }
170

    
171
///////////////////////////////////////////////////////////////////////////////////////////////////
172

    
173
  public void setReader(JsonReader reader)
174
    {
175
    mReader = reader;
176
    }
177

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

    
180
  public ScrambleState[] getScrambleStates()
181
    {
182
    return mReader.getScrambleStates();
183
    }
184

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

    
187
  public float[][] getCuts(int[] numLayers)
188
    {
189
    return mReader.getCuts();
190
    }
191

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

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

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

    
201
  public int getTouchControlType()
202
    {
203
    return mReader.getMovementType();
204
    }
205

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

    
208
  public int getTouchControlSplit()
209
    {
210
    return mReader.getMovementSplit();
211
    }
212

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

    
215
  public int[][][] getEnabled()
216
    {
217
    return mReader.getEnabled();
218
    }
219

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

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

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

    
229
  public Static3D[] getFaceAxis()
230
    {
231
    int numFaces = mReader.getNumFaces();
232

    
233
    switch(numFaces)
234
      {
235
      case  4: return TouchControlTetrahedron.FACE_AXIS;
236
      case  6: return TouchControlHexahedron.FACE_AXIS;
237
      case  8: return TouchControlOctahedron.FACE_AXIS;
238
      case 12: return TouchControlDodecahedron.FACE_AXIS;
239
      }
240

    
241
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
242
    return null;
243
    }
244

    
245
///////////////////////////////////////////////////////////////////////////////////////////////////
246

    
247
  public float[][] getCubitPositions(int[] numLayers)
248
    {
249
    return mReader.getCubitPositions();
250
    }
251

    
252
///////////////////////////////////////////////////////////////////////////////////////////////////
253

    
254
  public ObjectShape getObjectShape(int variant)
255
    {
256
    return mReader.getObjectShape(variant);
257
    }
258

    
259
///////////////////////////////////////////////////////////////////////////////////////////////////
260

    
261
  public ObjectFaceShape getObjectFaceShape(int variant)
262
    {
263
    return mReader.getObjectFaceShape(variant);
264
    }
265

    
266
///////////////////////////////////////////////////////////////////////////////////////////////////
267

    
268
  public Static4D getCubitQuats(int cubit, int[] numLayers)
269
    {
270
    return mReader.getCubitQuats(cubit);
271
    }
272

    
273
///////////////////////////////////////////////////////////////////////////////////////////////////
274

    
275
  public int getNumCubitVariants(int[] numLayers)
276
    {
277
    return mReader.getNumCubitVariants();
278
    }
279

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

    
282
  public int getCubitVariant(int cubit, int[] numLayers)
283
    {
284
    return mReader.getCubitVariant(cubit);
285
    }
286

    
287
///////////////////////////////////////////////////////////////////////////////////////////////////
288
// fake, this will never be called
289

    
290
  public float getStickerStroke()
291
    {
292
    return 0.0f;
293
    }
294

    
295
///////////////////////////////////////////////////////////////////////////////////////////////////
296
// fake, this will never be called
297

    
298
  public float getStickerRadius()
299
    {
300
    return 0.0f;
301
    }
302

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

    
306
  public float[][] getStickerAngles()
307
    {
308
    return null;
309
    }
310

    
311
///////////////////////////////////////////////////////////////////////////////////////////////////
312
// PUBLIC API
313

    
314
  public Static3D[] getRotationAxis()
315
    {
316
    return mReader.getRotationAxis();
317
    }
318

    
319
///////////////////////////////////////////////////////////////////////////////////////////////////
320

    
321
  public int[][] getBasicAngles()
322
    {
323
    return mReader.getBasicAngle();
324
    }
325

    
326
///////////////////////////////////////////////////////////////////////////////////////////////////
327

    
328
  public int getNumScramble()
329
    {
330
    return mReader.getNumScrambles();
331
    }
332

    
333
///////////////////////////////////////////////////////////////////////////////////////////////////
334

    
335
  public ObjectSignature getSignature()
336
    {
337
    return mReader.getSignature();
338
    }
339

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

    
342
  public String getObjectName()
343
    {
344
    return mReader.getObjectName();
345
    }
346

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

    
349
  public String getInventor()
350
    {
351
    return mReader.getInventor();
352
    }
353

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

    
356
  public int getYearOfInvention()
357
    {
358
    return mReader.getYearOfInvention();
359
    }
360

    
361
///////////////////////////////////////////////////////////////////////////////////////////////////
362

    
363
  public int getComplexity()
364
    {
365
    return mReader.getComplexity();
366
    }
367

    
368
///////////////////////////////////////////////////////////////////////////////////////////////////
369

    
370
  public int getNumFaces()
371
    {
372
    return mReader.getNumFaces();
373
    }
374

    
375
///////////////////////////////////////////////////////////////////////////////////////////////////
376

    
377
  public int getNumFaceColors()
378
    {
379
    return mReader.getNumFaceColors();
380
    }
381

    
382
///////////////////////////////////////////////////////////////////////////////////////////////////
383

    
384
  public int getColor(int face)
385
    {
386
    return mReader.getColor(face);
387
    }
388

    
389
///////////////////////////////////////////////////////////////////////////////////////////////////
390

    
391
  public String getShortName()
392
    {
393
    return mReader.getShortName();
394
    }
395

    
396
///////////////////////////////////////////////////////////////////////////////////////////////////
397

    
398
  public String[][] getTutorials()
399
    {
400
    return mReader.getTutorials();
401
    }
402

    
403
///////////////////////////////////////////////////////////////////////////////////////////////////
404

    
405
  public int getFOV()
406
    {
407
    switch( mReader.getNumFaces() )
408
      {
409
      case  4: return ShapeTetrahedron.FOV;
410
      case  6: return ShapeHexahedron.FOV;
411
      case  8: return ShapeOctahedron.FOV;
412
      case 12: return ShapeDodecahedron.FOV;
413
      }
414

    
415
    return 0;
416
    }
417

    
418
///////////////////////////////////////////////////////////////////////////////////////////////////
419

    
420
  public float getScreenRatio()
421
    {
422
    switch( mReader.getNumFaces() )
423
      {
424
      case  4: return ShapeTetrahedron.RATIO;
425
      case  6: return ShapeHexahedron.RATIO;
426
      case  8: return ShapeOctahedron.RATIO;
427
      case 12: return ShapeDodecahedron.RATIO;
428
      }
429

    
430
    return 0.0f;
431
    }
432
}
(11-11/13)