Project

General

Profile

« Previous | Next » 

Revision 43a4ccff

Added by Leszek Koltunski over 2 years ago

simplify sticker/color map.

View differences:

src/main/java/org/distorted/objectlib/main/ObjectControl.java
298 298
      TwistyObject object = mPreRender.getObject();
299 299
      int[] numLayers = object.getNumLayers();
300 300

  
301
      Static4D touchPoint2 = new Static4D(x, y, 0, 0);
302
      Static4D rotatedTouchPoint2= QuatHelper.rotateVectorByInvertedQuat(touchPoint2, mQuat);
303
      Static2D res = mMovement.newRotation(rotatedTouchPoint2,object.getObjectRatio());
301
      Static4D touchPoint = new Static4D(x, y, 0, 0);
302
      Static4D rotatedTouchPoint= QuatHelper.rotateVectorByInvertedQuat(touchPoint, mQuat);
303
      Static2D res = mMovement.newRotation(rotatedTouchPoint,object.getObjectRatio());
304 304

  
305 305
      mCurrentAxis = (int)res.get0();
306 306
      mCurrentRow  = (int)res.get1();
src/main/java/org/distorted/objectlib/main/TwistyObject.java
1127 1127
    paint.setColor(COLOR_BLACK);
1128 1128
    canvas.drawRect(0, 0, mNumTexCols*TEXTURE_HEIGHT, mNumTexRows*TEXTURE_HEIGHT, paint);
1129 1129

  
1130
    int face = 0;
1130
    int texture = 0;
1131 1131
    FactorySticker factory = FactorySticker.getInstance();
1132 1132

  
1133 1133
    for(int row=0; row<mNumTexRows; row++)
1134 1134
      for(int col=0; col<mNumTexCols; col++)
1135 1135
        {
1136
        if( face>=NUM_TEXTURES ) break;
1137
        int sIndex = getStickerIndex(face);
1138
        ObjectSticker sticker = retSticker(sIndex);
1139
        factory.drawRoundedPolygon(canvas, paint, col*TEXTURE_HEIGHT, row*TEXTURE_HEIGHT, getColor(face%NUM_FACE_COLORS), sticker);
1140
        face++;
1136
        if( texture>=NUM_TEXTURES ) break;
1137
        ObjectSticker sticker = retSticker(texture/NUM_FACE_COLORS);
1138
        int color = getColor(texture%NUM_FACE_COLORS);
1139
        factory.drawRoundedPolygon(canvas, paint, col*TEXTURE_HEIGHT, row*TEXTURE_HEIGHT, color, sticker);
1140
        texture++;
1141 1141
        }
1142 1142

  
1143 1143
    if( !mTexture.setTexture(bitmap) )
......
1385 1385
  protected abstract int getFaceColor(int cubit, int cubitface, int[] numLayers);
1386 1386
  protected abstract int getResource(int[] numLayers);
1387 1387
  protected abstract ObjectType intGetObjectType(int[] numLayers);
1388
  protected abstract int getStickerIndex(int face);
1389 1388

  
1390 1389
  // for JSON only
1391 1390
  public abstract int getSolvedFunctionIndex();
src/main/java/org/distorted/objectlib/objects/TwistyBandagedAbstract.java
297 297
    return mStickers[sticker];
298 298
    }
299 299

  
300
///////////////////////////////////////////////////////////////////////////////////////////////////
301

  
302
  protected int getStickerIndex(int face)
303
    {
304
    return face/NUM_FACE_COLORS;
305
    }
306

  
307 300
///////////////////////////////////////////////////////////////////////////////////////////////////
308 301

  
309 302
  public float[][] getCubitPositions(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java
521 521
    return mStickers[sticker];
522 522
    }
523 523

  
524
///////////////////////////////////////////////////////////////////////////////////////////////////
525

  
526
  protected int getStickerIndex(int face)
527
    {
528
    return face/NUM_FACE_COLORS;
529
    }
530

  
531 524
///////////////////////////////////////////////////////////////////////////////////////////////////
532 525

  
533 526
  public Static4D[] getQuats()
src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java
553 553
    return mStickers[sticker];
554 554
    }
555 555

  
556
///////////////////////////////////////////////////////////////////////////////////////////////////
557

  
558
  protected int getStickerIndex(int face)
559
    {
560
    return face/NUM_FACE_COLORS;
561
    }
