Revision 01b2ef5a
Added by Leszek Koltunski about 3 years ago
src/main/java/org/distorted/objects/TwistyRex.java | ||
---|---|---|
23 | 23 |
|
24 | 24 |
import org.distorted.helpers.ObjectShape; |
25 | 25 |
import org.distorted.helpers.ObjectSticker; |
26 |
import org.distorted.helpers.ScrambleStateGraph; |
|
26 | 27 |
import org.distorted.library.main.DistortedEffects; |
27 | 28 |
import org.distorted.library.main.DistortedTexture; |
28 | 29 |
import org.distorted.library.mesh.MeshSquare; |
... | ... | |
152 | 153 |
} |
153 | 154 |
} |
154 | 155 |
|
156 |
private int mCurrState; |
|
157 |
private int mIndexExcluded; |
|
158 |
private final ScrambleStateGraph[] mStates; |
|
159 |
|
|
155 | 160 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
156 | 161 |
|
157 | 162 |
TwistyRex(int size, Static4D quat, DistortedTexture texture, MeshSquare mesh, |
158 | 163 |
DistortedEffects effects, int[][] moves, Resources res, int scrWidth) |
159 | 164 |
{ |
160 | 165 |
super(size, size, quat, texture, mesh, effects, moves, ObjectList.REX, res, scrWidth); |
166 |
|
|
167 |
int[] tmp = {0,-1,0, 0,1,0, 2,-1,0, 2,1,0 }; |
|
168 |
|
|
169 |
mStates = new ScrambleStateGraph[] |
|
170 |
{ |
|
171 |
new ScrambleStateGraph( new int[][] {tmp,tmp,tmp,tmp} ) |
|
172 |
}; |
|
161 | 173 |
} |
162 | 174 |
|
163 | 175 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
481 | 493 |
|
482 | 494 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
483 | 495 |
|
484 |
public void randomizeNewScramble(int[][] scramble, Random rnd, int curr, int total) |
|
496 |
public void randomizeNewScramble(int[][] scramble, Random rnd, int curr, int totalScrambles)
|
|
485 | 497 |
{ |
486 | 498 |
if( curr==0 ) |
487 | 499 |
{ |
488 |
scramble[curr][0] = rnd.nextInt(NUM_AXIS); |
|
489 |
} |
|
490 |
else |
|
491 |
{ |
|
492 |
int newVector = rnd.nextInt(NUM_AXIS -1); |
|
493 |
scramble[curr][0] = (newVector>=scramble[curr-1][0] ? newVector+1 : newVector); |
|
500 |
mCurrState = 0; |
|
501 |
mIndexExcluded =-1; |
|
494 | 502 |
} |
495 | 503 |
|
496 |
scramble[curr][1] = rnd.nextFloat()<=0.5f ? 0 : 2; |
|
504 |
int total = mStates[mCurrState].getTotal(mIndexExcluded); |
|
505 |
int random= rnd.nextInt(total); |
|
506 |
int[] info= mStates[mCurrState].getInfo(random,mIndexExcluded); |
|
497 | 507 |
|
498 |
switch( rnd.nextInt(2) ) |
|
499 |
{ |
|
500 |
case 0: scramble[curr][2] = -1; break; |
|
501 |
case 1: scramble[curr][2] = 1; break; |
|
502 |
} |
|
508 |
scramble[curr][0] = info[0]; |
|
509 |
scramble[curr][1] = info[1]; |
|
510 |
scramble[curr][2] = info[2]; |
|
511 |
|
|
512 |
mCurrState = info[3]; |
|
513 |
mIndexExcluded = info[0]; |
|
503 | 514 |
} |
504 | 515 |
|
505 | 516 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistySkewb.java | ||
---|---|---|
23 | 23 |
|
24 | 24 |
import org.distorted.helpers.ObjectShape; |
25 | 25 |
import org.distorted.helpers.ObjectSticker; |
26 |
import org.distorted.helpers.ScrambleStateGraph; |
|
26 | 27 |
import org.distorted.library.main.DistortedEffects; |
27 | 28 |
import org.distorted.library.main.DistortedTexture; |
28 | 29 |
import org.distorted.library.mesh.MeshSquare; |
... | ... | |
189 | 190 |
} |
190 | 191 |
} |
191 | 192 |
|
193 |
private int mCurrState; |
|
194 |
private int mIndexExcluded; |
|
195 |
private final ScrambleStateGraph[] mStates; |
|
196 |
|
|
192 | 197 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
193 | 198 |
|
194 | 199 |
TwistySkewb(int size, Static4D quat, DistortedTexture texture, |
195 | 200 |
MeshSquare mesh, DistortedEffects effects, int[][] moves, Resources res, int scrWidth) |
196 | 201 |
{ |
197 | 202 |
super(size, 2*size-2, quat, texture, mesh, effects, moves, ObjectList.SKEW, res, scrWidth); |
203 |
|
|
204 |
int[] tmp = {0,-1,0, 0,1,0, size-1,-1,0, size-1,1,0 }; |
|
205 |
|
|
206 |
mStates = new ScrambleStateGraph[] |
|
207 |
{ |
|
208 |
new ScrambleStateGraph( new int[][] {tmp,tmp,tmp,tmp} ) |
|
209 |
}; |
|
198 | 210 |
} |
199 | 211 |
|
200 | 212 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
599 | 611 |
|
600 | 612 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
601 | 613 |
|
602 |
public void randomizeNewScramble(int[][] scramble, Random rnd, int curr, int total) |
|
614 |
public void randomizeNewScramble(int[][] scramble, Random rnd, int curr, int totalScrambles)
|
|
603 | 615 |
{ |
604 | 616 |
if( curr==0 ) |
605 | 617 |
{ |
606 |
scramble[curr][0] = rnd.nextInt(NUM_AXIS); |
|
607 |
} |
|
608 |
else |
|
609 |
{ |
|
610 |
int newVector = rnd.nextInt(NUM_AXIS-1); |
|
611 |
scramble[curr][0] = (newVector>=scramble[curr-1][0] ? newVector+1 : newVector); |
|
618 |
mCurrState = 0; |
|
619 |
mIndexExcluded =-1; |
|
612 | 620 |
} |
613 | 621 |
|
614 |
scramble[curr][1] = rnd.nextFloat()<=0.5f ? 0 : getNumLayers()-1; |
|
622 |
int total = mStates[mCurrState].getTotal(mIndexExcluded); |
|
623 |
int random= rnd.nextInt(total); |
|
624 |
int[] info= mStates[mCurrState].getInfo(random,mIndexExcluded); |
|
615 | 625 |
|
616 |
switch( rnd.nextInt(2) ) |
|
617 |
{ |
|
618 |
case 0: scramble[curr][2] = -1; break; |
|
619 |
case 1: scramble[curr][2] = 1; break; |
|
620 |
} |
|
626 |
scramble[curr][0] = info[0]; |
|
627 |
scramble[curr][1] = info[1]; |
|
628 |
scramble[curr][2] = info[2]; |
|
629 |
|
|
630 |
mCurrState = info[3]; |
|
631 |
mIndexExcluded = info[0]; |
|
621 | 632 |
} |
622 | 633 |
|
623 | 634 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Convert Skewbs & Rex Cube to the new, unified scrambling method.