Correction
Bump versionCode to 42 (forgotten before)
Fix a lint error.
Correct location of the keystore.
1. Do not restore object scrambling if we freshly upgraded from some version older than 1.9.02. Bugfix for a recently introduced crasher in the Play screen.
Tutorials
Up version to 1.9.0
Create the 3 Popups only on first button click - this time we can have the final screen dimensions (and also it starts faster ) Before we weree getting the screen size from before hiding navigation bars, which made the height smaller, which made the number of obejcts and levels in the popups sometimes too small!
Progress with cuboids.
Fix the Solver
make numLayers into an int[] (preparation for Cuboids)Caution: because of previous changes to cubit order in cube, the Solver is broken!
'IconMode' finished.
Remove unneeded API.
Relax objectlib's requirements: it can be displayed not only on top of a DistortedScreen, but any DistortedFramebuffer.
Simplification
Use the off-center objects to display the object in Tutorial mode properly.Now it is not covered by the right bar!
Remove the 'setupObject()' redundant API.
Minor
Further simplifications.
Remove the concept of a 'TwistyActivity' altogether.
Hide most of the TwistyActivity methods inside objectlib.
Bugfix: we shouldn't be calling TwsityObject.solve() directly from the app, only through ObjectControl.solveOnly().
Simplifications
Move RubikControl to objectlib (as 'ObjectAutomator')Hide ObjectPreRender inside objectlib and move its APi to ObjectControl.
1. Remove 'db level' from objectlib (this belongs to the app!)2. change ScreenPlay's 'mObject' to be an ObjectType.
Remove from ObjectType info which row given object is supposed to be in. This belongs to the applcations.
Move ObjectControl, the next big chunk of code, to objectlib.
Move PreRender to objectlib.This code is now shared betweeen the Rubik and Tutorial activities.
Move yet more code to objectlib.It's almost possible to move the PreRender to objectlib now.
Move yet more code to objectlib.
Move more code to objectlib.
Simplify TwistyObject's API.
Correct a recently introduced bug with restoring records.Slightely simplify ObjectType.
Reename ObjectList to a more logical ObjectType.
Simplify ObjectList: now there's just one object per size.
Simplify objectlib's API.Correct a recently introduced bug with resetting texture maps.
Move QuatHelpeer to distorted-library
Remove all the flags - those are now in a separate module
add two missing files
Remove all files that have been separated into a new library 'objectlib'
Prepare the 'objectlib' package to be separated into a library module
Rename some assets for consistency
Refactoring: split the 'objects' package into two, 'objects' and 'objectlib'.The point: we're going to need to move the 'objectlib' stuff into its own library module, and that's because we're going to create a new app module which needs access to it.
Important bugfix.
Remove redundant variable.
Do away with the last method in the object Movement classes. Remove the object Movement classes altogether.From now on the implementation of a TwistyPuzzle is 100% data, no code at all.Next step: make the implementation a (generated?) (XML?) file.
Next step on the way to completely do away with object Movement classes.
Correct the cuts of Mega/Kilominx.
Major abstraction - automatically compute the 'computeRowFromOffset()' function from CUTS.Still one thing left: it appears like the CUTS of Mega/Kilominxes are not correct.
Abstract the next function, computeRowFromOffset(), out of the individual Movement classes.Still two issues:
1) mysterious 1.5 multiplier in Movement122) in Movement8, moving the offset works only if the rotAxis are face-turning, i.e. they connect the centers of the opposing faces of the octahedron.
Remove class referencees from ObjectList.
MOve the FOV from ObjectList to individual object classes.
Introduce abstract 4,6,8 adn 12 classes.
Move the Movement class from ObjectList to individual object classes.
Realize that the Movements of Rex, Redi, Dino and the Skewbs are all identical and convert those 4 classes into one MovementCornerTwisting.
Make computing the offset in the Movement class more correct. From now on, in the center of the face the offset if always 0 regardless of the axis.Before it would always assume that we can add DIST2D to the offset which is originated at the center of the face and this way get an offset which spans from 0 to height of the face. This is not always true - conterexample: half of the triangluar faces of an octahedron which are 'upside down'
Move actual solving the object to PreRender.
(before we had a 'solveObejct()' in preRender already, but that one just starts the Solve Effect!)
Abstract out some methods from the Movement classes. only two remain now: rowFromOffset and enabledAxis.
Make the Kilo and Megaminxes standard size (dodecahedron size=3,5, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make the Ultimate standard size (dodecahedron size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make the Skewbs standard size (cube size=2,3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Rex standard size (cube size=3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Jing standard size (tetra size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Ivy standard size (cube size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
Make Helicopter standard size (cube size=3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)
On second thought, come back to Vector. The problem: before we had the potentially blocking function 'effectFinished' inside our synchronized block.
1) add missing call to BlockController.onPause() / onResume() to the Tutorial activity2) rearrange BlockController's error reporting to make the case where the MessageSender thread has died separate3) in such case, resurrect the thread4) simplify and harden the EffectMessageSender
Correct height of the tutorial dialog.
Up version to 1.8.6
Add Mirror 2x2 tutorials.
Increase NODE_RATIO, i.e. the height/width ratio of the DistortedNode behind the object (before with 1.4, if one scrambled the Mirror Cube and made it the largest possible, corners were cut off form the top and bottom)
Mirror Cubes: re-enable meshes; update meshes.
Mirror Cubes: make them still more off-center.
Mirror Cubes: make them a bit more off-center.
Mirror Cubes: add meshes and icons.
Add Mirror Cube 2x2 and 3x3.
Make object scrambling abstract (well, almost - with exception of Square-1 - this theoretically could also be done the generic way, but this would require almost 20000 'ScrambleStates')
Some more debugs for the case when the UI is blocked.
safety!
Improvements for the PopupWindows: now they work:
1) on Android 11, everywhere2) on Android 10,9,8.1,8.0 - in case of fullscreen and split-screen modes; pop-up mode still does not work.3) on Android <= 7.0 : there should be no pop-up mode, so they should be working in all cases
Defer initialization of statics in RubikNetwork till we actually need them.
Remove statics from the TwistyObject class.
Fix play screen popups in case the whole app is in 'multi-window' or 'pop-up window' state.
Simplify Play Screen popups.
Make the 'Play' popup always fit within the window height.
Remove statics from the Ultimate class.
Remove statics from the Square classes.
Remove statics from the Skewb class.
Remove statics from the Rex class.
Remove statics from the Redi class.
Remove statics from the Pyraminx class.
Remove statics from the Minx classes.