Progress with sorting the objects by various criteria.
Support Active and Inactive RubikObjects.
Next step toward separating TwistyObject metadata.
Big step toward separating TwistyObject metadata.
progress
Remove all old UI 1.0 classes
Progress with PlayActivity
Make it possible to download objects with no extras file. Up VERSION_OBJECT_APP to 13.
remove 'MESH_NICE'
Major progress with version 2.0.0.
Major progress to version 2.0.0.
Seriously lower memory usage.
separate ObjectSiguature into its own package and separate the BandagedSignatures out of it.
Remove the generic 'MINOR' object and extras versions from JsonWriter, and replace them with per-ObjectType values. This was the reason why objects which had their 'minor' (really: version) updated to '1' in the server then never updated the jsons with locally stored versions.
Move patterns and Kociemba solver to objectlib.
Unlock downloaded objects on download if we have everything in the app unlocked!
Purchase Pane: further progress.
Fix marking objects as free.
Merge remote-tracking branch 'origin/master'
Minor
Changes to the initialization - initialize the 'bought objects'
The 'stars earned' effect is done. Works only for newStars>0.Also, there is a crash in the graphics driver on my physical LG phone.
All users who are upgrading from a version <1.11.4, where there was no concept of 'stars', get all their stars.
Reinstall the latest Android Studio, latest gradle; reconfigure all project to match and compile.
Switch off marking objects as free and bought in RubikObjectListUp compileSdkVerion to 32 (dependency forces us to do so)
Switch off visible effects of IAP (all objects free, no 'stars' animation)
Progress with Win effect + stars
Beginnings of support for 'Overlays': first overlay will be the rotating star which little stars fly to when one solves a level for the first time.
Progress with marking objects as free.
Progress with marking objects as free
IAP, part 1: Introduce the concept of a 'free' and 'not free' object to
- ObjectType- DownloadedObject- RubikObject- jsons
Move the 'bandaged' button back to the main menu.
Simplification for the new way of storing records.
New way to store records, comopletely independent on the number of scrambles.Do away with the weird 'getDBLevel' thing.
Correct the MAX level in the leaderboard.
objects,patterns: license.
correct the way we add new downloadeed objects.
Bugfix for downloading new objects (part2)
Bugfix for downloading new objects.
Bugfixes.
Progress with colors in the Menu Level Buttons
Move 'bandaged' from the main menu to the object popup.
Mark the 'Free Play' with green or red dot.
Fix for a bug when in Turkey and Azerbaijan, the names of downloaded objects which contain the letter 'I' do not get translated to upper case correctly (part 2: fix 'toLowerCase()' )
Fix for a bug when in Turkey and Azerbaijan, the names of downloaded objects which contain the letter 'I' do not get transalted to upper case correctly.
If we're updating an object, and it is the current object, reload it immediatelly so that the new version appears by itself.
Bugfix: in addition to deleting the files from local storage, also delete mentions of downloadable-but-now-built-in objects from Shared Prefs.
delete icon, object and extras files from local storage when:
1) we delete a locally produced bandaged 3x32) it turns out that a downloaded object is already built-in (which can happen if we download an object and then upgrade to app version which builts it in)
New, generic bandaged 3x3 class 'TwistyBandagedAbstract'.
Now, (almost!) any bandaged 3x3 can be created by extending this class and implementing one abstract method 'getPositions()'. Almost, because there's still one restriction: currently all cubits need to be one of the 5 allowed types: 1x1x1, 2x1x1, 3x1x1, 2x2x1, 2x2x2....
up the number of scrambles of the BAN2 and BAN4 objects to respectively 20 and 22.
solve the 'wasDownloadableButNowIsBuiltIn()' bug in 1.9.6 and 1.9.7.
Make it possible to automatically re-download EXTRAS file if it previously failed to download
Make sure we always display some icon in the Popup dialog, even if we fail to download one (improvement)
Make sure we always display some icon in the Popup dialog, even if we fail to download one.
Restore the list of objects before resotoring the list of records; otherwise we cannot restore records of downloaded objects.
Make 'downloaded' debugs controlled by a single boolean.
Downloaded Objects: bugfix
Downloaded Objects: bugfixes
Downloaded Objects more or less work now.
Refactor RubikObject in preparation for creating RubikObjects from DownloadedObjects.
Beginnings of support for dynamically adding downloaded JSONs to the local RubikObjectList: SharedPrefs part.
Support for saving the downloaded JSONs in local data storage.
Progress downloading objects and extras.
Re-organize tutorial list so that we can pull this one from JSON files.
Remove 3 out of 4 object icons.
Introduce 'Simple' and 'Nice' meshes.
Progress with Config UI.
Move the 'currObject' from RubikScreenPlay (WTF?) to RubikObjectList.
In the 'magic' app, ObjectType is now only used in RubikObject and RubikObjectList classes and nowhere else.This is a major step towards being able to download objects from an online repository.
Progress replacing the enum ObjetType with the class RubikObjectList.
Remove all files that have been separated into a new library 'objectlib'
Prepare the 'objectlib' package to be separated into a library module
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)