Спираль завершения хода, маршруты и занятые рабочие
Изменения основного сайта по изображениям пользователя и двум требованиям из IMPLEMENTATION-NOTES.md. Они относятся к управлению рубежа 4.7; генерация мира остаётся самостоятельной незавершённой задачей 4.6.
Кнопка завершения хода
Кнопка теперь находится на спирали в левом верхнем углу правой панели. Исходные Art/interface/nextturn states color.pcx и nextturn states alpha.pcx содержат три кадра 47×28: нейтральный, оранжевый и голубой. В PNG сохраняются исходные цвета и маска. Дополнительная прямоугольная кнопка удалена.
Пока у своих юнитов есть движение и они ожидают приказа, спираль нейтральна; наведение или клавиатурный фокус делает её оранжевой. Когда все юниты получили приказы, она чередует оранжевый и голубой. Рабочие с заданием, укреплённые, пропустившие ход (Hold) и следующие по маршруту юниты не считаются ожидающими приказа. Wait откладывает действие в текущем ходу и возвращает юнит в очередь; окончательное различие описано в оригинальном управлении. Это зависит от всей стороны, а не от выделенного юнита. Юниты с оставшимися действиями не запрещают досрочное завершение хода.
Во время хода соперника, представления боя, обязательного решения и после результата кнопка отключена, нейтральна и не мигает. Нажатие вызывает тот же настоящий приказ завершения хода, что Enter. Автоматическое завершение без подтверждения пока не включено. Подсказка объясняет состояние и сообщает число юнитов, которые ещё могут действовать. При системном prefers-reduced-motion вместо мигания показывается постоянный оранжевый кадр.
Граница подтверждения: три изображения и их размеры подтверждены комплектом игры; разметка кадров сверена с закреплённым C7/Lua/civ3/textures.lua. Разработчик раннего OpenCiv3 описывал чередование оранжевого/голубого и оранжевое наведение. Его прототип запускал мигание через пять секунд независимо от готовности юнитов; это не доказательство такого таймера в Windows-оригинале. У нас цикл 1 секунда, по половине секунды на кадр, и запуск по готовности приказов. Точный период, исходные условия запуска/остановки и поведение при наведении во время мигания ещё требуют записи оригинальной версии. Полное совпадение этих деталей не заявляется.
Предпросмотр и GoTo
До щелчка подсвечиваются назначение и путь, на клетках пути указаны номера ходов. Сплошная часть доступна сейчас, пунктирная — в следующие ходы. Подсказка заранее различает выбор другого своего юнита и перемещение выделенного. Обычный щелчок по своему стеку выбирает/переключает юнит, а по свободной или чужой клетке только осматривает её. Перемещение включается явно кнопкой или G; до этого маршрут не показывается и щелчки не отдают приказ. G повторно, Escape или правая кнопка отменяют режим. После успешного приказа и при выборе юнита на панели режим выключается. Включённый G позволяет приказать войти и на клетку своего юнита. Перетаскивание продолжает двигать только камеру.
Для соседней клетки сохраняется обычный одиночный MOVE. Для дальней — GOTO: юнит проходит доступную часть пути и продолжает в следующие ходы. Назначение сохраняется в unit.orders; Escape вне режима выбора назначения отменяет сохранённый маршрут. Escape в режиме G отменяет только выбор назначения.
Предпросмотр, одиночное перемещение и шаги маршрута используют общую moveEligibility и movementCost: местность, реки, мосты, дороги, рельсы, остаток движения, колёсные ограничения и баррикады. Поиск минимизирует ход прибытия, затем сохраняет больше движения и предпочитает меньше шагов. Нулевые рельсовые стоимости не создают циклов. Более дорогая клетка расходует оставшееся движение по общей модели движка. ИИ выполняет сохранённый маршрут через те же команды и не перезаписывает его своей обычной политикой.
Поиск принимает только представление игрока: неизвестные клетки не используются, для разведанной местности применяется сохранённая информация, скрытые юниты не учитываются. Перед каждым шагом путь пересчитывается с новой доступной информацией, фактический шаг проверяет настоящее состояние. Препятствие может изменить путь или прервать его. Новое иностранное присутствие в ранее свободном назначении прерывает приказ, автоматического объявления войны нет. После боя управление возвращается игроку. Поэтому оценка срока относится к известной ситуации и не предсказывает последствия будущего боя или изменений мира.
Оригинальное руководство, разделы Movement / GoTo, подтверждает предварительный путь с числом ходов и многотуровое следование без повторного приказа. Точное оформление указателя, оригинальные правила выбора равных маршрутов и дополнительные варианты управления удержанием мыши пока не воспроизведены. Левое перетаскивание остаётся управлением камерой по отдельному требованию пользователя.
Рабочий продолжает задание
Начавшему работу юниту ядро возвращает структурированный WORKER_BUSY с номером задания на MOVE, GOTO, новое задание, укрепление и присоединение к городу. Эти приказы не меняют клетку, задание, общий прогресс, движение или PRNG. Кнопки и клавиши учитывают тот же запрет, при наведении на клетку показано объяснение. Ожидание не отменяет работу. После завершения либо предусмотренного правилами прерывания задания юнит вновь получает доступные приказы.
Это явно заданное пользователем правило нашей версии. Оно не выдаётся за доказанное поведение отмены работ в оригинальной Civilization III.
Сохранения и проверки
Схема 18 добавляет версию модели движения known-world-goto-v1 и проверяемый сохранённый приказ маршрута. Поддерживается миграция опубликованных схем 2–17; география, незаконченная дорога, игроки и состояние случайности не перестраиваются. Настоящее сохранение схемы 17 создано неизменёнными модулями опубликованной c90a094cd725c207 до изменения ядра; происхождение и десять команд записаны в tests/fixtures/published-v17-road-provenance.json.
Общий отчёт этой доработки объединяет исходные ресурсы, миграцию и результаты регрессий.
17 новых автоматических проверок покрывают блокировку рабочего, продолжение дороги, миграцию, маршрут с загрузкой между командами, частичное движение, дороги/рельсы, море, разведку, чужую занятость, прерывание, отмену, повреждённые приказы и состояния спирали. Проверка Chromium проверяет настоящие hover/мигание и reduced-motion, нажатие спирали, запреты мышью/клавишами, различие выбора и приказа, дальний путь, экспорт/загрузку и сравнение каждого хода с ядром и ИИ.
Снимок спирали · Предпросмотр маршрута · Ход разработки
Последующее уточнение управления: жесты мыши, Hold/Wait, выбор стека и цифровая клавиатура. Оно дополняет явный GoTo перетаскиванием юнита и удержанием на назначении, как описано в оригинальном руководстве.