// МОДУЛЬ НАСЕЛЕНИЯ. Документ: Docs/Modules/Population.md // Правила населения -- только числа, без Unity. Заполняются из EconomyConfig (App/GameModules), // в тестах -- напрямую. Значения по умолчанию -- из дизайн-документа (этап 2 плана разработки). public sealed class PopulationRules { // Стартовый город T1: 300 человек = 120 рабочих + 30 воинов + 150 остальных. // Доля способных работать (120 из 270 жителей) сохраняется и при росте города. public int StartTotal = 300; public int StartWorkers = 120; public int StartSoldiers = 30; // Еда в час public double FoodPerCivilianPerHour = 0.1; public double FoodPerSoldierPerHour = 0.2; // Еда воина по типам войск: пехота, лучники, кавалерия, осадные (решения по отчёту Саши, 01.11, п. 4: 0,15 / 0,20 / 0,15 / 0,15). // Раненые едят полную норму своего типа, даже ожидая койку. null -- все воины едят FoodPerSoldierPerHour (как раньше). // Новобранцы в Казармах -- по FoodPerSoldierPerHour (их норма не задана). public double[] FoodPerTroopTypePerHour = null; // Прирост +2–3 человека в час, если есть еда public double GrowthPerHour = 2.5; // Предел населения (жильё). Решение команды от 19.10.2026: 300 жителей при пределе 300 -- прирост стоит, // построен Дом -- прирост идёт. Прибавки за Дом и Ратушу НЕ утверждены командой. public int HousingBase = 300; public int HousingPerTownHallLevel = 50; public int HousingPerHouseLevel = 50; // каждый уровень Дома (здание "Население") // Найм воинов: воины набираются из свободных (не работающих) жителей, гражданский резерв не отдаётся. // Резерв зависит от уровня Ратуши (регламент 31.10, ТЕСТ): уровни 1-2 -- 10, 3-5 -- 20, 6-10 -- 30. // Элемент [i] -- резерв на уровне Ратуши i+1; выше последнего уровня -- последнее число. public int[] CivilianReserveByTownHallLevel = { 10, 10, 20, 20, 20, 30, 30, 30, 30, 30 }; public int PeoplePerSoldier = 1; // сколько жителей стоит один воин (EconomyConfig, раздел "Солдат") // Офлайн-прогресс досчитывается не больше чем за столько часов. Число НЕ утверждено. public int MaxOfflineHours = 48; public int StartCivilians => StartTotal - StartSoldiers; }