Tablebase-based scrambling.
Introduce InitAssets. We'll use this later to pass on references to the tablebase file to the TwistyObject (so that it can use this for perfect scrambling)
Finally fix the 'impossible records' bug!
Thanks for a bug report from Jacob Powell - if one, during scrambling, minimized the app and re-entered it, the UI lock got removed (by a call to 'unblockEverything' from RubikActivity's onResume) and one could then keep solving the object mid-scramble....
Move the control of object scaling out the objectlib.Thee xact way the object is scaled needs to be decided in the app, as only the app knows that e.g. in the Rubik main screen, if it is a square, then obejct needs to be a bit smaller than in case of Config screen (if that one happens to be a square)
Further improvements for the UI.
Improve UI proportions on squarish screens.
Add Stars to the main menu.
Dialog 'buy stars'
Very important bugfix for an issue which probably has been the reason for many mysterious behaviours in the past: the JsonReader class cannot be a singleton! Convert it into a normal 'instanced' class.With it being a singleton there's a major issue: when we create a new TwistyObject from a JSON file (by, for example, going to PurchaseActivity) and then we come back to the old object (by, for example, going back to the main RubikActivity) - then the JsonReader inside the old object has read the new JSON file and thus many of the 'abstract' methods in the old TwistyObject (for example getShortName()) all of the sudden start returning new values!
Purchase Pane: further progress.
Purchase Pane: post-purchase dialogs.
Purchase Pane: buttons (part2)
Purchase Pane: buttons
Changes to the initialization - initialize the 'bought objects'
Progress with marking objects as free.
IAP: speed up.
IAP: finish the 'Purschase' activity.
IAP part 6: new 'Present' object effect (cont'd)
IAP part 6: new 'Present' object effect.
IAP part 5: new 'Purchase' activity (cont'd)
IAP part 5: new 'Purchase' activity.