562

  
563 556
///////////////////////////////////////////////////////////////////////////////////////////////////
564 557
// PUBLIC API
565 558

  
src/main/java/org/distorted/objectlib/objects/TwistyDino.java
262 262
    return mStickers[sticker];
263 263
    }
264 264

  
265
///////////////////////////////////////////////////////////////////////////////////////////////////
266

  
267
  protected int getStickerIndex(int face)
268
    {
269
    return face/NUM_FACE_COLORS;
270
    }
271

  
272 265
///////////////////////////////////////////////////////////////////////////////////////////////////
273 266
// PUBLIC API
274 267

  
src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java
454 454
    return mStickers[sticker];
455 455
    }
456 456

  
457
///////////////////////////////////////////////////////////////////////////////////////////////////
458

  
459
  protected int getStickerIndex(int face)
460
    {
461
    return face/NUM_FACE_COLORS;
462
    }
463

  
464 457
///////////////////////////////////////////////////////////////////////////////////////////////////
465 458
// PUBLIC API
466 459

  
src/main/java/org/distorted/objectlib/objects/TwistyIvy.java
486 486
    return mStickers[sticker];
487 487
    }
488 488

  
489
///////////////////////////////////////////////////////////////////////////////////////////////////
490

  
491
  protected int getStickerIndex(int face)
492
    {
493
    return face/NUM_FACE_COLORS;
494
    }
495

  
496 489
///////////////////////////////////////////////////////////////////////////////////////////////////
497 490
// PUBLIC API
498 491

  
src/main/java/org/distorted/objectlib/objects/TwistyJing.java
444 444
    return mStickers[sticker];
445 445
    }
446 446

  
447
///////////////////////////////////////////////////////////////////////////////////////////////////
448

  
449
  protected int getStickerIndex(int face)
450
    {
451
    return face/NUM_FACE_COLORS;
452
    }
453

  
454 447
///////////////////////////////////////////////////////////////////////////////////////////////////
455 448
// PUBLIC API
456 449

  
src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java
558 558

  
559 559
    int part  = cubit % numCubitsPerCorner;
560 560
    int corner= cubit / numCubitsPerCorner;
561
    int color = mCornerFaceMap[corner][cubitface] + NUM_FACE_COLORS;
561 562

  
562 563
    if( part==0 )
563 564
      {
564
      return mCornerFaceMap[corner][cubitface];
565
      return color;
565 566
      }
566 567
    else
567 568
      {
......
573 574
        {
574 575
        switch(index)
575 576
          {
576
          case 0: return cubitface==1 ? NUM_TEXTURES : mCornerFaceMap[corner][cubitface];
577
          case 1: return cubitface==0 ? NUM_TEXTURES : mCornerFaceMap[corner][cubitface];
578
          case 2: return cubitface==2 ? NUM_TEXTURES : mCornerFaceMap[corner][cubitface];
577
          case 0: return cubitface==1 ? NUM_TEXTURES : color;
578
          case 1: return cubitface==0 ? NUM_TEXTURES : color;
579
          case 2: return cubitface==2 ? NUM_TEXTURES : color;
579 580
          }
580 581
        }
581 582
      else
582 583
        {
583 584
        switch(index)
584 585
          {
585
          case 0: return cubitface==0 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES;
586
          case 1: return cubitface==2 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES;
587
          case 2: return cubitface==1 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES;
586
          case 0: return cubitface==0 ? color : NUM_TEXTURES;
587
          case 1: return cubitface==2 ? color : NUM_TEXTURES;
588
          case 2: return cubitface==1 ? color : NUM_TEXTURES;
588 589
          }
589 590
        }
590 591
      }
......
604 605

  
605 606
    part /=2;
606 607

  
607
    return (part==0 || cubitface==((part+1)%2)) ? mEdgeMap[variant][cubitface+2] + ((part+3)/2)*NUM_FACE_COLORS : NUM_TEXTURES;
608
    return (part==0 || cubitface==((part+1)%2)) ? mEdgeMap[variant][cubitface+2] + ((part+5)/2)*NUM_FACE_COLORS : NUM_TEXTURES;
608 609
    }
609 610

  
610 611
///////////////////////////////////////////////////////////////////////////////////////////////////
......
619 620
      return cubitface>=0 && cubitface<3 ? mCornerFaceMap[center][cubitface] : NUM_TEXTURES;
620 621
      }
621 622

  
622
    return cubitface==mCenterFaceMap[center] ? center/5 + NUM_FACE_COLORS*(numLayers-1)/2 : NUM_TEXTURES;
