Revision 65bc1da3
Added by Leszek Koltunski over 1 year ago
src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java | ||
---|---|---|
66 | 66 |
|
67 | 67 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
68 | 68 |
|
69 |
private void addSection(int tab, int level, int numLevels, final RubikDialogScoresView view, final String[] country, final String[] name, final float[] time)
|
|
69 |
private void addSection(int tab, int level, int numLevels, final RubikDialogScoresView view, final String[] country, final String[] name, final int[] time)
|
|
70 | 70 |
{ |
71 | 71 |
String title = level==numLevels ? |
72 | 72 |
mAct.getString(R.string.levelM) : |
... | ... | |
120 | 120 |
|
121 | 121 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
122 | 122 |
|
123 |
public void receive(final String[][][] country, final String[][][] name, final float[][][] time)
|
|
123 |
public void receive(final String[][][] country, final String[][][] name, final int[][][] time)
|
|
124 | 124 |
{ |
125 | 125 |
prepareView(); |
126 | 126 |
int toDo=0; |
src/main/java/org/distorted/dialogs/RubikDialogScoresView.java | ||
---|---|---|
9 | 9 |
|
10 | 10 |
package org.distorted.dialogs; |
11 | 11 |
|
12 |
import android.annotation.SuppressLint; |
|
13 | 12 |
import android.content.Context; |
14 | 13 |
import android.content.res.Resources; |
15 | 14 |
import androidx.fragment.app.FragmentActivity; |
... | ... | |
64 | 63 |
|
65 | 64 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
66 | 65 |
|
67 |
@SuppressLint("DefaultLocale") |
|
68 |
LinearLayout createSection(FragmentActivity act, int tab, String title, int level, final String[] country, final String[] name, final float[] time) |
|
66 |
LinearLayout createSection(FragmentActivity act, int tab, String title, int level, final String[] country, final String[] name, final int[] time) |
|
69 | 67 |
{ |
70 | 68 |
LinearLayout levelLayout = (LinearLayout)inflate(act, R.layout.dialog_scores_scramble_title, null); |
71 | 69 |
TextView text = levelLayout.findViewById(R.id.scoresScrambleTitle); |
... | ... | |
79 | 77 |
RubikScores scores = RubikScores.getInstance(); |
80 | 78 |
|
81 | 79 |
boolean inserted = false; |
82 |
long myRecordInMillis = scores.getRecord(tab, level);
|
|
83 |
float myRecordInSeconds = (myRecordInMillis/10)/100.0f;
|
|
80 |
int myRecordInMillis = scores.getRecord(tab, level);
|
|
81 |
String myRecord = ( myRecordInMillis<RubikScores.NO_RECORD ) ? formatRecord(myRecordInMillis) : "??";
|
|
84 | 82 |
String myName = scores.getName(); |
85 | 83 |
if( myName.length()==0 ) myName = act.getString(R.string.you); |
86 | 84 |
int myCountryID = res.getIdentifier( scores.getCountry(), "drawable", packageName); |
87 |
String myRecord = ( myRecordInMillis<RubikScores.NO_RECORD ) ? String.format("%.2f", myRecordInSeconds) : "??"; |
|
88 | 85 |
String theirTime; |
89 | 86 |
int theirCountryID; |
90 | 87 |
|
... | ... | |
97 | 94 |
{ |
98 | 95 |
if( name[j] != null ) |
99 | 96 |
{ |
100 |
if( myRecordInSeconds<time[j] && !inserted )
|
|
97 |
if( myRecordInMillis<time[j] && !inserted )
|
|
101 | 98 |
{ |
102 | 99 |
inserted = true; |
103 | 100 |
View row = createRow(act, myCountryID, myName, myRecord, height, red); |
... | ... | |
110 | 107 |
{ |
111 | 108 |
if( equals ) inserted=true; |
112 | 109 |
theirCountryID = res.getIdentifier( country[j], "drawable", packageName); |
113 |
theirTime = String.format("%.2f", time[j]);
|
|
110 |
theirTime = formatRecord(time[j]);
|
|
114 | 111 |
View row = createRow(act, theirCountryID, name[j], theirTime, height, equals ? red:white); |
115 | 112 |
levelLayout.addView(row); |
116 | 113 |
} |
... | ... | |
126 | 123 |
return levelLayout; |
127 | 124 |
} |
128 | 125 |
|
126 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
127 |
|
|
128 |
private String formatRecord(int time) |
|
129 |
{ |
|
130 |
time /= 10; |
|
131 |
int millis = time%100; |
|
132 |
time /= 100; |
|
133 |
int seconds = time%60; |
|
134 |
int minutes = time/60; |
|
135 |
|
|
136 |
return minutes + (seconds<10 ? ":0" : ":") + seconds + (millis<10 ? ".0" : ".") + millis; |
|
137 |
} |
|
138 |
|
|
129 | 139 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
130 | 140 |
|
131 | 141 |
private View createRow(FragmentActivity act, int countryID, String name, String time, int height, int color) |
src/main/java/org/distorted/external/RubikNetwork.java | ||
---|---|---|
39 | 39 |
{ |
40 | 40 |
public interface ScoresReceiver |
41 | 41 |
{ |
42 |
void receive(String[][][] country, String[][][] name, float[][][] time);
|
|
42 |
void receive(String[][][] country, String[][][] name, int[][][] time);
|
|
43 | 43 |
void message(String mess); |
44 | 44 |
void error(String error); |
45 | 45 |
} |
... | ... | |
110 | 110 |
|
111 | 111 |
private static String[][][] mCountry; |
112 | 112 |
private static String[][][] mName; |
113 |
private static float[][][] mTime;
|
|
113 |
private static int[][][] mTime;
|
|
114 | 114 |
private static int[][] mPlaces; |
115 | 115 |
|
116 | 116 |
private static RubikNetwork mThis; |
... | ... | |
130 | 130 |
|
131 | 131 |
if( mCountry==null || newNum!=mNumObjects ) mCountry = new String[newNum][LEVELS_SHOWN+1][MAX_PLACES]; |
132 | 132 |
if( mName==null || newNum!=mNumObjects ) mName = new String[newNum][LEVELS_SHOWN+1][MAX_PLACES]; |
133 |
if( mTime==null || newNum!=mNumObjects ) mTime = new float[newNum][LEVELS_SHOWN+1][MAX_PLACES];
|
|
133 |
if( mTime==null || newNum!=mNumObjects ) mTime = new int[newNum][LEVELS_SHOWN+1][MAX_PLACES];
|
|
134 | 134 |
if( mPlaces==null || newNum!=mNumObjects ) mPlaces = new int[newNum][LEVELS_SHOWN+1]; |
135 | 135 |
|
136 | 136 |
if( mUpdates==null ) mUpdates = new RubikUpdates(); |
... | ... | |
243 | 243 |
|
244 | 244 |
mCountry[object][level][p] = country; |
245 | 245 |
mName [object][level][p] = name; |
246 |
mTime [object][level][p] = ((float)(time/10))/100.0f;
|
|
246 |
mTime [object][level][p] = time;
|
|
247 | 247 |
} |
248 | 248 |
} |
249 | 249 |
} |
src/main/java/org/distorted/external/RubikScores.java | ||
---|---|---|
37 | 37 |
|
38 | 38 |
public static final int MAX_RECORD = 10; |
39 | 39 |
public static final int MULT = 1000000; |
40 |
public static final long NO_RECORD = Long.MAX_VALUE;
|
|
40 |
public static final int NO_RECORD = Integer.MAX_VALUE;
|
|
41 | 41 |
private static RubikScores mThis; |
42 | 42 |
|
43 | 43 |
private String mName, mCountry; |
... | ... | |
50 | 50 |
|
51 | 51 |
private static class MapValue |
52 | 52 |
{ |
53 |
long record;
|
|
53 |
int record;
|
|
54 | 54 |
boolean submitted; |
55 | 55 |
|
56 |
MapValue(long rec,int sub)
|
|
56 |
MapValue(int rec,int sub)
|
|
57 | 57 |
{ |
58 | 58 |
record = rec; |
59 | 59 |
submitted = sub!=0; |
... | ... | |
286 | 286 |
|
287 | 287 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
288 | 288 |
|
289 |
public synchronized int setRecord(int object, int level, long record)
|
|
289 |
public synchronized int setRecord(int object, int level, int record)
|
|
290 | 290 |
{ |
291 | 291 |
int key = mapKey(object,level); |
292 | 292 |
MapValue oldValue = mMap.get(key); |
... | ... | |
312 | 312 |
|
313 | 313 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
314 | 314 |
|
315 |
public synchronized long getRecord(int object, int level)
|
|
315 |
public synchronized int getRecord(int object, int level)
|
|
316 | 316 |
{ |
317 | 317 |
int key = mapKey(object,level); |
318 | 318 |
MapValue value = mMap.get(key); |
... | ... | |
420 | 420 |
public synchronized void restorePreferences(SharedPreferences preferences) |
421 | 421 |
{ |
422 | 422 |
String recordStr, subStr, nameStr, timeStr, submStr, errorStr=""; |
423 |
int start, end, equals, comma, ordinal, subm; |
|
424 |
long time; |
|
423 |
int start, end, equals, comma, ordinal, subm, time; |
|
425 | 424 |
boolean thereWasError = false; |
426 | 425 |
int numObjects = RubikObjectList.getNumObjects(); |
427 | 426 |
|
... | ... | |
453 | 452 |
|
454 | 453 |
if( ordinal>=0 && ordinal<numObjects ) |
455 | 454 |
{ |
456 |
time = Long.parseLong(timeStr);
|
|
455 |
time = Integer.parseInt(timeStr);
|
|
457 | 456 |
subm = Integer.parseInt(submStr); |
458 | 457 |
|
459 | 458 |
if( subm>=0 && subm<=1 ) |
src/main/java/org/distorted/main/RubikActivity.java | ||
---|---|---|
75 | 75 |
public static final float PATTERN_GROUP_TEXT = 0.03f; |
76 | 76 |
public static final float PATTERN_CHILD_TEXT = 0.02f; |
77 | 77 |
public static final float SCORES_LEVEL_TEXT = 0.035f; |
78 |
public static final float SCORES_ITEM_TEXT = 0.030f;
|
|
78 |
public static final float SCORES_ITEM_TEXT = 0.025f;
|
|
79 | 79 |
public static final float TAB_WIDTH = 0.066f; |
80 | 80 |
public static final float TAB_HEIGHT = 0.066f; |
81 | 81 |
public static final float POPUP_PADDING = 0.028f; |
src/main/java/org/distorted/screens/RubikScreenSolving.java | ||
---|---|---|
186 | 186 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
187 | 187 |
int object = RubikObjectList.getCurrObject(); |
188 | 188 |
int level = play.getLevel()-1; |
189 |
return mScores.setRecord(object, level, mElapsed); |
|
189 |
return mScores.setRecord(object, level, (int)mElapsed);
|
|
190 | 190 |
} |
191 | 191 |
|
192 | 192 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/res/layout/dialog_scores_scramble_row.xml | ||
---|---|---|
31 | 31 |
android:id="@+id/scoresScrambleRowTime" |
32 | 32 |
android:layout_width="match_parent" |
33 | 33 |
android:layout_height="match_parent" |
34 |
android:layout_weight="1.5"
|
|
34 |
android:layout_weight="1.2"
|
|
35 | 35 |
android:textSize="20sp" |
36 | 36 |
android:maxLines="1" |
37 | 37 |
android:gravity="end" |
38 | 38 |
android:background="@color/black" |
39 |
android:paddingEnd="5dp"
|
|
39 |
android:paddingEnd="3dp"
|
|
40 | 40 |
/> |
41 | 41 |
</LinearLayout> |
Also available in: Unified diff
Improve the way we display time in the Scores dialog