Project

General

Profile

« Previous | Next » 

Revision 03389bee

Added by Leszek Koltunski 23 days ago

compiles now

View differences:

src/main/java/org/distorted/phasedsolver/SolverActivity.java
24 24
import androidx.preference.PreferenceManager;
25 25

  
26 26
import org.distorted.library.main.DistortedLibrary;
27
import org.distorted.objectlib.helpers.ObjectMove;
27 28
import org.distorted.objectlib.solvers.implemented.PhasedSolverList;
28 29
import org.distorted.objectlib.solvers.implemented.PhasedSolverAbstract;
29 30
import org.distorted.objectlib.main.InitAssets;
......
235 236
    else
236 237
      {
237 238
      int numMoves = solution[0];
238
      int[][] moves = new int[numMoves][];
239
      ObjectMove[] moves = new ObjectMove[numMoves];
239 240
      int index = 0;
240 241

  
241 242
      for(int m=1; m<=numMoves; m++)
src/main/java/org/distorted/phasedsolver/SolverLowerPane.java
20 20
import org.distorted.library.type.Static2D;
21 21
import org.distorted.library.type.Static4D;
22 22
import org.distorted.objectlib.helpers.MovesFinished;
23
import org.distorted.objectlib.helpers.ObjectMove;
23 24
import org.distorted.objectlib.main.ObjectControl;
24 25
import org.distorted.objectlib.main.TwistyObject;
25 26

  
......
37 38
  private final TextView mText, mPhase;
38 39
  private String[] mPhaseNames;
39 40
  private int mNumPhases;
40
  private int[][][] mMoves;
41
  private ObjectMove[][] mMoves;
41 42
  private int[][] mCubitsNotInvolved;
42 43
  private int mNumMoves,mCurrMove,mCurrPhase;
43 44
  private boolean mCanMove;
......
74 75

  
75 76
    mPhaseNames = names;
76 77
    mNumPhases = names.length;
77
    mMoves = new int[mNumPhases][][];
78
    mMoves = new ObjectMove[mNumPhases][];
78 79
    mCubitsNotInvolved = new int[mNumPhases][];
79 80
    mCanMove = true;
80 81
    setSolution(null,0,null);
......
86 87
    {
87 88
    mPhaseNames = names;
88 89
    mNumPhases = names.length;
89
    mMoves = new int[mNumPhases][][];
90
    mMoves = new ObjectMove[mNumPhases][];
90 91
    mCubitsNotInvolved = new int[mNumPhases][];
91 92
    mCanMove = true;
92 93
    setSolution(null,0,null);
......
101 102

  
102 103
    if( mCurrMove>0 )
103 104
      {
104
      int[][] moves = transformMoves(mMoves[mCurrPhase],0,mCurrMove, false);
105
      ObjectMove[] moves = transformMoves(mMoves[mCurrPhase],0,mCurrMove, false);
105 106
      control.applyScrambles(moves);
106 107
      mCurrMove = 0;
107 108
      }
......
110 111
      mCurrPhase--;
111 112
      mNumMoves = mMoves[mCurrPhase]==null ? 0 : mMoves[mCurrPhase].length;
112 113
      mCurrMove = 0;
113
      int[][] moves = transformMoves(mMoves[mCurrPhase],0,mNumMoves, false);
114
      ObjectMove[] moves = transformMoves(mMoves[mCurrPhase],0,mNumMoves, false);
114 115
      control.applyScrambles(moves);
115 116
      }
116 117
    else
......
118 119
      mCurrPhase = mNumPhases-1;
119 120
      mNumMoves = mMoves[mCurrPhase]==null ? 0 : mMoves[mCurrPhase].length;
120 121
      mCurrMove = mNumMoves;
121
      int[][] moves = transformMoves(mMoves, true);
122
      ObjectMove[] moves = transformMoves(mMoves, true);
122 123
      control.applyScrambles(moves);
123 124
      }
124 125

  
......
135 136
    if( mCurrPhase<mNumPhases-1 )
136 137
      {
137 138
      glowCubits(mCubitsNotInvolved[mCurrPhase]);
138
      int[][] moves = transformMoves(mMoves[mCurrPhase],mCurrMove,mNumMoves, true);
139
      ObjectMove[] moves = transformMoves(mMoves[mCurrPhase],mCurrMove,mNumMoves, true);
139 140
      control.applyScrambles(moves);
140 141
      mCurrPhase++;
141 142
      mNumMoves = mMoves[mCurrPhase]==null ? 0 : mMoves[mCurrPhase].length;
......
144 145
    else if( mCurrMove<mNumMoves )
145 146
      {
146 147
      glowCubits(mCubitsNotInvolved[mCurrPhase]);
147
      int[][] moves = transformMoves(mMoves[mCurrPhase],mCurrMove,mNumMoves, true);
148
      ObjectMove[] moves = transformMoves(mMoves[mCurrPhase],mCurrMove,mNumMoves, true);
148 149
      control.applyScrambles(moves);
149 150
      mCurrMove = mNumMoves;
150 151
      }
......
153 154
      mCurrPhase = 0;
154 155
      mNumMoves = mMoves[mCurrPhase]==null ? 0 : mMoves[mCurrPhase].length;
155 156
      mCurrMove = 0;
156
      int[][] moves = transformMoves(mMoves, false);
157
      ObjectMove[] moves = transformMoves(mMoves, false);
157 158
      control.applyScrambles(moves);
158 159
      }
159 160

  
......
190 191

  
191 192
///////////////////////////////////////////////////////////////////////////////////////////////////
192 193

  
193
  private int[][] transformMoves(int[][] moves, int start, int end, boolean front)