623
    return cubitface==mCenterFaceMap[center] ? center/5 : NUM_TEXTURES;
623 624
    }
624 625

  
625 626
///////////////////////////////////////////////////////////////////////////////////////////////////
......
652 653
    {
653 654
    if( mStickers==null )
654 655
      {
655
      float[][] STICKERS = new float[][]
656
      float[][] STICKERS;
657
      int[] numLayers = getNumLayers();
658
      int numL = numLayers[0];
659

  
660
      if( numL==3 )
656 661
        {
657
          { -0.36616942f, -0.36327124f, 0.5f, -0.36327124f, 0.23233888f, 0.4605048f, -0.36616942f, 0.26603764f },
658
          { -0.36327127f, -0.5f, 0.36327127f, -0.26393202f, 0.36327127f, 0.5f, -0.36327127f, 0.26393202f },
659
          { -0.3249197f, -0.39442718f, 0.3249197f, -0.39442718f, 0.3249197f, 0.5f, -0.3249197f, 0.2888544f }
660
        };
662
        STICKERS = new float[][]
663
          {
664
            { -0.36616942f, -0.36327124f, 0.5f, -0.36327124f, 0.23233888f, 0.4605048f, -0.36616942f, 0.26603764f }
665
          };
666
        }
667
      else
668
        {
669
        STICKERS = new float[][]
670
          {
671
            { -0.36616942f, -0.36327124f, 0.5f, -0.36327124f, 0.23233888f, 0.4605048f, -0.36616942f, 0.26603764f },
672
            { -0.36327127f, -0.5f, 0.36327127f, -0.26393202f, 0.36327127f, 0.5f, -0.36327127f, 0.26393202f },
673
            { -0.3249197f, -0.39442718f, 0.3249197f, -0.39442718f, 0.3249197f, 0.5f, -0.3249197f, 0.2888544f }
674
          };
675
        }
661 676

  
662 677
      float CENTER_CORR = 0.87f;
663 678
      float C = 1.14f; // make the 'center' sticker artificially larger, so that we paint over the area in the center of the face.
......
677 692
      mStickers = new ObjectSticker[STICKERS.length];
678 693

  
679 694
      float R = 0.10f;
695
      float S = numL==3 ? 0.20f : 0.15f;
680 696
      final float[][] radii = { {R,R,R,R},{R,R,R,R},{R,R,R,R} };
681
      float[] strokes = { 0.20f, 0.11f, 0.10f };
697
      float[] strokes = { S, 0.11f, 0.10f };
682 698

  
683 699
      if( ObjectControl.isInIconMode() )
684 700
        {
685
        int[] numLayers = getNumLayers();
686
        float mult = numLayers[0]==3 ? 1.0f : 1.5f;
701
        float mult = numL==3 ? 1.0f : 1.5f;
687 702

  
688 703
        strokes[0]*=mult;
689 704
        strokes[1]*=mult;
......
699 714
    return mStickers[sticker];
700 715
    }
701 716

  
702
///////////////////////////////////////////////////////////////////////////////////////////////////
703

  
704
  protected int getStickerIndex(int face)
705
    {
706
    int variant = face/NUM_FACE_COLORS;
707
    int[] numLayers = getNumLayers();
708
    int numL = numLayers[0];
709

  
710
    if( variant == (numL-1)/2 || numL==3 ) return 0;
711
    if( variant==0 ) return 1;
712

  
713
    return 2;
714
    }
715

  
716 717
///////////////////////////////////////////////////////////////////////////////////////////////////
717 718

  
718 719
  public ObjectType intGetObjectType(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java
516 516
    int variant = edge / numCubitsPerEdge;
517 517
    if( mEdgeMap==null ) initializeEdgeMap();
518 518

  
519
    return (part==0 || cubitface==((part+1)%2)) ? mEdgeMap[variant][cubitface+2] + ((part+3)/2)*NUM_FACE_COLORS : NUM_TEXTURES;
519
    return (part==0 || cubitface==((part+1)%2)) ? mEdgeMap[variant][cubitface+2] + ((part+5)/2)*NUM_FACE_COLORS : NUM_TEXTURES;
520 520
    }
521 521

  
522 522
///////////////////////////////////////////////////////////////////////////////////////////////////
523 523

  
524
  int getCenterColor(int center, int cubitface, int numLayers)
524
  int getCenterColor(int center, int cubitface)
525 525
    {
526
    return cubitface>0 ? NUM_TEXTURES : center + NUM_FACE_COLORS*(numLayers+1)/2;
526
    return cubitface>0 ? NUM_TEXTURES : center + NUM_FACE_COLORS;
527 527
    }
528 528

  
529 529
///////////////////////////////////////////////////////////////////////////////////////////////////
......
546 546
    else
547 547
      {
548 548
      int center = cubit-NUM_CORNERS*numCubitsPerCorner-NUM_EDGES*numCubitsPerEdge;
549
      return getCenterColor( center, cubitface, numL);
549
      return getCenterColor( center, cubitface );
550 550
      }
551 551
    }
