Revision 5e254115
Added by Leszek Koltunski about 4 years ago
| src/main/java/org/distorted/objects/TwistyBandagedAbstract.java | ||
|---|---|---|
| 433 | 433 |
return reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES; |
| 434 | 434 |
} |
| 435 | 435 |
|
| 436 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 437 |
// this implements the fact that certain cubits have multiple 'centers' and this means the cubit |
|
| 438 |
// might span more than one layer along a given axis - i.e. that this is a bandaged puzzle. |
|
| 439 |
|
|
| 440 |
int computeBitmapFromRow(int rowBitmap, int axis) |
|
| 441 |
{
|
|
| 442 |
int bitmap, initBitmap=0; |
|
| 443 |
|
|
| 444 |
while( initBitmap!=rowBitmap ) |
|
| 445 |
{
|
|
| 446 |
initBitmap = rowBitmap; |
|
| 447 |
|
|
| 448 |
for(int cubit=0; cubit<NUM_CUBITS; cubit++) |
|
| 449 |
{
|
|
| 450 |
bitmap = CUBITS[cubit].mRotationRow[axis]; |
|
| 451 |
if( (rowBitmap & bitmap) != 0 ) rowBitmap |= bitmap; |
|
| 452 |
} |
|
| 453 |
} |
|
| 454 |
|
|
| 455 |
return rowBitmap; |
|
| 456 |
} |
|
| 457 |
|
|
| 458 | 436 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 459 | 437 |
|
| 460 | 438 |
float returnMultiplier() |
| src/main/java/org/distorted/objects/TwistyObject.java | ||
|---|---|---|
| 116 | 116 |
private final DistortedTexture mTexture; |
| 117 | 117 |
private final float mInitScreenRatio; |
| 118 | 118 |
private final int mSolvedFunctionIndex; |
| 119 |
private final boolean mIsBandaged; |
|
| 119 | 120 |
private float mObjectScreenRatio; |
| 120 | 121 |
private int[][] mSolvedQuats; |
| 121 | 122 |
private int[][] mQuatMult; |
| ... | ... | |
| 163 | 164 |
NUM_TEXTURES = getNumStickerTypes(mNumLayers)*NUM_FACES; |
| 164 | 165 |
NUM_AXIS = mAxis.length; |
| 165 | 166 |
|
| 167 |
boolean bandaged=false; |
|
| 168 |
|
|
| 169 |
for(int c=0; c<NUM_CUBITS; c++) |
|
| 170 |
{
|
|
| 171 |
if( mOrigPos[c].length>3 ) |
|
| 172 |
{
|
|
| 173 |
bandaged=true; |
|
| 174 |
break; |
|
| 175 |
} |
|
| 176 |
} |
|
| 177 |
|
|
| 178 |
mIsBandaged = bandaged; |
|
| 179 |
|
|
| 166 | 180 |
mQuatDebug = new int[NUM_CUBITS]; |
| 167 | 181 |
|
| 168 | 182 |
if( mObjectScreenRatio>MAX_SIZE_CHANGE) mObjectScreenRatio = MAX_SIZE_CHANGE; |
| ... | ... | |
| 655 | 669 |
} |
| 656 | 670 |
|
| 657 | 671 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 658 |
// normal, not bandaged, object. |
|
| 659 | 672 |
|
| 660 | 673 |
int computeBitmapFromRow(int rowBitmap, int axis) |
| 661 | 674 |
{
|
| 675 |
if( mIsBandaged ) |
|
| 676 |
{
|
|
| 677 |
int bitmap, initBitmap=0; |
|
| 678 |
|
|
| 679 |
while( initBitmap!=rowBitmap ) |
|
| 680 |
{
|
|
| 681 |
initBitmap = rowBitmap; |
|
| 682 |
|
|
| 683 |
for(int cubit=0; cubit<NUM_CUBITS; cubit++) |
|
| 684 |
{
|
|
| 685 |
bitmap = CUBITS[cubit].mRotationRow[axis]; |
|
| 686 |
if( (rowBitmap & bitmap) != 0 ) rowBitmap |= bitmap; |
|
| 687 |
} |
|
| 688 |
} |
|
| 689 |
} |
|
| 690 |
|
|
| 662 | 691 |
return rowBitmap; |
| 663 | 692 |
} |
| 664 | 693 |
|
| src/main/java/org/distorted/objects/TwistySquare1.java | ||
|---|---|---|
| 275 | 275 |
return mStickerType[variant][cubitface]*FACE_COLORS.length + mStickerColor[cubit][cubitface]; |
| 276 | 276 |
} |
| 277 | 277 |
|
| 278 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 279 |
// this implements the fact that corner cubits have multiple 'centers' and this means the cubit |
|
| 280 |
// might span more than one layer along a given axis - i.e. that this is a bandaged puzzle. |
|
| 281 |
|
|
| 282 |
int computeBitmapFromRow(int rowBitmap, int axis) |
|
| 283 |
{
|
|
| 284 |
int bitmap, initBitmap=0; |
|
| 285 |
|
|
| 286 |
while( initBitmap!=rowBitmap ) |
|
| 287 |
{
|
|
| 288 |
initBitmap = rowBitmap; |
|
| 289 |
|
|
| 290 |
for(int cubit=0; cubit<NUM_CUBITS; cubit++) |
|
| 291 |
{
|
|
| 292 |
bitmap = CUBITS[cubit].mRotationRow[axis]; |
|
| 293 |
if( (rowBitmap & bitmap) != 0 ) rowBitmap |= bitmap; |
|
| 294 |
} |
|
| 295 |
} |
|
| 296 |
|
|
| 297 |
return rowBitmap; |
|
| 298 |
} |
|
| 299 |
|
|
| 300 | 278 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 301 | 279 |
|
| 302 | 280 |
private boolean cornerIsUp(int index) |
Also available in: Unified diff
auto-compute the bandaged status from dimension of the CENTERS. Make 'computeBitmapFromRow' generic for bandageed and not bandaged objects.