Project

General

Profile

« Previous | Next » 

Revision 84d746d7

Added by Leszek Koltunski almost 3 years ago

Downloaded Objects more or less work now.

View differences:

src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
100 100

  
101 101
    for(int i=0; i<numObjects; i++)
102 102
      {
103
      RubikObject object = RubikObjectList.getObject(i);
103
      int oOrdinal = RubikObjectList.getObjectOrdinal(i);
104
      RubikObject object = RubikObjectList.getObject(oOrdinal);
104 105
      ImageView imageView = new ImageView(act);
105 106
      imageView.setLayoutParams(paramsView);
106 107
      if( object!=null ) object.setIconTo(act,imageView);
src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
188 188

  
189 189
        Bundle bundle = new Bundle();
190 190
        bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, message);
191
        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, object==null ? "NULL" : object.getName() );
191
        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, object==null ? "NULL" : object.getLowerName() );
192 192
        analytics.logEvent(FirebaseAnalytics.Event.TUTORIAL_BEGIN, bundle);
193 193
        }
194 194
      }
src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java
36 36
import org.distorted.main.R;
37 37
import org.distorted.external.RubikNetwork;
38 38
import org.distorted.external.RubikUpdates;
39
import org.distorted.objectlib.json.JsonReader;
39 40
import org.distorted.objects.RubikObjectList;
41
import org.distorted.screens.RubikScreenPlay;
42
import org.distorted.screens.ScreenList;
40 43

  
41 44
///////////////////////////////////////////////////////////////////////////////////////////////////
42 45

  
......
121 124
      Activity act = mAct.get();
122 125
      RubikFiles files = RubikFiles.getInstance();
123 126
      mIconSaved = files.saveIcon(act,mInfo.mIcon, name);
127

  
128
      android.util.Log.e("D", "Saving icon "+name+" to a file "+mIconSaved);
124 129
      }
125 130
    }
126 131

  
......
156 161
        String name = mInfo.mObjectShortName + "_object.json";
157 162
        Activity act = mAct.get();
158 163
        oSuccess = files.saveFile(act,mInfo.mObjectStream, name);
164

  
165
        android.util.Log.e("D", "Saving JSON "+name+" to a file "+oSuccess);
166

  
167
        JsonReader reader = JsonReader.getInstance();
168
        reader.parseJsonFileMetadata(act,name);
169
        mInfo.mNumScrambles = reader.getNumScrambles();
170

  
171
        android.util.Log.e("D", "Read from JSON numScrambles="+mInfo.mNumScrambles);
159 172
        }
160 173

  
161 174
      if( mInfo.mExtrasStream!=null )
......
163 176
        String name = mInfo.mObjectShortName + "_extras.json";
164 177
        Activity act = mAct.get();
165 178
        eSuccess = files.saveFile(act,mInfo.mExtrasStream, name);
179

  
180
        android.util.Log.e("D", "Saving Extras "+name+" to a file "+eSuccess);
166 181
        }
167 182

  
168 183
      if( mIconSaved || oSuccess || eSuccess )
169 184
        {
170 185
        mBar.setProgress(75);
171 186
        mDescription.setText(R.string.configuring);
172
        RubikObjectList.addDownloadedObject(mInfo.mObjectShortName,mIconSaved,oSuccess,eSuccess);
173
        mBar.setProgress(100);
174
        mDescription.setText(R.string.success);
187
        RubikObjectList.addDownloadedObject(mInfo.mObjectShortName,mInfo.mNumScrambles, mInfo.mObjectMinorVersion,
188
                                            mInfo.mExtrasMinorVersion, mIconSaved, oSuccess, eSuccess);
175 189

  
176 190
        RubikNetwork network = RubikNetwork.getInstance();
177 191
        network.updateDone(mInfo.mObjectShortName);
192

  
193
        RubikScreenPlay play = (RubikScreenPlay)ScreenList.PLAY.getScreenClass();
194
        play.recreatePopup();
195

  
196
        mBar.setProgress(100);
197
        mDescription.setText(R.string.success);
178 198
        }
179 199
      else
180 200
        {
src/main/java/org/distorted/external/RubikFiles.java
66 66
      }
67 67
    catch(FileNotFoundException ex)
