Project

General

Profile

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

distorted-objectlib / src / main / java / org / distorted / objectlib / objects / TwistyAxis.java @ 2dffaf22

1 500896d3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2022 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6 6133be67 Leszek Koltunski
// 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 500896d3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10
package org.distorted.objectlib.objects;
11
12
import org.distorted.library.type.Static3D;
13
import org.distorted.library.type.Static4D;
14 84a17011 Leszek Koltunski
import org.distorted.objectlib.helpers.FactoryCubit;
15 500896d3 Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectFaceShape;
16
import org.distorted.objectlib.helpers.ObjectShape;
17 1d581993 Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectSignature;
18 84a17011 Leszek Koltunski
import org.distorted.objectlib.helpers.ObjectVertexEffects;
19 2dffaf22 Leszek Koltunski
import org.distorted.objectlib.main.ObjectSignatures;
20 9ba7f3f6 Leszek Koltunski
import org.distorted.objectlib.scrambling.ScrambleEdgeGenerator;
21 a8295031 Leszek Koltunski
import org.distorted.objectlib.main.InitData;
22 500896d3 Leszek Koltunski
import org.distorted.objectlib.main.ObjectType;
23 b31249d6 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeHexahedron;
24 500896d3 Leszek Koltunski
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
25
26
import java.io.InputStream;
27
28
import static org.distorted.objectlib.touchcontrol.TouchControl.TC_CHANGING_SHAPEMOD;
29
import static org.distorted.objectlib.touchcontrol.TouchControl.TYPE_NOT_SPLIT;
30
31
///////////////////////////////////////////////////////////////////////////////////////////////////
32
33
public class TwistyAxis extends ShapeHexahedron
34
{
35
  static final Static3D[] ROT_AXIS = new Static3D[]
36
         {
37 325a17e0 Leszek Koltunski
           new Static3D(-2.0f/3, 1.0f/3, 2.0f/3),
38
           new Static3D( 1.0f/3,-2.0f/3, 2.0f/3),
39
           new Static3D( 2.0f/3, 2.0f/3, 1.0f/3),
40 500896d3 Leszek Koltunski
         };
41
42 9ba7f3f6 Leszek Koltunski
  private int[][] mEdges;
43 beee90ab Leszek Koltunski
  private int[][] mBasicAngle;
44 500896d3 Leszek Koltunski
  private float[][] mCuts;
45
  private float[][] mCenters;
46
  private int[] mQuatIndex;
47
48
///////////////////////////////////////////////////////////////////////////////////////////////////
49
50 a8295031 Leszek Koltunski
  public TwistyAxis(InitData data, int meshState, int iconMode, Static4D quat, Static3D move, float scale, InputStream stream)
51 500896d3 Leszek Koltunski
    {
52 a8295031 Leszek Koltunski
    super(data, meshState, iconMode, data.getNumLayers()[0], quat, move, scale, stream);
53 500896d3 Leszek Koltunski
    }
54
55
///////////////////////////////////////////////////////////////////////////////////////////////////
56
57
  @Override
58
  public int getInternalColor()
59
    {
60 e29d5c29 Leszek Koltunski
    return 0xff222222;
61 500896d3 Leszek Koltunski
    }
62
63
///////////////////////////////////////////////////////////////////////////////////////////////////
64
65 9ba7f3f6 Leszek Koltunski
  public int[][] getScrambleEdges()
66 500896d3 Leszek Koltunski
    {
67 27249eea Leszek Koltunski
    if( mEdges==null ) mEdges = ScrambleEdgeGenerator.getScrambleEdgesCuboid(3,3,3);
68 9ba7f3f6 Leszek Koltunski
    return mEdges;
69 500896d3 Leszek Koltunski
    }
70
71
///////////////////////////////////////////////////////////////////////////////////////////////////
72
73
  public float[][] getCuts(int[] numLayers)
74
    {
75
    if( mCuts==null )
76
      {
77 325a17e0 Leszek Koltunski
      float C = 0.5f;
78 500896d3 Leszek Koltunski
      float[] cut = new float[] {-C,+C};
79
      mCuts = new float[][] { cut,cut,cut };
80
      }
81
82
    return mCuts;
83
    }
84
85
///////////////////////////////////////////////////////////////////////////////////////////////////
86
87
  public boolean[][] getLayerRotatable(int[] numLayers)
88
    {
89
    boolean[] tmp = new boolean[] {true,true,true};
90
    return new boolean[][] { tmp,tmp,tmp };
91
    }
92
93
///////////////////////////////////////////////////////////////////////////////////////////////////
94
95
  public int getTouchControlType()
96
    {
97
    return TC_CHANGING_SHAPEMOD;
98
    }
99
100
///////////////////////////////////////////////////////////////////////////////////////////////////
101
102
  public int getTouchControlSplit()
103
    {
104
    return TYPE_NOT_SPLIT;
105
    }
106
107
///////////////////////////////////////////////////////////////////////////////////////////////////
108
109
  public int[][][] getEnabled()
110
    {
111
    return null;
112
    }
113
114
///////////////////////////////////////////////////////////////////////////////////////////////////
115
116
  public float[] getDist3D(int[] numLayers)
117
    {
118
    return TouchControlHexahedron.D3D;
119
    }
120
121
///////////////////////////////////////////////////////////////////////////////////////////////////
122
123
  public Static3D[] getFaceAxis()
124
    {
125
    return TouchControlHexahedron.FACE_AXIS;
126
    }
127
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129
130
  public float[][] getCubitPositions(int[] numLayers)
131
    {
132
    if( mCenters==null )
133
      {
134
      mCenters = new float[][]
135
         {
136 e29d5c29 Leszek Koltunski
             { 1.50f, 1.50f, 0.75f},
137
             {-0.75f, 1.50f,-1.50f},
138
             { 1.50f,-0.75f,-1.50f},
139
             {-1.50f, 0.75f, 1.50f},
140
             { 0.75f,-1.50f, 1.50f},
141
             {-1.50f,-1.50f,-0.75f},
142
143
             {0.375f, 1.50f,-0.375f},
144
             {0.375f,0.375f,-1.50f },
145
             { 1.50f,0.375f,-0.375f},
146
             {-0.375f,-0.375f,1.50f},
147
             {-0.375f,-1.50f,0.375f},
148
             {-1.50f,-0.375f,0.375f},
149
150
             { 0.00f, 1.50f, 1.50f},
151
             {-1.50f, 0.00f,-1.50f},
152
             { 1.50f,-1.50f, 0.00f},
153
154
             {-1.50f, 1.50f, 0.00f},
155
             { 0.00f,-1.50f,-1.50f},
156
             { 1.50f, 0.00f, 1.50f},
157
158
             { 1.50f, 1.50f,-1.50f},
159
             {-1.50f,-1.50f, 1.50f},
160
161
             {-0.5f, 1.5f, 0.5f},
162
             { 0.5f,-1.5f,-0.5f},
163
             { 1.5f,-0.5f, 0.5f},
164
             {-1.5f, 0.5f,-0.5f},
165
             { 0.5f, 0.5f, 1.5f},
166
             {-0.5f,-0.5f,-1.5f},
167 500896d3 Leszek Koltunski
         };
168
      }
169
170
    return mCenters;
171
    }
172
173
///////////////////////////////////////////////////////////////////////////////////////////////////
174
175
  public Static4D getCubitQuats(int cubit, int[] numLayers)
176
    {
177 a4af26c1 Leszek Koltunski
    if( mQuatIndex==null )
178
      {
179
      mQuatIndex = new int[] { 0,22,10,17,14,19,
180
                               0,22,10,17,14,19,
181
                               0,22,10,
182
                               0,22,10,
183
                               0,14,
184
                               0,14,10,19,17,22
185
                             };
186
      }
187 e29d5c29 Leszek Koltunski
    return mObjectQuats[mQuatIndex[cubit]];
188 500896d3 Leszek Koltunski
    }
189
190
///////////////////////////////////////////////////////////////////////////////////////////////////
191
192 84a17011 Leszek Koltunski
  private float[][] getVertices(int variant)
193 500896d3 Leszek Koltunski
    {
194 325a17e0 Leszek Koltunski
    final float T = 1.0f/3;
195
196 84a17011 Leszek Koltunski
    if( variant==0 )
197 500896d3 Leszek Koltunski
      {
198 84a17011 Leszek Koltunski
      return new float[][]
199 500896d3 Leszek Koltunski
          {
200 325a17e0 Leszek Koltunski
              { -1.0f, 0.0f, -0.25f  },
201
              {  0.0f, 0.0f, -0.75f  },
202
              {  0.0f, 0.0f,  0.75f  },
203
              {  0.0f,-1.0f, -0.25f  },
204
              {  -5*T, -2*T, -1.75f*T},
205
              { -1.0f,-1.0f, -1.25f  },
206
              {  -4*T, -4*T,  0.25f*T},
207
              {  -2*T, -5*T, -1.75f*T}
208 500896d3 Leszek Koltunski
          };
209 84a17011 Leszek Koltunski
      }
210
    else if( variant==1 )
211
      {
212
      return new float[][]
213
          {
214
              {-0.375f  , 0.0f, -1.125f  },
215
              { 1.125f  , 0.0f,  0.375f  },
216
              {-0.875f  , 0.0f, -0.125f  },
217
              { 0.125f  , 0.0f,  0.875f  },
218
              {-1.625f*T, -2*T,  1.625f*T},
219
              { 0.125f  ,-1.0f, -0.125f  }
220
          };
221
      }
222
    else if( variant==2 )
223
      {
224
      return new float[][]
225
          {
226
              {-1.5f  , 0.0f, 0.0f},
227
              { 0.5f  , 0.0f,-1.0f},
228
              { 1.5f  , 0.0f, 0.0f},
229
              {-0.5f  ,-1.0f, 0.0f},
230
              {-0.5f*T, -2*T, -4*T},
231
              { 0.5f*T, -4*T, -2*T},
232
          };
233
      }
234
    else if( variant==3 )
235
      {
236
      return new float[][]
237
          {
238
              {0.0f, 0.0f, -1.5f  },
239
              {1.0f, 0.0f, -0.5f  },
240
              {0.0f, 0.0f,  1.5f  },
241
              {0.0f,-1.0f,  0.5f  },
242
              { 4*T, -2*T,  0.5f*T},
243
              { 2*T, -4*T, -0.5f*T}
244
          };
245
      }
246
    else if( variant==4 )
247
      {
248
      return new float[][]
249
          {
250
              { 0.0f, 0.0f, 0.0f},
251
              {-1.5f, 0.0f, 0.0f},
252
              { 0.0f,-1.5f, 0.0f},
253
              { 0.0f, 0.0f, 1.5f},
254
              {-1.0f,-1.0f, 1.0f}
255
          };
256
      }
257
    else
258
      {
259
      return new float[][]
260
          {
261
              {-1.0f, 0.0f, 1.0f},
262
              { 0.0f, 0.0f,-1.0f},
263
              { 1.0f, 0.0f, 0.0f},
264
              {    T, -2*T,   -T}
265
          };
266
      }
267
    }
268 500896d3 Leszek Koltunski
269 84a17011 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
270
271
  public ObjectShape getObjectShape(int variant)
272
    {
273
    if( variant==0 )  // center
274
      {
275 500896d3 Leszek Koltunski
      int[][] indices =
276
          {
277 325a17e0 Leszek Koltunski
              {2,1,0},
278
              {2,3,1},
279
              {4,6,2,0},
280
              {6,7,3,2},
281
              {7,5,1,3},
282
              {5,4,0,1},
283
              {7,6,4,5}
284 500896d3 Leszek Koltunski
          };
285
286 84a17011 Leszek Koltunski
      return new ObjectShape(getVertices(variant), indices);
287 500896d3 Leszek Koltunski
      }
288 325a17e0 Leszek Koltunski
    else if( variant==1 ) // edge type 1
289
      {
290
      int[][] indices =
291
          {
292
              {2,3,1,0},
293
              {2,4,3},
294
              {4,5,1,3},
295
              {5,0,1},
296
              {5,4,2,0}
297
          };
298
299 84a17011 Leszek Koltunski
      return new ObjectShape(getVertices(variant), indices);
300 325a17e0 Leszek Koltunski
      }
301
    else if( variant==2 ) // edge type 2
302 500896d3 Leszek Koltunski
      {
303
      int[][] indices =
304
          {
305 3543d0dc Leszek Koltunski
              {0,2,1},
306
              {0,3,2},
307
              {3,5,2},
308
              {1,4,0},
309
              {4,5,3,0},
310
              {5,4,1,2}
311 500896d3 Leszek Koltunski
          };
312
313 84a17011 Leszek Koltunski
      return new ObjectShape(getVertices(variant), indices);
314 500896d3 Leszek Koltunski
      }
315 325a17e0 Leszek Koltunski
    else if( variant==3 ) // edge type 3
316 500896d3 Leszek Koltunski
      {
317
      int[][] indices =
318
          {
319 3543d0dc Leszek Koltunski
              {0,2,1},
320
              {0,3,2},
321
              {0,5,3},
322
              {5,4,2,3},
323
              {4,1,2},
324
              {4,5,0,1}
325 500896d3 Leszek Koltunski
          };
326
327 84a17011 Leszek Koltunski
      return new ObjectShape(getVertices(variant), indices);
328 500896d3 Leszek Koltunski
      }
329 325a17e0 Leszek Koltunski
    else if( variant==4 ) // corner type 1
330 500896d3 Leszek Koltunski
      {
331
      int[][] indices =
332
          {
333 3543d0dc Leszek Koltunski
              {1,3,0},
334
              {3,2,0},
335
              {2,1,0},
336
              {3,1,4},
337
              {2,3,4},
338
              {1,2,4}
339 500896d3 Leszek Koltunski
          };
340
341 84a17011 Leszek Koltunski
      return new ObjectShape(getVertices(variant), indices);
342 500896d3 Leszek Koltunski
      }
343 325a17e0 Leszek Koltunski
    else                 // corner type 2
344 500896d3 Leszek Koltunski
      {
345
      int[][] indices =
346
          {
347 3543d0dc Leszek Koltunski
              {0,2,1},
348
              {0,3,2},
349
              {2,3,1},
350
              {1,3,0}
351 500896d3 Leszek Koltunski
          };
352
353 84a17011 Leszek Koltunski
      return new ObjectShape(getVertices(variant), indices);
354 500896d3 Leszek Koltunski
      }
355
    }
356
357
///////////////////////////////////////////////////////////////////////////////////////////////////
358
359
  public ObjectFaceShape getObjectFaceShape(int variant)
360
    {
361 3bf19410 Leszek Koltunski
    float height = isInIconMode() ? 0.001f : 0.025f;
362
363 500896d3 Leszek Koltunski
    if( variant==0 )
364
      {
365 3bf19410 Leszek Koltunski
      float[][] bands   = { {height,20,0.2f,0.4f,5,1,0}, {0.001f,20,0.2f,0.4f,5,1,0} };
366 325a17e0 Leszek Koltunski
      int[] bandIndices = { 0,0,1,1,1,1,1 };
367 84a17011 Leszek Koltunski
      return new ObjectFaceShape(bands,bandIndices,null);
368
      }
369
    else if( variant==1 )
370
      {
371
      float[][] bands   = { {height,20,0.2f,0.4f,5,1,0}, {0.001f,20,0.2f,0.4f,5,1,0} };
372
      int[] bandIndices = { 0,1,1,1,1 };
373
      return new ObjectFaceShape(bands,bandIndices,null);
374
      }
375
    else if( variant==2 )
376
      {
377
      float[][] bands   = { {height,20,0.2f,0.4f,5,1,0}, {0.001f,20,0.2f,0.4f,5,1,0} };
378
      int[] bandIndices = { 0,0,1,1,1,1 };
379
      return new ObjectFaceShape(bands,bandIndices,null);
380
      }
381
    else if( variant==3 )
382
      {
383
      float[][] bands   = { {height,20,0.2f,0.4f,5,1,0}, {0.001f,20,0.2f,0.4f,5,1,0} };
384
      int[] bandIndices = { 0,0,1,1,1,1 };
385
      return new ObjectFaceShape(bands,bandIndices,null);
386
      }
387
    else if( variant==4 )
388
      {
389
      float[][] bands   = { {height,20,0.2f,0.4f,5,1,0}, {0.001f,20,0.2f,0.4f,5,1,0} };
390
      int[] bandIndices = { 0,0,0,1,1,1 };
391
      return new ObjectFaceShape(bands,bandIndices,null);
392
      }
393
    else
394
      {
395
      float h1 = isInIconMode() ? 0.001f : 0.05f;
396
      float h2 = isInIconMode() ? 0.001f : 0.01f;
397
      float[][] bands   = { {h1,35,0.25f,0.7f,5,1,0}, {h2,35,0.25f,0.7f,5,1,0} };
398
      int[] bandIndices = { 0,1,1,1 };
399
      return new ObjectFaceShape(bands,bandIndices,null);
400
      }
401
    }
402
403
///////////////////////////////////////////////////////////////////////////////////////////////////
404
405
  public ObjectVertexEffects getVertexEffects(int variant)
406
    {
407
    if( variant==0 )
408
      {
409
      float[][] vertices= getVertices(variant);
410 500896d3 Leszek Koltunski
      float[][] corners = { {0.04f,0.09f} };
411 325a17e0 Leszek Koltunski
      int[] indices     = { 0,0,0,0,-1,-1,-1,-1 };
412
      float[][] centers = { { -0.5f, -0.5f, 0.0f } };
413 84a17011 Leszek Koltunski
      return FactoryCubit.generateVertexEffect(vertices,corners,indices,centers,indices);
414 500896d3 Leszek Koltunski
      }
415
    else if( variant==1 )
416
      {
417 84a17011 Leszek Koltunski
      float[][] vertices= getVertices(variant);
418 325a17e0 Leszek Koltunski
      float[][] corners = { {0.04f,0.09f} };
419
      int[] indices     = { 0,0,0,0,-1,-1 };
420 e29d5c29 Leszek Koltunski
      float[][] centers = { { -5.0f/24, -5.0f/6, 5.0f/24} };
421 84a17011 Leszek Koltunski
      return FactoryCubit.generateVertexEffect(vertices,corners,indices,centers,indices);
422 500896d3 Leszek Koltunski
      }
423 3543d0dc Leszek Koltunski
    else if( variant==2 )
424
      {
425 84a17011 Leszek Koltunski
      float[][] vertices= getVertices(variant);
426 3543d0dc Leszek Koltunski
      float[][] corners = { {0.04f,0.09f} };
427
      int[] indices     = { 0,0,0,0,-1,-1 };
428
      float[][] centers = { { 0.0f, -1.0f, -1.0f } };
429 84a17011 Leszek Koltunski
      return FactoryCubit.generateVertexEffect(vertices,corners,indices,centers,indices);
430 3543d0dc Leszek Koltunski
      }
431
    else if( variant==3 )
432
      {
433 84a17011 Leszek Koltunski
      float[][] vertices= getVertices(variant);
434 3543d0dc Leszek Koltunski
      float[][] corners = { {0.04f,0.09f} };
435
      int[] indices     = { 0,0,0,0,-1,-1 };
436
      float[][] centers = { { 1.0f, -1.0f, 0.0f } };
437 84a17011 Leszek Koltunski
      return FactoryCubit.generateVertexEffect(vertices,corners,indices,centers,indices);
438 3543d0dc Leszek Koltunski
      }
439
    else if( variant==4 )
440
      {
441 84a17011 Leszek Koltunski
      float[][] vertices= getVertices(variant);
442 3543d0dc Leszek Koltunski
      float[][] corners = { {0.03f,0.08f} };
443
      int[] indices     = { 0,0,0,0,-1 };
444
      float[][] centers = { { -1.0f, -1.0f, 1.0f } };
445 84a17011 Leszek Koltunski
      return FactoryCubit.generateVertexEffect(vertices,corners,indices,centers,indices);
446 3543d0dc Leszek Koltunski
      }
447 500896d3 Leszek Koltunski
    else
448
      {
449 84a17011 Leszek Koltunski
      float[][] vertices= getVertices(variant);
450 500896d3 Leszek Koltunski
      float[][] corners = { {0.04f,0.12f} };
451 3543d0dc Leszek Koltunski
      int[] indices     = { 0,0,0,-1 };
452
      float[][] centers = { { 1.0f/3, -2.0f/3,-1.0f/3 } };
453 84a17011 Leszek Koltunski
      return FactoryCubit.generateVertexEffect(vertices,corners,indices,centers,indices);
454 500896d3 Leszek Koltunski
      }
455
    }
456
457
///////////////////////////////////////////////////////////////////////////////////////////////////
458
459
  public int getNumCubitVariants(int[] numLayers)
460
    {
461 3543d0dc Leszek Koltunski
    return 6;
462 500896d3 Leszek Koltunski
    }
463
464
///////////////////////////////////////////////////////////////////////////////////////////////////
465
466
  public int getCubitVariant(int cubit, int[] numLayers)
467
    {
468 e29d5c29 Leszek Koltunski
    if( cubit<6 ) return 0;
469
    if( cubit<12) return 1;
470
    if( cubit<15) return 2;
471
    if( cubit<18) return 3;
472
    if( cubit<20) return 4;
473
474
    return 5;
475 500896d3 Leszek Koltunski
    }
476
477
///////////////////////////////////////////////////////////////////////////////////////////////////
478
479
  public float getStickerRadius()
480
    {
481
    return 0.13f;
482
    }
483
484
///////////////////////////////////////////////////////////////////////////////////////////////////
485
486
  public float getStickerStroke()
487
    {
488 3bf19410 Leszek Koltunski
    return isInIconMode() ? 0.22f : 0.10f;
489 500896d3 Leszek Koltunski
    }
490
491
///////////////////////////////////////////////////////////////////////////////////////////////////
492
493
  public float[][] getStickerAngles()
494
    {
495
    return null;
496
    }
497
498
///////////////////////////////////////////////////////////////////////////////////////////////////
499
// PUBLIC API
500
501
  public Static3D[] getRotationAxis()
502
    {
503
    return ROT_AXIS;
504
    }
505
506
///////////////////////////////////////////////////////////////////////////////////////////////////
507
508 5f54927b Leszek Koltunski
  public String getShortName()
509 500896d3 Leszek Koltunski
    {
510 5f54927b Leszek Koltunski
    return ObjectType.AXIS_3.name();
511 500896d3 Leszek Koltunski
    }
512
513
///////////////////////////////////////////////////////////////////////////////////////////////////
514
515 1d581993 Leszek Koltunski
  public ObjectSignature getSignature()
516 500896d3 Leszek Koltunski
    {
517 2dffaf22 Leszek Koltunski
    return new ObjectSignature(ObjectSignatures.AXIS_3);
518 5f54927b Leszek Koltunski
    }
519
520
///////////////////////////////////////////////////////////////////////////////////////////////////
521
522 beee90ab Leszek Koltunski
  public int[][] getBasicAngles()
523 5f54927b Leszek Koltunski
    {
524 beee90ab Leszek Koltunski
    if( mBasicAngle ==null )
525
      {
526
      int num = getNumLayers()[0];
527
      int[] tmp = new int[num];
528
      for(int i=0; i<num; i++) tmp[i] = 4;
529
      mBasicAngle = new int[][] { tmp,tmp,tmp };
530
      }
531
532 5f54927b Leszek Koltunski
    return mBasicAngle;
533 500896d3 Leszek Koltunski
    }
534
535
///////////////////////////////////////////////////////////////////////////////////////////////////
536
537
  public String getObjectName()
538
    {
539
    return "Axis Cube";
540
    }
541
542
///////////////////////////////////////////////////////////////////////////////////////////////////
543
544
  public String getInventor()
545
    {
546
    return "Aleh Hladzilin";
547
    }
548
549
///////////////////////////////////////////////////////////////////////////////////////////////////
550
551
  public int getYearOfInvention()
552
    {
553
    return 2008;
554
    }
555
556
///////////////////////////////////////////////////////////////////////////////////////////////////
557
558
  public int getComplexity()
559
    {
560
    return 2;
561
    }
562
563
///////////////////////////////////////////////////////////////////////////////////////////////////
564
565
  public String[][] getTutorials()
566
    {
567
    return new String[][]{
568
                          {"gb","DdYBkV07WpM","How to Solve the Axis Cube","Z3"},
569
                          {"es","oLWCj8-6G4Q","Resolver Axis Cube","Cuby"},
570
                          {"ru","pgPtyD7DV7A","Как собрать Аксис Куб","Алексей Ярыгин"},
571
                          {"fr","4M7cOgjZHSY","Résolution de l'Axis Cube","asthalis"},
572
                          {"de","CVPII1-sEqw","Axis Cube Tutorial","Pezcraft"},
573
                          {"pl","Yrmq0m4vjfE","Axis Cube TUTORIAL PL","MrUk"},
574
                          {"br","5HoM4_fQOM8","Como resolver o axis cube ","Gabriel Sihnel"},
575
                          {"kr","8KjHoNOGWLE","엑시스 큐브 해법","듀나메스 큐브 해법연구소"},
576 a399e91b Leszek Koltunski
                          {"vn","ESdOqn7Tikg","Tutorial N.17 - Axis Cube","Duy Thích Rubik"},
577 500896d3 Leszek Koltunski
                         };
578
    }
579
}