fix(game): fight before departure and reorder the turn sequence #77
Reference in New Issue
Block a user
Delete Branch "feature/game-turn-order-departures"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
Этап 2 сверки Правил и движка: порядок хода и участие в бою отлетающих/модернизируемых кораблей (
game/rules.txt, «Последовательность действий» и «Сражения»).MakeTurnтеперь идёт: объединение → бой → загрузка и запуск по маршрутам → полёт → объединение → бой. Из-за этого:Launched), и модернизируемые группы (Upgrade) участвуют в предотлётном бою у своей планеты (CollectPlanetGroups/FilterBattleGroups); в гиперпространство уходят только уцелевшие;У только что запущенной группы нет сохранённой позиции в гиперпространстве, поэтому
moveShipGroupначинает первый отрезок от планеты-источника (прежний код читал nil-координату и падал).Так как модернизируемые группы теперь могут терять корабли в бою, стоимость незавершённой модернизации пересчитывается по текущему числу кораблей, а не по значению, сохранённому при приёме приказа.
Документация
game/rules.txt: переупорядочен раздел «Последовательность действий», переписана заметка в «Сражениях».FUNCTIONAL.md/ARCHITECTURE.mdпоследовательность хода не описывают — правок нет.Тесты
go test ./game/...зелёный. Новые:TestMoveLaunchedGroupFromOrigin,TestCollectPlanetGroupsIncludesLaunchedAndUpgrade,TestProduceBattlesLaunchedFightsAtOrigin,TestUpgradeCostTracksShipLosses.Замечание (вне объёма этапа)
Обнаружено двойное списание производственного потенциала в
TurnPlanetProductions(стоимость апгрейда вычитается и вPlanetProductionCapacity, и в цикле). Поведение сохранено как есть; вынесено владельцу отдельным решением.