Revision 63dd19c4
Added by Leszek Koltunski almost 4 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.