Revision 7464b393
Added by Leszek Koltunski 11 months ago
| src/main/java/org/distorted/objects/RubikObject.java | ||
|---|---|---|
| 39 | 39 |
private final int mIconID; |
| 40 | 40 |
private final String[][] mPatterns; |
| 41 | 41 |
private final int mPrice; |
| 42 |
private final int mSolverOrdinal;
|
|
| 42 |
private final int[] mSolverOrdinals;
|
|
| 43 | 43 |
private final int mObjectOrdinal; |
| 44 | 44 |
private final boolean mIsLocal; |
| 45 | 45 |
private final int mCategory, mYear; |
| ... | ... | |
| 81 | 81 |
int patternOrdinal = RubikPatternList.getOrdinal(mObjectIndex); |
| 82 | 82 |
mPatterns = RubikPatternList.getPatterns(patternOrdinal); |
| 83 | 83 |
|
| 84 |
mSolverOrdinal = SolvingList.getSolverOrdinal(mObjectOrdinal);
|
|
| 84 |
mSolverOrdinals= SolvingList.getSolverOrdinals(mObjectOrdinal);
|
|
| 85 | 85 |
mExtrasOrdinal = -1; |
| 86 | 86 |
|
| 87 | 87 |
mObjectVersion = meta.objectVersion(); |
| ... | ... | |
| 110 | 110 |
|
| 111 | 111 |
mPatterns = null; |
| 112 | 112 |
mExtrasOrdinal = -1; |
| 113 |
mSolverOrdinal = -1;
|
|
| 113 |
mSolverOrdinals= null;
|
|
| 114 | 114 |
mObjectOrdinal = -1; |
| 115 | 115 |
mIsLocal = true; |
| 116 | 116 |
|
| ... | ... | |
| 355 | 355 |
|
| 356 | 356 |
public boolean hasSolver() |
| 357 | 357 |
{
|
| 358 |
return mSolverOrdinal>=0; |
|
| 359 |
} |
|
| 360 |
|
|
| 361 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 362 |
|
|
| 363 |
public int getSolverOrdinal() |
|
| 364 |
{
|
|
| 365 |
return mSolverOrdinal; |
|
| 358 |
return mSolverOrdinals!=null; |
|
| 366 | 359 |
} |
| 367 | 360 |
|
| 368 | 361 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/solvers/SolvingList.java | ||
|---|---|---|
| 27 | 27 |
{
|
| 28 | 28 |
CUBE2 (CUBE_2.ordinal(), SolverTablebaseCUBE2.class, R.string.solver_cube2_title, R.string.solver_cube2_description, true), |
| 29 | 29 |
CUBE3_KOCIEMBA (CUBE_3.ordinal(), SolverKociembaCUBE3.class , R.string.solver_cube3_title, R.string.solver_cube3_description, true), |
| 30 |
//CUBE3_FAKE (CUBE_3.ordinal(), SolverKociembaCUBE3.class , R.string.solver_cube3_title, R.string.solver_cube3_description, true), |
|
| 31 |
|
|
| 30 | 32 |
CU232 (CU_232.ordinal(), SolverTablebaseCU232.class, R.string.solver_cu232_title, R.string.solver_cu232_description, true), |
| 31 | 33 |
CU323 (CU_323.ordinal(), SolverTablebaseCU323.class, R.string.solver_cu323_title, R.string.solver_cu323_description, true), |
| 32 | 34 |
PYRAMINX (PYRA_3.ordinal(), SolverTablebasePYRA3.class, R.string.solver_pyra3_title, R.string.solver_pyra3_description, true), |
| ... | ... | |
| 70 | 72 |
|
| 71 | 73 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 72 | 74 |
|
| 73 |
public static int getSolverOrdinal(int objectOrdinal)
|
|
| 75 |
public static int[] getSolverOrdinals(int objectOrdinal)
|
|
| 74 | 76 |
{
|
| 77 |
int num = 0; |
|
| 78 |
|
|
| 75 | 79 |
for(int o=0; o<NUM_OBJECTS; o++) |
| 76 |
if( objects[o].mObjectOrdinal==objectOrdinal ) return o;
|
|
| 80 |
if( objects[o].mObjectOrdinal==objectOrdinal ) num++;
|
|
| 77 | 81 |
|
| 78 |
return -1; |
|
| 82 |
if( num>0 ) |
|
| 83 |
{
|
|
| 84 |
int[] ret = new int[num]; |
|
| 85 |
int index = 0; |
|
| 86 |
|
|
| 87 |
for(int o=0; o<NUM_OBJECTS; o++) |
|
| 88 |
if( objects[o].mObjectOrdinal==objectOrdinal ) ret[index++] = o; |
|
| 89 |
|
|
| 90 |
return ret; |
|
| 91 |
} |
|
| 92 |
return null; |
|
| 79 | 93 |
} |
| 80 | 94 |
|
| 81 | 95 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/solverui/ScreenSolver.java | ||
|---|---|---|
| 55 | 55 |
private int mNumColors; |
| 56 | 56 |
private float mBitmapSize; |
| 57 | 57 |
private WeakReference<SolverActivity> mWeakAct; |
| 58 |
private SolvingList mList;
|
|
| 58 |
private int mObjectOrdinal;
|
|
| 59 | 59 |
|
| 60 | 60 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 61 | 61 |
|
| ... | ... | |
| 78 | 78 |
mWeakAct = new WeakReference<>(act); |
| 79 | 79 |
mSolving = false; |
| 80 | 80 |
|
| 81 |
int solverIndex= act.getSolverOrdinal(); |
|
| 82 |
mList = SolvingList.getSolver(solverIndex); |
|
| 83 |
int currentObject = mList.getObjectOrdinal(); |
|
| 81 |
mObjectOrdinal = act.getObjectOrdinal(); |
|
| 84 | 82 |
control.solveOnly(); |
| 85 |
generateFaceColors(currentObject);
|
|
| 83 |
generateFaceColors(mObjectOrdinal);
|
|
| 86 | 84 |
|
| 87 | 85 |
final float BUTTON_RATIO = 0.75f; |
| 88 | 86 |
int sizeV = (int)(heigh*MainActivity.RATIO_BAR*BUTTON_RATIO); |
| ... | ... | |
| 239 | 237 |
return color; |
| 240 | 238 |
} |
| 241 | 239 |
|
| 240 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 241 |
|
|
| 242 |
private boolean pressSolve(SolverActivity act) |
|
| 243 |
{
|
|
| 244 |
int[] solverOrdinals = SolvingList.getSolverOrdinals(mObjectOrdinal); |
|
| 245 |
|
|
| 246 |
if( solverOrdinals!=null ) |
|
| 247 |
{
|
|
| 248 |
int len = solverOrdinals.length; |
|
| 249 |
|
|
| 250 |
if( len==1 ) // just one solver - simply launch it and start finding the solution |
|
| 251 |
{
|
|
| 252 |
SolvingList list = SolvingList.getSolver(solverOrdinals[0]); |
|
| 253 |
TwistyObject object = act.getObject(); |
|
| 254 |
SolvingThread solver = new SolvingThread( act.getInterface(), act.getResources(), object, list ); |
|
| 255 |
solver.start(); |
|
| 256 |
return true; |
|
| 257 |
} |
|
| 258 |
else // more than one solver - launch a choosing dialog |
|
| 259 |
{
|
|
| 260 |
// TODO |
|
| 261 |
android.util.Log.e("D", len+" solvers found for object "+mObjectOrdinal);
|
|
| 262 |
return false; |
|
| 263 |
} |
|
| 264 |
} |
|
| 265 |
else // no solvers? Impossible! |
|
| 266 |
{
|
|
| 267 |
android.util.Log.e("D", "No solvers found for object "+mObjectOrdinal);
|
|
| 268 |
return false; |
|
| 269 |
} |
|
| 270 |
} |
|
| 271 |
|
|
| 242 | 272 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 243 | 273 |
|
| 244 | 274 |
private void setupColorButtons(final SolverActivity act, final float width) |
| ... | ... | |
| 304 | 334 |
@Override |
| 305 | 335 |
public void onClick(View v) |
| 306 | 336 |
{
|
| 307 |
if( !mSolving ) |
|
| 308 |
{
|
|
| 309 |
mSolving = true; |
|
| 310 |
TwistyObject object = act.getObject(); |
|
| 311 |
SolvingThread solver = new SolvingThread( act.getInterface(), act.getResources(), object, mList ); |
|
| 312 |
solver.start(); |
|
| 313 |
} |
|
| 337 |
if( !mSolving && pressSolve(act) ) mSolving = true; |
|
| 314 | 338 |
} |
| 315 | 339 |
}); |
| 316 | 340 |
} |
| src/main/java/org/distorted/solverui/SolverActivity.java | ||
|---|---|---|
| 29 | 29 |
import org.distorted.objects.RubikObject; |
| 30 | 30 |
import org.distorted.objects.RubikObjectList; |
| 31 | 31 |
import org.distorted.os.OSInterface; |
| 32 |
import org.distorted.solvers.SolvingList; |
|
| 33 | 32 |
|
| 34 | 33 |
import java.io.InputStream; |
| 35 | 34 |
|
| ... | ... | |
| 46 | 45 |
private static final int ACTIVITY_NUMBER = 4; |
| 47 | 46 |
private static final float RATIO_INSET= 0.09f; |
| 48 | 47 |
|
| 49 |
private int mSolverOrdinal; |
|
| 50 | 48 |
private int mObjectOrdinal; |
| 51 | 49 |
private boolean mDisplayMessageDialog; |
| 52 | 50 |
|
| ... | ... | |
| 61 | 59 |
|
| 62 | 60 |
Bundle b = getIntent().getExtras(); |
| 63 | 61 |
mObjectOrdinal = b!=null ? b.getInt("obj") : 0;
|
| 64 |
RubikObject object = RubikObjectList.getObject(mObjectOrdinal); |
|
| 65 |
mSolverOrdinal = object==null ? -1 : object.getSolverOrdinal(); |
|
| 66 | 62 |
mDisplayMessageDialog = true; |
| 67 | 63 |
|
| 68 | 64 |
computeScreenDimensions(); |
| ... | ... | |
| 211 | 207 |
return view.getObjectControl(); |
| 212 | 208 |
} |
| 213 | 209 |
|
| 214 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 215 |
|
|
| 216 |
public int getSolverOrdinal() |
|
| 217 |
{
|
|
| 218 |
return mSolverOrdinal; |
|
| 219 |
} |
|
| 220 |
|
|
| 221 | 210 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 222 | 211 |
|
| 223 | 212 |
public int getObjectOrdinal() |
Also available in: Unified diff
Beginning of support for more than one solver per object.