Project

General

Profile

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

magiccube / src / main / java / org / distorted / objects / ObjectList.java @ 4ab3d91b

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
///////////////////////////////////////////////////////////////////////////////////////////////////
32
33 9c2f0c91 Leszek Koltunski
public enum ObjectList
34 27a70eae Leszek Koltunski
  {
35 0a7aa15b Leszek Koltunski
  ///////////////////// Size // DB Level // NumScrambles // Mesh // small icon // medium icon // big icon // huge icon
36
37 4c0cd600 Leszek Koltunski
  CUBE (
38
         new int[][] {
39 0a7aa15b Leszek Koltunski
                       {2 , 12, 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, 17, 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, 24, 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, 28, 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 96208efc Leszek Koltunski
         0
45 4c0cd600 Leszek Koltunski
       ),
46
47 df9739f8 Leszek Koltunski
  JING (
48 4c0cd600 Leszek Koltunski
         new int[][] {
49 d5ca9927 Leszek Koltunski
                       {2 , 11, 11, R.raw.jing, R.drawable.ui_small_jing2, R.drawable.ui_medium_jing2, R.drawable.ui_big_jing2, R.drawable.ui_huge_jing2} ,
50 4c0cd600 Leszek Koltunski
                     },
51 96208efc Leszek Koltunski
         1
52 4c0cd600 Leszek Koltunski
       ),
53 418aa554 Leszek Koltunski
54 df9739f8 Leszek Koltunski
  PYRA (
55 ece1b58d Leszek Koltunski
         new int[][] {
56 df9739f8 Leszek Koltunski
                       {3 , 10, 10, R.raw.pyra3, R.drawable.ui_small_pyra3, R.drawable.ui_medium_pyra3, R.drawable.ui_big_pyra3, R.drawable.ui_huge_pyra3} ,
57
                       {4 , 15, 17, R.raw.pyra4, R.drawable.ui_small_pyra4, R.drawable.ui_medium_pyra4, R.drawable.ui_big_pyra4, R.drawable.ui_huge_pyra4} ,
58
                       {5 , 20, 23, R.raw.pyra5, R.drawable.ui_small_pyra5, R.drawable.ui_medium_pyra5, R.drawable.ui_big_pyra5, R.drawable.ui_huge_pyra5}
59 ece1b58d Leszek Koltunski
                     },
60 96208efc Leszek Koltunski
         1
61 ece1b58d Leszek Koltunski
       ),
62
63 a207be5b Leszek Koltunski
  KILO (
64
         new int[][] {
65 0a7aa15b Leszek Koltunski
                       {3 , 18, 18, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
66
                       {5 , 33, 33, R.raw.kilo5, R.drawable.ui_small_kilo5, R.drawable.ui_medium_kilo5, R.drawable.ui_big_kilo5, R.drawable.ui_huge_kilo5} ,
67 a207be5b Leszek Koltunski
                     },
68 96208efc Leszek Koltunski
         2
69 a207be5b Leszek Koltunski
       ),
70
71
  MEGA (
72
         new int[][] {
73 0a7aa15b Leszek Koltunski
                       {3 , 21, 21, R.raw.mega3, R.drawable.ui_small_mega3, R.drawable.ui_medium_mega3, R.drawable.ui_big_mega3, R.drawable.ui_huge_mega3} ,
74
                       {5 , 35, 37, R.raw.mega5, R.drawable.ui_small_mega5, R.drawable.ui_medium_mega5, R.drawable.ui_big_mega5, R.drawable.ui_huge_mega5} ,
75 a207be5b Leszek Koltunski
                     },
76 96208efc Leszek Koltunski
         2
77 a207be5b Leszek Koltunski
       ),
78
79 8de56b9d Leszek Koltunski
  ULTI (
80
         new int[][] {
81
                       {2 , 18, 18, R.raw.ulti, R.drawable.ui_small_ulti, R.drawable.ui_medium_ulti, R.drawable.ui_big_ulti, R.drawable.ui_huge_ulti} ,
82
                     },
83 96208efc Leszek Koltunski
         3
84 8de56b9d Leszek Koltunski
       ),
85
86
  DIAM (
87
         new int[][] {
88
                       {2 , 10, 12, R.raw.diam2, R.drawable.ui_small_diam2, R.drawable.ui_medium_diam2, R.drawable.ui_big_diam2, R.drawable.ui_huge_diam2} ,
89
                       {3 , 18, 24, R.raw.diam3, R.drawable.ui_small_diam3, R.drawable.ui_medium_diam3, R.drawable.ui_big_diam3, R.drawable.ui_huge_diam3} ,
90 4de711ba Leszek Koltunski
                       {4 , 32, 32, R.raw.diam4, R.drawable.ui_small_diam4, R.drawable.ui_medium_diam4, R.drawable.ui_big_diam4, R.drawable.ui_huge_diam4} ,
91 8de56b9d Leszek Koltunski
                     },
92 96208efc Leszek Koltunski
         3
93 8de56b9d Leszek Koltunski
       ),
94
95 418aa554 Leszek Koltunski
  DINO (
96
         new int[][] {
97 0a7aa15b Leszek Koltunski
                       {3 , 10, 10, R.raw.dino, R.drawable.ui_small_dino, R.drawable.ui_medium_dino, R.drawable.ui_big_dino, R.drawable.ui_huge_dino} ,
98 418aa554 Leszek Koltunski
                     },
99 96208efc Leszek Koltunski
         4
100 eaee1ddc Leszek Koltunski
       ),
101
102
  DIN4 (
103
         new int[][] {
104 0a7aa15b Leszek Koltunski
                       {3 , 7, 7, R.raw.dino, R.drawable.ui_small_din4, R.drawable.ui_medium_din4, R.drawable.ui_big_din4, R.drawable.ui_huge_din4} ,
105 eaee1ddc Leszek Koltunski
                     },
106 96208efc Leszek Koltunski
         4
107 418aa554 Leszek Koltunski
       ),
108 fb52fae9 Leszek Koltunski
109 b96a79ff Leszek Koltunski
  REDI (
110 ee35e63c Leszek Koltunski
         new int[][] {
111 0a7aa15b Leszek Koltunski
                       {3 , 14, 16, R.raw.redi, R.drawable.ui_small_redi, R.drawable.ui_medium_redi, R.drawable.ui_big_redi, R.drawable.ui_huge_redi} ,
112 ee35e63c Leszek Koltunski
                     },
113 96208efc Leszek Koltunski
         4
114 ee35e63c Leszek Koltunski
       ),
115 68f6046c Leszek Koltunski
116 b96a79ff Leszek Koltunski
  HELI (
117 68f6046c Leszek Koltunski
         new int[][] {
118 0a7aa15b Leszek Koltunski
                       {3 , 18, 20, R.raw.heli, R.drawable.ui_small_heli, R.drawable.ui_medium_heli, R.drawable.ui_big_heli, R.drawable.ui_huge_heli} ,
119 68f6046c Leszek Koltunski
                     },
120 96208efc Leszek Koltunski
         4
121 3f3ff476 Leszek Koltunski
       ),
122
123
  SKEW (
124
         new int[][] {
125 0a7aa15b Leszek Koltunski
                       {2 , 11, 11, R.raw.skew2, R.drawable.ui_small_skewb, R.drawable.ui_medium_skewb, R.drawable.ui_big_skewb, R.drawable.ui_huge_skewb} ,
126
                       {3 , 17, 21, R.raw.skew3, R.drawable.ui_small_skewm, R.drawable.ui_medium_skewm, R.drawable.ui_big_skewm, R.drawable.ui_huge_skewm} ,
127 3f3ff476 Leszek Koltunski
                     },
128 96208efc Leszek Koltunski
         5
129 68f6046c Leszek Koltunski
       ),
130 49cd8581 Leszek Koltunski
131 bbc6da6c Leszek Koltunski
  IVY  (
132 49cd8581 Leszek Koltunski
         new int[][] {
133 46e6b3f6 Leszek Koltunski
                       {2 , 8, 8, R.raw.ivy, R.drawable.ui_small_ivy, R.drawable.ui_medium_ivy, R.drawable.ui_big_ivy, R.drawable.ui_huge_ivy} ,
134 49cd8581 Leszek Koltunski
                     },
135 96208efc Leszek Koltunski
         5
136 49cd8581 Leszek Koltunski
       ),
137 59b87d56 Leszek Koltunski
138 bbc6da6c Leszek Koltunski
  REX  (
139 59b87d56 Leszek Koltunski
         new int[][] {
140 0a7aa15b Leszek Koltunski
                       {3 , 16, 19, R.raw.rex, R.drawable.ui_small_rex, R.drawable.ui_medium_rex, R.drawable.ui_big_rex, R.drawable.ui_huge_rex} ,
141 59b87d56 Leszek Koltunski
                     },
142 96208efc Leszek Koltunski
         5
143 bbc6da6c Leszek Koltunski
       ),
144 4c0a6d97 Leszek Koltunski
145
  BAN1 (
146
         new int[][] {
147 0a7aa15b Leszek Koltunski
                       {3 , 16, 16, R.raw.ban1, R.drawable.ui_small_ban1, R.drawable.ui_medium_ban1, R.drawable.ui_big_ban1, R.drawable.ui_huge_ban1} ,
148 4c0a6d97 Leszek Koltunski
                     },
149 96208efc Leszek Koltunski
         6
150 4c0a6d97 Leszek Koltunski
       ),
151 538ee7a6 Leszek Koltunski
152
  BAN2 (
153
         new int[][] {
154 0a7aa15b Leszek Koltunski
                       {3 , 16, 16, R.raw.ban2, R.drawable.ui_small_ban2, R.drawable.ui_medium_ban2, R.drawable.ui_big_ban2, R.drawable.ui_huge_ban2} ,
155 538ee7a6 Leszek Koltunski
                     },
156 96208efc Leszek Koltunski
         6
157 538ee7a6 Leszek Koltunski
       ),
158
159
  BAN3 (
160
         new int[][] {
161 0a7aa15b Leszek Koltunski
                       {3 , 16, 16, R.raw.ban3, R.drawable.ui_small_ban3, R.drawable.ui_medium_ban3, R.drawable.ui_big_ban3, R.drawable.ui_huge_ban3} ,
162 538ee7a6 Leszek Koltunski
                     },
163 96208efc Leszek Koltunski
         6
164 538ee7a6 Leszek Koltunski
       ),
165
166
  BAN4 (
167
         new int[][] {
168 0a7aa15b Leszek Koltunski
                       {3 , 16, 16, R.raw.ban4, R.drawable.ui_small_ban4, R.drawable.ui_medium_ban4, R.drawable.ui_big_ban4, R.drawable.ui_huge_ban4} ,
169 538ee7a6 Leszek Koltunski
                     },
170 96208efc Leszek Koltunski
         6
171 bc649d9a Leszek Koltunski
       ),
172 834b2618 Leszek Koltunski
173
  SQU1 (
174
         new int[][] {
175 0a7aa15b Leszek Koltunski
                       {3 , 24, 24, R.raw.square1, R.drawable.ui_small_square1, R.drawable.ui_medium_square1, R.drawable.ui_big_square1, R.drawable.ui_huge_square1} ,
176 834b2618 Leszek Koltunski
                     },
177 96208efc Leszek Koltunski
         7
178 834b2618 Leszek Koltunski
       ),
179 e2b9e87e Leszek Koltunski
180
  SQU2 (
181
         new int[][] {
182 0a7aa15b Leszek Koltunski
                       {3 , 24, 24, R.raw.square2, R.drawable.ui_small_square2, R.drawable.ui_medium_square2, R.drawable.ui_big_square2, R.drawable.ui_huge_square2} ,
183 e2b9e87e Leszek Koltunski
                     },
184 96208efc Leszek Koltunski
         7
185 e2b9e87e Leszek Koltunski
       ),
186 df9739f8 Leszek Koltunski
187 abf36986 Leszek Koltunski
  MIRR (
188
         new int[][] {
189 0e505360 Leszek Koltunski
                       {2 , 12, 12, R.raw.mirr2, R.drawable.ui_small_mirr2, R.drawable.ui_medium_mirr2, R.drawable.ui_big_mirr2, R.drawable.ui_huge_mirr2} ,
190
                       {3 , 16, 17, R.raw.mirr3, R.drawable.ui_small_mirr3, R.drawable.ui_medium_mirr3, R.drawable.ui_big_mirr3, R.drawable.ui_huge_mirr3} ,
191 abf36986 Leszek Koltunski
                     },
192 96208efc Leszek Koltunski
         7
193 abf36986 Leszek Koltunski
       ),
194 27a70eae Leszek Koltunski
  ;
195
196 4888e97c Leszek Koltunski
  public static final int NUM_OBJECTS = values().length;
197 8cccfb10 Leszek Koltunski
  public static final int MAX_NUM_OBJECTS;
198 8e3898c8 Leszek Koltunski
  public static final int MAX_LEVEL;
199 0a7aa15b Leszek Koltunski
  public static final int MAX_SCRAMBLE;
200 8cccfb10 Leszek Koltunski
  public static final int MAX_OBJECT_SIZE;
201 4888e97c Leszek Koltunski
202 0a7aa15b Leszek Koltunski
  private final int[] mObjectSizes, mDBLevels, mNumScrambles, mSmallIconIDs, mMediumIconIDs, mBigIconIDs, mHugeIconIDs, mResourceIDs;
203 0501a4b8 Leszek Koltunski
  private final int mRow, mNumSizes;
204 fa679111 Leszek Koltunski
205 9c2f0c91 Leszek Koltunski
  private static final ObjectList[] objects;
206 4888e97c Leszek Koltunski
  private static int mNumAll;
207 e07c48a2 Leszek Koltunski
  private static int[] mIndices;
208 fa679111 Leszek Koltunski
  private static int mColCount, mRowCount;
209 27a70eae Leszek Koltunski
210
  static
211
    {
212 4888e97c Leszek Koltunski
    mNumAll = 0;
213 8cccfb10 Leszek Koltunski
    int num, i = 0;
214 9c2f0c91 Leszek Koltunski
    objects = new ObjectList[NUM_OBJECTS];
215 0a7aa15b Leszek Koltunski
    int maxNum     = Integer.MIN_VALUE;
216
    int maxLevel   = Integer.MIN_VALUE;
217
    int maxScramble= Integer.MIN_VALUE;
218
    int maxSize    = Integer.MIN_VALUE;
219 27a70eae Leszek Koltunski
220 9c2f0c91 Leszek Koltunski
    for(ObjectList object: ObjectList.values())
221 27a70eae Leszek Koltunski
      {
222 4888e97c Leszek Koltunski
      objects[i] = object;
223 27a70eae Leszek Koltunski
      i++;
224 8cccfb10 Leszek Koltunski
      num = object.mObjectSizes.length;
225
      mNumAll += num;
226
      if( num> maxNum ) maxNum = num;
227 8e3898c8 Leszek Koltunski
228 8cccfb10 Leszek Koltunski
      for(int j=0; j<num; j++)
229 8e3898c8 Leszek Koltunski
        {
230 0a7aa15b Leszek Koltunski
        if( object.mNumScrambles[j]> maxScramble ) maxScramble= object.mNumScrambles[j];
231
        if( object.mDBLevels[j]    > maxLevel    ) maxLevel   = object.mDBLevels[j];
232
        if( object.mObjectSizes[j] > maxSize     ) maxSize    = object.mObjectSizes[j];
233 8e3898c8 Leszek Koltunski
        }
234 27a70eae Leszek Koltunski
      }
235 4888e97c Leszek Koltunski
236 8cccfb10 Leszek Koltunski
    MAX_NUM_OBJECTS = maxNum;
237
    MAX_LEVEL       = maxLevel;
238 0a7aa15b Leszek Koltunski
    MAX_SCRAMBLE    = maxScramble;
239 8cccfb10 Leszek Koltunski
    MAX_OBJECT_SIZE = maxSize;
240 27a70eae Leszek Koltunski
    }
241
242 e07c48a2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
243 fa679111 Leszek Koltunski
244
  private static void setUpColAndRow()
245
    {
246
    mIndices = new int[NUM_OBJECTS];
247 0501a4b8 Leszek Koltunski
    mRowCount= 0;
248 fa679111 Leszek Koltunski
249
    for(int obj=0; obj<NUM_OBJECTS; obj++)
250
      {
251 0501a4b8 Leszek Koltunski
      mIndices[obj] = objects[obj].mRow;
252
      if( mIndices[obj]>=mRowCount ) mRowCount = mIndices[obj]+1;
253 fa679111 Leszek Koltunski
      }
254
255 0501a4b8 Leszek Koltunski
    mColCount = 0;
256 fa679111 Leszek Koltunski
257 0501a4b8 Leszek Koltunski
    for(int row=0; row<mRowCount; row++)
258 fa679111 Leszek Koltunski
      {
259 0501a4b8 Leszek Koltunski
      int numObjects = computeNumObjectsInRow(row);
260
      if( numObjects>mColCount ) mColCount = numObjects;
261 fa679111 Leszek Koltunski
      }
262
    }
263
264
///////////////////////////////////////////////////////////////////////////////////////////////////
265
266 0501a4b8 Leszek Koltunski
  private static int computeNumObjectsInRow(int row)
267 fa679111 Leszek Koltunski
    {
268
    int num=0;
269
270
    for(int object=0; object<NUM_OBJECTS; object++)
271
      {
272 0501a4b8 Leszek Koltunski
      if( objects[object].mRow == row )
273 fa679111 Leszek Koltunski
        {
274
        num += objects[object].mNumSizes;
275
        }
276
      }
277
278
    return num;
279
    }
280
281
///////////////////////////////////////////////////////////////////////////////////////////////////
282
283 e07c48a2 Leszek Koltunski
  public static int getColumnCount()
284
    {
285 fa679111 Leszek Koltunski
    if( mIndices==null ) setUpColAndRow();
286
287
    return mColCount;
288 e07c48a2 Leszek Koltunski
    }
289
290
///////////////////////////////////////////////////////////////////////////////////////////////////
291 fa679111 Leszek Koltunski
292 e07c48a2 Leszek Koltunski
  public static int getRowCount()
293
    {
294 fa679111 Leszek Koltunski
    if( mIndices==null ) setUpColAndRow();
295
296
    return mRowCount;
297 e07c48a2 Leszek Koltunski
    }
298
299
///////////////////////////////////////////////////////////////////////////////////////////////////
300 fa679111 Leszek Koltunski
301 e07c48a2 Leszek Koltunski
  public static int[] getIndices()
302
    {
303 fa679111 Leszek Koltunski
    if( mIndices==null ) setUpColAndRow();
304
305 e07c48a2 Leszek Koltunski
    return mIndices;
306
    }
307
308 27a70eae Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
309
310 9c2f0c91 Leszek Koltunski
  public static ObjectList getObject(int ordinal)
311 27a70eae Leszek Koltunski
    {
312 7ec268b1 Leszek Koltunski
    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal] : CUBE;
313 27a70eae Leszek Koltunski
    }
314
315
///////////////////////////////////////////////////////////////////////////////////////////////////
316
317 b498f3f6 Leszek Koltunski
  public static int pack(int object, int sizeIndex)
318 4888e97c Leszek Koltunski
    {
319
    int ret = 0;
320
    for(int i=0; i<object; i++) ret += objects[i].mObjectSizes.length;
321
322 b498f3f6 Leszek Koltunski
    return ret+sizeIndex;
323 4888e97c Leszek Koltunski
    }
324
325
///////////////////////////////////////////////////////////////////////////////////////////////////
326
327 8e3898c8 Leszek Koltunski
  public static int unpackSizeIndex(int number)
328 4888e97c Leszek Koltunski
    {
329
    int num;
330
331
    for(int i=0; i<NUM_OBJECTS; i++)
332
      {
333
      num = objects[i].mObjectSizes.length;
334
      if( number<num ) return number;
335
      number -= num;
336
      }
337
338
    return -1;
339
    }
340
341
///////////////////////////////////////////////////////////////////////////////////////////////////
342
343
  public static int unpackObject(int number)
344 27a70eae Leszek Koltunski
    {
345 4888e97c Leszek Koltunski
    int num;
346
347
    for(int i=0; i<NUM_OBJECTS; i++)
348
      {
349
      num = objects[i].mObjectSizes.length;
350
      if( number<num ) return i;
351
      number -= num;
352
      }
353
354
    return -1;
355
    }
356
357 286d73ae Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
358
359
  public static int unpackObjectFromString(String obj)
360
    {
361
    int u = obj.indexOf('_');
362
    int l = obj.length();
363
364
    if( u>0 )
365
      {
366
      String name = obj.substring(0,u);
367
      int size = Integer.parseInt( obj.substring(u+1,l) );
368
369
      for(int i=0; i<NUM_OBJECTS; i++)
370
        {
371
        if( objects[i].name().equals(name) )
372
          {
373 53f23b64 Leszek Koltunski
          int sizeIndex = getSizeIndex(i,size);
374
          return pack(i,sizeIndex);
375 286d73ae Leszek Koltunski
          }
376
        }
377
      }
378
379
    return -1;
380
    }
381
382
///////////////////////////////////////////////////////////////////////////////////////////////////
383
384
  public static String getObjectList()
385
    {
386
    String name;
387
    StringBuilder list = new StringBuilder();
388
    int len;
389
    int[] sizes;
390
391
    for(int i=0; i<NUM_OBJECTS; i++)
392
      {
393
      sizes = objects[i].mObjectSizes;
394
      len   = sizes.length;
395
      name  = objects[i].name();
396
397
      for(int j=0; j<len; j++)
398
        {
399
        if( i>0 || j>0 ) list.append(',');
400
        list.append(name);
401
        list.append('_');
402
        list.append(sizes[j]);
403
        }
404
      }
405
406
    return list.toString();
407
    }
408
409 4888e97c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
410
411
  public static int getTotal()
412
    {
413
    return mNumAll;
414
    }
415
416 8e3898c8 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
417
418 0a7aa15b Leszek Koltunski
  public static int getDBLevel(int ordinal, int sizeIndex)
419 8e3898c8 Leszek Koltunski
    {
420
    if( ordinal>=0 && ordinal<NUM_OBJECTS )
421
      {
422
      int num = objects[ordinal].mObjectSizes.length;
423 0a7aa15b Leszek Koltunski
      return sizeIndex>=0 && sizeIndex<num ? objects[ordinal].mDBLevels[sizeIndex] : 0;
424
      }
425
426
    return 0;
427
    }
428
429
///////////////////////////////////////////////////////////////////////////////////////////////////
430
431
  public static int getNumScramble(int ordinal, int sizeIndex)
432
    {
433
    if( ordinal>=0 && ordinal<NUM_OBJECTS )
434
      {
435
      int num = objects[ordinal].mObjectSizes.length;
436
      return sizeIndex>=0 && sizeIndex<num ? objects[ordinal].mNumScrambles[sizeIndex] : 0;
437 8e3898c8 Leszek Koltunski
      }
438
439
    return 0;
440
    }
441
442 c86f9f1f Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
443
444
  public static int getOrdinal(String name)
445
    {
446
    for(int i=0; i<NUM_OBJECTS; i++)
447
      {
448
      if(objects[i].name().equals(name)) return i;
449
      }
450
451
    return -1;
452
    }
453
454
///////////////////////////////////////////////////////////////////////////////////////////////////
455
456 53f23b64 Leszek Koltunski
  public static int getSizeIndex(int ordinal, int size)
457 c86f9f1f Leszek Koltunski
    {
458 7ec268b1 Leszek Koltunski
    if( ordinal>=0 && ordinal<NUM_OBJECTS )
459 c86f9f1f Leszek Koltunski
      {
460 7ec268b1 Leszek Koltunski
      int[] sizes = objects[ordinal].getSizes();
461
      int len = sizes.length;
462
463
      for(int i=0; i<len; i++)
464
        {
465
        if( sizes[i]==size ) return i;
466
        }
467 c86f9f1f Leszek Koltunski
      }
468
469
    return -1;
470
    }
471
472 4888e97c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
473
474 4ab3d91b Leszek Koltunski
  ObjectList(int[][] info, int row)
475 4888e97c Leszek Koltunski
    {
476 fa679111 Leszek Koltunski
    mNumSizes = info.length;
477 ea6ee91b Leszek Koltunski
478 fa679111 Leszek Koltunski
    mObjectSizes  = new int[mNumSizes];
479 0a7aa15b Leszek Koltunski
    mDBLevels     = new int[mNumSizes];
480
    mNumScrambles = new int[mNumSizes];
481 fa679111 Leszek Koltunski
    mResourceIDs  = new int[mNumSizes];
482
    mSmallIconIDs = new int[mNumSizes];
483
    mMediumIconIDs= new int[mNumSizes];
484
    mBigIconIDs   = new int[mNumSizes];
485
    mHugeIconIDs  = new int[mNumSizes];
486 ea6ee91b Leszek Koltunski
487 fa679111 Leszek Koltunski
    for(int i=0; i<mNumSizes; i++)
488 ea6ee91b Leszek Koltunski
      {
489 f6a9c538 Leszek Koltunski
      mObjectSizes[i]  = info[i][0];
490 0a7aa15b Leszek Koltunski
      mDBLevels[i]     = info[i][1];
491
      mNumScrambles[i] = info[i][2];
492
      mResourceIDs[i]  = info[i][3];
493
      mSmallIconIDs[i] = info[i][4];
494
      mMediumIconIDs[i]= info[i][5];
495
      mBigIconIDs[i]   = info[i][6];
496
      mHugeIconIDs[i]  = info[i][7];
497 ea6ee91b Leszek Koltunski
      }
498
499 4ab3d91b Leszek Koltunski
    mRow  = row;
500 27a70eae Leszek Koltunski
    }
501
502
///////////////////////////////////////////////////////////////////////////////////////////////////
503
504 8e3898c8 Leszek Koltunski
  public int[] getSizes()
505 27a70eae Leszek Koltunski
    {
506 8e3898c8 Leszek Koltunski
    return mObjectSizes;
507 27a70eae Leszek Koltunski
    }
508
509 8e3898c8 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
510
511
  public int[] getIconIDs()
512
    {
513 f6a9c538 Leszek Koltunski
    int size = RubikActivity.getDrawableSize();
514
515
    switch(size)
516
      {
517
      case 0 : return mSmallIconIDs;
518
      case 1 : return mMediumIconIDs;
519 31a9f38d Leszek Koltunski
      case 2 : return mBigIconIDs;
520
      default: return mHugeIconIDs;
521 f6a9c538 Leszek Koltunski
      }
522 4888e97c Leszek Koltunski
    }
523
524
///////////////////////////////////////////////////////////////////////////////////////////////////
525
526 ccf9fec5 Leszek Koltunski
  public int[] getResourceIDs()
527
    {
528
    return mResourceIDs;
529
    }
530
531
///////////////////////////////////////////////////////////////////////////////////////////////////
532
533 9c2f0c91 Leszek Koltunski
  public TwistyObject create(int size, Static4D quat, int[][] moves, Resources res, int scrWidth)
534 27a70eae Leszek Koltunski
    {
535 5974d2ae Leszek Koltunski
    DistortedTexture texture = new DistortedTexture();
536 36273130 Leszek Koltunski
    DistortedEffects effects = new DistortedEffects();
537 fb52fae9 Leszek Koltunski
    MeshSquare mesh          = new MeshSquare(20,20);   // mesh of the node, not of the cubits
538 74686c71 Leszek Koltunski
539 4888e97c Leszek Koltunski
    switch(ordinal())
540
      {
541 538ee7a6 Leszek Koltunski
      case  0: return new TwistyCube          (size, quat, texture, mesh, effects, moves, res, scrWidth);
542 df9739f8 Leszek Koltunski
      case  1: return new TwistyJing          (size, quat, texture, mesh, effects, moves, res, scrWidth);
543
      case  2: return new TwistyPyraminx      (size, quat, texture, mesh, effects, moves, res, scrWidth);
544 53e7de7e Leszek Koltunski
      case  3: return new TwistyKilominx      (size, quat, texture, mesh, effects, moves, res, scrWidth);
545
      case  4: return new TwistyMegaminx      (size, quat, texture, mesh, effects, moves, res, scrWidth);
546 8de56b9d Leszek Koltunski
      case  5: return new TwistyUltimate      (size, quat, texture, mesh, effects, moves, res, scrWidth);
547
      case  6: return new TwistyDiamond       (size, quat, texture, mesh, effects, moves, res, scrWidth);
548
      case  7: return new TwistyDino6         (size, quat, texture, mesh, effects, moves, res, scrWidth);
549
      case  8: return new TwistyDino4         (size, quat, texture, mesh, effects, moves, res, scrWidth);
550
      case  9: return new TwistyRedi          (size, quat, texture, mesh, effects, moves, res, scrWidth);
551
      case 10: return new TwistyHelicopter    (size, quat, texture, mesh, effects, moves, res, scrWidth);
552
      case 11: return new TwistySkewb         (size, quat, texture, mesh, effects, moves, res, scrWidth);
553
      case 12: return new TwistyIvy           (size, quat, texture, mesh, effects, moves, res, scrWidth);
554
      case 13: return new TwistyRex           (size, quat, texture, mesh, effects, moves, res, scrWidth);
555
      case 14: return new TwistyBandagedFused (size, quat, texture, mesh, effects, moves, res, scrWidth);
556
      case 15: return new TwistyBandaged2Bar  (size, quat, texture, mesh, effects, moves, res, scrWidth);
557
      case 16: return new TwistyBandaged3Plate(size, quat, texture, mesh, effects, moves, res, scrWidth);
558
      case 17: return new TwistyBandagedEvil  (size, quat, texture, mesh, effects, moves, res, scrWidth);
559
      case 18: return new TwistySquare1       (size, quat, texture, mesh, effects, moves, res, scrWidth);
560
      case 19: return new TwistySquare2       (size, quat, texture, mesh, effects, moves, res, scrWidth);
561 abf36986 Leszek Koltunski
      case 20: return new TwistyMirror        (size, quat, texture, mesh, effects, moves, res, scrWidth);
562 4888e97c Leszek Koltunski
      }
563
564
    return null;
565 27a70eae Leszek Koltunski
    }
566
  }