Revision d433b50e
Added by Leszek Koltunski almost 3 years ago
src/main/java/org/distorted/config/ConfigActivity.java | ||
---|---|---|
37 | 37 |
import org.distorted.library.main.DistortedLibrary; |
38 | 38 |
import org.distorted.main.R; |
39 | 39 |
import org.distorted.objectlib.main.ObjectControl; |
40 |
import org.distorted.objectlib.main.ObjectType; |
|
40 |
import org.distorted.objects.RubikObject; |
|
41 |
import org.distorted.objects.RubikObjectList; |
|
41 | 42 |
|
42 | 43 |
import java.io.InputStream; |
43 | 44 |
|
... | ... | |
188 | 189 |
ConfigSurfaceView view = findViewById(R.id.configSurfaceView); |
189 | 190 |
view.onResume(); |
190 | 191 |
|
191 |
if( mObjectOrdinal>=0 && mObjectOrdinal< ObjectType.NUM_OBJECTS )
|
|
192 |
if( mObjectOrdinal>=0 && mObjectOrdinal< RubikObjectList.getNumObjects() )
|
|
192 | 193 |
{ |
193 |
ObjectType obj = ObjectType.getObject(mObjectOrdinal);
|
|
194 |
changeIfDifferent(obj,view.getObjectControl()); |
|
194 |
RubikObject object = RubikObjectList.getObject(mObjectOrdinal);
|
|
195 |
changeIfDifferent(object,view.getObjectControl());
|
|
195 | 196 |
} |
196 | 197 |
} |
197 | 198 |
|
... | ... | |
214 | 215 |
|
215 | 216 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
216 | 217 |
|
217 |
private void changeIfDifferent(ObjectType type,ObjectControl control)
|
|
218 |
private void changeIfDifferent(RubikObject object,ObjectControl control)
|
|
218 | 219 |
{ |
219 |
InputStream jsonStream = ObjectJson.getStream(type,this); |
|
220 |
InputStream meshStream = ObjectMesh.getStream(type,this); |
|
221 |
control.changeIfDifferent(type.ordinal(),jsonStream,meshStream); |
|
220 |
if( object!=null ) |
|
221 |
{ |
|
222 |
int jsonID = object.getJsonID(); |
|
223 |
int meshID = object.getMeshID(); |
|
224 |
|
|
225 |
InputStream jsonStream = ObjectJson.getStream(jsonID,this); |
|
226 |
InputStream meshStream = ObjectMesh.getStream(meshID,this); |
|
227 |
control.changeIfDifferent(object.getOrdinal(),jsonStream,meshStream); |
|
228 |
} |
|
222 | 229 |
} |
223 | 230 |
|
224 | 231 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
304 | 311 |
|
305 | 312 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
306 | 313 |
|
307 |
public void changeObject(ObjectType newObject)
|
|
314 |
public void changeObject(RubikObject object)
|
|
308 | 315 |
{ |
309 | 316 |
ConfigSurfaceView view = findViewById(R.id.configSurfaceView); |
310 | 317 |
ObjectControl control = view.getObjectControl(); |
311 |
changeIfDifferent(newObject,control);
|
|
318 |
changeIfDifferent(object,control);
|
|
312 | 319 |
} |
313 | 320 |
} |
src/main/java/org/distorted/dialogs/RubikDialogNewRecord.java | ||
---|---|---|
38 | 38 |
import org.distorted.main.R; |
39 | 39 |
import org.distorted.main.RubikActivity; |
40 | 40 |
import org.distorted.network.RubikScores; |
41 |
import org.distorted.objectlib.main.ObjectType; |
|
42 | 41 |
import org.distorted.screens.ScreenList; |
43 | 42 |
import org.distorted.screens.RubikScreenPlay; |
44 | 43 |
|
... | ... | |
80 | 79 |
if( name.length()>0 ) |
81 | 80 |
{ |
82 | 81 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
83 |
ObjectType object = play.getObject();
|
|
82 |
int object = play.getObject();
|
|
84 | 83 |
|
85 |
bundle.putInt("tab", object.ordinal() );
|
|
84 |
bundle.putInt("tab", object ); |
|
86 | 85 |
bundle.putBoolean("submitting", true); |
87 | 86 |
|
88 | 87 |
RubikDialogScores scoresDiag = new RubikDialogScores(); |
src/main/java/org/distorted/dialogs/RubikDialogPattern.java | ||
---|---|---|
39 | 39 |
import android.widget.ImageView; |
40 | 40 |
import android.widget.TextView; |
41 | 41 |
|
42 |
import org.distorted.objectlib.main.ObjectType; |
|
43 |
|
|
44 | 42 |
import org.distorted.main.R; |
45 | 43 |
import org.distorted.main.RubikActivity; |
44 |
import org.distorted.objects.RubikObject; |
|
45 |
import org.distorted.objects.RubikObjectList; |
|
46 | 46 |
import org.distorted.patterns.RubikPatternList; |
47 | 47 |
import org.distorted.screens.RubikScreenPlay; |
48 | 48 |
import org.distorted.screens.ScreenList; |
... | ... | |
94 | 94 |
|
95 | 95 |
for(int i=0; i< RubikPatternList.NUM_OBJECTS; i++) |
96 | 96 |
{ |
97 |
ObjectType type = RubikPatternList.getObject(i); |
|
98 |
int iconSize = RubikActivity.getDrawableSize(); |
|
99 |
int iconID = type.getIconID(iconSize); |
|
97 |
int ordinal = RubikPatternList.getObject(i); |
|
98 |
RubikObject object = RubikObjectList.getObject(ordinal); |
|
99 |
int iconSize= RubikActivity.getDrawableSize(); |
|
100 |
int iconID = object==null ? 0 : object.getIconID(iconSize); |
|
100 | 101 |
|
101 | 102 |
ImageView imageView = new ImageView(act); |
102 | 103 |
imageView.setImageResource(iconID); |
... | ... | |
131 | 132 |
private int getPatternOrdinal() |
132 | 133 |
{ |
133 | 134 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
134 |
ObjectType obj = play.getObject();
|
|
135 |
int obj = play.getObject();
|
|
135 | 136 |
int ret = RubikPatternList.getOrdinal(obj); |
136 | 137 |
|
137 | 138 |
if( ret<0 ) |
src/main/java/org/distorted/dialogs/RubikDialogPatternView.java | ||
---|---|---|
27 | 27 |
import android.widget.FrameLayout; |
28 | 28 |
|
29 | 29 |
import org.distorted.objectlib.main.ObjectControl; |
30 |
import org.distorted.objectlib.main.ObjectType; |
|
31 | 30 |
|
32 | 31 |
import org.distorted.main.R; |
33 | 32 |
import org.distorted.main.RubikActivity; |
... | ... | |
96 | 95 |
{ |
97 | 96 |
RubikPattern pattern = RubikPattern.getInstance(); |
98 | 97 |
int[][] moves = pattern.reInitialize(mTab, groupPosition, childPosition); |
99 |
ObjectType object = RubikPatternList.getObject(mTab);
|
|
98 |
int object = RubikPatternList.getObject(mTab);
|
|
100 | 99 |
ract.changeIfDifferent(object,control); |
101 | 100 |
control.initializeObject(moves); |
102 | 101 |
|
src/main/java/org/distorted/dialogs/RubikDialogScores.java | ||
---|---|---|
38 | 38 |
import android.widget.ImageView; |
39 | 39 |
import android.widget.TextView; |
40 | 40 |
|
41 |
import org.distorted.objectlib.main.ObjectType; |
|
42 |
|
|
43 | 41 |
import org.distorted.main.R; |
44 | 42 |
import org.distorted.main.RubikActivity; |
43 |
import org.distorted.objects.RubikObject; |
|
44 |
import org.distorted.objects.RubikObjectList; |
|
45 | 45 |
|
46 | 46 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
47 | 47 |
|
... | ... | |
104 | 104 |
tabLayout.setupWithViewPager(viewPager); |
105 | 105 |
|
106 | 106 |
viewPager.setCurrentItem(curTab); |
107 |
ObjectType type; |
|
108 | 107 |
int iconSize = RubikActivity.getDrawableSize(); |
108 |
int numObjects = RubikObjectList.getNumObjects(); |
|
109 | 109 |
|
110 |
for (int object = 0; object< ObjectType.NUM_OBJECTS; object++)
|
|
110 |
for (int object=0; object<numObjects; object++)
|
|
111 | 111 |
{ |
112 |
type = ObjectType.getObject(object);
|
|
113 |
int iconID = type.getIconID(iconSize);
|
|
112 |
RubikObject robject = RubikObjectList.getObject(object);
|
|
113 |
int iconID = robject==null ? 0 : robject.getIconID(iconSize);
|
|
114 | 114 |
ImageView imageView = new ImageView(act); |
115 | 115 |
imageView.setImageResource(iconID); |
116 | 116 |
TabLayout.Tab tab = tabLayout.getTabAt(object); |
src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java | ||
---|---|---|
30 | 30 |
import android.view.ViewGroup; |
31 | 31 |
import android.widget.LinearLayout; |
32 | 32 |
|
33 |
import org.distorted.objectlib.main.ObjectType; |
|
34 |
|
|
35 | 33 |
import org.distorted.main.R; |
36 | 34 |
import org.distorted.network.RubikScores; |
37 | 35 |
import org.distorted.network.RubikNetwork; |
36 |
import org.distorted.objects.RubikObjectList; |
|
38 | 37 |
import org.distorted.screens.RubikScreenPlay; |
39 | 38 |
|
40 | 39 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
109 | 108 |
{ |
110 | 109 |
prepareView(); |
111 | 110 |
|
112 |
ObjectType[] types = ObjectType.values(); |
|
113 | 111 |
int MAX = RubikScreenPlay.LEVELS_SHOWN; |
114 | 112 |
int toDo=0; |
115 | 113 |
int[] toDoTab = new int[mNumTabs]; |
... | ... | |
118 | 116 |
|
119 | 117 |
for(int i=0; i<mNumTabs; i++) |
120 | 118 |
{ |
121 |
lastTab[i]= RubikScreenPlay.getDBLevel(types[i]);
|
|
119 |
lastTab[i]= RubikObjectList.getDBLevel(i);
|
|
122 | 120 |
maxTab[i] = Math.min(lastTab[i],MAX); |
123 | 121 |
toDoTab[i]= 0; |
124 | 122 |
|
... | ... | |
209 | 207 |
{ |
210 | 208 |
mAct = act; |
211 | 209 |
mDialog = diag; |
212 |
mNumTabs = ObjectType.NUM_OBJECTS;
|
|
210 |
mNumTabs = RubikObjectList.getNumObjects();
|
|
213 | 211 |
mViews = new RubikDialogScoresView[mNumTabs]; |
214 | 212 |
mViewPager = viewPager; |
215 | 213 |
mIsSubmitting = isSubmitting; |
src/main/java/org/distorted/dialogs/RubikDialogSetName.java | ||
---|---|---|
148 | 148 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
149 | 149 |
|
150 | 150 |
Bundle bundle = new Bundle(); |
151 |
bundle.putInt("tab", play.getObject().ordinal() );
|
|
151 |
bundle.putInt("tab", play.getObject() ); |
|
152 | 152 |
bundle.putBoolean("submitting", true); |
153 | 153 |
|
154 | 154 |
RubikDialogScores scores = new RubikDialogScores(); |
src/main/java/org/distorted/dialogs/RubikDialogTutorial.java | ||
---|---|---|
43 | 43 |
|
44 | 44 |
import org.distorted.main.R; |
45 | 45 |
import org.distorted.main.RubikActivity; |
46 |
import org.distorted.objectlib.main.ObjectType; |
|
47 | 46 |
import org.distorted.screens.RubikScreenPlay; |
48 | 47 |
import org.distorted.screens.ScreenList; |
49 | 48 |
import org.distorted.tutorials.TutorialList; |
... | ... | |
130 | 129 |
private int getTutorialOrdinal() |
131 | 130 |
{ |
132 | 131 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
133 |
ObjectType obj = play.getObject();
|
|
132 |
int obj = play.getObject();
|
|
134 | 133 |
|
135 | 134 |
int ret = TutorialList.getOrdinal(obj); |
136 | 135 |
|
src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java | ||
---|---|---|
35 | 35 |
|
36 | 36 |
import com.google.firebase.analytics.FirebaseAnalytics; |
37 | 37 |
|
38 |
import org.distorted.objectlib.main.ObjectType; |
|
39 |
|
|
40 | 38 |
import org.distorted.main.BuildConfig; |
41 | 39 |
import org.distorted.main.R; |
42 | 40 |
import org.distorted.main.RubikActivity; |
41 |
import org.distorted.objects.RubikObject; |
|
42 |
import org.distorted.objects.RubikObjectList; |
|
43 | 43 |
import org.distorted.tutorials.TutorialList; |
44 | 44 |
|
45 | 45 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
76 | 76 |
String packageName = act.getPackageName(); |
77 | 77 |
|
78 | 78 |
TutorialList list = TutorialList.getObject(position); |
79 |
ObjectType objType = list.getObject();
|
|
79 |
int object = list.getObject();
|
|
80 | 80 |
|
81 | 81 |
View tab = inflate( act, R.layout.dialog_tutorial_tab, null); |
82 | 82 |
LinearLayout layout = tab.findViewById(R.id.tabLayout); |
... | ... | |
95 | 95 |
|
96 | 96 |
int countryID = res.getIdentifier( coun, "drawable", packageName); |
97 | 97 |
|
98 |
View row = createRow(ract,countryID,desc,url,auth,widthT,objType,colorB,colorT);
|
|
98 |
View row = createRow(ract,countryID,desc,url,auth,widthT,object,colorB,colorT);
|
|
99 | 99 |
layout.addView(row); |
100 | 100 |
} |
101 | 101 |
|
... | ... | |
112 | 112 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
113 | 113 |
|
114 | 114 |
private View createRow(final RubikActivity act, int countryID, final String desc, final String url, |
115 |
final String auth, int size, final ObjectType obj, int colorB, int colorT)
|
|
115 |
final String auth, int size, final int obj, int colorB, int colorT)
|
|
116 | 116 |
{ |
117 | 117 |
float textSize = 0.5f*size; |
118 | 118 |
View row = inflate( act, R.layout.dialog_tutorial_row, null); |
... | ... | |
158 | 158 |
|
159 | 159 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
160 | 160 |
|
161 |
private void analyticsReport(RubikActivity act, String desc, String author, ObjectType obj)
|
|
161 |
private void analyticsReport(RubikActivity act, String desc, String author, int obj)
|
|
162 | 162 |
{ |
163 | 163 |
String message = desc+" ("+author+")"; |
164 | 164 |
|
... | ... | |
172 | 172 |
|
173 | 173 |
if( analytics!=null ) |
174 | 174 |
{ |
175 |
RubikObject object = RubikObjectList.getObject(obj); |
|
176 |
|
|
175 | 177 |
Bundle bundle = new Bundle(); |
176 | 178 |
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, message); |
177 |
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, obj.name());
|
|
179 |
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, object==null ? "NULL" : object.getName() );
|
|
178 | 180 |
analytics.logEvent(FirebaseAnalytics.Event.TUTORIAL_BEGIN, bundle); |
179 | 181 |
} |
180 | 182 |
} |
src/main/java/org/distorted/main/RubikActivity.java | ||
---|---|---|
49 | 49 |
|
50 | 50 |
import org.distorted.objectlib.main.ObjectControl; |
51 | 51 |
import org.distorted.objectlib.main.TwistyObject; |
52 |
import org.distorted.objectlib.main.ObjectType; |
|
53 | 52 |
import org.distorted.objectlib.effects.BaseEffect; |
54 | 53 |
|
55 | 54 |
import org.distorted.dialogs.RubikDialogError; |
56 | 55 |
import org.distorted.dialogs.RubikDialogPrivacy; |
57 | 56 |
import org.distorted.network.RubikScores; |
58 | 57 |
import org.distorted.network.RubikNetwork; |
58 |
import org.distorted.objects.RubikObject; |
|
59 |
import org.distorted.objects.RubikObjectList; |
|
59 | 60 |
import org.distorted.screens.ScreenList; |
60 | 61 |
import org.distorted.screens.RubikScreenPlay; |
61 | 62 |
import org.distorted.tutorials.TutorialActivity; |
... | ... | |
256 | 257 |
} |
257 | 258 |
|
258 | 259 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
259 |
ObjectType object = play.getObject();
|
|
260 |
int object = play.getObject();
|
|
260 | 261 |
changeIfDifferent(object,view.getObjectControl()); |
261 | 262 |
|
262 | 263 |
if( mIsChinese && !mPolicyAccepted ) PrivacyPolicy(); |
... | ... | |
438 | 439 |
|
439 | 440 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
440 | 441 |
|
441 |
public void changeObject(ObjectType newObject, boolean reportChange)
|
|
442 |
public void changeObject(int newObject, boolean reportChange)
|
|
442 | 443 |
{ |
443 | 444 |
RubikSurfaceView view = findViewById(R.id.rubikSurfaceView); |
444 | 445 |
ObjectControl control = view.getObjectControl(); |
... | ... | |
447 | 448 |
|
448 | 449 |
if( reportChange && oldObject!=null ) |
449 | 450 |
{ |
451 |
RubikObject robject = RubikObjectList.getObject(newObject); |
|
452 |
String newName = robject==null ? "NULL" : robject.getName(); |
|
450 | 453 |
float fps = view.getRenderer().getFPS(); |
451 | 454 |
fps = (int)(fps+0.5f); |
452 | 455 |
StringBuilder name = new StringBuilder(); |
... | ... | |
454 | 457 |
name.append(' '); |
455 | 458 |
name.append(fps); |
456 | 459 |
name.append(" --> "); |
457 |
name.append(newObject.name());
|
|
460 |
name.append(newName);
|
|
458 | 461 |
|
459 | 462 |
if( BuildConfig.DEBUG ) |
460 | 463 |
{ |
... | ... | |
476 | 479 |
|
477 | 480 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
478 | 481 |
|
479 |
public void changeIfDifferent(ObjectType type,ObjectControl control)
|
|
482 |
public void changeIfDifferent(int ordinal, ObjectControl control)
|
|
480 | 483 |
{ |
481 |
InputStream jsonStream = ObjectJson.getStream(type,this);
|
|
482 |
InputStream meshStream = ObjectMesh.getStream(type,this);
|
|
483 |
control.changeIfDifferent(type.ordinal(),jsonStream,meshStream);
|
|
484 |
InputStream jsonStream = ObjectJson.getStream(this,ordinal);
|
|
485 |
InputStream meshStream = ObjectMesh.getStream(this,ordinal);
|
|
486 |
control.changeIfDifferent(ordinal,jsonStream,meshStream);
|
|
484 | 487 |
} |
485 | 488 |
|
486 | 489 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
584 | 587 |
|
585 | 588 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
586 | 589 |
|
587 |
public void switchTutorial(String url, ObjectType object)
|
|
590 |
public void switchTutorial(String url, int objectOrdinal)
|
|
588 | 591 |
{ |
589 | 592 |
Intent myIntent = new Intent(this, TutorialActivity.class); |
590 | 593 |
myIntent.putExtra("url", url); |
591 |
myIntent.putExtra("obj", object.ordinal());
|
|
594 |
myIntent.putExtra("obj", objectOrdinal);
|
|
592 | 595 |
startActivity(myIntent); |
593 | 596 |
} |
594 | 597 |
|
595 | 598 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
596 | 599 |
|
597 |
public void switchConfig(ObjectType object)
|
|
600 |
public void switchConfig(int objectOrdinal)
|
|
598 | 601 |
{ |
599 | 602 |
Intent myIntent = new Intent(this, ConfigActivity.class); |
600 |
myIntent.putExtra("obj", object.ordinal());
|
|
603 |
myIntent.putExtra("obj", objectOrdinal);
|
|
601 | 604 |
startActivity(myIntent); |
602 | 605 |
} |
603 | 606 |
} |
src/main/java/org/distorted/main/RubikObjectLibInterface.java | ||
---|---|---|
38 | 38 |
import org.distorted.objectlib.helpers.BlockController; |
39 | 39 |
import org.distorted.objectlib.helpers.ObjectLibInterface; |
40 | 40 |
import org.distorted.objectlib.main.ObjectControl; |
41 |
import org.distorted.objectlib.main.ObjectType; |
|
42 | 41 |
|
43 | 42 |
import org.distorted.dialogs.RubikDialogNewRecord; |
44 | 43 |
import org.distorted.dialogs.RubikDialogSolved; |
45 | 44 |
import org.distorted.network.RubikScores; |
45 |
import org.distorted.objects.RubikObject; |
|
46 |
import org.distorted.objects.RubikObjectList; |
|
46 | 47 |
import org.distorted.screens.RubikScreenPlay; |
47 | 48 |
import org.distorted.screens.RubikScreenReady; |
48 | 49 |
import org.distorted.screens.RubikScreenSolver; |
... | ... | |
99 | 100 |
{ |
100 | 101 |
RubikScreenPlay play= (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
101 | 102 |
RubikScores scores = RubikScores.getInstance(); |
102 |
ObjectType object = play.getObject(); |
|
103 |
int level = play.getLevel(); |
|
104 |
String name = scores.getName(); |
|
105 | 103 |
|
106 |
String record = object.name()+" level "+level+" time "+mNewRecord+" isNew: "+mIsNewRecord+" scrambleNum: "+scrambleNum; |
|
104 |
int object = play.getObject(); |
|
105 |
int level = play.getLevel(); |
|
106 |
String name = scores.getName(); |
|
107 |
RubikObject obj = RubikObjectList.getObject(object); |
|
108 |
|
|
109 |
String record = obj+" level "+level+" time "+mNewRecord+" isNew: "+mIsNewRecord+" scrambleNum: "+scrambleNum; |
|
107 | 110 |
|
108 | 111 |
if( BuildConfig.DEBUG ) |
109 | 112 |
{ |
... | ... | |
431 | 434 |
RubikScreenSolver solver = (RubikScreenSolver) ScreenList.SVER.getScreenClass(); |
432 | 435 |
int color = solver.getCurrentColor(); |
433 | 436 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
434 |
ObjectType currObject = play.getObject();
|
|
437 |
int currObject = play.getObject();
|
|
435 | 438 |
mLastCubitColor = SolverMain.cubitIsLocked(currObject,cubit); |
436 | 439 |
mLastCubit = cubit; |
437 | 440 |
mLastCubitFace = face; |
src/main/java/org/distorted/network/RubikNetwork.java | ||
---|---|---|
37 | 37 |
import org.distorted.objects.RubikObject; |
38 | 38 |
import org.distorted.objects.RubikObjectList; |
39 | 39 |
|
40 |
import static org.distorted.screens.RubikScreenPlay.MAX_LEVEL;
|
|
40 |
import static org.distorted.objects.RubikObjectList.MAX_LEVEL;
|
|
41 | 41 |
|
42 | 42 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
43 | 43 |
|
src/main/java/org/distorted/network/RubikScores.java | ||
---|---|---|
28 | 28 |
|
29 | 29 |
import com.google.firebase.crashlytics.FirebaseCrashlytics; |
30 | 30 |
|
31 |
import static org.distorted.screens.RubikScreenPlay.MAX_LEVEL; |
|
32 | 31 |
import org.distorted.main.BuildConfig; |
33 | 32 |
import org.distorted.objects.RubikObject; |
34 | 33 |
import org.distorted.objects.RubikObjectList; |
35 | 34 |
|
35 |
import static org.distorted.objects.RubikObjectList.MAX_LEVEL; |
|
36 |
|
|
36 | 37 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
37 | 38 |
// hold my own scores, and some other statistics. |
38 | 39 |
|
src/main/java/org/distorted/objects/RubikObject.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
23 |
|
|
24 | 22 |
import org.distorted.dmesh.ObjectMesh; |
25 | 23 |
import org.distorted.jsons.ObjectJson; |
26 | 24 |
import org.distorted.objectlib.main.ObjectType; |
27 | 25 |
import org.distorted.patterns.RubikPatternList; |
28 | 26 |
|
27 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
28 |
|
|
29 | 29 |
public class RubikObject |
30 | 30 |
{ |
31 | 31 |
private static final int NUM = 4; |
... | ... | |
39 | 39 |
|
40 | 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
41 | 41 |
|
42 |
RubikObject(int ordinal, ObjectType type)
|
|
42 |
RubikObject(ObjectType type) |
|
43 | 43 |
{ |
44 | 44 |
mIconID = new int[NUM]; |
45 | 45 |
for(int i=0; i<NUM; i++) mIconID[i] = type.getIconID(i); |
46 | 46 |
|
47 | 47 |
mName = type.name(); |
48 | 48 |
mNumScramble = type.getNumScramble(); |
49 |
mOrdinal = ordinal;
|
|
50 |
mJsonID = ObjectJson.getJsonID(type);
|
|
51 |
mMeshID = ObjectMesh.getMeshID(type);
|
|
49 |
mOrdinal = type.ordinal();
|
|
50 |
mJsonID = ObjectJson.getJsonID(mOrdinal);
|
|
51 |
mMeshID = ObjectMesh.getMeshID(mOrdinal);
|
|
52 | 52 |
|
53 |
int patternOrdinal = RubikPatternList.getOrdinal(type);
|
|
53 |
int patternOrdinal = RubikPatternList.getOrdinal(mOrdinal);
|
|
54 | 54 |
mPatterns = RubikPatternList.getPatterns(patternOrdinal); |
55 | 55 |
} |
56 | 56 |
|
src/main/java/org/distorted/objects/RubikObjectList.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.objects; |
21 | 21 |
|
22 |
import org.distorted.objectlib.main.ObjectConstants; |
|
22 | 23 |
import org.distorted.objectlib.main.ObjectType; |
23 | 24 |
|
24 | 25 |
import java.util.ArrayList; |
... | ... | |
28 | 29 |
|
29 | 30 |
public class RubikObjectList |
30 | 31 |
{ |
32 |
public static int MAX_LEVEL; |
|
33 |
|
|
31 | 34 |
private static RubikObjectList mType; |
32 | 35 |
private static int mNumObjects; |
33 | 36 |
private static ArrayList<RubikObject> mObjects; |
34 | 37 |
|
38 |
static |
|
39 |
{ |
|
40 |
int max = Integer.MIN_VALUE; |
|
41 |
|
|
42 |
for (int i=0; i<NUM_OBJECTS; i++) |
|
43 |
{ |
|
44 |
int cur = getDBLevel(i); |
|
45 |
if( cur>max ) max = cur; |
|
46 |
} |
|
47 |
|
|
48 |
MAX_LEVEL = max; |
|
49 |
} |
|
50 |
|
|
35 | 51 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
36 | 52 |
|
37 | 53 |
private RubikObjectList() |
... | ... | |
49 | 65 |
for(int i=0; i<NUM_OBJECTS; i++) |
50 | 66 |
{ |
51 | 67 |
ObjectType type = ObjectType.getObject(i); |
52 |
RubikObject obj = new RubikObject(i,type);
|
|
68 |
RubikObject obj = new RubikObject(type); |
|
53 | 69 |
mObjects.add(obj); |
54 | 70 |
mNumObjects++; |
55 | 71 |
} |
... | ... | |
57 | 73 |
|
58 | 74 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
59 | 75 |
// PUBLIC API |
76 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
77 |
// historically older versions of the app had lower 'maxScrambles' in case of several objects and |
|
78 |
// those got remembered in the server-side DB already, so we need to keep using them. This function |
|
79 |
// provides a map between 'maxScramble' of an object and its 'dbLevel'. All new objects will have |
|
80 |
// those two values the same. |
|
81 |
|
|
82 |
public static int getDBLevel(int ordinal) |
|
83 |
{ |
|
84 |
if( ordinal==ObjectConstants.CUBE_3 ) return 16; |
|
85 |
if( ordinal==ObjectConstants.CUBE_4 ) return 20; |
|
86 |
if( ordinal==ObjectConstants.CUBE_5 ) return 24; |
|
87 |
if( ordinal==ObjectConstants.PYRA_4 ) return 15; |
|
88 |
if( ordinal==ObjectConstants.PYRA_5 ) return 20; |
|
89 |
if( ordinal==ObjectConstants.MEGA_5 ) return 35; |
|
90 |
if( ordinal==ObjectConstants.DIAM_2 ) return 10; |
|
91 |
if( ordinal==ObjectConstants.DIAM_3 ) return 18; |
|
92 |
if( ordinal==ObjectConstants.REDI_3 ) return 14; |
|
93 |
if( ordinal==ObjectConstants.HELI_3 ) return 18; |
|
94 |
if( ordinal==ObjectConstants.SKEW_3 ) return 17; |
|
95 |
if( ordinal==ObjectConstants.REX_3 ) return 16; |
|
96 |
if( ordinal==ObjectConstants.MIRR_3 ) return 16; |
|
97 |
|
|
98 |
ObjectType type = ObjectType.getObject(ordinal); |
|
99 |
return type.getNumScramble(); |
|
100 |
} |
|
101 |
|
|
102 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
60 | 103 |
|
61 | 104 |
public static RubikObject getObject(int ordinal) |
62 | 105 |
{ |
src/main/java/org/distorted/patterns/RubikPatternList.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.patterns; |
21 | 21 |
|
22 |
import org.distorted.objectlib.main.ObjectType;
|
|
22 |
import org.distorted.objectlib.main.ObjectConstants;
|
|
23 | 23 |
|
24 | 24 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
25 | 25 |
|
26 | 26 |
public enum RubikPatternList |
27 | 27 |
{ |
28 |
CUBE2 (ObjectType.CUBE_2, PatternCube2.patterns),
|
|
29 |
CUBE3 (ObjectType.CUBE_3, PatternCube3.patterns),
|
|
30 |
CUBE4 (ObjectType.CUBE_4, PatternCube4.patterns),
|
|
31 |
CUBE5 (ObjectType.CUBE_5, PatternCube5.patterns),
|
|
32 |
PYRA3 (ObjectType.PYRA_3, PatternPyraminx3.patterns),
|
|
33 |
PYRA4 (ObjectType.PYRA_4, PatternPyraminx4.patterns),
|
|
34 |
PYRA5 (ObjectType.PYRA_5, PatternPyraminx5.patterns),
|
|
35 |
MEGA3 (ObjectType.MEGA_3, PatternMegaminx.patterns),
|
|
36 |
MEGA5 (ObjectType.MEGA_5, PatternGigaminx.patterns),
|
|
28 |
CUBE2 (ObjectConstants.CUBE_2, PatternCube2.patterns),
|
|
29 |
CUBE3 (ObjectConstants.CUBE_3, PatternCube3.patterns),
|
|
30 |
CUBE4 (ObjectConstants.CUBE_4, PatternCube4.patterns),
|
|
31 |
CUBE5 (ObjectConstants.CUBE_5, PatternCube5.patterns),
|
|
32 |
PYRA3 (ObjectConstants.PYRA_3, PatternPyraminx3.patterns),
|
|
33 |
PYRA4 (ObjectConstants.PYRA_4, PatternPyraminx4.patterns),
|
|
34 |
PYRA5 (ObjectConstants.PYRA_5, PatternPyraminx5.patterns),
|
|
35 |
MEGA3 (ObjectConstants.MEGA_3, PatternMegaminx.patterns),
|
|
36 |
MEGA5 (ObjectConstants.MEGA_5, PatternGigaminx.patterns),
|
|
37 | 37 |
; |
38 | 38 |
|
39 | 39 |
public static final int NUM_OBJECTS = values().length; |
40 |
private final ObjectType mObject;
|
|
40 |
private final int mObject;
|
|
41 | 41 |
private final String[][] mPatterns; |
42 | 42 |
|
43 | 43 |
private static final RubikPatternList[] objects; |
... | ... | |
55 | 55 |
|
56 | 56 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
57 | 57 |
|
58 |
public static String[][] getPatterns(int ordinal)
|
|
58 |
RubikPatternList(int object, String[][] patterns)
|
|
59 | 59 |
{ |
60 |
return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mPatterns : null; |
|
60 |
mObject = object; |
|
61 |
mPatterns = patterns; |
|
61 | 62 |
} |
62 | 63 |
|
64 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
65 |
// PUBLIC API |
|
63 | 66 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
64 | 67 |
|
65 |
RubikPatternList(ObjectType object, String[][] patterns)
|
|
68 |
public static String[][] getPatterns(int ordinal)
|
|
66 | 69 |
{ |
67 |
mObject = object; |
|
68 |
mPatterns = patterns; |
|
70 |
return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mPatterns : null; |
|
69 | 71 |
} |
70 | 72 |
|
71 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
72 |
// PUBLIC API |
|
73 | 73 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
74 | 74 |
|
75 |
public static int getOrdinal(ObjectType object)
|
|
75 |
public static int getOrdinal(int objectOrdinal)
|
|
76 | 76 |
{ |
77 | 77 |
for(int i=0; i<NUM_OBJECTS; i++) |
78 | 78 |
{ |
79 |
if( objects[i].mObject == object ) |
|
79 |
if( objects[i].mObject == objectOrdinal )
|
|
80 | 80 |
{ |
81 | 81 |
return i; |
82 | 82 |
} |
... | ... | |
87 | 87 |
|
88 | 88 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
89 | 89 |
|
90 |
public static ObjectType getObject(int ordinal)
|
|
90 |
public static int getObject(int ordinal)
|
|
91 | 91 |
{ |
92 | 92 |
return objects[ordinal].mObject; |
93 | 93 |
} |
src/main/java/org/distorted/screens/RubikScreenPattern.java | ||
---|---|---|
29 | 29 |
import android.widget.TextView; |
30 | 30 |
|
31 | 31 |
import org.distorted.objectlib.main.ObjectControl; |
32 |
import org.distorted.objectlib.main.ObjectType; |
|
33 | 32 |
|
34 | 33 |
import org.distorted.main.R; |
35 | 34 |
import org.distorted.dialogs.RubikDialogPattern; |
... | ... | |
61 | 60 |
void leaveScreen(RubikActivity act) |
62 | 61 |
{ |
63 | 62 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
64 |
ObjectType object = RubikPatternList.getObject(mPatternOrdinal);
|
|
63 |
int object = RubikPatternList.getObject(mPatternOrdinal);
|
|
65 | 64 |
|
66 | 65 |
if( !play.setObject(act,object) ) |
67 | 66 |
{ |
68 |
act.changeObject(play.getObject(),false);
|
|
67 |
act.changeObject(object,false);
|
|
69 | 68 |
} |
70 | 69 |
} |
71 | 70 |
|
src/main/java/org/distorted/screens/RubikScreenPlay.java | ||
---|---|---|
35 | 35 |
import android.widget.LinearLayout; |
36 | 36 |
import android.widget.PopupWindow; |
37 | 37 |
|
38 |
import org.distorted.objectlib.main.ObjectConstants; |
|
38 | 39 |
import org.distorted.objectlib.main.ObjectControl; |
39 |
import org.distorted.objectlib.main.ObjectType; |
|
40 | 40 |
|
41 | 41 |
import org.distorted.main.R; |
42 | 42 |
import org.distorted.main.RubikActivity; |
... | ... | |
47 | 47 |
import org.distorted.helpers.TransparentButton; |
48 | 48 |
import org.distorted.helpers.TransparentImageButton; |
49 | 49 |
import org.distorted.network.RubikScores; |
50 |
import org.distorted.objects.RubikObject; |
|
51 |
import org.distorted.objects.RubikObjectList; |
|
50 | 52 |
|
51 | 53 |
import static android.view.View.inflate; |
52 |
import static org.distorted.objectlib.main.ObjectType.NUM_OBJECTS; |
|
53 | 54 |
|
54 | 55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
55 | 56 |
|
... | ... | |
57 | 58 |
{ |
58 | 59 |
public static final int NUM_COLUMNS = 4; |
59 | 60 |
public static final int LEVELS_SHOWN = 10; |
60 |
public static int MAX_LEVEL; |
|
61 |
public static final ObjectType DEF_OBJECT= ObjectType.CUBE_3; |
|
61 |
public static final int DEF_OBJECT= ObjectConstants.CUBE_3; |
|
62 | 62 |
|
63 | 63 |
private static final int[] BUTTON_LABELS = { R.string.scores, |
64 | 64 |
R.string.patterns, |
... | ... | |
73 | 73 |
private TransparentImageButton mObjButton, mMenuButton, mSolveButton, mScrambleButton; |
74 | 74 |
private TransparentButton mPlayButton; |
75 | 75 |
private PopupWindow mObjectPopup, mMenuPopup, mPlayPopup; |
76 |
private ObjectType mObject = DEF_OBJECT;
|
|
76 |
private int mObject = DEF_OBJECT;
|
|
77 | 77 |
private int mObjectSize, mMenuLayoutWidth, mMenuLayoutHeight, mPlayLayoutWidth; |
78 | 78 |
private int mLevelValue; |
79 | 79 |
private float mButtonSize, mMenuItemSize, mMenuTextSize; |
... | ... | |
82 | 82 |
private int mUpperBarHeight; |
83 | 83 |
private boolean mShouldReactToEndOfScrambling; |
84 | 84 |
|
85 |
static |
|
86 |
{ |
|
87 |
ObjectType[] types = ObjectType.values(); |
|
88 |
int max = Integer.MIN_VALUE; |
|
89 |
|
|
90 |
for (ObjectType type : types) |
|
91 |
{ |
|
92 |
int cur = getDBLevel(type); |
|
93 |
if( cur>max ) max = cur; |
|
94 |
} |
|
95 |
|
|
96 |
MAX_LEVEL = max; |
|
97 |
} |
|
98 |
|
|
99 | 85 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
100 | 86 |
|
101 | 87 |
void leaveScreen(RubikActivity act) |
... | ... | |
107 | 93 |
|
108 | 94 |
void enterScreen(final RubikActivity act) |
109 | 95 |
{ |
96 |
int numObjects = RubikObjectList.getNumObjects(); |
|
110 | 97 |
float width = act.getScreenWidthInPixels(); |
111 | 98 |
mUpperBarHeight = act.getHeightUpperBar(); |
112 | 99 |
|
... | ... | |
114 | 101 |
mButtonSize = width*RubikActivity.BUTTON_TEXT_SIZE; |
115 | 102 |
mMenuItemSize = width*RubikActivity.MENU_ITEM_SIZE; |
116 | 103 |
|
117 |
mRowCount = (NUM_OBJECTS + NUM_COLUMNS-1) / NUM_COLUMNS;
|
|
104 |
mRowCount = (numObjects + NUM_COLUMNS-1) / NUM_COLUMNS;
|
|
118 | 105 |
mColCount = NUM_COLUMNS; |
119 | 106 |
|
120 | 107 |
// TOP //////////////////////////// |
... | ... | |
192 | 179 |
final int maxHeight= (int)(0.9f*(height-mUpperBarHeight) ); |
193 | 180 |
View popupView = mPlayPopup.getContentView(); |
194 | 181 |
popupView.setSystemUiVisibility(RubikActivity.FLAGS); |
195 |
final int dbLevel = getDBLevel(mObject); |
|
182 |
final int dbLevel = RubikObjectList.getDBLevel(mObject);
|
|
196 | 183 |
final int levelsShown = Math.min(dbLevel,LEVELS_SHOWN); |
197 | 184 |
final int popupHeight = (int)(levelsShown*(mMenuItemSize+margin)+3*margin+mMenuItemSize*(LAST_BUTTON-1.0f)); |
198 | 185 |
final int realHeight = Math.min(popupHeight,maxHeight); |
... | ... | |
255 | 242 |
objectGrid.setRowCount(mRowCount); |
256 | 243 |
|
257 | 244 |
LinearLayout bottomLayout = view.findViewById(R.id.bottomLayout); |
258 |
setupBottomLayout(act,bottomLayout,2*mObjectSize,mObjectSize);
|
|
245 |
setupBottomLayout(act,bottomLayout,2*mObjectSize); |
|
259 | 246 |
|
260 | 247 |
mObjectPopup = new PopupWindow(act); |
261 | 248 |
mObjectPopup.setFocusable(true); |
... | ... | |
273 | 260 |
colSpecs[col] = GridLayout.spec(col); |
274 | 261 |
} |
275 | 262 |
|
276 |
for(int object = 0; object< NUM_OBJECTS; object++) |
|
263 |
int numObjects = RubikObjectList.getNumObjects(); |
|
264 |
|
|
265 |
for(int object=0; object<numObjects; object++) |
|
277 | 266 |
{ |
278 |
final ObjectType type = ObjectType.getObject(object);
|
|
267 |
final RubikObject robject = RubikObjectList.getObject(object);
|
|
279 | 268 |
int iconSize = RubikActivity.getDrawableSize(); |
280 |
int icons = type.getIconID(iconSize);
|
|
269 |
int icons = robject==null ? 0 : robject.getIconID(iconSize);
|
|
281 | 270 |
int row = object/NUM_COLUMNS; |
282 | 271 |
|
283 | 272 |
ImageButton button = new ImageButton(act); |
... | ... | |
289 | 278 |
{ |
290 | 279 |
if( act.getControl().isUINotBlocked() && ScreenList.getCurrentScreen()== ScreenList.PLAY ) |
291 | 280 |
{ |
292 |
mObject = type;
|
|
293 |
act.changeObject(type, true);
|
|
281 |
mObject = robject==null ? 0 : robject.getOrdinal();
|
|
282 |
act.changeObject(mObject, true);
|
|
294 | 283 |
if( mPlayLayout!=null ) adjustLevels(act); |
295 | 284 |
mMovesController.clearMoves(act); |
296 | 285 |
} |
... | ... | |
313 | 302 |
|
314 | 303 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
315 | 304 |
|
316 |
private void setupBottomLayout(final RubikActivity act, final LinearLayout layout, int width, int height)
|
|
305 |
private void setupBottomLayout(final RubikActivity act, final LinearLayout layout, int width) |
|
317 | 306 |
{ |
318 | 307 |
int iconD = RubikActivity.getDrawable(R.drawable.ui_small_info,R.drawable.ui_medium_info, R.drawable.ui_big_info, R.drawable.ui_huge_info); |
319 | 308 |
int iconT = RubikActivity.getDrawable(R.drawable.ui_small_tutorial,R.drawable.ui_medium_tutorial, R.drawable.ui_big_tutorial, R.drawable.ui_huge_tutorial); |
... | ... | |
419 | 408 |
switch(button) |
420 | 409 |
{ |
421 | 410 |
case 0: Bundle sBundle = new Bundle(); |
422 |
sBundle.putInt("tab", mObject.ordinal() );
|
|
411 |
sBundle.putInt("tab", mObject ); |
|
423 | 412 |
sBundle.putBoolean("submitting", false); |
424 | 413 |
RubikDialogScores scores = new RubikDialogScores(); |
425 | 414 |
scores.setArguments(sBundle); |
... | ... | |
471 | 460 |
@Override |
472 | 461 |
public void onClick(View v) |
473 | 462 |
{ |
474 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
|
|
475 |
int numScrambles = play.getObject().getNumScramble();
|
|
463 |
RubikObject object = RubikObjectList.getObject(mObject);
|
|
464 |
int numScrambles = object==null ? 0 : object.getNumScramble();
|
|
476 | 465 |
mShouldReactToEndOfScrambling = false; |
477 | 466 |
act.getControl().scrambleObject(numScrambles); |
478 | 467 |
} |
... | ... | |
483 | 472 |
|
484 | 473 |
public void savePreferences(SharedPreferences.Editor editor) |
485 | 474 |
{ |
486 |
editor.putString("statePlay_objName", mObject.name() ); |
|
475 |
RubikObject object = RubikObjectList.getObject(mObject); |
|
476 |
|
|
477 |
if( object!=null ) |
|
478 |
{ |
|
479 |
editor.putString("statePlay_objName", object.getName() ); |
|
480 |
} |
|
487 | 481 |
|
488 | 482 |
if( mObjectPopup!=null ) |
489 | 483 |
{ |
... | ... | |
508 | 502 |
|
509 | 503 |
public void restorePreferences(SharedPreferences preferences) |
510 | 504 |
{ |
511 |
String objName= preferences.getString("statePlay_objName", DEF_OBJECT.name() ); |
|
512 |
int ordinal = ObjectType.getOrdinal(objName); |
|
513 |
mObject = ordinal>=0 && ordinal<NUM_OBJECTS ? ObjectType.values()[ordinal] : DEF_OBJECT; |
|
505 |
RubikObject object = RubikObjectList.getObject(DEF_OBJECT); |
|
506 |
String defName = object==null ? "CUBE_3" : object.getName(); |
|
507 |
String objName= preferences.getString("statePlay_objName",defName); |
|
508 |
mObject = RubikObjectList.getOrdinal(objName); |
|
509 |
|
|
510 |
if( mObject<0 || mObject>=RubikObjectList.getNumObjects() ) mObject = DEF_OBJECT; |
|
514 | 511 |
} |
515 | 512 |
|
516 | 513 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
517 | 514 |
|
518 |
public boolean setObject(RubikActivity act, ObjectType obj)
|
|
515 |
public boolean setObject(RubikActivity act, int ordinal)
|
|
519 | 516 |
{ |
520 |
if( mObject!=obj )
|
|
517 |
if( mObject!=ordinal )
|
|
521 | 518 |
{ |
522 |
mObject = obj;
|
|
519 |
mObject = ordinal;
|
|
523 | 520 |
if( mPlayLayout!=null ) adjustLevels(act); |
524 | 521 |
return true; |
525 | 522 |
} |
... | ... | |
576 | 573 |
|
577 | 574 |
public void adjustSolvedIcons() |
578 | 575 |
{ |
579 |
int dbLevel = getDBLevel(mObject); |
|
580 |
int numLevel = Math.min(dbLevel, LEVELS_SHOWN);
|
|
576 |
int dbLevel = RubikObjectList.getDBLevel(mObject);
|
|
577 |
int numLevel= Math.min(dbLevel, LEVELS_SHOWN); |
|
581 | 578 |
RubikScores scores = RubikScores.getInstance(); |
582 | 579 |
|
583 | 580 |
for(int i=0; i<numLevel; i++) |
584 | 581 |
{ |
585 | 582 |
int level = i<numLevel-1 ? i+1 : dbLevel; |
586 | 583 |
Button button = (Button)mPlayLayout.getChildAt(i); |
587 |
int icon = scores.isSolved(mObject.ordinal(), level-1) ? R.drawable.ui_solved : R.drawable.ui_notsolved;
|
|
584 |
int icon = scores.isSolved(mObject, level-1) ? R.drawable.ui_solved : R.drawable.ui_notsolved; |
|
588 | 585 |
button.setCompoundDrawablesWithIntrinsicBounds(icon,0,0,0); |
589 | 586 |
} |
590 | 587 |
} |
... | ... | |
593 | 590 |
|
594 | 591 |
private void adjustLevels(final RubikActivity act) |
595 | 592 |
{ |
596 |
int dbLevel = getDBLevel(mObject); |
|
597 |
int numScrambles = mObject.getNumScramble(); |
|
593 |
int dbLevel = RubikObjectList.getDBLevel(mObject); |
|
594 |
RubikObject object = RubikObjectList.getObject(mObject); |
|
595 |
int numScrambles = object==null ? 0 : object.getNumScramble(); |
|
598 | 596 |
int numLevel = Math.min(dbLevel, LEVELS_SHOWN); |
599 | 597 |
String[] levels = new String[numLevel]; |
600 | 598 |
|
... | ... | |
641 | 639 |
button.setText(levels[i]); |
642 | 640 |
button.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize); |
643 | 641 |
|
644 |
int icon = scores.isSolved(mObject.ordinal(), level-1) ? R.drawable.ui_solved : R.drawable.ui_notsolved;
|
|
642 |
int icon = scores.isSolved(mObject, level-1) ? R.drawable.ui_solved : R.drawable.ui_notsolved; |
|
645 | 643 |
button.setCompoundDrawablesWithIntrinsicBounds(icon,0,0,0); |
646 | 644 |
|
647 | 645 |
button.setOnClickListener( new View.OnClickListener() |
... | ... | |
665 | 663 |
} |
666 | 664 |
} |
667 | 665 |
|
668 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
669 |
// historically older versions of the app had lower 'maxScrambles' in case of several objects and |
|
670 |
// those got remembered in the server-side DB already, so we need to keep using them. This function |
|
671 |
// provides a map between 'maxScramble' of an object and its 'dbLevel'. All new objects will have |
|
672 |
// those two values the same. |
|
673 |
|
|
674 |
public static int getDBLevel(ObjectType object) |
|
675 |
{ |
|
676 |
switch(object) |
|
677 |
{ |
|
678 |
case CUBE_3: return 16; |
|
679 |
case CUBE_4: return 20; |
|
680 |
case CUBE_5: return 24; |
|
681 |
case PYRA_4: return 15; |
|
682 |
case PYRA_5: return 20; |
|
683 |
case MEGA_5: return 35; |
|
684 |
case DIAM_2: return 10; |
|
685 |
case DIAM_3: return 18; |
|
686 |
case REDI_3: return 14; |
|
687 |
case HELI_3: return 18; |
|
688 |
case SKEW_3: return 17; |
|
689 |
case REX_3 : return 16; |
|
690 |
case MIRR_3: return 16; |
|
691 |
default : return object.getNumScramble(); |
|
692 |
} |
|
693 |
} |
|
694 |
|
|
695 | 666 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
696 | 667 |
|
697 | 668 |
public int getLevel() |
... | ... | |
708 | 679 |
|
709 | 680 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
710 | 681 |
|
711 |
public ObjectType getObject()
|
|
682 |
public int getObject()
|
|
712 | 683 |
{ |
713 | 684 |
return mObject; |
714 | 685 |
} |
src/main/java/org/distorted/screens/RubikScreenSolver.java | ||
---|---|---|
35 | 35 |
|
36 | 36 |
import org.distorted.objectlib.main.ObjectControl; |
37 | 37 |
import org.distorted.objectlib.main.TwistyObject; |
38 |
import org.distorted.objectlib.main.ObjectType; |
|
39 | 38 |
|
40 | 39 |
import org.distorted.dialogs.RubikDialogSolverError; |
41 | 40 |
import org.distorted.helpers.TransparentImageButton; |
... | ... | |
83 | 82 |
mWeakAct = new WeakReference<>(act); |
84 | 83 |
mSolving = false; |
85 | 84 |
|
86 |
ObjectType currentObject= ImplementedSolversList.getObject(0);
|
|
85 |
int currentObject= ImplementedSolversList.getObject(0);
|
|
87 | 86 |
act.changeIfDifferent(currentObject,control); |
88 | 87 |
control.solveOnly(); |
89 | 88 |
|
src/main/java/org/distorted/screens/RubikScreenSolving.java | ||
---|---|---|
34 | 34 |
import org.distorted.main.R; |
35 | 35 |
import org.distorted.main.RubikActivity; |
36 | 36 |
import org.distorted.network.RubikScores; |
37 |
import org.distorted.objectlib.main.ObjectType; |
|
38 | 37 |
|
39 | 38 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
40 | 39 |
|
... | ... | |
186 | 185 |
mElapsed = System.currentTimeMillis()-mStartTime; |
187 | 186 |
|
188 | 187 |
RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass(); |
189 |
ObjectType object = play.getObject();
|
|
188 |
int object = play.getObject();
|
|
190 | 189 |
int level = play.getLevel(); |
191 |
boolean isNew = mScores.setRecord(object.ordinal(), level, mElapsed);
|
|
190 |
boolean isNew = mScores.setRecord(object, level, mElapsed); |
|
192 | 191 |
|
193 | 192 |
return isNew ? mElapsed : -mElapsed; |
194 | 193 |
} |
src/main/java/org/distorted/solvers/ImplementedSolversList.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.solvers; |
21 | 21 |
|
22 |
import org.distorted.objectlib.main.ObjectType;
|
|
22 |
import org.distorted.objectlib.main.ObjectConstants;
|
|
23 | 23 |
|
24 | 24 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
25 | 25 |
|
26 | 26 |
public enum ImplementedSolversList |
27 | 27 |
{ |
28 |
CUBE3 ( ObjectType.CUBE_3),
|
|
28 |
CUBE3 (ObjectConstants.CUBE_3),
|
|
29 | 29 |
; |
30 | 30 |
|
31 | 31 |
public static final int NUM_OBJECTS = values().length; |
32 | 32 |
|
33 |
private final ObjectType mObject;
|
|
33 |
private final int mObject;
|
|
34 | 34 |
|
35 | 35 |
private static final ImplementedSolversList[] objects; |
36 | 36 |
|
... | ... | |
47 | 47 |
|
48 | 48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
49 | 49 |
|
50 |
public static ObjectType getObject(int ordinal)
|
|
50 |
public static int getObject(int ordinal)
|
|
51 | 51 |
{ |
52 | 52 |
return objects[ordinal].mObject; |
53 | 53 |
} |
54 | 54 |
|
55 | 55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
56 | 56 |
|
57 |
ImplementedSolversList(ObjectType object)
|
|
57 |
ImplementedSolversList(int object)
|
|
58 | 58 |
{ |
59 | 59 |
mObject= object; |
60 | 60 |
} |
src/main/java/org/distorted/solvers/SolverMain.java | ||
---|---|---|
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 | 23 |
|
24 |
import org.distorted.objectlib.main.ObjectType;
|
|
24 |
import org.distorted.objectlib.main.ObjectConstants;
|
|
25 | 25 |
import org.distorted.objectlib.main.TwistyObject; |
26 | 26 |
|
27 | 27 |
import org.distorted.main.R; |
... | ... | |
34 | 34 |
{ |
35 | 35 |
private final Resources mRes; |
36 | 36 |
private final TwistyObject mObject; |
37 |
private final int mOrdinal; |
|
37 | 38 |
|
38 | 39 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
39 | 40 |
|
... | ... | |
41 | 42 |
{ |
42 | 43 |
mRes = res; |
43 | 44 |
mObject= object; |
45 |
mOrdinal = object.getObjectType().ordinal(); |
|
44 | 46 |
} |
45 | 47 |
|
46 | 48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
49 | 51 |
// If a certain cubit is locked, return the color (index into it's FACE_COLORS array) it |
50 | 52 |
// must have. Otherwise return -1. |
51 | 53 |
|
52 |
public static int cubitIsLocked(ObjectType object, int cubit)
|
|
54 |
public static int cubitIsLocked(int object, int cubit)
|
|
53 | 55 |
{ |
54 |
if( object == ObjectType.CUBE_3 )
|
|
56 |
if( object == ObjectConstants.CUBE_3 )
|
|
55 | 57 |
{ |
56 | 58 |
if( cubit==20 ) return 0; // center of the right face |
57 | 59 |
if( cubit==21 ) return 1; // center of the left face |
... | ... | |
209 | 211 |
{ |
210 | 212 |
RubikScreenSolver solver = (RubikScreenSolver) ScreenList.SVER.getScreenClass(); |
211 | 213 |
|
212 |
if( mObject!=null && mObject.getObjectType()==ObjectType.CUBE_3 )
|
|
214 |
if( mOrdinal==ObjectConstants.CUBE_3 )
|
|
213 | 215 |
{ |
214 | 216 |
solveCube3(solver); |
215 | 217 |
} |
src/main/java/org/distorted/tutorials/TutorialActivity.java | ||
---|---|---|
39 | 39 |
import org.distorted.library.main.DistortedLibrary; |
40 | 40 |
|
41 | 41 |
import org.distorted.objectlib.main.ObjectControl; |
42 |
import org.distorted.objectlib.main.ObjectType; |
|
43 | 42 |
|
44 | 43 |
import org.distorted.main.R; |
45 | 44 |
import org.distorted.dialogs.RubikDialogError; |
45 |
import org.distorted.objects.RubikObjectList; |
|
46 | 46 |
|
47 | 47 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
48 | 48 |
|
... | ... | |
197 | 197 |
|
198 | 198 |
if( mWebView!=null ) mWebView.onResume(); |
199 | 199 |
|
200 |
if( mObjectOrdinal>=0 && mObjectOrdinal< ObjectType.NUM_OBJECTS )
|
|
200 |
if( mObjectOrdinal>=0 && mObjectOrdinal< RubikObjectList.getNumObjects() )
|
|
201 | 201 |
{ |
202 |
ObjectType obj = ObjectType.getObject(mObjectOrdinal); |
|
203 |
changeIfDifferent(obj,view.getObjectControl()); |
|
202 |
changeIfDifferent(mObjectOrdinal,view.getObjectControl()); |
|
204 | 203 |
} |
205 | 204 |
} |
206 | 205 |
|
... | ... | |
223 | 222 |
|
224 | 223 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
225 | 224 |
|
226 |
private void changeIfDifferent(ObjectType type,ObjectControl control)
|
|
225 |
private void changeIfDifferent(int objectOrdinal,ObjectControl control)
|
|
227 | 226 |
{ |
228 |
InputStream jsonStream = ObjectJson.getStream(type,this);
|
|
229 |
InputStream meshStream = ObjectMesh.getStream(type,this);
|
|
230 |
control.changeIfDifferent(type.ordinal(),jsonStream,meshStream);
|
|
227 |
InputStream jsonStream = ObjectJson.getStream(this,objectOrdinal);
|
|
228 |
InputStream meshStream = ObjectMesh.getStream(this,objectOrdinal);
|
|
229 |
control.changeIfDifferent(objectOrdinal,jsonStream,meshStream);
|
|
231 | 230 |
} |
232 | 231 |
|
233 | 232 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/tutorials/TutorialList.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.tutorials; |
21 | 21 |
|
22 |
import org.distorted.objectlib.main.ObjectType; |
|
23 | 22 |
import org.distorted.main.RubikActivity; |
23 |
import org.distorted.objectlib.main.ObjectConstants; |
|
24 |
import org.distorted.objects.RubikObject; |
|
25 |
import org.distorted.objects.RubikObjectList; |
|
24 | 26 |
|
25 | 27 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
26 | 28 |
|
27 | 29 |
public enum TutorialList |
28 | 30 |
{ |
29 |
CUBE2 ( ObjectType.CUBE_2,
|
|
31 |
CUBE2 ( ObjectConstants.CUBE_2,
|
|
30 | 32 |
new String[][] { |
31 | 33 |
{"gb","rJlh5p2wAKA","How to Solve a 2x2 Rubik's Cube","Z3"}, |
32 | 34 |
{"es","f85wqJTIDlw","Resolver cubo de Rubik 2X2","Cuby"}, |
... | ... | |
39 | 41 |
} |
40 | 42 |
), |
41 | 43 |
|
42 |
CUBE3 ( ObjectType.CUBE_3,
|
|
44 |
CUBE3 ( ObjectConstants.CUBE_3,
|
|
43 | 45 |
new String[][] { |
44 | 46 |
{"gb","-8ohoCKN0Zw","How to Solve a Rubik's Cube","Z3"}, |
45 | 47 |
{"es","GyY0OxDk5lI","Resolver cubo de Rubik 3x3","Cuby"}, |
... | ... | |
54 | 56 |
} |
55 | 57 |
), |
56 | 58 |
|
57 |
CUBE4 ( ObjectType.CUBE_4,
|
|
59 |
CUBE4 ( ObjectConstants.CUBE_4,
|
|
58 | 60 |
new String[][] { |
59 | 61 |
{"gb","RR77Md71Ymc","How to Solve the 4x4 Rubik's Cube","Z3"}, |
60 | 62 |
{"es","d_4xk1r9hxU","Resolver cubo de Rubik 4x4","Cuby"}, |
... | ... | |
71 | 73 |
} |
72 | 74 |
), |
73 | 75 |
|
74 |
CUBE5 ( ObjectType.CUBE_5,
|
|
76 |
CUBE5 ( ObjectConstants.CUBE_5,
|
|
75 | 77 |
new String[][] { |
76 | 78 |
{"gb","zMkNkXHzQts","How to Solve the 5x5 Rubik's Cube","Z3"}, |
77 | 79 |
{"es","6uaq-xfFs98","Resolver cubo de Rubik 5x5","Cuby"}, |
... | ... | |
83 | 85 |
} |
84 | 86 |
), |
85 | 87 |
|
86 |
CUBE6 ( ObjectType.CUBE_6,
|
|
88 |
CUBE6 ( ObjectConstants.CUBE_6,
|
|
87 | 89 |
new String[][] { |
88 | 90 |
{"gb","SkZ9UadAOvQ","How to Solve the 6x6 Rubik's Cube","JPerm"}, |
89 | 91 |
{"es","9X-mW6wbnQQ","Resolver cubo de Rubik 6x6","Cuby"}, |
... | ... | |
95 | 97 |
} |
96 | 98 |
), |
97 | 99 |
|
98 |
CUBE7 ( ObjectType.CUBE_7,
|
|
100 |
CUBE7 ( ObjectConstants.CUBE_7,
|
|
99 | 101 |
new String[][] { |
100 | 102 |
{"gb","xpI7jKs4bWQ","7x7 Centers (1/2)","CubeSkills"}, |
101 | 103 |
{"gb","xpI7jKs4bWQ","7x7 Edges & 3x3 Stage (2/2)","CubeSkills"}, |
... | ... | |
108 | 110 |
} |
109 | 111 |
), |
110 | 112 |
|
111 |
MIRR2 ( ObjectType.MIRR_2,
|
|
113 |
MIRR2 ( ObjectConstants.MIRR_2,
|
|
112 | 114 |
new String[][] { |
113 | 115 |
{"gb","rSH-ZEqTmxs","Solve 2x2 Mirror Blocks","King of Cubing"}, |
114 | 116 |
{"es","Ipz-Ajpd4Fg","Como resolver el mirror 2x2","RUBI CUBI"}, |
... | ... | |
119 | 121 |
} |
120 | 122 |
), |
121 | 123 |
|
122 |
MIRR3 ( ObjectType.MIRR_3,
|
|
124 |
MIRR3 ( ObjectConstants.MIRR_3,
|
|
123 | 125 |
new String[][] { |
124 | 126 |
{"gb","YkzXIWnqbSw","How to Solve the Mirror Cube","Z3"}, |
125 | 127 |
{"es","ZTkunMo51l0","Resolver cubo de Rubik MIRROR","Cuby"}, |
... | ... | |
131 | 133 |
} |
132 | 134 |
), |
133 | 135 |
|
134 |
JING ( ObjectType.JING_2,
|
|
136 |
JING ( ObjectConstants.JING_2,
|
|
135 | 137 |
new String[][] { |
136 | 138 |
{"gb","0T8Iw6aI2gA","Jing's Pyraminx Tutorial","SuperAntoniovivaldi"}, |
137 | 139 |
{"es","Na27_GUIzqY","Resolver Jing Pyraminx","Cuby"}, |
... | ... | |
142 | 144 |
} |
143 | 145 |
), |
144 | 146 |
|
145 |
PYRA3 ( ObjectType.PYRA_3,
|
|
147 |
PYRA3 ( ObjectConstants.PYRA_3,
|
|
146 | 148 |
new String[][] { |
147 | 149 |
{"gb","xIQtn2qazvg","Pyraminx Layer By Layer","Z3"}, |
148 | 150 |
{"es","4cJJe9RAzAU","Resolver Pyraminx","Cuby"}, |
... | ... | |
155 | 157 |
} |
156 | 158 |
), |
157 | 159 |
|
158 |
PYRA4 ( ObjectType.PYRA_4,
|
|
160 |
PYRA4 ( ObjectConstants.PYRA_4,
|
|
159 | 161 |
new String[][] { |
160 | 162 |
{"gb","tGQDqDcSa6U","How to Solve the Master Pyraminx","Z3"}, |
161 | 163 |
{"es","74PIPm9-uPg","Resolver Master Pyraminx 4x4","Cuby"}, |
... | ... | |
167 | 169 |
} |
168 | 170 |
), |
169 | 171 |
|
170 |
PYRA5 ( ObjectType.PYRA_5,
|
|
172 |
PYRA5 ( ObjectConstants.PYRA_5,
|
|
171 | 173 |
new String[][] { |
172 | 174 |
{"gb","2nsPEECDdN0","Professor Pyraminx Solve","RedKB"}, |
173 | 175 |
{"es","cSDj8OQK3TU","Tutorial del Professor Pyraminx","QBAndo"}, |
... | ... | |
177 | 179 |
} |
178 | 180 |
), |
179 | 181 |
|
180 |
KILO3( ObjectType.KILO_3,
|
|
182 |
KILO3( ObjectConstants.KILO_3,
|
|
181 | 183 |
new String[][] { |
182 | 184 |
{"gb","grgGgUSxiQg","How to Solve the Kilominx","Z3"}, |
183 | 185 |
{"es","g6WMYjkCLok","Resolver Kilominx","Cuby"}, |
... | ... | |
189 | 191 |
} |
190 | 192 |
), |
191 | 193 |
|
192 |
KILO5( ObjectType.KILO_5,
|
|
194 |
KILO5( ObjectConstants.KILO_5,
|
|
193 | 195 |
new String[][] { |
194 | 196 |
{"gb","VAnzC2SYVc4","How To Solve A Master Kilominx","Grizz Media"}, |
195 | 197 |
{"es","ozINTg-61Fs","Tutorial Master Kilominx","RubikArt"}, |
... | ... | |
204 | 206 |
} |
205 | 207 |
), |
206 | 208 |
|
207 |
MEGA3( ObjectType.MEGA_3,
|
|
209 |
MEGA3( ObjectConstants.MEGA_3,
|
|
208 | 210 |
new String[][] { |
209 | 211 |
{"gb","j4x61L5Onzk","How to Solve the Megaminx","Z3"}, |
210 | 212 |
{"es","xuKbT6Il0Ko","Resolver Megaminx","Cuby"}, |
... | ... | |
216 | 218 |
} |
217 | 219 |
), |
218 | 220 |
|
219 |
MEGA5( ObjectType.MEGA_5,
|
|
221 |
MEGA5( ObjectConstants.MEGA_5,
|
|
220 | 222 |
new String[][] { |
221 | 223 |
{"gb","MNBMm8BnHtQ","Solve the Gigaminx Part 1","BeardedCubing"}, |
222 | 224 |
{"gb","QrrP4GwqVMw","Solve the Gigaminx Part 2","BeardedCubing"}, |
... | ... | |
234 | 236 |
} |
235 | 237 |
), |
236 | 238 |
|
237 |
ULTI ( ObjectType.ULTI_2,
|
|
239 |
ULTI ( ObjectConstants.ULTI_2,
|
|
238 | 240 |
new String[][] { |
239 | 241 |
{"gb","n1ikPKZxGEo","Ultimate Skewb Tutorial","BeardedCubing"}, |
240 | 242 |
{"es","wNL1WJ_sCfs","Resolver Skewb ULTIMATE","Cuby"}, |
... | ... | |
246 | 248 |
} |
247 | 249 |
), |
248 | 250 |
|
249 |
DIAM2 ( ObjectType.DIAM_2,
|
|
251 |
DIAM2 ( ObjectConstants.DIAM_2,
|
|
250 | 252 |
new String[][] { |
251 | 253 |
{"gb","R2wrbJJ3izM","How to Solve a Skewb Diamond","Dr. Penguin^3"}, |
252 | 254 |
{"es","2RCusYQdYYE","Como resolver Skewb Diamond","Tutoriales Rubik"}, |
... | ... | |
258 | 260 |
} |
259 | 261 |
), |
260 | 262 |
|
261 |
DIAM3 ( ObjectType.DIAM_3,
|
|
263 |
DIAM3 ( ObjectConstants.DIAM_3,
|
|
262 | 264 |
new String[][] { |
263 | 265 |
{"gb","n_mBSUDLUZw","Face Turning Octahedron Tutorial","SuperAntoniovivaldi"}, |
264 | 266 |
{"es","ogf0t6fGxZI","FTO - Tutorial en español","Gadi Rubik"}, |
... | ... | |
268 | 270 |
} |
269 | 271 |
), |
270 | 272 |
|
271 |
DIAM4 ( ObjectType.DIAM_4,
|
|
273 |
DIAM4 ( ObjectConstants.DIAM_4,
|
|
272 | 274 |
new String[][] { |
273 | 275 |
{"gb","3GJkySk5zeQ","Master Face Turning Octahedron","SuperAntoniovivaldi"}, |
274 | 276 |
{"gb","zW_1htxy52k","Master FTO Tutorial","Michele Regano"}, |
... | ... | |
277 | 279 |
} |
278 | 280 |
), |
279 | 281 |
|
280 |
DINO3 ( ObjectType.DINO_3,
|
|
282 |
DINO3 ( ObjectConstants.DINO_3,
|
|
281 | 283 |
new String[][] { |
282 | 284 |
{"gb","puTJZqFBQwo","Dino Skewb Cube Tutorial","Bearded Cubing"}, |
283 | 285 |
{"es","6o1Yo5iCxvI","Resolver Cubo Dino","Cuby"}, |
... | ... | |
289 | 291 |
} |
290 | 292 |
), |
291 | 293 |
|
292 |
REDI3 ( ObjectType.REDI_3,
|
|
294 |
REDI3 ( ObjectConstants.REDI_3,
|
|
293 | 295 |
new String[][] { |
294 | 296 |
{"gb","Qn7TJED6O-4","How to Solve the MoYu Redi Cube","Z3"}, |
295 | 297 |
{"es","g0M38Aotgac","Resolver Redi Cube","Cuby"}, |
... | ... | |
301 | 303 |
} |
302 | 304 |
), |
303 | 305 |
|
304 |
HELI3 ( ObjectType.HELI_3,
|
|
306 |
HELI3 ( ObjectConstants.HELI_3,
|
|
305 | 307 |
new String[][] { |
306 | 308 |
{"gb","-suwJpd_PO8","Helicopter Cube Tutorial","Bearded Cubing"}, |
307 | 309 |
{"es","DWG9n_YyGPA","Resolver Helicopter Cube","Cuby"}, |
... | ... | |
313 | 315 |
} |
314 | 316 |
), |
315 | 317 |
|
316 |
SKEW2 ( ObjectType.SKEW_2,
|
|
318 |
SKEW2 ( ObjectConstants.SKEW_2,
|
|
317 | 319 |
new String[][] { |
318 | 320 |
{"gb","I6132yshkeU","How to Solve the Skewb","Z3"}, |
319 | 321 |
{"es","wxQX3HhPgds","Resolver Skewb (Principiantes)","Cuby"}, |
... | ... | |
326 | 328 |
} |
327 | 329 |
), |
328 | 330 |
|
329 |
SKEW3 ( ObjectType.SKEW_3,
|
|
331 |
SKEW3 ( ObjectConstants.SKEW_3,
|
|
330 | 332 |
new String[][] { |
331 | 333 |
{"gb","Jiuf7zQyPYI","Master Skewb Cube Tutorial","Bearded Cubing"}, |
332 | 334 |
{"es","8TP6p63KQCA","Master Skewb en Español","jorlozCubes"}, |
... | ... | |
341 | 343 |
} |
342 | 344 |
), |
343 | 345 |
|
344 |
IVY2 ( ObjectType.IVY_2,
|
|
346 |
IVY2 ( ObjectConstants.IVY_2,
|
|
345 | 347 |
new String[][] { |
346 | 348 |
{"gb","QMzeJobSu1M","How to Solve the Ivy Cube","Z3"}, |
347 | 349 |
{"es","2-Gf2cmEJDs","Resolver Ivy Cube","Cuby"}, |
... | ... | |
353 | 355 |
} |
354 | 356 |
), |
355 | 357 |
|
356 |
REX3 ( ObjectType.REX_3,
|
|
358 |
REX3 ( ObjectConstants.REX_3,
|
|
357 | 359 |
new String[][] { |
358 | 360 |
{"gb","noAQfWqlMbk","Rex Cube Tutorial","CrazyBadCuber"}, |
359 | 361 |
{"es","Q90x9rjLJzw","Resolver Cubo Rex","Cuby"}, |
... | ... | |
365 | 367 |
} |
366 | 368 |
), |
367 | 369 |
|
368 |
BAN1( ObjectType.BAN1_3,
|
|
370 |
BAN1( ObjectConstants.BAN1_3,
|
|
369 | 371 |
new String[][] { |
370 | 372 |
{"gb","F_iJk_IvpVo","Bandaged Cube","CanChrisSolve"}, |
371 | 373 |
{"es","_lTgw5aEFOg","Tutorial 3x3 Fuse Cube","QBAndo"}, |
... | ... | |
376 | 378 |
} |
377 | 379 |
), |
378 | 380 |
|
379 |
BAN2( ObjectType.BAN2_3,
|
|
381 |
BAN2( ObjectConstants.BAN2_3,
|
|
380 | 382 |
new String[][] { |
381 | 383 |
{"ru","lS_EK0PMWI8","Как собрать 2-bar Cube","Алексей Ярыгин"}, |
382 | 384 |
{"pl","tX8ubTLh6p8","Bandaged 3x3 (Two bar)","MrUK"}, |
... | ... | |
384 | 386 |
} |
385 | 387 |
), |
386 | 388 |
|
387 |
BAN3( ObjectType.BAN3_3,
|
|
389 |
BAN3( ObjectConstants.BAN3_3,
|
|
388 | 390 |
new String[][] { |
389 | 391 |
{"gb","7UiCVGygUT4","Bandage Cube C Tutorial","PolyakB"}, |
390 | 392 |
{"ru","gXenRA92Wdc","Как собрать Bandaged 3x3 Type C","YG Cuber"}, |
... | ... | |
393 | 395 |
} |
394 | 396 |
), |
395 | 397 |
|
396 |
BAN4( ObjectType.BAN4_3, |
Also available in: Unified diff
In the 'magic' app, ObjectType is now only used in RubikObject and RubikObjectList classes and nowhere else.
This is a major step towards being able to download objects from an online repository.