68 68
      {
69
      // ignore
69
      android.util.Log.e("D", "file "+name+" not found: "+ex.getMessage());
70 70
      }
71 71

  
72 72
    return null;
src/main/java/org/distorted/external/RubikNetwork.java
713 713
          String url = mUpdates.getCompletedURL(c);
714 714
          icon = downloadIcon(url);
715 715
          downloaded = true;
716

  
717
          android.util.Log.e("D", "Downloading icon "+url);
716 718
          }
717 719
        if( icon!=null )
718 720
          {
......
736 738
          String url = mUpdates.getStartedURL(s);
737 739
          icon = downloadIcon(url);
738 740
          downloaded = true;
741

  
742
          android.util.Log.e("D", "Downloading icon "+url);
739 743
          }
740 744
        if( icon!=null )
741 745
          {
......
754 758

  
755 759
    try
756 760
      {
761
      android.util.Log.e("D", "Downloading JSON "+url);
762

  
757 763
      java.net.URL connectURL = new URL(url);
758 764
      HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection();
759 765
      conn.setDoInput(true);
src/main/java/org/distorted/external/RubikScores.java
168 168

  
169 169
        if( object!=null )
170 170
          {
171
          builderObj.append(object.getName());
171
          builderObj.append(object.getUpperName());
172 172
          builderLvl.append(key%MULT);
173 173
          builderTim.append(value.record);
174 174
          }
......
346 346

  
347 347
        if( obj!=null && value!=null && value.record<NO_RECORD )
348 348
          {
349
          builder.append(obj.getName());
349
          builder.append(obj.getUpperName());
350 350
          builder.append("=");
351 351
          builder.append(value.record);
352 352
          builder.append(",");
src/main/java/org/distorted/external/RubikUpdates.java
41 41
    public final int mIconPresent;
42 42
    public final boolean mUpdateObject;
43 43
    public final boolean mUpdateExtras;
44

  
45
    public int mNumScrambles;
44 46
    public Bitmap mIcon;
45 47
    public InputStream mObjectStream;
46 48
    public InputStream mExtrasStream;
......
59 61
      mUpdateExtras       = updateE;
60 62

  
61 63
      mIcon = null;
64
      mNumScrambles = 0;
62 65
      }
63 66
    }
64 67

  
......
115 118
      int objOrdinal = RubikObjectList.getOrdinal(shortName.toUpperCase());
116 119
      boolean updateO=true, updateE=true;
117 120

  
121
android.util.Log.e("D", "downloaded object "+shortName+" oMinor="+oMinor+" eMinor="+eMinor);
122

  
118 123
      if( objOrdinal>=0 )
119 124
        {
120 125
        int localObjectMinor = RubikObjectList.getLocalObjectMinor(objOrdinal);
121 126
        int localExtrasMinor = RubikObjectList.getLocalExtrasMinor(objOrdinal);
122 127
        updateO = localObjectMinor<oMinor;
123 128
        updateE = localExtrasMinor<eMinor;
129

  
130

  
131
android.util.Log.e("D", "object exists locally, localObjectMinor="+localObjectMinor+" localExtrasMinor="+localExtrasMinor);
132

  
124 133
        }
125 134
      if( updateO || updateE )
126 135
        {
127 136
        UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,oPercent,oIcon,updateO,updateE);
128
        if(oPercent>=100) mCompleted.add(info);
129
        else              mStarted.add(info);
137
        if(oPercent>=100)
138
          {
139
android.util.Log.e("D", "object added to completed");
140

  
141
          mCompleted.add(info);
142
          }
143
        else
144
          {
145
android.util.Log.e("D", "object added to started");
146

  
147
          mStarted.add(info);
148
          }
130 149
        }
131 150
      }
132 151
    }
src/main/java/org/distorted/main/RubikActivity.java
459 459
      if( reportChange && oldObject!=null )
