Revision 59c20632
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/objects/TwistyMirror.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_NOT_SPLIT; |
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 |
import org.distorted.objectlib.main.Movement6; |
|
35 | 34 |
import org.distorted.objectlib.main.ObjectControl; |
36 | 35 |
import org.distorted.objectlib.main.ObjectType; |
37 | 36 |
import org.distorted.objectlib.helpers.ObjectShape; |
... | ... | |
50 | 49 |
new Static3D(0,0,1) |
51 | 50 |
}; |
52 | 51 |
|
53 |
private static final int[][][] ENABLED = new int[][][] |
|
54 |
{ |
|
55 |
{{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}}, |
|
56 |
}; |
|
57 |
|
|
58 | 52 |
private static final int[] FACE_COLORS = new int[] { COLOR_WHITE }; |
59 | 53 |
private static final float DX = 0.10f; |
60 | 54 |
private static final float DY = 0.25f; |
... | ... | |
79 | 73 |
private ScrambleState[] mStates; |
80 | 74 |
private Static4D[] mQuats; |
81 | 75 |
private float[][] mCuts; |
82 |
private boolean[][] mLayerRotatable; |
|
83 | 76 |
private int[] mBasicAngle; |
84 | 77 |
private ObjectSticker[] mStickers; |
85 | 78 |
private float[][] mPositions; |
86 |
private Movement mMovement; |
|
87 | 79 |
|
88 | 80 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
89 | 81 |
|
... | ... | |
586 | 578 |
|
587 | 579 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
588 | 580 |
|
589 |
private void getLayerRotatable(int[] numLayers)
|
|
581 |
public boolean[][] getLayerRotatable(int[] numLayers)
|
|
590 | 582 |
{ |
591 |
if( mLayerRotatable==null ) |
|
592 |
{ |
|
593 |
int numAxis = ROT_AXIS.length; |
|
594 |
mLayerRotatable = new boolean[numAxis][]; |
|
583 |
int numAxis = ROT_AXIS.length; |
|
584 |
boolean[][] layerRotatable = new boolean[numAxis][]; |
|
595 | 585 |
|
596 |
for(int i=0; i<numAxis; i++) |
|
597 |
{ |
|
598 |
mLayerRotatable[i] = new boolean[numLayers[i]]; |
|
599 |
for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true; |
|
600 |
} |
|
586 |
for(int i=0; i<numAxis; i++) |
|
587 |
{ |
|
588 |
layerRotatable[i] = new boolean[numLayers[i]]; |
|
589 |
for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true; |
|
601 | 590 |
} |
591 |
|
|
592 |
return layerRotatable; |
|
602 | 593 |
} |
603 | 594 |
|
604 | 595 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
605 | 596 |
|
606 |
protected int getSolvedFunctionIndex() |
|
597 |
public int getMovementType() |
|
598 |
{ |
|
599 |
return MOVEMENT_HEXAHEDRON; |
|
600 |
} |
|
601 |
|
|
602 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
603 |
|
|
604 |
public int getMovementSplit() |
|
605 |
{ |
|
606 |
return TYPE_NOT_SPLIT; |
|
607 |
} |
|
608 |
|
|
609 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
610 |
|
|
611 |
public int[][][] getEnabled() |
|
612 |
{ |
|
613 |
return new int[][][] |
|
614 |
{ |
|
615 |
{{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}}, |
|
616 |
}; |
|
617 |
} |
|
618 |
|
|
619 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
620 |
|
|
621 |
public float[] getDist3D(int[] numLayers) |
|
622 |
{ |
|
623 |
return null; |
|
624 |
} |
|
625 |
|
|
626 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
627 |
|
|
628 |
public int getSolvedFunctionIndex() |
|
607 | 629 |
{ |
608 | 630 |
return 0; |
609 | 631 |
} |
... | ... | |
623 | 645 |
return ROT_AXIS; |
624 | 646 |
} |
625 | 647 |
|
626 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
627 |
|
|
628 |
public Movement getMovement() |
|
629 |
{ |
|
630 |
if( mMovement==null ) |
|
631 |
{ |
|
632 |
int[] numLayers = getNumLayers(); |
|
633 |
if( mCuts==null ) getCuts(numLayers); |
|
634 |
getLayerRotatable(numLayers); |
|
635 |
mMovement = new Movement6(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_NOT_SPLIT,ENABLED); |
|
636 |
} |
|
637 |
return mMovement; |
|
638 |
} |
|
639 |
|
|
640 | 648 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
641 | 649 |
|
642 | 650 |
public int[] getBasicAngle() |
... | ... | |
682 | 690 |
return R.string.mirr3_inventor; |
683 | 691 |
} |
684 | 692 |
|
693 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
694 |
|
|
695 |
public int getYearOfInvention(int[] numLayers) |
|
696 |
{ |
|
697 |
switch(numLayers[0]) |
|
698 |
{ |
|
699 |
case 2: return 2007; |
|
700 |
case 3: return 2006; |
|
701 |
} |
|
702 |
return 2006; |
|
703 |
} |
|
704 |
|
|
685 | 705 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
686 | 706 |
|
687 | 707 |
public int getComplexity(int[] numLayers) |
Also available in: Unified diff
Reorg for writing the JSON