Revision 63dd19c4
Added by Leszek Koltunski almost 3 years ago
src/main/java/org/distorted/main/RubikRenderer.java | ||
---|---|---|
136 | 136 |
|
137 | 137 |
DistortedLibrary.onSurfaceCreated(mView.getContext(),this,1); |
138 | 138 |
|
139 |
if( !BuildConfig.DEBUG && !mDebugSent )
|
|
139 |
if( /*!BuildConfig.DEBUG &&*/ !mDebugSent )
|
|
140 | 140 |
{ |
141 | 141 |
mDebugSent= true; |
142 | 142 |
RubikNetwork network = RubikNetwork.getInstance(); |
src/main/java/org/distorted/network/RubikNetwork.java | ||
---|---|---|
52 | 52 |
void error(String error); |
53 | 53 |
} |
54 | 54 |
|
55 |
public interface Updatee |
|
56 |
{ |
|
57 |
void receiveUpdate(RubikUpdates update); |
|
58 |
void errorUpdate(); |
|
59 |
} |
|
60 |
|
|
55 | 61 |
public static final int MAX_PLACES = 10; |
56 | 62 |
|
57 | 63 |
private static final int DOWNLOAD = 0; |
... | ... | |
65 | 71 |
private static final int REND_POWER = 2; |
66 | 72 |
private static final int REND_OTHER = 3; |
67 | 73 |
|
74 |
private static final int DEBUG_NOT_YET = 0; |
|
75 |
private static final int DEBUG_RUNNING = 1; |
|
76 |
private static final int DEBUG_SUCCESS = 2; |
|
77 |
private static final int DEBUG_FAILURE = 3; |
|
78 |
|
|
68 | 79 |
private final String[] hex = { |
69 | 80 |
"%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", |
70 | 81 |
"%08", "%09", "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", |
... | ... | |
110 | 121 |
private static boolean mRunning = false; |
111 | 122 |
private static int mMode = IDLE; |
112 | 123 |
private static Receiver mReceiver; |
124 |
private static Updatee mUpdatee; |
|
113 | 125 |
private static String mVersion; |
114 |
private static String mDebug;
|
|
126 |
private static String mSuspicious;
|
|
115 | 127 |
private static int mNumObjects; |
116 | 128 |
private static RubikUpdates mUpdates; |
129 |
private static int mDebugState; |
|
117 | 130 |
|
118 | 131 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
119 | 132 |
|
... | ... | |
396 | 409 |
|
397 | 410 |
String updates = answer.toString(); |
398 | 411 |
mUpdates.parse(updates); |
412 |
if( mUpdatee!=null ) mUpdatee.receiveUpdate(mUpdates); |
|
413 |
mDebugState = DEBUG_SUCCESS; |
|
399 | 414 |
} |
400 | 415 |
catch( final Exception e ) |
401 | 416 |
{ |
402 |
// ignore |
|
417 |
if( mUpdatee!=null ) mUpdatee.errorUpdate(); |
|
418 |
mDebugState = DEBUG_FAILURE; |
|
403 | 419 |
} |
404 | 420 |
} |
405 | 421 |
|
... | ... | |
486 | 502 |
{ |
487 | 503 |
RubikScores scores = RubikScores.getInstance(); |
488 | 504 |
int deviceID= scores.getDeviceID(); |
489 |
String debug = URLencode(mDebug);
|
|
505 |
String suspicious = URLencode(mSuspicious);
|
|
490 | 506 |
|
491 | 507 |
String url="https://distorted.org/magic/cgi-bin/suspicious.cgi"; |
492 |
url += "?i="+deviceID+"&d="+debug;
|
|
508 |
url += "?i="+deviceID+"&d="+suspicious;
|
|
493 | 509 |
|
494 | 510 |
return url; |
495 | 511 |
} |
... | ... | |
699 | 715 |
|
700 | 716 |
public void debug(AppCompatActivity act) |
701 | 717 |
{ |
718 |
mDebugState = DEBUG_RUNNING; |
|
702 | 719 |
start(null, act, DEBUG); |
703 | 720 |
} |
704 | 721 |
|
705 | 722 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
706 | 723 |
|
707 |
public void suspicious(AppCompatActivity act, String debug)
|
|
724 |
public void suspicious(AppCompatActivity act, String suspicious)
|
|
708 | 725 |
{ |
709 |
mDebug = debug;
|
|
726 |
mSuspicious = suspicious;
|
|
710 | 727 |
start(null, act, SUSPICIOUS); |
711 | 728 |
} |
729 |
|
|
730 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
731 |
// Yes it can happen that the second Updatee registers before we sent an update to the first one |
|
732 |
// and, as a result, the update never gets sent to the first one. This is not a problem (now, when |
|
733 |
// there are only two updatees - the RubikStatePlay and the UpdateDialog) |
|
734 |
// |
|
735 |
// Yes, there is also a remote possibility that the two threads executing this function and executing |
|
736 |
// the sendDebug() get swapped exactly in unlucky moment and the update never gets to the updatee. |
|
737 |
// We don't care about such remote possibility, then the app simply would signal that there are no |
|
738 |
// updates available. |
|
739 |
|
|
740 |
public void signUpForUpdates(Updatee updatee) |
|
741 |
{ |
|
742 |
if( mDebugState==DEBUG_SUCCESS ) updatee.receiveUpdate(mUpdates); |
|
743 |
else if( mDebugState==DEBUG_FAILURE ) updatee.errorUpdate(); |
|
744 |
else mUpdatee = updatee; |
|
745 |
} |
|
712 | 746 |
} |
src/main/java/org/distorted/network/RubikUpdates.java | ||
---|---|---|
140 | 140 |
if( elements.length>=3 ) parseLine(elements); |
141 | 141 |
} |
142 | 142 |
} |
143 |
} |
|
144 |
|
|
145 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
143 | 146 |
|
147 |
public void showDebug() |
|
148 |
{ |
|
144 | 149 |
android.util.Log.e("D", "url: "+mUrl); |
145 | 150 |
android.util.Log.e("D", "new objects: "+debug(mNewObjects)); |
146 | 151 |
android.util.Log.e("D", "new extras : "+debug(mNewExtras )); |
147 | 152 |
android.util.Log.e("D", "upd objects: "+debug(mUpdObjects)); |
148 | 153 |
android.util.Log.e("D", "upd extras : "+debug(mUpdExtras )); |
149 | 154 |
} |
150 |
|
|
151 | 155 |
} |
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.network.RubikNetwork; |
|
39 |
import org.distorted.network.RubikUpdates; |
|
38 | 40 |
import org.distorted.objectlib.main.ObjectControl; |
39 | 41 |
|
40 | 42 |
import org.distorted.main.R; |
... | ... | |
53 | 55 |
|
54 | 56 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
55 | 57 |
|
56 |
public class RubikScreenPlay extends RubikScreenBase |
|
58 |
public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Updatee
|
|
57 | 59 |
{ |
58 | 60 |
public static final int NUM_COLUMNS = 5; |
59 | 61 |
public static final int LEVELS_SHOWN = 10; |
... | ... | |
229 | 231 |
mObjectSize = (int)(cubeWidth + 2*margin + 0.5f); |
230 | 232 |
mMaxRowCount = (int)((height-1.8f*mUpperBarHeight)/mObjectSize); |
231 | 233 |
|
234 |
RubikNetwork network = RubikNetwork.getInstance(); |
|
235 |
network.signUpForUpdates(this); |
|
236 |
|
|
232 | 237 |
LinearLayout view = (LinearLayout)inflate( act, R.layout.popup_object, null); |
233 | 238 |
GridLayout objectGrid = view.findViewById(R.id.objectGrid); |
234 | 239 |
|
... | ... | |
676 | 681 |
{ |
677 | 682 |
return mShouldReactToEndOfScrambling; |
678 | 683 |
} |
684 |
|
|
685 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
686 |
|
|
687 |
public void receiveUpdate(RubikUpdates updates) |
|
688 |
{ |
|
689 |
updates.showDebug(); |
|
690 |
} |
|
691 |
|
|
692 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
693 |
|
|
694 |
public void errorUpdate() |
|
695 |
{ |
|
696 |
android.util.Log.e("D", "Error receiving update"); |
|
697 |
} |
|
679 | 698 |
} |
Also available in: Unified diff
Progress downloading updates.