Hello. English is not my native language. I hope that there will be no rude phrases during the translation process. These are just my ideas and thoughts:
- If you want to develop this, it would be cool to add other types of solitaire games. Spider, for example
- Add save/load
- Add demo for android/windows
- Add namespace for import into other projects (as a mini-game)
- The settings do not allow the use of the "back" button on mobile devices
- If there is only 1 card in the deck, there is no point in turning it over.
- I read that you did this for your card sprites. However, it would be cooler for performance to generate card sprites on realtime. (Two suit icons and 1 text field)
- The update method in each Card breaks performance. One property setter is enough.
- Undoing a move does not change the parent of the cards.
- You use public fields instead of private fields and setters. Violations of OOP principles
- InvokeRepeating for timing is a dirty perversion.
- You don't need to get the component after Instantiate. You just need to do Instantiate prefab, not GO.
- It was worth using Peel for the "stack" near the deck. (And why does the Deck itself not depend on Peel ?)
- The code is full of magic numbers. You can't just change the timing of the animation as many yield returns depend on it.
- I liked the auto-moves, but I would recommend making colliders more than sprits (Perhaps it makes sense to add a hint mode that uses the same mechanics?)
- When the deck is full, we spend "movement" to collect it and "movement" to draw a card. This is weird. We pay 2 “moves” although logically it is one.
- In BackMove you need to add a Solitaire.i.canClick check so as not to break the animation.
- In the settings, you only need to serialize int to bool during saving. At all other times it should be bool.
- Top interface breaks in horizontal mode
- Can an “unsolvable” solitaire game be generated? Is there a test for this? (Deck 8, 8, 7)
I rewrote part of the code. If you want, I could send it to you.
But ideally, it would be worth doing a complete refactoring.
Thanks.