# Местность и оформление интерфейса

## Графика пригодна для точного воспроизведения после конвертации

В исходной поставке есть готовые растровые слои карты, городов и интерфейса. Их не требуется заново рисовать ради технической совместимости: необходимы чтение исходного формата, сохранение прозрачности и сборка сцены. Возможность публично распространять полученный набор рассматривается отдельно в [оценке прав](reuse-and-rights.md).

Среди файлов с расширением PCX успешно прочитаны заголовки и палитры **4 466 изображений**: 4 446 палитровых, 18 RGB и 2 в градациях серого. Ещё два файла требуют отдельной обработки: один имеет сигнатуру BIC, другой не прошёл чтение палитры проверенным декодером. Это более глубокая проверка, чем первичное чтение только размеров.

## Карта состоит из нескольких слоёв

Основной профиль правил имеет 14 типов местности, но файлов графики существенно больше. Один тип местности нельзя сопоставлять одному независимому ромбу: вид клетки зависит от соседей и дополнительных объектов.

| Слой | Примеры исходных ресурсов | Что требуется браузеру |
| --- | --- | --- |
| Базовая суша и вода | `XGGC.PCX`, `XDGC.PCX`, `XPGC.PCX`, `wCSO.pcx`, `wSSS.pcx`, `wOOO.pcx` | Выбор перехода по соседям, индекс фрагмента листа |
| Рельеф и растительность | Горы, холмы, леса, джунгли, болота, вулканы | Оверлеи, перекрытие соседних клеток, порядок отрисовки |
| Реки | `mtnRivers.pcx`, `deltaRivers.pcx` | Соединения сегментов и независимое состояние реки |
| Улучшения | Дороги, железные дороги, орошение, здания местности | Связность и отдельные признаки улучшений |
| Ресурсы | Листы значков ресурсов | Индекс ресурса и условия видимости |
| Видимость и принадлежность | `FogOfWar.pcx`, `Territory.pcx` | Маски видимости и границы владельцев |
| Города и войска | `Art/Cities`, `Art/Units` | Отдельные объекты поверх карты |

Просмотрен лист `Art/Terrain/XGGC.PCX` размером **1152×576**. Его геометрия согласуется с сеткой 9×9 фрагментов 128×64. Это 81 позиция на листе; назначение позиции определяется схемой соседства, а не случайным выбором любого фрагмента. В качестве открытого примера такого сопоставления использована [реализация TerrainTextureFiles](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/TerrainTextureFiles.cs).

Для редактора карты изменение одного типа поверхности должно обновлять графику затронутых соседей. Базовая местность, рельеф, река, дорога, ресурс, владелец и видимость должны храниться отдельно. Текущее устройство прототипа с шестью взаимоисключающими типами не выражает всю эту модель.

## Палитры и прозрачность

PCX обычно содержит индексы цветов и таблицу палитры. Прозрачность и тени могут задаваться смыслом определённых индексов или отдельным файлом маски. Простое сохранение видимого RGB даёт, например, ярко-розовые поля городского экрана и тайлов.

В проверенном фоне городского экрана индекс 255 занимает **425 984 пикселя**. На листе XGGC — **331 776 пикселей**. Эти области нельзя воспринимать как обычную заливку изображения. При этом в листе стандартных кнопок пиксели индекса 255 отсутствуют: общую схему нельзя механически применять ко всем файлам.

Для пары `box right color.pcx` и `box right alpha.pcx` сохранены одинаковые размеры 294×137, но разное назначение: цвет и маска. Их нужно соединить в RGBA. Некоторые элементы используют обрезку или отдельную область маски. Подобные случаи явно различаются в [декодере PCX OpenCiv3](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/Textures/PCXToGodot.cs); его соглашения служат ориентиром для конвертера и требуют проверки на нашем наборе.

Для воспроизводимости конвертеру нужен параметр назначения: обычная картинка, тайл, альфа-маска, интерфейс с маской, тень, значок или кадр юнита. Исходные индексы следует сохранять до применения соответствующего режима.

## Городской экран и команды

| Ресурс базовой игры | Размер | Роль |
| --- | --- | --- |
| `Art/City Screen/background.pcx` | 1024×768 | Фон и разметка городского экрана |
| `Art/City Screen/governorBack.pcx` | 1024×768 | Основа окна управления губернатором |
| `Art/interface/NormButtons.pcx` | 257×160 | Лист обычных состояний команд |
| `Art/interface/HighlightedButtons.pcx` | 257×160 | Выделенные состояния |
| `Art/interface/RollOverButtons.pcx` | 257×160 | Состояния наведения |
| `Art/interface/box right color.pcx` | 294×137 | Рамка информационной панели |
| `Art/City Screen/ProductionQueueBox.pcx` | 203×360 | Оформление очереди производства |

Графический фон не содержит интерактивной логики. Кнопки, подписи, доступность действий, события клавиатуры и переходы между окнами нужно реализовать в браузере. Фон 1024×768 даёт точную опорную геометрию для настольного режима; на узком экране потребуется масштабирование или отдельная компоновка.

Названия команд можно связать с текстами `labels.txt`, `Script.txt` и действиями INI, но геометрию клика и поведение нельзя вывести только из картинки. Для каждого экрана полезно составить список областей, данных, состояний и переходов.

## Подготовка ресурсов

Для панели и значка подходят PNG или WebP без потерь; они сохраняют чёткие края и альфа-канал. Поддержка этих форматов описана в [справочнике форматов веб-изображений MDN](https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Image_types).

Один из листов зданий Conquests имеет размер **448×11000**. Для работы на разных устройствах его лучше разделить на страницы атласа с собственным индексом. Варианты зданий и городов по эпохам и культуре нужно хранить как варианты одного объекта, а не как независимые здания.

Оригинальные PCX и служебные индексы остаются эталоном. В браузерный набор входят только подготовленные атласы и манифесты с координатами, назначением и происхождением. Полные размеры и палитры: [image-metadata.json](data/image-metadata.json); примеры декодирования пикселей: [pixel-decode-samples.json](data/pixel-decode-samples.json).
