| 21 |
21 |
import org.distorted.main.BuildConfig;
|
| 22 |
22 |
import org.distorted.objects.RubikObject;
|
| 23 |
23 |
import org.distorted.objects.RubikObjectList;
|
|
24 |
import org.distorted.screens.RubikScreenPlay;
|
| 24 |
25 |
|
| 25 |
26 |
import static org.distorted.objectlib.main.ObjectType.MAX_SCRAMBLES;
|
| 26 |
27 |
|
| ... | ... | |
| 29 |
30 |
|
| 30 |
31 |
public class RubikScores
|
| 31 |
32 |
{
|
|
33 |
public static final int RECORD_FIRST = 0;
|
|
34 |
public static final int RECORD_NEW = 1;
|
|
35 |
public static final int RECORD_NOT_NEW = 2;
|
|
36 |
|
| 32 |
37 |
public static final int MAX_RECORD = 10;
|
| 33 |
38 |
public static final int MULT = 1000000;
|
| 34 |
39 |
public static final long NO_RECORD = Long.MAX_VALUE;
|
| ... | ... | |
| 40 |
45 |
private int mNumPlays;
|
| 41 |
46 |
private int mNumWins;
|
| 42 |
47 |
private int mDeviceID;
|
|
48 |
private int mNumStars;
|
| 43 |
49 |
|
| 44 |
50 |
private static class MapValue
|
| 45 |
51 |
{
|
| ... | ... | |
| 70 |
76 |
mNumRuns = -1;
|
| 71 |
77 |
mDeviceID= -1;
|
| 72 |
78 |
mNumWins = 0;
|
|
79 |
mNumStars= 0;
|
| 73 |
80 |
}
|
| 74 |
81 |
|
| 75 |
82 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 228 |
235 |
return mNumWins;
|
| 229 |
236 |
}
|
| 230 |
237 |
|
|
238 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
239 |
|
|
240 |
public void changeNumStars(int stars)
|
|
241 |
{
|
|
242 |
mNumStars += stars;
|
|
243 |
}
|
|
244 |
|
|
245 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
246 |
|
|
247 |
public int getNumStars()
|
|
248 |
{
|
|
249 |
return mNumStars;
|
|
250 |
}
|
|
251 |
|
| 231 |
252 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 232 |
253 |
|
| 233 |
254 |
public void setName(String newName)
|
| ... | ... | |
| 237 |
258 |
|
| 238 |
259 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 239 |
260 |
|
| 240 |
|
public synchronized boolean setRecord(int object, int level, long record)
|
|
261 |
public synchronized int setRecord(int object, int level, long record)
|
| 241 |
262 |
{
|
| 242 |
263 |
int key = mapKey(object,level);
|
| 243 |
264 |
MapValue oldValue = mMap.get(key);
|
| ... | ... | |
| 246 |
267 |
{
|
| 247 |
268 |
MapValue value = new MapValue(record,0);
|
| 248 |
269 |
mMap.put(key,value);
|
| 249 |
|
return true;
|
|
270 |
return RECORD_FIRST;
|
| 250 |
271 |
}
|
| 251 |
272 |
|
| 252 |
273 |
long oldRecord = oldValue.record;
|
| ... | ... | |
| 255 |
276 |
{
|
| 256 |
277 |
MapValue value = new MapValue(record,0);
|
| 257 |
278 |
mMap.put(key,value);
|
| 258 |
|
return true;
|
|
279 |
return RECORD_NEW;
|
| 259 |
280 |
}
|
| 260 |
281 |
|
| 261 |
|
return false;
|
|
282 |
return RECORD_NOT_NEW;
|
| 262 |
283 |
}
|
|
284 |
|
| 263 |
285 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 264 |
286 |
|
| 265 |
287 |
public synchronized long getRecord(int object, int level)
|
| ... | ... | |
| 355 |
377 |
editor.putInt("scores_numRuns" , mNumRuns );
|
| 356 |
378 |
editor.putInt("scores_deviceid", mDeviceID);
|
| 357 |
379 |
editor.putInt("scores_review" , mNumWins );
|
|
380 |
editor.putInt("scores_review" , mNumWins ); // legacy name
|
|
381 |
editor.putInt("scores_numStars", mNumStars );
|
| 358 |
382 |
}
|
| 359 |
383 |
|
| 360 |
384 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 425 |
449 |
mNumRuns = preferences.getInt("scores_numRuns" , 0);
|
| 426 |
450 |
mDeviceID = preferences.getInt("scores_deviceid",-1);
|
| 427 |
451 |
mNumWins = preferences.getInt("scores_review" , 0);
|
|
452 |
mNumStars = preferences.getInt("scores_numStars", 0);
|
| 428 |
453 |
|
| 429 |
454 |
if( mDeviceID==-1 ) mDeviceID = privateGetDeviceID();
|
| 430 |
455 |
|
| 431 |
456 |
if( thereWasError ) recordDBError(errorStr);
|
| 432 |
457 |
}
|
| 433 |
458 |
|
|
459 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
460 |
|
|
461 |
public int numberOfSolvedMAXes()
|
|
462 |
{
|
|
463 |
int numObjects = RubikObjectList.getNumObjects();
|
|
464 |
int ret=0, level = RubikScreenPlay.LEVELS_SHOWN;
|
|
465 |
|
|
466 |
for(int obj=0; obj<numObjects; obj++)
|
|
467 |
{
|
|
468 |
if( isSolved(obj,level) ) ret++;
|
|
469 |
}
|
|
470 |
|
|
471 |
return ret;
|
|
472 |
}
|
|
473 |
|
| 434 |
474 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 435 |
475 |
|
| 436 |
476 |
public void recordDBError(String message)
|
Partly merge the 'iap' branch.