460 460
        {
461 461
        RubikObject robject = RubikObjectList.getObject(newObject);
462
        String newName = robject==null ? "NULL" : robject.getName();
462
        String newName = robject==null ? "NULL" : robject.getUpperName();
463 463
        float fps = view.getRenderer().getFPS();
464 464
        fps = (int)(fps+0.5f);
465 465
        StringBuilder name = new StringBuilder();
src/main/java/org/distorted/main/RubikObjectLibInterface.java
105 105
    int level   = play.getLevel();
106 106
    String name = scores.getName();
107 107
    RubikObject obj = RubikObjectList.getObject(object);
108
    String objName = obj==null ? "NULL" : obj.getName();
108
    String objName = obj==null ? "NULL" : obj.getUpperName();
109 109

  
110 110
    String record = objName+" level "+level+" time "+mNewRecord+" isNew: "+mIsNewRecord+" scrambleNum: "+scrambleNum;
111 111

  
src/main/java/org/distorted/objects/RubikObject.java
23 23

  
24 24
import android.app.Activity;
25 25
import android.content.res.Resources;
26
import android.graphics.Bitmap;
27
import android.graphics.drawable.BitmapDrawable;
26 28
import android.graphics.drawable.Drawable;
27 29
import android.widget.ImageButton;
28 30
import android.widget.ImageView;
29 31

  
30 32
import org.distorted.dmesh.ObjectMesh;
33
import org.distorted.external.RubikFiles;
31 34
import org.distorted.jsons.ObjectJson;
32 35
import org.distorted.objectlib.json.JsonWriter;
33 36
import org.distorted.objectlib.main.ObjectType;
......
39 42

  
40 43
public class RubikObject
41 44
{
42
  private final String mName;
43
  private final int mNumScramble;
44
  private final int mJsonID, mMeshID, mExtrasID;
45
  private final String mLowerName, mUpperName;
45 46
  private final int mIconID;
46 47
  private final String[][] mPatterns;
47
  private final int mObjectMinor, mExtrasMinor;
48 48

  
49
  private int mJsonID, mMeshID, mExtrasID;
50
  private int mObjectMinor, mExtrasMinor;
51
  private int mNumScramble;
49 52
  private int mMeshState;
50 53
  private int mExtrasOrdinal;
51 54
  private Drawable mIconD;
......
56 59
    {
57 60
    int ordinal= type.ordinal();
58 61

  
59
    mName        = type.name();
62
    mUpperName   = type.name();
63
    mLowerName   = type.name().toLowerCase();
60 64
    mNumScramble = type.getNumScramble();
61 65

  
62 66
    mIconID      = type.getIconID();
......
75 79

  
76 80
    mIconD = null;
77 81
    }
78
/*
82

  
79 83
///////////////////////////////////////////////////////////////////////////////////////////////////
80 84

  
81 85
  RubikObject(RubikObjectList.DownloadedObject object)
82 86
    {
83
    mName          = object.shortName;
84
    mMeshID        = 0;
87
    android.util.Log.e("D", "new downloaded RubikObject "+object.shortName+" added");
88

  
89

  
90
    mLowerName     = object.shortName;
91
    mUpperName     = object.shortName.toUpperCase();
92
    mNumScramble   = object.numScrambles;
93
    mObjectMinor   = object.objectMinor;
94
    mExtrasMinor   = object.extrasMinor;
95

  
85 96
    mPatterns      = null;
86 97
    mMeshState     = MESH_NICE;
87 98
    mExtrasOrdinal = -1;
88 99

  
89

  
90

  
91
    mNumScramble = type.getNumScramble();
92
    mObjectMinor = ?
93
    mExtrasMinor = ?
94
    mIconID      = type.getIconID();
95
    mJsonID      = ObjectJson.getObjectJsonID(mOrdinal);
96
    mExtrasID    = ObjectJson.getExtrasJsonID(mOrdinal);
100
    mMeshID        =  0;
101
    mIconID        = -1;
102
    mJsonID        = -1;
103
    mExtrasID      = -1;
97 104
    }
98 105

  
99 106
///////////////////////////////////////////////////////////////////////////////////////////////////
100 107

  
101
  public void updateObject(RubikObjectList.DownloadedObject object)
108
  public boolean updateObject(RubikObjectList.DownloadedObject object)
102 109
    {
110
    boolean changed = false;
103 111

  
112
    if( object.objectMinor>JsonWriter.VERSION_OBJECT_MINOR )
113
      {
114
      android.util.Log.e("D", "Updating RubikObject's "+object.shortName+" main JSON");
115

  
116
      mObjectMinor = object.objectMinor;
117
      mNumScramble = object.numScrambles;
118
      mMeshID =  0;
119
      mJsonID = -1;
120
      changed = true;
121
      }
122

  
123
    if( object.extrasMinor>JsonWriter.VERSION_EXTRAS_MINOR )
124
      {
125
      android.util.Log.e("D", "Updating RubikObject's "+object.shortName+" extras JSON");
126

  
127
      mExtrasMinor = object.extrasMinor;
128
      mExtrasID = -1;
129
      changed = true;
130
      }
131

  
132
    return changed;
104 133
    }
105
*/
134

  
106 135
///////////////////////////////////////////////////////////////////////////////////////////////////
107 136

  
108 137
  private void createIconDrawable(Activity act)
109 138
    {
110
    mIconD = act.getDrawable(mIconID);
139
    if( mIconID>0 )
140
      {
141
      mIconD = act.getDrawable(mIconID);
142
      }
143
    else
144
      {
145
      RubikFiles files = RubikFiles.getInstance();
146
      Bitmap bmp = files.getIcon(act,mLowerName+".png");
147
      mIconD = new BitmapDrawable(act.getResources(), bmp);
148
      }
111 149
    }
112 150

  
113 151
///////////////////////////////////////////////////////////////////////////////////////////////////
......
141 179
///////////////////////////////////////////////////////////////////////////////////////////////////
142 180
// PUBLIC API
143 181

  
144
  public String getName()
182
  public String getLowerName()
183
    {
184
    return mLowerName;
185
    }
186

  
187
///////////////////////////////////////////////////////////////////////////////////////////////////
188

  
189
  public String getUpperName()
145 190
    {
146
    return mName;
191
    return mUpperName;
147 192
    }
148 193

  
149 194
///////////////////////////////////////////////////////////////////////////////////////////////////
......
187 232

  
188 233
  public InputStream getObjectStream(Activity act)
189 234
    {
190
    if( mJsonID!=0 )
235
    if( mJsonID>0 )
191 236
      {
192 237
      Resources res = act.getResources();
193 238
      return res.openRawResource(mJsonID);
194 239
      }
240
    if( mJsonID<0 )
241
      {
242
      RubikFiles files = RubikFiles.getInstance();
243
      return files.openFile(act,mLowerName+"_object.json");
244
      }
245

  
195 246
    return null;
196 247
    }
197 248

  
......
199 250

  
200 251
  public InputStream getMeshStream(Activity act)
201 252
    {
202
    if( mMeshID!=0 )
253
    if( mMeshID>0 )
203 254
      {
204 255
      Resources res = act.getResources();
205 256
      return res.openRawResource(mMeshID);
206 257
      }
258

  
207 259
    return null;
208 260
    }
209 261

  
......
211 263

  
212 264
  public InputStream getExtrasStream(Activity act)
213 265
    {
214
    if( mExtrasID!=0 )
266
    if( mExtrasID>0 )
215 267
      {
216 268
      Resources res = act.getResources();
217 269
      return res.openRawResource(mExtrasID);
218 270
      }
271
    if( mExtrasID<0 )
272
      {
273
      RubikFiles files = RubikFiles.getInstance();
274
      return files.openFile(act,mLowerName+"_extras.json");
275
      }
276

  
219 277
    return null;
220 278
    }
221 279

  
src/main/java/org/distorted/objects/RubikObjectList.java
49 49
    {
50 50
    String shortName;
51 51
    boolean icon,object,extras;
52
    int numScrambles, objectMinor, extrasMinor;
52 53

  
53
    DownloadedObject(String sName, boolean i, boolean o, boolean e)
54
    DownloadedObject(String sName, int scrambles, int oMinor, int eMinor, boolean i, boolean o, boolean e)
54 55
      {
55 56
      shortName = sName;
57

  
58
      numScrambles= scrambles;
59
      objectMinor = oMinor;
60
      extrasMinor = eMinor;
61

  
56 62
      icon   = i;
57 63
      object = o;
58 64
      extras = e;
......
98 104
      mObjects.add(obj);
99 105
      mNumObjects++;
100 106

  
107
android.util.Log.e("D", "creating local object "+type.name() );
108

  
101 109
      if( obj.hasExtras() )
102 110
        {
111
        android.util.Log.e("D", "has extras "+mNumExtras );
112

  
113

  
103 114
        obj.setExtrasOrdinal(mNumExtras);
104 115
        mNumExtras++;
116
        }
117
      else
118
        {
119
        android.util.Log.e("D", "no extras");
120

  
105 121
        }
106 122
      }
107 123
    }
108 124

  
109 125
///////////////////////////////////////////////////////////////////////////////////////////////////
110 126

  
111
  private static void internalAddDownloadedObject(DownloadedObject object)
127
  private static boolean internalAddDownloadedObject(DownloadedObject object)
112 128
    {
113
    /*
114
    boolean existsAlready = false;
115 129
    String name = object.shortName;
116 130

  
117 131
    for(RubikObject ro : mObjects )
118
      if( ro.getName().equals(name) )
132
      if( ro.getLowerName().equals(name) )
119 133
        {
120
        ro.updateObject(object);
121
        existsAlready = true;
122
        break;
134
        return ro.updateObject(object);
123 135
        }
124 136

  
125
    if( !existsAlready )
137
    RubikObject obj = new RubikObject(object);
138
    mObjects.add(obj);
139
    mNumObjects++;
140

  
141

  
142
android.util.Log.e("D", "creating downloaded object "+obj.getUpperName() );
143

  
144
    if( obj.hasExtras() )
126 145
      {
127
      RubikObject obj = new RubikObject(object);
128
      mObjects.add(obj);
129
      mNumObjects++;
146
      android.util.Log.e("D", "has extras "+mNumExtras );
130 147

  
131
      if( obj.getExtrasJsonID()!=0 )
132
        {
133
        obj.setExtrasOrdinal(mNumExtras);
134
        mNumExtras++;
135
        }
148
      obj.setExtrasOrdinal(mNumExtras);
149
      mNumExtras++;
150
      }
151
    else
152
      {
153
      android.util.Log.e("D", "no extras");
136 154
      }
137
     */
155

  
156
    return true;
138 157
    }
139 158

  
140 159
///////////////////////////////////////////////////////////////////////////////////////////////////
......
167 186

  
168 187
///////////////////////////////////////////////////////////////////////////////////////////////////
169 188

  
170
  public static void addDownloadedObject(String shortName, boolean icon, boolean object, boolean extras)
189
  public static void addDownloadedObject(String shortName, int numScrambles, int objectMinor, int extrasMinor,
190
                                         boolean icon, boolean object, boolean extras)
171 191
    {
172 192
    for( DownloadedObject obj : mDownloadedObjects )
173 193
      {
......
177 197
        obj.object|= object;
178 198
        obj.extras|= extras;
179 199

  
180
        android.util.Log.e("D", "UPDATING "+shortName);
200
        android.util.Log.e("D", "Updating downloaded object "+shortName);
181 201

  
182 202
        return;
183 203
        }
184 204
      }
185 205

  
186
    DownloadedObject extra = new DownloadedObject(shortName,icon,object,extras);
187
    mDownloadedObjects.add(extra);
188

  
189
    internalAddDownloadedObject(extra);
206
    DownloadedObject extra = new DownloadedObject(shortName,numScrambles,objectMinor,extrasMinor,icon,object,extras);
207
    if ( internalAddDownloadedObject(extra) )
208
      {
209
      android.util.Log.e("D", "Adding new downloaded object "+shortName);
210
      mDownloadedObjects.add(extra);
211
      }
190 212
    }
191 213

  
192 214
///////////////////////////////////////////////////////////////////////////////////////////////////
......
208 230
  public static void savePreferences(SharedPreferences.Editor editor)
209 231
    {
210 232
    RubikObject obj = getObject(mObject);
211
    if( obj!=null ) editor.putString("rol_objName", obj.getName() );
233
    if( obj!=null ) editor.putString("rol_objName", obj.getUpperName() );
212 234

  
213 235
    int numDownloaded = mDownloadedObjects.size();
214 236

  
......
223 245
        DownloadedObject object = mDownloadedObjects.get(i);
224 246
        downloadedObjects.append(object.shortName);
225 247
        downloadedObjects.append(' ');
248
        downloadedObjects.append(object.numScrambles);
249
        downloadedObjects.append(' ');
250
        downloadedObjects.append(object.objectMinor);
251
        downloadedObjects.append(' ');
252
        downloadedObjects.append(object.extrasMinor);
253
        downloadedObjects.append(' ');
226 254
        downloadedObjects.append(object.icon   ? "1":"0");
227 255
        downloadedObjects.append(' ');
228 256
        downloadedObjects.append(object.object ? "1":"0");
......
230 258
        downloadedObjects.append(object.extras ? "1":"0");
231 259
        }
232 260

  
233
      editor.putString("rol_downloaded", downloadedObjects.toString() );
261
      String objects = downloadedObjects.toString();
262
android.util.Log.e("D", "saving: "+objects);
263

  
264
      editor.putString("rol_downloaded", objects );
234 265
      }
