Revision 59c20632
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/objects/TwistySkewb.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.objectlib.objects; |
21 | 21 |
|
22 |
import static org.distorted.objectlib.main.Movement.MOVEMENT_HEXAHEDRON; |
|
22 | 23 |
import static org.distorted.objectlib.main.Movement.TYPE_SPLIT_CORNER; |
23 | 24 |
|
24 | 25 |
import android.content.res.Resources; |
... | ... | |
30 | 31 |
import org.distorted.library.type.Static4D; |
31 | 32 |
|
32 | 33 |
import org.distorted.objectlib.R; |
33 |
import org.distorted.objectlib.main.Movement; |
|
34 | 34 |
import org.distorted.objectlib.main.Movement6; |
35 | 35 |
import org.distorted.objectlib.main.ObjectControl; |
36 | 36 |
import org.distorted.objectlib.main.ObjectType; |
... | ... | |
51 | 51 |
new Static3D(+SQ3/3,-SQ3/3,-SQ3/3) |
52 | 52 |
}; |
53 | 53 |
|
54 |
private static final int[][][] ENABLED = new int[][][] |
|
55 |
{ |
|
56 |
{{0,1},{3,1},{2,3},{0,2}}, |
|
57 |
{{2,3},{3,1},{0,1},{0,2}}, |
|
58 |
{{1,2},{0,1},{0,3},{2,3}}, |
|
59 |
{{1,2},{2,3},{0,3},{0,1}}, |
|
60 |
{{0,3},{0,2},{1,2},{1,3}}, |
|
61 |
{{1,2},{0,2},{0,3},{1,3}}, |
|
62 |
}; |
|
63 |
|
|
64 | 54 |
private ScrambleState[] mStates; |
65 | 55 |
private int[] mBasicAngle; |
66 | 56 |
private Static4D[] mQuats; |
67 | 57 |
private float[][] mCuts; |
68 |
private boolean[][] mLayerRotatable; |
|
69 | 58 |
private int[][] mCornerMap,mEdgeMap,mCenterMap; |
70 | 59 |
private ObjectSticker[] mStickers; |
71 |
private Movement mMovement; |
|
72 | 60 |
|
73 | 61 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
74 | 62 |
|
... | ... | |
173 | 161 |
|
174 | 162 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
175 | 163 |
|
176 |
protected int getSolvedFunctionIndex()
|
|
164 |
public int getSolvedFunctionIndex()
|
|
177 | 165 |
{ |
178 | 166 |
return 0; |
179 | 167 |
} |
... | ... | |
200 | 188 |
|
201 | 189 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
202 | 190 |
|
203 |
private void getLayerRotatable(int[] numLayers) |
|
191 |
public boolean[][] getLayerRotatable(int[] numLayers) |
|
192 |
{ |
|
193 |
int numAxis = ROT_AXIS.length; |
|
194 |
boolean[] tmp = numLayers[0]==2 ? (new boolean[] {true,true}) : (new boolean[] {true,false,true}); |
|
195 |
boolean[][] layerRotatable = new boolean[numAxis][]; |
|
196 |
for(int i=0; i<numAxis; i++) layerRotatable[i] = tmp; |
|
197 |
|
|
198 |
return layerRotatable; |
|
199 |
} |
|
200 |
|
|
201 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
202 |
|
|
203 |
public int getMovementType() |
|
204 |
{ |
|
205 |
return MOVEMENT_HEXAHEDRON; |
|
206 |
} |
|
207 |
|
|
208 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
209 |
|
|
210 |
public int getMovementSplit() |
|
211 |
{ |
|
212 |
return TYPE_SPLIT_CORNER; |
|
213 |
} |
|
214 |
|
|
215 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
216 |
|
|
217 |
public int[][][] getEnabled() |
|
204 | 218 |
{ |
205 |
if( mLayerRotatable==null )
|
|
219 |
return new int[][][]
|
|
206 | 220 |
{ |
207 |
int numAxis = ROT_AXIS.length; |
|
208 |
boolean[] tmp = numLayers[0]==2 ? (new boolean[] {true,true}) : (new boolean[] {true,false,true}); |
|
209 |
mLayerRotatable = new boolean[numAxis][]; |
|
210 |
for(int i=0; i<numAxis; i++) mLayerRotatable[i] = tmp; |
|
211 |
} |
|
221 |
{{0,1},{3,1},{2,3},{0,2}}, |
|
222 |
{{2,3},{3,1},{0,1},{0,2}}, |
|
223 |
{{1,2},{0,1},{0,3},{2,3}}, |
|
224 |
{{1,2},{2,3},{0,3},{0,1}}, |
|
225 |
{{0,3},{0,2},{1,2},{1,3}}, |
|
226 |
{{1,2},{0,2},{0,3},{1,3}}, |
|
227 |
}; |
|
228 |
} |
|
229 |
|
|
230 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
231 |
|
|
232 |
public float[] getDist3D(int[] numLayers) |
|
233 |
{ |
|
234 |
return null; |
|
212 | 235 |
} |
213 | 236 |
|
214 | 237 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
551 | 574 |
{ |
552 | 575 |
float[][] STICKERS = new float[][] |
553 | 576 |
{ |
577 |
{ -0.5f, 0.25f, 0.25f, -0.5f, 0.25f, 0.25f }, |
|
554 | 578 |
{ -0.5f, 0.25f, 0.25f, -0.5f, 0.25f, 0.25f }, |
555 | 579 |
{ -0.5f, 0.00f, 0.00f, -0.5f, 0.50f, 0.0f, 0.0f, 0.5f } |
556 | 580 |
}; |
... | ... | |
570 | 594 |
strokes[2]*=mult; |
571 | 595 |
} |
572 | 596 |
|
573 |
mStickers = new ObjectSticker[STICKERS.length+1];
|
|
597 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
574 | 598 |
|
575 |
for(int s=0; s<STICKERS.length+1; s++)
|
|
599 |
for(int s=0; s<STICKERS.length; s++) |
|
576 | 600 |
{ |
577 |
int index = s<2 ? 0:1; |
|
578 |
mStickers[s] = new ObjectSticker(STICKERS[index],null,radii[s],strokes[s]); |
|
601 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
579 | 602 |
} |
580 | 603 |
} |
581 | 604 |
|
... | ... | |
590 | 613 |
return ROT_AXIS; |
591 | 614 |
} |
592 | 615 |
|
593 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
594 |
|
|
595 |
public Movement getMovement() |
|
596 |
{ |
|
597 |
if( mMovement==null ) |
|
598 |
{ |
|
599 |
int[] numLayers = getNumLayers(); |
|
600 |
if( mCuts==null ) getCuts(numLayers); |
|
601 |
getLayerRotatable(numLayers); |
|
602 |
mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,2*numLayers[0]-2,TYPE_SPLIT_CORNER,ENABLED); |
|
603 |
} |
|
604 |
return mMovement; |
|
605 |
} |
|
606 |
|
|
607 | 616 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
608 | 617 |
|
609 | 618 |
public int[] getBasicAngle() |
... | ... | |
649 | 658 |
return R.string.skew2_inventor; |
650 | 659 |
} |
651 | 660 |
|
661 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
662 |
|
|
663 |
public int getYearOfInvention(int[] numLayers) |
|
664 |
{ |
|
665 |
switch(numLayers[0]) |
|
666 |
{ |
|
667 |
case 2: return 1982; |
|
668 |
case 3: return 2003; |
|
669 |
} |
|
670 |
return 1982; |
|
671 |
} |
|
672 |
|
|
652 | 673 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
653 | 674 |
|
654 | 675 |
public int getComplexity(int[] numLayers) |
Also available in: Unified diff
Reorg for writing the JSON