Files
BiLauncher/doc/qml/LoaderRow.md
T

53 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

2026-10-11 22:32:13 +03:00
# LoaderRow.qml
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Одна строка модлоадера в карточке [BuildsDialog](BuildsDialog.md): чекбокс, а если он отмечен,
выпадающий список версий под выбранную версию Minecraft.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Совместимость здесь не проверяется. `backend.loaderVersions()` отдаёт список уже под конкретную
версию игры, и несовместимых строк в нём нет. Если список пустой, значит, модлоадер эту версию не
поддерживает, и вместо пустого выпадающего списка показывается текст.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
## Интерфейс
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
| | |
|---|---|
| `backend` (required) | `LauncherBackend` |
| `loaderKey` (required) | `forge`, `fabric`, `neoforge`, `quilt` |
| `title` (required) | подпись у чекбокса |
| `gameVersion` | версия Minecraft из карточки; её смена сбрасывает выбор |
| `checked` | алиас чекбокса |
| `selectedVersion` | выбранная версия модлоадера |
| `entries` | строки `{version, label, recommended, stable}` |
| `applying` | строка заполняется из сборки; изменения в это время не считаются пользовательскими |
| `userChecked()` | пользователь отметил чекбокс. Карточка снимает отметки с остальных строк |
| `changed()` | отметка или версия изменились, карточке пора сохранить сборку |
| `applyBuild(loader, loaderVersion)` | заполнить из сохранённой сборки без `changed()` |
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Пока версия игры не выбрана, чекбокс выключен.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
## applyEntries(list)
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Единственное место, где меняются `entries` и `selectedVersion`. Через него проходят все три пути:
ответ из кэша, ответ сети и заполнение из сборки. Если выбранной версии в новом списке нет, она
заменяется первой строкой, а это самая новая версия для этой версии игры. Если при этом значение
изменилось и строка не в режиме `applying`, испускается `changed()`.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Раньше проверку делал только путь из сети, и версия модлоадера, выбранная под прошлую версию игры,
доживала до сохранения сборки.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
## Откуда берётся список
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
`reload()` сначала берёт то, что уже есть в кэше (`loaderVersions()`), чтобы список появился сразу,
а потом просит обновление (`refreshLoaderVersions()`). Ответ приходит в
`backend.loaderVersionsChanged(key, game)`. Строка сравнивает пару со своей и игнорирует чужие
ответы: от другого модлоадера или от прошлой версии игры.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Под пустым списком написано «загрузка версий…», пока идёт запрос
(`loaderVersionsLoading()`), и «не поддерживает версию N» после.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
`applyBuild()` берёт версию из сборки как пожелание. Если под текущую версию игры её нет,
`applyEntries()` заменит её на самую новую.
2026-09-03 09:16:56 +03:00
---
При создании этого документа использовался ИИ.