235 266
    }
236 267

  
......
244 275

  
245 276
      if( obj!=null )
246 277
        {
247
        String name = obj.getName();
278
        String name = obj.getUpperName();
248 279
        editor.putInt("rol_"+name, obj.getMeshState() );
249 280
        }
250 281
      }
......
255 286
  public static void restorePreferences(SharedPreferences preferences)
256 287
    {
257 288
    RubikObject object = getObject(DEF_OBJECT);
258
    String defName = object==null ? "CUBE_3" : object.getName();
289
    String defName = object==null ? "CUBE_3" : object.getUpperName();
259 290
    String objName= preferences.getString("rol_objName",defName);
260 291
    mObject = getOrdinal(objName);
261 292

  
......
273 304
        {
274 305
        String[] parts = dObj.split(" ");
275 306

  
276
        if( parts.length==4 )
307
        if( parts.length==7 )
277 308
          {
278 309
          String name = parts[0];
279
          String icon = parts[1];
280
          String obje = parts[2];
281
          String extr = parts[3];
310
          String scra = parts[1];
311
          String objM = parts[2];
312
          String extM = parts[3];
313
          String icon = parts[4];
314
          String obje = parts[5];
315
          String extr = parts[6];
316

  
317
          int scrambles = Integer.parseInt(scra);
318
          int oMinor    = Integer.parseInt(objM);
319
          int eMinor    = Integer.parseInt(extM);
282 320

  
283 321
          boolean bIcon = icon.equals("1");
284 322
          boolean bObje = obje.equals("1");
285 323
          boolean bExtr = extr.equals("1");
286 324

  
287
          android.util.Log.e("D", "adding: "+name);
288

  
289
          addDownloadedObject(name,bIcon,bObje,bExtr);
325
          addDownloadedObject(name,scrambles,oMinor,eMinor,bIcon,bObje,bExtr);
290 326
          }
291 327
        }
292 328
      }