552 552

  
......
556 556
    {
557 557
    if( mStickers==null )
558 558
      {
559
      float[][] STICKERS = new float[][]
559
      float[][] STICKERS;
560
      int[] numLayers = getNumLayers();
561
      int numL = numLayers[0];
562

  
563
      if( numL==3 )
560 564
        {
561
          { -0.36327127f, -0.5f, 0.36327127f, -0.26393202f, 0.36327127f, 0.5f, -0.36327127f, 0.26393202f },
562
          { -0.5f, -0.0914315f, 0.5f, -0.4163512f, 0.5f, 0.4163512f, -0.5f, 0.0914315f },
563
          { -0.49233657f, -0.18006028f, 0.49233657f, -0.5f, 0.49233657f, 0.5f, -0.49233657f, 0.18006028f },
564
          { -0.3002273f, -0.30490047f, 0.3002273f, -0.5f, 0.3002273f, 0.5f, -0.3002273f, 0.30490047f },
565
          { -0.29389262f, 0.4045085f, -0.47552824f, -0.1545085f, 0.0f, -0.5f, 0.47552824f, -0.1545085f, 0.29389262f, 0.4045085f }
566
        };
565
        STICKERS = new float[][]
566
          {
567
            { -0.36327127f, -0.5f, 0.36327127f, -0.26393202f, 0.36327127f, 0.5f, -0.36327127f, 0.26393202f },
568
            { -0.29389262f, 0.4045085f, -0.47552824f, -0.1545085f, 0.0f, -0.5f, 0.47552824f, -0.1545085f, 0.29389262f, 0.4045085f },
569
            { -0.5f, -0.0914315f, 0.5f, -0.4163512f, 0.5f, 0.4163512f, -0.5f, 0.0914315f }
570
          };
571
        }
572
      else
573
        {
574
        STICKERS = new float[][]
575
          {
576
            { -0.36327127f, -0.5f, 0.36327127f, -0.26393202f, 0.36327127f, 0.5f, -0.36327127f, 0.26393202f },
577
            { -0.29389262f, 0.4045085f, -0.47552824f, -0.1545085f, 0.0f, -0.5f, 0.47552824f, -0.1545085f, 0.29389262f, 0.4045085f },
578
            { -0.49233657f, -0.18006028f, 0.49233657f, -0.5f, 0.49233657f, 0.5f, -0.49233657f, 0.18006028f },
579
            { -0.3002273f, -0.30490047f, 0.3002273f, -0.5f, 0.3002273f, 0.5f, -0.3002273f, 0.30490047f }
580
          };
581
        }
567 582

  
568 583
      mStickers = new ObjectSticker[STICKERS.length];
569 584

  
570 585
      final float R0 = 0.08f;
571
      final float R1 = 0.12f;
586
      final float R1 = 0.10f;
572 587
      final float R2 = 0.12f;
573 588
      final float R3 = 0.08f;
574
      final float R4 = 0.10f;
575
      final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1},{R2,R2,R2,R2},{R3,R3,R3,R3},{R4,R4,R4,R4,R4} };
576
      float[] strokes = { 0.10f,0.12f,0.12f,0.08f,0.07f };
589

  
590
      final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1,R1},{R2,R2,R2,R2},{R3,R3,R3,R3} };
591
      float[] strokes = { 0.10f,0.065f,0.12f,0.08f };
577 592

  
578 593
      if( ObjectControl.isInIconMode() )
579 594
        {
580
        int[] numLayers = getNumLayers();
581
        float mult = numLayers[0]==3 ? 1.5f : 2.2f;
595
        float mult = numL==3 ? 1.5f : 2.2f;
582 596

  
583 597
        strokes[0]*=mult;
584 598
        strokes[1]*=mult;
......
596 610
    return mStickers[sticker];
597 611
    }