194
  private ObjectMove[] transformMoves(ObjectMove[] moves, int start, int end, boolean front)
194 195
    {
195
    int mult = front ? 1:-1;
196 196
    int len = end-start;
197
    int[][] ret = new int[len][];
197
    ObjectMove[] ret = new ObjectMove[len];
198 198

  
199 199
    for(int m=0; m<len; m++)
200 200
      {
201
      int[] mv = moves[front ? start+m : end-1-m];
202
      int[] rt = new int[3];
203
      rt[0] = mv[0];
204
      rt[1] = (1<<mv[1]);
205
      rt[2] = mult*mv[2];
206
      ret[m] = rt;
201
      ObjectMove mv = moves[front ? start+m : end-1-m];
202
      ret[m] = new ObjectMove( mv.getAxis(), mv.getRowBitmap(), front ? mv.getAngle() : -mv.getAngle());
207 203
      }
208 204

  
209 205
    return ret;
......
211 207

  
212 208
///////////////////////////////////////////////////////////////////////////////////////////////////
213 209

  
214
  private int[][] transformMoves(int[][][] moves, boolean front)
210
  private ObjectMove[] transformMoves(ObjectMove[][] moves, boolean front)
215 211
    {
216 212
    int len = moves.length;
217 213
    int totalLen = 0;
218
    for (int[][] move : moves) totalLen += (move==null ? 0 : move.length);
214
    for (ObjectMove[] move : moves) totalLen += (move==null ? 0 : move.length);
219 215

  
220
    int[][] ret = new int[totalLen][];
221
    int mult = front ? 1:-1;
216
    ObjectMove[] ret = new ObjectMove[totalLen];
222 217
    int index = 0;
223 218

  
224 219
    for(int m=0; m<len; m++)
225 220
      {
226
      int[][] mv = moves[front ? m : len-1-m];
221
      ObjectMove[] mv = moves[front ? m : len-1-m];
227 222
      int l = (mv==null ? 0 : mv.length);
228 223

  
229 224
      for(int p=0; p<l; p++)
230 225
        {
231
        int[] mve = mv[front ? p : l-1-p];
232
        int[] rt = new int[3];
233
        rt[0] = mve[0];
234
        rt[1] = (1<<mve[1]);
235
        rt[2] = mult*mve[2];
236
        ret[index++] = rt;
226
        ObjectMove mve = mv[front ? p : l-1-p];
227
        ret[index++] = new ObjectMove( mve.getAxis(), mve.getRowBitmap(), front ? mve.getAngle() : -mve.getAngle());
237 228
        }
238 229
      }
239 230

  
......
301 292

  
302 293
///////////////////////////////////////////////////////////////////////////////////////////////////
303 294

  
304
  void setSolution(int[][] moves, int phase, int[][] subphases)
295
  void setSolution(ObjectMove[] moves, int phase, int[][] subphases)
305 296
    {
306 297
    SolverActivity act=mAct.get();
307 298

  
......
344 335
      if( mCurrMove>0 )
345 336
        {
346 337
        mCanMove = false;
347
        int[] move = mMoves[mCurrPhase][--mCurrMove];
338
        ObjectMove move = mMoves[mCurrPhase][--mCurrMove];
348 339
        ObjectControl control = act.getControl();
349 340
        control.blockTouch(MOVES_PLACE_0);
350
        control.addRotation(this, move[0], (1<<move[1]), -move[2], MILLIS_PER_DEGREE);
341
        control.addRotation(this, move.getAxis(), move.getRowBitmap(), -move.getAngle(), MILLIS_PER_DEGREE);
351 342
        }
352 343
      else if( mCurrPhase>0 )
353 344
        {
......
361 352
        mCurrPhase = mNumPhases-1;
362 353
        mNumMoves = mMoves[mCurrPhase]==null ? 0 : mMoves[mCurrPhase].length;
363 354
        mCurrMove = mNumMoves;
364
        int[][] moves = transformMoves(mMoves, true);
355
        ObjectMove[] moves = transformMoves(mMoves, true);
365 356
        ObjectControl control = act.getControl();
366 357
        control.applyScrambles(moves);
367 358
        glowCubits(mCubitsNotInvolved[mCurrPhase]);
......
382 373
      if( mCurrMove<mNumMoves )
383 374
        {
384 375
        mCanMove = false;
385
        int[] move = mMoves[mCurrPhase][mCurrMove++];
376
        ObjectMove move = mMoves[mCurrPhase][mCurrMove++];
386 377
        ObjectControl control = act.getControl();
387 378
        control.blockTouch(MOVES_PLACE_1);
388
        control.addRotation(this, move[0], (1<<move[1]), move[2], MILLIS_PER_DEGREE);
379
        control.addRotation(this, move.getAxis(), move.getRowBitmap(), move.getAngle(), MILLIS_PER_DEGREE);
389 380
        if( mCurrMove==mNumMoves && mCurrPhase==mNumPhases-1 ) glowCubits(mCubitsNotInvolved[mCurrPhase]);
390 381
        }
391 382
      else if( mCurrPhase<mNumPhases-1 )
......
400 391
        mCurrPhase = 0;
401 392
        mNumMoves = mMoves[mCurrPhase]==null ? 0 : mMoves[mCurrPhase].length;
402 393
        mCurrMove = 0;
403
        int[][] moves = transformMoves(mMoves, false);
394
        ObjectMove[] moves = transformMoves(mMoves, false);
404 395
        ObjectControl control = act.getControl();
405 396
        control.applyScrambles(moves);
406 397
        }

Also available in: Unified diff