......
302 338

  
303 339
      if( obj!=null )
304 340
        {
305
        String name  = obj.getName();
341
        String name  = obj.getUpperName();
306 342
        int meshState= preferences.getInt("rol_"+name,MESH_NICE);
307 343
        obj.setMeshState(meshState);
308 344
        }
......
353 389
    {
354 390
    if( mThis==null ) mThis = new RubikObjectList();
355 391

  
392
    String lowerName = name.toLowerCase();
393

  
356 394
    for(int i=0; i<mNumObjects; i++)
357 395
      {
358 396
      RubikObject obj = mObjects.get(i);
359

  
360
      if( obj.getName().equals(name) ) return i;
397
      if( obj.getLowerName().equals(lowerName) ) return i;
361 398
      }
362 399

  
363 400
    return -1;
src/main/java/org/distorted/screens/RubikScreenPlay.java
698 698
    return mLevelValue;
699 699
    }
700 700

  
701
///////////////////////////////////////////////////////////////////////////////////////////////////
702

  
703
  public void recreatePopup()
704
    {
705
    mObjectPopup = null;
706
    }
707

  
701 708
///////////////////////////////////////////////////////////////////////////////////////////////////
702 709

  
703 710
  public boolean shouldReactToEndOfScrambling()

Also available in: Unified diff