598 612

  
599
///////////////////////////////////////////////////////////////////////////////////////////////////
600

  
601
  protected int getStickerIndex(int face)
602
    {
603
    int variant = face/NUM_FACE_COLORS;
604

  
605
    if( variant==0 ) return 0;
606

  
607
    int[] numLayers = getNumLayers();
608
    int numL = numLayers[0];
609

  
610
    if( variant < (numL+1)/2 )
611
      {
612
      return numL==3 ? 1 : ( variant==1 ? 2 : 3 );
613
      }
614

  
615
    return 4;
616
    }
617

  
618 613
///////////////////////////////////////////////////////////////////////////////////////////////////
619 614

  
620 615
  public ObjectType intGetObjectType(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyMirror.java
412 412
    return mStickers[sticker];
413 413
    }
414 414

  
415
///////////////////////////////////////////////////////////////////////////////////////////////////
416

  
417
  protected int getStickerIndex(int face)
418
    {
419
    return face/NUM_FACE_COLORS;
420
    }
421

  
422 415
///////////////////////////////////////////////////////////////////////////////////////////////////
423 416

  
424 417
  public int getNumStickerTypes(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java
433 433
    return mStickers[sticker];
434 434
    }
435 435

  
436
///////////////////////////////////////////////////////////////////////////////////////////////////
437

  
438
  protected int getStickerIndex(int face)
439
    {
440
    return face/NUM_FACE_COLORS;
441
    }
442

  
443 436
///////////////////////////////////////////////////////////////////////////////////////////////////
444 437
// public API
445 438

  
src/main/java/org/distorted/objectlib/objects/TwistyRedi.java
452 452
    return mStickers[sticker];
453 453
    }
454 454

  
455
///////////////////////////////////////////////////////////////////////////////////////////////////
456

  
457
  protected int getStickerIndex(int face)
458
    {
459
    return face/NUM_FACE_COLORS;
460
    }
461

  
462 455
///////////////////////////////////////////////////////////////////////////////////////////////////
463 456
// PUBLIC API
464 457

  
src/main/java/org/distorted/objectlib/objects/TwistyRex.java
486 486
    return mStickers[sticker];
487 487
    }
488 488

  
489
///////////////////////////////////////////////////////////////////////////////////////////////////
490

  
491
  protected int getStickerIndex(int face)
492
    {
493
    return face/NUM_FACE_COLORS;
494
    }
495

  
496 489
///////////////////////////////////////////////////////////////////////////////////////////////////
497 490
// PUBLIC API
498 491

  
src/main/java/org/distorted/objectlib/objects/TwistySkewb.java
604 604
    return mStickers[sticker];
605 605
    }
606 606

  
607
///////////////////////////////////////////////////////////////////////////////////////////////////
608

  
609
  protected int getStickerIndex(int face)
610
    {
611
    return face/NUM_FACE_COLORS;
612
    }
613

  
614 607
///////////////////////////////////////////////////////////////////////////////////////////////////
615 608
// PUBLIC API
616 609

  
src/main/java/org/distorted/objectlib/objects/TwistySquare1.java
265 265
    return mStickers[sticker];
266 266
    }
267 267

  
268
///////////////////////////////////////////////////////////////////////////////////////////////////
269

  
270
  protected int getStickerIndex(int face)
271
    {
272
    return face/NUM_FACE_COLORS;
273
    }
274

  
275 268
///////////////////////////////////////////////////////////////////////////////////////////////////
276 269

  
277 270
  public float[][] getCubitPositions(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistySquare2.java
270 270
    return mStickers[sticker];
271 271
    }
272 272

  
273
///////////////////////////////////////////////////////////////////////////////////////////////////
274

  
275
  protected int getStickerIndex(int face)
276
    {
277
    return face/NUM_FACE_COLORS;
278
    }
279

  
280 273
///////////////////////////////////////////////////////////////////////////////////////////////////
281 274

  
282 275
  public float[][] getCubitPositions(int[] numLayers)
src/main/java/org/distorted/objectlib/objects/TwistyUltimate.java
355 355
    return mStickers[sticker];
356 356
    }
357 357

  
358
///////////////////////////////////////////////////////////////////////////////////////////////////
359

  
360
  protected int getStickerIndex(int face)
361
    {
362
    return face/NUM_FACE_COLORS;
363
    }
364

  
365 358
///////////////////////////////////////////////////////////////////////////////////////////////////
366 359

  
367 360
  public Static4D[] getQuats()

Also available in: Unified diff