Project

General

Profile

Download (17.6 KB) Statistics
| Branch: | Tag: | Revision:

magiccube / src / main / java / org / distorted / objects / ObjectList.java @ 673d7b24

1 27a70eae Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
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 1f9772f3 Leszek Koltunski
package org.distorted.objects;
21 27a70eae Leszek Koltunski
22 ccf9fec5 Leszek Koltunski
import android.content.res.Resources;
23
24 27a70eae Leszek Koltunski
import org.distorted.library.main.DistortedEffects;
25
import org.distorted.library.main.DistortedTexture;
26 efa8aa48 Leszek Koltunski
import org.distorted.library.mesh.MeshSquare;
27 27a70eae Leszek Koltunski
import org.distorted.library.type.Static4D;
28 1f9772f3 Leszek Koltunski
import org.distorted.main.R;
29 f6a9c538 Leszek Koltunski
import org.distorted.main.RubikActivity;
30 27a70eae Leszek Koltunski
31 20931cf6 Leszek Koltunski
import java.lang.reflect.Field;
32
33 27a70eae Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
34
35 9c2f0c91 Leszek Koltunski
public enum ObjectList
36 27a70eae Leszek Koltunski
  {
37 4c0cd600 Leszek Koltunski
  CUBE (
38
         new int[][] {
39 31a9f38d Leszek Koltunski
                       {2 , 12, R.raw.cube2, R.drawable.ui_small_cube2, R.drawable.ui_medium_cube2, R.drawable.ui_big_cube2, R.drawable.ui_huge_cube2} ,
40
                       {3 , 16, R.raw.cube3, R.drawable.ui_small_cube3, R.drawable.ui_medium_cube3, R.drawable.ui_big_cube3, R.drawable.ui_huge_cube3} ,
41
                       {4 , 20, R.raw.cube4, R.drawable.ui_small_cube4, R.drawable.ui_medium_cube4, R.drawable.ui_big_cube4, R.drawable.ui_huge_cube4} ,
42
                       {5 , 24, R.raw.cube5, R.drawable.ui_small_cube5, R.drawable.ui_medium_cube5, R.drawable.ui_big_cube5, R.drawable.ui_huge_cube5}
43 4c0cd600 Leszek Koltunski
                     },
44 9c2f0c91 Leszek Koltunski
         TwistyCube.class,
45 ca3300c3 Leszek Koltunski
         new MovementCube(),
46 fa679111 Leszek Koltunski
         0
47 4c0cd600 Leszek Koltunski
       ),
48
49
  PYRA (
50
         new int[][] {
51 31a9f38d Leszek Koltunski
                       {3 , 10, R.raw.pyra3, R.drawable.ui_small_pyra3, R.drawable.ui_medium_pyra3, R.drawable.ui_big_pyra3, R.drawable.ui_huge_pyra3} ,
52
                       {4 , 15, R.raw.pyra4, R.drawable.ui_small_pyra4, R.drawable.ui_medium_pyra4, R.drawable.ui_big_pyra4, R.drawable.ui_huge_pyra4} ,
53
                       {5 , 20, R.raw.pyra5, R.drawable.ui_small_pyra5, R.drawable.ui_medium_pyra5, R.drawable.ui_big_pyra5, R.drawable.ui_huge_pyra5}
54 4c0cd600 Leszek Koltunski
                     },
55 9c2f0c91 Leszek Koltunski
         TwistyPyraminx.class,
56 ca3300c3 Leszek Koltunski
         new MovementPyraminx(),
57 fa679111 Leszek Koltunski
         1
58 4c0cd600 Leszek Koltunski
       ),
59 418aa554 Leszek Koltunski
60 ece1b58d Leszek Koltunski
  DIAM (
61
         new int[][] {
62 30fdccf8 Leszek Koltunski
                       {2 , 10, R.raw.diamond, R.drawable.ui_small_diam, R.drawable.ui_medium_diam, R.drawable.ui_big_diam, R.drawable.ui_huge_diam} ,
63 ece1b58d Leszek Koltunski
                     },
64 9c2f0c91 Leszek Koltunski
         TwistyDiamond.class,
65 ca3300c3 Leszek Koltunski
         new MovementDiamond(),
66 ece1b58d Leszek Koltunski
         1
67
       ),
68
69 418aa554 Leszek Koltunski
  DINO (
70
         new int[][] {
71 f05807f7 Leszek Koltunski
                       {3 , 10, R.raw.dino, R.drawable.ui_small_dino, R.drawable.ui_medium_dino, R.drawable.ui_big_dino, R.drawable.ui_huge_dino} ,
72 418aa554 Leszek Koltunski
                     },
73 9c2f0c91 Leszek Koltunski
         TwistyDino6.class,
74 ca3300c3 Leszek Koltunski
         new MovementDino(),
75 eaee1ddc Leszek Koltunski
         2
76
       ),
77
78
  DIN4 (
79
         new int[][] {
80
                       {3 ,  7, R.raw.dino, R.drawable.ui_small_din4, R.drawable.ui_medium_din4, R.drawable.ui_big_din4, R.drawable.ui_huge_din4} ,
81
                     },
82 9c2f0c91 Leszek Koltunski
         TwistyDino4.class,
83 ca3300c3 Leszek Koltunski
         new MovementDino(),
84 fa679111 Leszek Koltunski
         2
85 418aa554 Leszek Koltunski
       ),
86 fb52fae9 Leszek Koltunski
87 b96a79ff Leszek Koltunski
  REDI (
88 ee35e63c Leszek Koltunski
         new int[][] {
89 b96a79ff Leszek Koltunski
                       {3 , 14, R.raw.redi, R.drawable.ui_small_redi, R.drawable.ui_medium_redi, R.drawable.ui_big_redi, R.drawable.ui_huge_redi} ,
90 ee35e63c Leszek Koltunski
                     },
91 b96a79ff Leszek Koltunski
         TwistyRedi.class,
92
         new MovementRedi(),
93 ee35e63c Leszek Koltunski
         2
94
       ),
95 68f6046c Leszek Koltunski
96 b96a79ff Leszek Koltunski
  HELI (
97 68f6046c Leszek Koltunski
         new int[][] {
98 b96a79ff Leszek Koltunski
                       {3 , 18, R.raw.heli, R.drawable.ui_small_heli, R.drawable.ui_medium_heli, R.drawable.ui_big_heli, R.drawable.ui_huge_heli} ,
99 68f6046c Leszek Koltunski
                     },
100 b96a79ff Leszek Koltunski
         TwistyHelicopter.class,
101
         new MovementHelicopter(),
102 3f3ff476 Leszek Koltunski
         2
103
       ),
104
105
  SKEW (
106
         new int[][] {
107
                       {2 , 11, R.raw.skewb, R.drawable.ui_small_skewb, R.drawable.ui_medium_skewb, R.drawable.ui_big_skewb, R.drawable.ui_huge_skewb} ,
108 e51599f4 Leszek Koltunski
                       {3 , 17, R.raw.skewm, R.drawable.ui_small_skewm, R.drawable.ui_medium_skewm, R.drawable.ui_big_skewm, R.drawable.ui_huge_skewm} ,
109 3f3ff476 Leszek Koltunski
                     },
110
         TwistySkewb.class,
111
         new MovementSkewb(),
112 68f6046c Leszek Koltunski
         3
113
       ),
114 49cd8581 Leszek Koltunski
115 bbc6da6c Leszek Koltunski
  IVY  (
116 49cd8581 Leszek Koltunski
         new int[][] {
117 d73de3db Leszek Koltunski
                       {2 , 8, R.raw.ivy, R.drawable.ui_small_ivy, R.drawable.ui_medium_ivy, R.drawable.ui_big_ivy, R.drawable.ui_huge_ivy} ,
118 49cd8581 Leszek Koltunski
                     },
119
         TwistyIvy.class,
120
         new MovementIvy(),
121
         3
122
       ),
123 59b87d56 Leszek Koltunski
124 bbc6da6c Leszek Koltunski
  REX  (
125 59b87d56 Leszek Koltunski
         new int[][] {
126 03aa05d5 Leszek Koltunski
                       {3 , 16, R.raw.rex, R.drawable.ui_small_rex, R.drawable.ui_medium_rex, R.drawable.ui_big_rex, R.drawable.ui_huge_rex} ,
127 59b87d56 Leszek Koltunski
                     },
128
         TwistyRex.class,
129
         new MovementRex(),
130
         3
131
       ),
132 bbc6da6c Leszek Koltunski
133 14fe8a07 Leszek Koltunski
  KILO (
134 bbc6da6c Leszek Koltunski
         new int[][] {
135 fa806818 Leszek Koltunski
                       {3 , 18, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
136 bbc6da6c Leszek Koltunski
                     },
137 fa806818 Leszek Koltunski
         TwistyKilominx.class,
138 a64e07d0 Leszek Koltunski
         new MovementMinx(),
139
         4
140
       ),
141
142
  MEGA (
143
         new int[][] {
144 673d7b24 Leszek Koltunski
                       {3 , 21, R.raw.kilo3, R.drawable.ui_small_mega3, R.drawable.ui_medium_mega3, R.drawable.ui_big_mega3, R.drawable.ui_huge_mega3} ,
145
                       {5 , 25, R.raw.kilo3, R.drawable.ui_small_mega5, R.drawable.ui_medium_mega5, R.drawable.ui_big_mega5, R.drawable.ui_huge_mega5} ,
146 a64e07d0 Leszek Koltunski
                     },
147
         TwistyMegaminx.class,
148
         new MovementMinx(),
149 bbc6da6c Leszek Koltunski
         4
150
       ),
151 27a70eae Leszek Koltunski
  ;
152
153 4888e97c Leszek Koltunski
  public static final int NUM_OBJECTS = values().length;
154 8cccfb10 Leszek Koltunski
  public static final int MAX_NUM_OBJECTS;
155 8e3898c8 Leszek Koltunski
  public static final int MAX_LEVEL;
156 8cccfb10 Leszek Koltunski
  public static final int MAX_OBJECT_SIZE;
157 4888e97c Leszek Koltunski
158 31a9f38d Leszek Koltunski
  private final int[] mObjectSizes, mMaxLevels, mSmallIconIDs, mMediumIconIDs, mBigIconIDs, mHugeIconIDs, mResourceIDs;
159 9c2f0c91 Leszek Koltunski
  private final Class<? extends TwistyObject> mObjectClass;
160 ca3300c3 Leszek Koltunski
  private final Movement mObjectMovementClass;
161 fa679111 Leszek Koltunski
  private final int mColumn, mNumSizes;
162
163 9c2f0c91 Leszek Koltunski
  private static final ObjectList[] objects;
164 4888e97c Leszek Koltunski
  private static int mNumAll;
165 e07c48a2 Leszek Koltunski
  private static int[] mIndices;
166 fa679111 Leszek Koltunski
  private static int mColCount, mRowCount;
167 27a70eae Leszek Koltunski
168
  static
169
    {
170 4888e97c Leszek Koltunski
    mNumAll = 0;
171 8cccfb10 Leszek Koltunski
    int num, i = 0;
172 9c2f0c91 Leszek Koltunski
    objects = new ObjectList[NUM_OBJECTS];
173 8cccfb10 Leszek Koltunski
    int maxNum  = Integer.MIN_VALUE;
174
    int maxLevel= Integer.MIN_VALUE;
175
    int maxSize = Integer.MIN_VALUE;
176 27a70eae Leszek Koltunski
177 9c2f0c91 Leszek Koltunski
    for(ObjectList object: ObjectList.values())
178 27a70eae Leszek Koltunski
      {
179 4888e97c Leszek Koltunski
      objects[i] = object;
180 27a70eae Leszek Koltunski
      i++;
181 8cccfb10 Leszek Koltunski
      num = object.mObjectSizes.length;
182
      mNumAll += num;
183
      if( num> maxNum ) maxNum = num;
184 8e3898c8 Leszek Koltunski
185 8cccfb10 Leszek Koltunski
      for(int j=0; j<num; j++)
186 8e3898c8 Leszek Koltunski
        {
187
        if( object.mMaxLevels[j] > maxLevel ) maxLevel = object.mMaxLevels[j];
188 8cccfb10 Leszek Koltunski
        if( object.mObjectSizes[j] > maxSize) maxSize  = object.mObjectSizes[j];
189 8e3898c8 Leszek Koltunski
        }
190 27a70eae Leszek Koltunski
      }
191 4888e97c Leszek Koltunski
192 8cccfb10 Leszek Koltunski
    MAX_NUM_OBJECTS = maxNum;
193
    MAX_LEVEL       = maxLevel;
194
    MAX_OBJECT_SIZE = maxSize;
195 27a70eae Leszek Koltunski
    }
196
197 e07c48a2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
198 fa679111 Leszek Koltunski
199
  private static void setUpColAndRow()
200
    {
201
    mIndices = new int[NUM_OBJECTS];
202
    mColCount= 0;
203
204
    for(int obj=0; obj<NUM_OBJECTS; obj++)
205
      {
206
      mIndices[obj] = objects[obj].mColumn;
207
      if( mIndices[obj]>=mColCount ) mColCount = mIndices[obj]+1;
208
      }
209
210
    mRowCount = 0;
211
212
    for(int col=0; col<mColCount; col++)
213
      {
214
      int numObjects = computeNumObjectsInColumn(col);
215
      if( numObjects>mRowCount ) mRowCount = numObjects;
216
      }
217
    }
218
219
///////////////////////////////////////////////////////////////////////////////////////////////////
220
221
  private static int computeNumObjectsInColumn(int column)
222
    {
223
    int num=0;
224
225
    for(int object=0; object<NUM_OBJECTS; object++)
226
      {
227
      if( objects[object].mColumn == column )
228
        {
229
        num += objects[object].mNumSizes;
230
        }
231
      }
232
233
    return num;
234
    }
235
236
///////////////////////////////////////////////////////////////////////////////////////////////////
237
238 e07c48a2 Leszek Koltunski
  public static int getColumnCount()
239
    {
240 fa679111 Leszek Koltunski
    if( mIndices==null ) setUpColAndRow();
241
242
    return mColCount;
243 e07c48a2 Leszek Koltunski
    }
244
245
///////////////////////////////////////////////////////////////////////////////////////////////////
246 fa679111 Leszek Koltunski
247 e07c48a2 Leszek Koltunski
  public static int getRowCount()
248
    {
249 fa679111 Leszek Koltunski
    if( mIndices==null ) setUpColAndRow();
250
251
    return mRowCount;
252 e07c48a2 Leszek Koltunski
    }
253
254
///////////////////////////////////////////////////////////////////////////////////////////////////
255 fa679111 Leszek Koltunski
256 e07c48a2 Leszek Koltunski
  public static int[] getIndices()
257
    {
258 fa679111 Leszek Koltunski
    if( mIndices==null ) setUpColAndRow();
259
260 e07c48a2 Leszek Koltunski
    return mIndices;
261
    }
262
263 27a70eae Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
264
265 9c2f0c91 Leszek Koltunski
  public static ObjectList getObject(int ordinal)
266 27a70eae Leszek Koltunski
    {
267 7ec268b1 Leszek Koltunski
    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal] : CUBE;
268 27a70eae Leszek Koltunski
    }
269
270
///////////////////////////////////////////////////////////////////////////////////////////////////
271
272 b498f3f6 Leszek Koltunski
  public static int pack(int object, int sizeIndex)
273 4888e97c Leszek Koltunski
    {
274
    int ret = 0;
275
    for(int i=0; i<object; i++) ret += objects[i].mObjectSizes.length;
276
277 b498f3f6 Leszek Koltunski
    return ret+sizeIndex;
278 4888e97c Leszek Koltunski
    }
279
280
///////////////////////////////////////////////////////////////////////////////////////////////////
281
282 8e3898c8 Leszek Koltunski
  public static int unpackSizeIndex(int number)
283 4888e97c Leszek Koltunski
    {
284
    int num;
285
286
    for(int i=0; i<NUM_OBJECTS; i++)
287
      {
288
      num = objects[i].mObjectSizes.length;
289
      if( number<num ) return number;
290
      number -= num;
291
      }
292
293
    return -1;
294
    }
295
296
///////////////////////////////////////////////////////////////////////////////////////////////////
297
298
  public static int unpackObject(int number)
299 27a70eae Leszek Koltunski
    {
300 4888e97c Leszek Koltunski
    int num;
301
302
    for(int i=0; i<NUM_OBJECTS; i++)
303
      {
304
      num = objects[i].mObjectSizes.length;
305
      if( number<num ) return i;
306
      number -= num;
307
      }
308
309
    return -1;
310
    }
311
312 286d73ae Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
313
314
  public static int unpackObjectFromString(String obj)
315
    {
316
    int u = obj.indexOf('_');
317
    int l = obj.length();
318
319
    if( u>0 )
320
      {
321
      String name = obj.substring(0,u);
322
      int size = Integer.parseInt( obj.substring(u+1,l) );
323
324
      for(int i=0; i<NUM_OBJECTS; i++)
325
        {
326
        if( objects[i].name().equals(name) )
327
          {
328 53f23b64 Leszek Koltunski
          int sizeIndex = getSizeIndex(i,size);
329
          return pack(i,sizeIndex);
330 286d73ae Leszek Koltunski
          }
331
        }
332
      }
333
334
    return -1;
335
    }
336
337
///////////////////////////////////////////////////////////////////////////////////////////////////
338
339
  public static String getObjectList()
340
    {
341
    String name;
342
    StringBuilder list = new StringBuilder();
343
    int len;
344
    int[] sizes;
345
346
    for(int i=0; i<NUM_OBJECTS; i++)
347
      {
348
      sizes = objects[i].mObjectSizes;
349
      len   = sizes.length;
350
      name  = objects[i].name();
351
352
      for(int j=0; j<len; j++)
353
        {
354
        if( i>0 || j>0 ) list.append(',');
355
        list.append(name);
356
        list.append('_');
357
        list.append(sizes[j]);
358
        }
359
      }
360
361
    return list.toString();
362
    }
363
364 4888e97c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
365
366
  public static int getTotal()
367
    {
368
    return mNumAll;
369
    }
370
371 8e3898c8 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
372
373
  public static int getMaxLevel(int ordinal, int sizeIndex)
374
    {
375
    if( ordinal>=0 && ordinal<NUM_OBJECTS )
376
      {
377
      int num = objects[ordinal].mObjectSizes.length;
378
      return sizeIndex>=0 && sizeIndex<num ? objects[ordinal].mMaxLevels[sizeIndex] : 0;
379
      }
380
381
    return 0;
382
    }
383
384 c86f9f1f Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
385
386
  public static int getOrdinal(String name)
387
    {
388
    for(int i=0; i<NUM_OBJECTS; i++)
389
      {
390
      if(objects[i].name().equals(name)) return i;
391
      }
392
393
    return -1;
394
    }
395
396
///////////////////////////////////////////////////////////////////////////////////////////////////
397
398 53f23b64 Leszek Koltunski
  public static int getSizeIndex(int ordinal, int size)
399 c86f9f1f Leszek Koltunski
    {
400 7ec268b1 Leszek Koltunski
    if( ordinal>=0 && ordinal<NUM_OBJECTS )
401 c86f9f1f Leszek Koltunski
      {
402 7ec268b1 Leszek Koltunski
      int[] sizes = objects[ordinal].getSizes();
403
      int len = sizes.length;
404
405
      for(int i=0; i<len; i++)
406
        {
407
        if( sizes[i]==size ) return i;
408
        }
409 c86f9f1f Leszek Koltunski
      }
410
411
    return -1;
412
    }
413
414 4888e97c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
415
416 9c2f0c91 Leszek Koltunski
  public static int[] retFaceColors(ObjectList object)
417 20931cf6 Leszek Koltunski
    {
418
    Field field;
419
    int[] faceColors=null;
420
421
    try
422
      {
423
      field = object.mObjectClass.getDeclaredField("FACE_COLORS");
424
      field.setAccessible(true);
425
      Object obj = field.get(null);
426
      faceColors = (int[]) obj;
427
      }
428
    catch(NoSuchFieldException ex)
429
      {
430
      android.util.Log.e("RubikObjectList", object.mObjectClass.getSimpleName()+": no such field exception getting field: "+ex.getMessage());
431
      }
432
    catch(IllegalAccessException ex)
433
      {
434
      android.util.Log.e("RubikObjectList", object.mObjectClass.getSimpleName()+": illegal access exception getting field: "+ex.getMessage());
435
      }
436
437
    return faceColors;
438
    }
439
440
///////////////////////////////////////////////////////////////////////////////////////////////////
441
442 9c2f0c91 Leszek Koltunski
  ObjectList(int[][] info, Class<? extends TwistyObject> object , Movement movement, int column)
443 4888e97c Leszek Koltunski
    {
444 fa679111 Leszek Koltunski
    mNumSizes = info.length;
445 ea6ee91b Leszek Koltunski
446 fa679111 Leszek Koltunski
    mObjectSizes  = new int[mNumSizes];
447
    mMaxLevels    = new int[mNumSizes];
448
    mResourceIDs  = new int[mNumSizes];
449
    mSmallIconIDs = new int[mNumSizes];
450
    mMediumIconIDs= new int[mNumSizes];
451
    mBigIconIDs   = new int[mNumSizes];
452
    mHugeIconIDs  = new int[mNumSizes];
453 ea6ee91b Leszek Koltunski
454 fa679111 Leszek Koltunski
    for(int i=0; i<mNumSizes; i++)
455 ea6ee91b Leszek Koltunski
      {
456 f6a9c538 Leszek Koltunski
      mObjectSizes[i]  = info[i][0];
457
      mMaxLevels[i]    = info[i][1];
458
      mResourceIDs[i]  = info[i][2];
459
      mSmallIconIDs[i] = info[i][3];
460
      mMediumIconIDs[i]= info[i][4];
461
      mBigIconIDs[i]   = info[i][5];
462 31a9f38d Leszek Koltunski
      mHugeIconIDs[i]  = info[i][6];
463 ea6ee91b Leszek Koltunski
      }
464
465 20931cf6 Leszek Koltunski
    mObjectClass         = object;
466 27a70eae Leszek Koltunski
    mObjectMovementClass = movement;
467 fa679111 Leszek Koltunski
    mColumn              = column;
468 27a70eae Leszek Koltunski
    }
469
470
///////////////////////////////////////////////////////////////////////////////////////////////////
471
472 8e3898c8 Leszek Koltunski
  public int[] getSizes()
473 27a70eae Leszek Koltunski
    {
474 8e3898c8 Leszek Koltunski
    return mObjectSizes;
475 27a70eae Leszek Koltunski
    }
476
477
///////////////////////////////////////////////////////////////////////////////////////////////////
478
479 8e3898c8 Leszek Koltunski
  public int[] getMaxLevels()
480 4888e97c Leszek Koltunski
    {
481 8e3898c8 Leszek Koltunski
    return mMaxLevels;
482
    }
483
484
///////////////////////////////////////////////////////////////////////////////////////////////////
485
486
  public int[] getIconIDs()
487
    {
488 f6a9c538 Leszek Koltunski
    int size = RubikActivity.getDrawableSize();
489
490
    switch(size)
491
      {
492
      case 0 : return mSmallIconIDs;
493
      case 1 : return mMediumIconIDs;
494 31a9f38d Leszek Koltunski
      case 2 : return mBigIconIDs;
495
      default: return mHugeIconIDs;
496 f6a9c538 Leszek Koltunski
      }
497 4888e97c Leszek Koltunski
    }
498
499
///////////////////////////////////////////////////////////////////////////////////////////////////
500
501 ccf9fec5 Leszek Koltunski
  public int[] getResourceIDs()
502
    {
503
    return mResourceIDs;
504
    }
505
506 fbca0033 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
507
508
  public int getNumVariants()
509
    {
510
    return mObjectSizes.length;
511
    }
512
513 ccf9fec5 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
514
515 9c2f0c91 Leszek Koltunski
  public TwistyObject create(int size, Static4D quat, int[][] moves, Resources res, int scrWidth)
516 27a70eae Leszek Koltunski
    {
517 5974d2ae Leszek Koltunski
    DistortedTexture texture = new DistortedTexture();
518 36273130 Leszek Koltunski
    DistortedEffects effects = new DistortedEffects();
519 fb52fae9 Leszek Koltunski
    MeshSquare mesh          = new MeshSquare(20,20);   // mesh of the node, not of the cubits
520 74686c71 Leszek Koltunski
521 4888e97c Leszek Koltunski
    switch(ordinal())
522
      {
523 bbc6da6c Leszek Koltunski
      case  0: return new TwistyCube      (size, quat, texture, mesh, effects, moves, res, scrWidth);
524
      case  1: return new TwistyPyraminx  (size, quat, texture, mesh, effects, moves, res, scrWidth);
525
      case  2: return new TwistyDiamond   (size, quat, texture, mesh, effects, moves, res, scrWidth);
526
      case  3: return new TwistyDino6     (size, quat, texture, mesh, effects, moves, res, scrWidth);
527
      case  4: return new TwistyDino4     (size, quat, texture, mesh, effects, moves, res, scrWidth);
528
      case  5: return new TwistyRedi      (size, quat, texture, mesh, effects, moves, res, scrWidth);
529
      case  6: return new TwistyHelicopter(size, quat, texture, mesh, effects, moves, res, scrWidth);
530
      case  7: return new TwistySkewb     (size, quat, texture, mesh, effects, moves, res, scrWidth);
531
      case  8: return new TwistyIvy       (size, quat, texture, mesh, effects, moves, res, scrWidth);
532
      case  9: return new TwistyRex       (size, quat, texture, mesh, effects, moves, res, scrWidth);
533 fa806818 Leszek Koltunski
      case 10: return new TwistyKilominx  (size, quat, texture, mesh, effects, moves, res, scrWidth);
534 a64e07d0 Leszek Koltunski
      case 11: return new TwistyMegaminx  (size, quat, texture, mesh, effects, moves, res, scrWidth);
535 4888e97c Leszek Koltunski
      }
536
537
    return null;
538 27a70eae Leszek Koltunski
    }
539
540
///////////////////////////////////////////////////////////////////////////////////////////////////
541
542 ca3300c3 Leszek Koltunski
  public Movement getObjectMovementClass()
543 27a70eae Leszek Koltunski
    {
544 4888e97c Leszek Koltunski
    return mObjectMovementClass;
545 27a70eae Leszek Koltunski
    }
546
  }