Skip to content

Зонирование городов (Town Zoning) ​

Портирование зонирования городов из cmclient (четвёртая партия, коммит 9e3f95a2). База jrpm (pulsexlb) уже имеет собственную систему зонирования (панель инструментов + конвейер отрисовки + меню), данная партия добавляет поверх неё уникальные режимы оценки cmclient и сохранение growth_tiles.

Новые режимы (выпадающее меню панели зонирования) ​

РежимОписаниеРаскраска
Town zones (Tz)Концентрические зоны городов, использует squared_town_zone_radiusTz0 край = голубой / Tz1 = красный / Tz2 = жёлтый / Tz3 = зелёный / Tz4 центр = белый
Town growth tilesТраектория строительства и сноса домов за текущий/прошлый месяцНовый дом = зелёный / Снос = голубой / Перестройка = белый / Пропуск роста = оранжевый / Пропуск стройки = жёлтый / Серверный снос = красный

Слой данных growth_tiles (cm_town_growth.cpp/.h) ​

  • Две скользящие карты по месяцам: TileIndex → TownGrowthTileState (текущий месяц / прошлый месяц)
  • Хуки событий:
    • BuildTownHouse → NEW_HOUSE (если в прошлом месяце был снос, повышается до RH_REBUILT)
    • ClearTownHouse → RH_REMOVED
    • TownsMonthlyLoop → ежемесячная ротация (прошлый месяц = текущий, текущий очищается)
  • Сохранение: новый блок GRWT в файле сохранения (misc_sl.cpp), сериализуется как список пар {tile, state}; старые сохранения без этого блока загружаются полностью совместимо (проверено сохранение→загрузка).

Способ открытия ​

Меню панели инструментов → Карта (Zoning) → открыть панель зонирования, внутренний и внешний круги выбора режима оценки.

Примечания по сокращению ​

Специфичные для сервера CityBuilder режимы cmclient (зона приёма CB / лимит городов CB) и расширенные поля ext::Town (реклама, финансы, статистика грузов) являются специфичными для серверного геймплея и не были портированы.