fix(game): gate group visibility by visibility range, report battle classes #78

Merged
developer merged 1 commits from feature/game-visibility-report into development 2026-05-31 06:42:44 +00:00
Owner

Что

Этап 3 сверки Правил и движка: видимость чужих групп/классов в отчёте (game/rules.txt, «Движение» и разделы отчёта).

  • Входящие группы (летящие на планеты получателя) показываются только в пределах видимости (driveTech*30); за её пределами группа скрыта, даже если она инбаунд (раньше фильтра по дистанции не было).
  • Неопознанные группы: используется зона видимости 30× (была зона полёта 40×); исключены группы, летящие на планеты получателя (они идут во «входящих»); каждая группа выводится один раз (раньше — по записи на каждую планету-владения в радиусе).
  • Классы из боя: классы чужих кораблей, встреченных в бою, который получатель вёл или наблюдал, теперь попадают в OtherShipClass — конструкция подтягивается из ShipTypes владельца (в отчёте боя есть только имя класса). Форма отчёта не меняется.

Документация

game/rules.txt уже описывает это поведение (30×, «за пределами видимости не показываются», «не направляющиеся на Ваши планеты», «классы… встречены на этом ходу») — код приведён в соответствие. FUNCTIONAL.md/ARCHITECTURE.md правок не требуют.

Тесты

go test ./game/... зелёный. Новые: TestReportIncomingGroupVisibility, TestReportUnidentifiedGroup, TestReportOtherShipClassFromBattle.

Замечание (вне объёма этапа)

В ReportIncomingGroup поле «оставшееся расстояние» считается как источник→назначение (полный путь), а должно быть текущая_позиция→назначение (как корректно делает OtherGroup). Поведение сохранено; вынесено владельцу отдельным решением.

## Что Этап 3 сверки Правил и движка: видимость чужих групп/классов в отчёте (`game/rules.txt`, «Движение» и разделы отчёта). - **Входящие группы** (летящие на планеты получателя) показываются только в пределах видимости (`driveTech*30`); за её пределами группа скрыта, даже если она инбаунд (раньше фильтра по дистанции не было). - **Неопознанные группы**: используется зона видимости `30×` (была зона полёта `40×`); исключены группы, летящие на планеты получателя (они идут во «входящих»); каждая группа выводится один раз (раньше — по записи на каждую планету-владения в радиусе). - **Классы из боя**: классы чужих кораблей, встреченных в бою, который получатель вёл или наблюдал, теперь попадают в `OtherShipClass` — конструкция подтягивается из `ShipTypes` владельца (в отчёте боя есть только имя класса). Форма отчёта не меняется. ## Документация `game/rules.txt` уже описывает это поведение (30×, «за пределами видимости не показываются», «не направляющиеся на Ваши планеты», «классы… встречены на этом ходу») — код приведён в соответствие. `FUNCTIONAL.md`/`ARCHITECTURE.md` правок не требуют. ## Тесты `go test ./game/...` зелёный. Новые: `TestReportIncomingGroupVisibility`, `TestReportUnidentifiedGroup`, `TestReportOtherShipClassFromBattle`. ## Замечание (вне объёма этапа) В `ReportIncomingGroup` поле «оставшееся расстояние» считается как источник→назначение (полный путь), а должно быть текущая_позиция→назначение (как корректно делает `OtherGroup`). Поведение **сохранено**; вынесено владельцу отдельным решением.
developer added 1 commit 2026-05-31 06:39:00 +00:00
fix(game): gate group visibility by visibility range, report battle classes
Tests · Go / test (push) Successful in 1m55s
Tests · Integration / integration (pull_request) Successful in 1m49s
Tests · Go / test (pull_request) Successful in 2m6s
6ec1098f15
Bring the report's foreign-group and foreign-class visibility in line
with the rules (game/rules.txt "Движение" and the report sections):

- incoming groups (heading to one of the recipient's planets) are shown
  only within the recipient's visibility range (driveTech*30); beyond it
  a group is hidden even though it is inbound;
- the unidentified-group list now uses the visibility range (it used the
  flight range, driveTech*40), excludes groups heading to the recipient's
  planets (those belong to the incoming list), and reports each group
  once (it previously emitted an entry per in-range owned planet);
- ship classes met in a battle the recipient took part in or witnessed
  now appear in OtherShipClass, with the design looked up from the owner
  race's ship types (the battle report carries only the class name).

The rules already describe this behaviour and the report wire shape is
unchanged, so no documentation change. Tests added for all three.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
owner approved these changes 2026-05-31 06:40:12 +00:00
developer merged commit 6c00a24577 into development 2026-05-31 06:42:44 +00:00
developer deleted branch feature/game-visibility-report 2026-05-31 06:42:44 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/galaxy-game#78