Revision c0266cb1
Added by Leszek Koltunski about 1 year ago
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
Tablebase-based scrambling.