Project

General

Profile

« Previous | Next » 

Revision ea889ebf

Added by Leszek Koltunski over 1 year ago

Correct scramble tables for the Rex and Void Cubes.

View differences:

src/main/java/org/distorted/objectlib/objects/TwistyVoid.java
76 76
    }
77 77

  
78 78
///////////////////////////////////////////////////////////////////////////////////////////////////
79
// +5 missing - it is the 180 deg rotation of the middle layer which we don't want.
79 80

  
80
  private void insertSection(int[] table, int startIndex, int size, int startAlg, int state)
81
  private void insertSection(int[] table, int index, int alg, int state)
81 82
    {
82
    for(int i=0; i<size; i++)
83
      {
84
      table[2*(i+startIndex)  ] = startAlg +i;
85
      table[2*(i+startIndex)+1] = state;
86
      }
83
    table[index   ] = alg;
84
    table[index+ 1] = state;
85
    table[index+ 2] = alg+1;
86
    table[index+ 3] = state;
87
    table[index+ 4] = alg+2;
88
    table[index+ 5] = state;
89
    table[index+ 6] = alg+3;
90
    table[index+ 7] = state;
91
    table[index+ 8] = alg+4;
92
    table[index+ 9] = state;
93
    table[index+10] = alg+6;
94
    table[index+11] = state;
95
    table[index+12] = alg+7;
96
    table[index+13] = state;
97
    table[index+14] = alg+8;
98
    table[index+15] = state;
87 99
    }
88 100

  
89 101
///////////////////////////////////////////////////////////////////////////////////////////////////
90 102

  
91 103
  private int[] createEdge(int stateX, int stateY, int stateZ)
92 104
    {
93
    int size = 8;
105
    int size= 8;
94 106
    int num = 0;
95
    if( stateX>=0 ) num += size;
96
    if( stateY>=0 ) num += size;
97
    if( stateZ>=0 ) num += size;
98

  
99
    int[] ret = new int[2*num];
100

  
101
    if( stateX>=0 )
102
      {
103
      insertSection(ret,0,size,0,stateX);
104
      if( stateY>=0 )
105
        {
106
        insertSection(ret,size,size,size+1,stateY);
107
        if( stateZ>=0 ) insertSection(ret,2*size,size,2*size+2,stateZ);
108
        }
109
      else
110
        {
111
        if( stateZ>=0 ) insertSection(ret,size,size,2*size+2,stateZ);
112
        }
113
      }
114
    else
115
      {
116
      if( stateY>=0 )
117
        {
118
        insertSection(ret,0,size,size+1,stateY);
119
        if( stateZ>=0 ) insertSection(ret,size,size,2*size+2,stateZ);
120
        }
121
      else
122
        {
123
        if( stateZ>=0 ) insertSection(ret,0,size,2*size+2,stateZ);
124
        }
125
      }
107
    if( stateX>=0 ) num += 2*size;
108
    if( stateY>=0 ) num += 2*size;
109
    if( stateZ>=0 ) num += 2*size;
110

  
111
    int[] ret = new int[num];
112

  
113
    int index = 0;
114
    int alg = 0;
115
    if( stateX>=0 ) { insertSection(ret,index,alg,stateX); index+= (2*size);}
116
    alg += (size+1);
117
    if( stateY>=0 ) { insertSection(ret,index,alg,stateY); index+= (2*size);}
118
    alg += (size+1);
119
    if( stateZ>=0 ) { insertSection(ret,index,alg,stateZ); }
126 120

  
127 121
    return ret;
128 122
    }

Also available in: Unified diff