Game rules | TODO | Архитектура | Naming | My codestyle |
---|
- Infrastructure: _Project/Core/Infrastructure/Bootstrapper.cs
- Запуск логики игры на геймплей сцене: _Project/Core/EntryPointGameplay.cs
match3 in unity. Initially planning feature not merge items, but click on them
Unity_2qpQ8uAeER.mp4
- Притащил систему где храню в Board.CellGrid, а не Grid т.к. она у меня уже была.
- Все при всех взаимодействиях "шариков", сначала нахожу ячейку Cell в которой шарик лежит, и беру его уже оттуда. Возможно стоило бы так не делать, и хранить матрицу шариков, без посредника в виде Cells.
- customization: match только в линии, или все соединённые ортогонально (включая угловые повороты)
- ячейки создаются в runtime. до начала игры в объекте GameData можно настроить размер поля
- Zenject
- DoTween
- TMP
- FSN
- ObjectsPool
- Observer
- EntryPoint
- Factory
- Template method
- центрировать камеру в runtime под размер поля.
- вынести в конфиги настройки (из [SerializeField] монобехов):
- размер поля
- очки за комбо
- очки для победы
- Не делаю отступ для namespace. Не вижу смысла. Заранее готов с фиче C# 10 "File scoped namespaces", когда отступ не будет нужен. Тем программистам, кто всё время делал отступ, полагаю будет непривычно, когда отступ исчезнет.
- Не пишу очевидный private
- prefer Type over var
- внутри круглых скобок пишу пробелы. настраивается здесь:
- consts - PascalCase, even for private and local. Не вижу смысла в SNAKE_CASE, это просто замедляет печать.
- в остальном +- стандартно.
- Возможно позже перейду с
ctor(int some){ _some = some; }
toctor(int some){ this.some = some; }
- Возможно позже перейду с