progress with UI.
Add info pane: part 1.
Convert TransparentButton to Material Design.
Convert the theme to be a MaterialTheme and the TransparentImageButton to be a MaterialButton - the first forced by the second, and the second because a MaterialButton gives us control over the location of the icon in top of it. We need that because of the new 'solve/scramble' split-button in the lower right of the Play screen.
Further simplifications.
Remove the concept of a 'TwistyActivity' altogether.
Hide most of the TwistyActivity methods inside objectlib.
Simplifications
Move RubikControl to objectlib (as 'ObjectAutomator')Hide ObjectPreRender inside objectlib and move its APi to ObjectControl.
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 more code to objectlib.
Remove all files that have been separated into a new library 'objectlib'
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.
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
Some more debugs for the case when the UI is blocked.
Remove statics from the Cube classes.
Convert the Redi to the new scrambling paradigm.
Introduce pseudorandom balancing into scrambling in case of the two Dinos (from now on, the more times a particular (ax,layer) combination has been chosen already in the scrambling sequence, the less likely it is to be chosen next).Fix Dino6 - isSolved(). Sadly, it cannot be the geeneric function - it needs to be another special case.
Preparation for unification of scrambling. Scrambling of all objects will be done by a generic funtion, only fed a certain data structure by the objects. The data structure is going to be the ScrambleStateGraph - a directed state graph of all states we can come across while scrambling....
Important step towards making the implementation of an individual puzzle code-free (i.e. data-only): move the 'MeshBase[] mMeshes' variable from the individual classes to the parent TwistyObject.
Introduce ObjectShape - a class encapsulating a shape of a Cubit.Make the Megaminx cubit creation a bit more standard.
Convert the Ivy corner cubit to the new, 'universal' cubit creation method.
This forces deep changes to 'createRoundSolid' and the underlying 'MeshPolygon' class to make them support arbitrary Polygon 'centers of face convexity'.
Reason: the faces of this cubit are concave and such default 'center of face convexity' (which by default used to be (0,0)) turned to lie outside the face - which produces strange visual artifacts.
Standarize drawing stickers of a twisty puzzle. From now on, there's no 'sticker drawing' code in the individual classes, only some constants.
Convert the last 'special' case, the Rex edge sticker, to the generic sticker mechanism.
New sticker mechanism: improvements for concave stickers.
Convert the Rex corner sticker to the new mechanism.
Remove debugging.
Generalize FactorySticker - make it possible to draw stickers whose sides are curved.Convert the Ivy to use this new functionality.
Improve debugging in BlockController.
Progress with RubikControl.
Lots of changes :)
Make it impossible to launch more than one Tutorial screen at a time.
BlockController: Unblock after 3 seconds.
Fix the reddening the Lock icon.
Introduce a BlockController - a watchdog which makes sure the Touch and UI blocks do not take too long.If it detecs a long block, it unblocks and reports the situation to Crashylytics.
Add a 'give up' dialog - if one made at least 10 moves when solving and presses a 'back' button, one needs to confirm.
Always set the back move icon when we clear moves
Give visual indication when dragging is locked.
Change the 'Cube Back' icon when there are no moves to back.
Abstract the part that controls the 'Locked' and 'Back Moves' buttons from the two activities: the main one and the tutorial one.This code had been duplicated there.
improvements for FactorySticker
Switch Rubik Control off for the moment.
Move all the special cubit-creating code out of FactoryCubit and to the Object classes, and thus hopefully finish implementing the new cubit creating engine.
New cubit engine: finish converting Kilominx & Megaminx.
New cubit engine: convert Kiliminx & some Megaminx.
Convert the Redi Cube to the new engine.
Convert the Helicopter face cubits to the new engine.
Correct still one bug with collapsing stickers in teh new Cubit engine.Convert the Helicopter corner cubits to the new engine.
Convert the Skewb.
New Cubit Engine: add adjustable centers.
Convert the Dino and one of the Skewb's cubits to the new engine.
Convert the second and third object, the Pyraminx and the Diamond, to the new Cubit-creating engine.
Convert the first object, the Cube, to the new Cubit-creating engine.
Move Factories to the 'helpers' package.
Rename packages