Project

General

Profile

« Previous | Next » 

Revision c0266cb1

Added by Leszek Koltunski about 1 year ago

Tablebase-based scrambling.

View differences:

src/main/java/org/distorted/objectlib/main/TwistyObject.java
15 15
import java.util.Random;
16 16

  
17 17
import android.content.SharedPreferences;
18
import android.content.res.Resources;
18 19
import android.graphics.Bitmap;
19 20
import android.graphics.Canvas;
20 21
import android.graphics.Paint;
......
53 54
import org.distorted.objectlib.scrambling.ObjectScrambler;
54 55
import org.distorted.objectlib.json.JsonReader;
55 56
import org.distorted.objectlib.scrambling.ScrambleEdgeGenerator;
57
import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
58
import org.distorted.objectlib.tablebases.TablebasesAbstract;
56 59
import org.distorted.objectlib.touchcontrol.*;
57 60

  
58 61
import static org.distorted.objectlib.touchcontrol.TouchControl.*;
......
158 161

  
159 162
///////////////////////////////////////////////////////////////////////////////////////////////////
160 163

  
161
  TwistyObject(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitAssets assets)
164
  TwistyObject(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitAssets asset)
162 165
    {
163 166
    try
164 167
      {
165
      InputStream jsonStream = assets!=null ? assets.getJsonStream(): null;
166
      InputStream meshStream = assets!=null ? assets.getMeshStream(): null;
168
      InputStream jsonStream = asset!=null ? asset.getJsonStream(): null;
167 169
      JsonReader reader = new JsonReader();
168 170
      reader.parseJsonFile(jsonStream);
169 171
      setReader(reader);
170 172
      mNumLayers = reader.getNumLayers();
171 173
      mSize      = reader.getSize();
172 174
      mInitData  = null;
173
      initialize(meshState,iconMode,quat,move,scale,meshStream,true);
174
      if( assets!=null ) assets.close();
175
      initialize(meshState,iconMode,quat,move,scale,asset,true);
176
      if( asset!=null ) asset.close();
175 177
      mError = false;
176 178
      mErrorString=null;
177 179
      }
......
184 186

  
185 187
///////////////////////////////////////////////////////////////////////////////////////////////////
186 188

  
187
  public TwistyObject(int meshState, int iconMode, float size, Static4D quat, Static3D move, float scale, InitData data, InitAssets assets)
189
  public TwistyObject(int meshState, int iconMode, float size, Static4D quat, Static3D move, float scale, InitData data, InitAssets asset)
188 190
    {
189 191
    mNumLayers = data.getNumLayers();
190 192
    mSize      = size;
191 193
    mInitData  = data;
192
    InputStream meshStream = assets!=null ? assets.getMeshStream() : null;
193
    initialize(meshState,iconMode,quat,move,scale,meshStream,false);
194
    if( assets!=null ) assets.close();
194
    initialize(meshState,iconMode,quat,move,scale,asset,false);
195
    if( asset!=null ) asset.close();
195 196
    mError = false;
196 197
    mErrorString = null;
197 198
    }
......
211 212

  
212 213
///////////////////////////////////////////////////////////////////////////////////////////////////
213 214

  
214
  private void initialize(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InputStream meshStream, boolean fromJSON)
215
  private void initialize(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitAssets asset, boolean fromJSON)
215 216
    {
216 217
    mRotationState = STATE_NOTHING;
217 218
    mIconMode = iconMode;
......
244 245
    int[][] edges = getScrambleEdges();
245 246
    int[][] algorithms = getScrambleAlgorithms();
246 247

  
247
    mScrambler = new ObjectScrambler(scramblingType,mNumAxis,mNumLayers,algorithms,edges);
248
    Resources res = asset==null ? null : asset.getResources();
249
    TablebasesAbstract tablebase = res!=null ? getTablebase(res) : null;
250
    mScrambler = new ObjectScrambler(scramblingType,mNumAxis,mNumLayers,algorithms,edges,tablebase);
248 251

  
249 252
    boolean bandaged=false;
250 253

  
......
277 280
    MatrixEffectQuaternion quatEffect = new MatrixEffectQuaternion(mQuat, CENTER);
278 281
    MatrixEffectMove moveEffect = new MatrixEffectMove(move);
279 282

  
283
    InputStream meshStream = asset!=null ? asset.getMeshStream(): null;
280 284
    boolean fromDMESH = (meshStream!=null && meshState==MESH_NICE);
281 285
    getQuatsAndShapes(fromDMESH,fromJSON);
282 286
    createMeshAndCubits(meshStream,meshState,fromDMESH);
......
294 298
    mNode = new DistortedNode(mTexture,mEffects,mMesh);
295 299
    }
296 300

  
301
///////////////////////////////////////////////////////////////////////////////////////////////////
302

  
303
  private TablebasesAbstract getTablebase(Resources res)
304
    {
305
    ObjectSignature signature = getSignature();
306
    long[] array = signature.getArray();
307
    int len = array.length;
308
    int sig = (int)array[len-1];
309

  
310
    return ImplementedTablebasesList.createPacked(res,sig);
311
    }
312

  
297 313
///////////////////////////////////////////////////////////////////////////////////////////////////
298 314

  
299 315
  private void createQuaternionEffects()

Also available in: Unified diff